修改学员信息

版权声明:我的博客都是学习笔记,仅供自己总结回顾并无其他用途,就不注明出处了,请原谅! https://blog.csdn.net/SlowIsFastLemon/article/details/89281696

1 修改学员信息后台访问方法编写

/// <summary>
 /// 修改学员时判断身份证号是否和其他学员重复
 /// </summary>
 /// <param name="studentIdNo"></param>
 /// <param name="studentId"></param>
 /// <returns></returns>
 public bool IsIdNoExisted(string studentIdNo, string studentId)
 {
     string sql = "select count(*) from Students where StudentIdNo={0}  and StudentId<>{1}";
     sql = string.Format(sql, studentIdNo, studentId);
     int result = Convert.ToInt32(SQLHelper.GetSingleResult(sql));
     if (result == 1) return true;
     else return false;
 }

 /// <summary>
 /// 修改学员对象
 /// </summary>
 /// <param name="objStudent"></param>
 /// <returns></returns>
 public int ModifyStudent(Student objStudent)
 {
     StringBuilder sqlBuilder = new StringBuilder();
     sqlBuilder.Append("Update Students set StudentName='{0}',Gender='{1}',Birthday='{2}',");
     sqlBuilder.Append("StudentIdNo={3},Age={4},PhoneNumber='{5}',StudentAddress='{6}',
     CardNo='{7}',ClassId={8}");
     sqlBuilder.Append(" where StudentId={9}");
     //解析对象
     string sql = string.Format(sqlBuilder.ToString(),
     objStudent.StudentName, objStudent.Gender, objStudent.Birthday,
     objStudent.StudentIdNo, objStudent.Age, objStudent.PhoneNumber,
     objStudent.StudentAddress, objStudent.CardNo, objStudent.ClassId, objStudent.StudentId);
     try
     {
         return SQLHelper.Update(sql);
     }
     catch (SqlException ex)
     {
         throw new Exception("数据库操作出现异常!具体信息:" + ex.Message);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }

2 学员修改UI实现

在这里插入图片描述
修改方法编写:

//修改学员对象
private void btnEidt_Click(object sender, EventArgs e)
{
    if (this.dgvStudentList.RowCount == 0)
    {
        MessageBox.Show("没有任何要修改的学信息!", "提示信息");
        return;
    }
    if (this.dgvStudentList.CurrentRow == null)
    {
        MessageBox.Show("请选中要修改的学员信息!", "提示信息");
        return;
    }
    //获取学号
    string studentId = this.dgvStudentList.CurrentRow.Cells["StudentId"].Value.ToString();
    //获取要修改的学员详细信息
    StudentExt objStudent = objStuService.GetStudentById(studentId);
    //显示要修改的学员信息窗口
    FrmEditStudent objEditStudent = new FrmEditStudent(objStudent);
    DialogResult result = objEditStudent.ShowDialog();
    //判断修改是否成
    if (result == DialogResult.OK)
    {
        btnQuery_Click(null, null);//同步刷新修改的信息(适合查询数据量小的情况)
    }

}

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

using Models;
using DAL;


namespace StudentManager
{
    public partial class FrmEditStudent : Form
    {
        private StudentClassService objClassService = new StudentClassService();
        private StudentService objStudentService = new StudentService();
        public FrmEditStudent()
        {
            InitializeComponent();
            //初始化班级下拉框
            this.cboClassName.DataSource = objClassService.GetAllClasses();
            this.cboClassName.DisplayMember = "ClassName";
            this.cboClassName.ValueMember = "ClassId";
        }
        public FrmEditStudent(StudentExt objStudent)
            : this()
        {

            //显示学员信息
            this.txtStudentId.Text = objStudent.StudentId.ToString();
            this.txtStudentName.Text = objStudent.StudentName;
            this.txtStudentIdNo.Text = objStudent.StudentIdNo;
            this.txtPhoneNumber.Text = objStudent.PhoneNumber;
            this.dtpBirthday.Text = objStudent.Birthday.ToShortDateString();
            this.txtAddress.Text = objStudent.StudentAddress;
            if (objStudent.Gender == "男") this.rdoMale.Checked = true;
            else this.rdoFemale.Checked = true;
            this.cboClassName.Text = objStudent.ClassName;
            this.txtCardNo.Text = objStudent.CardNo;
        }


        //提交修改
        private void btnModify_Click(object sender, EventArgs e)
        {
            #region 验证信息

            if (this.txtStudentName.Text.Trim().Length == 0)
            {
                MessageBox.Show("学生姓名不能为空!", "提示信息");
                this.txtStudentName.Focus();
                return;
            }
            //验证性别
            if (!this.rdoFemale.Checked && !this.rdoMale.Checked)
            {
                MessageBox.Show("请选择学生性别!", "提示信息");
                return;
            }
            //验证班级
            if (this.cboClassName.SelectedIndex == -1)
            {
                MessageBox.Show("请选择班级!", "提示信息");
                return;
            }
            //验证身份证号是否符合要求
            if (!Common.DataValidate.IsIdentityCard(this.txtStudentIdNo.Text.Trim()))
            {
                MessageBox.Show("身份证号不符合要求!", "验证提示");
                this.txtStudentIdNo.Focus();
                return;
            }
            //验证身份证号是否重复
            if (objStudentService.IsIdNoExisted(this.txtStudentIdNo.Text.Trim(), this.txtStudentId.Text.Trim()))
            {
                MessageBox.Show("身份证号不能和现有学员身份证号重复!", "验证提示");
                this.txtStudentIdNo.Focus();
                this.txtStudentIdNo.SelectAll();
                return;
            }
            //验证身份证号是否和出生日期相吻合
            string month = string.Empty;
            string day = string.Empty;
            if (Convert.ToDateTime(this.dtpBirthday.Text).Month < 10)
                month = "0" + Convert.ToDateTime(this.dtpBirthday.Text).Month;
            if (Convert.ToDateTime(this.dtpBirthday.Text).Day < 10)
                day = "0" + Convert.ToDateTime(this.dtpBirthday.Text).Day;
            string birthday = Convert.ToDateTime(this.dtpBirthday.Text).Year.ToString() + month + day;

            if (!this.txtStudentIdNo.Text.Trim().Contains(birthday))
            {
                MessageBox.Show("身份证号和出生日期不匹配!", "验证提示");
                this.txtStudentIdNo.Focus();
                this.txtStudentIdNo.SelectAll();
                return;
            }
            //验证出生日期
            int age = DateTime.Now.Year - Convert.ToDateTime(this.dtpBirthday.Text).Year;
            if (age < 18)
            {
                MessageBox.Show("学生年龄不能小于18岁!", "验证提示");
                return;
            }

            #endregion

            #region 封装学生对象

            Student objStudent = new Student()
            {
                StudentId = Convert.ToInt32(this.txtStudentId.Text.Trim()),
                StudentName = this.txtStudentName.Text.Trim(),
                Gender = this.rdoMale.Checked ? "男" : "女",
                Birthday = Convert.ToDateTime(this.dtpBirthday.Text),
                StudentIdNo = this.txtStudentIdNo.Text.Trim(),
                PhoneNumber = this.txtPhoneNumber.Text.Trim(),
                StudentAddress = this.txtAddress.Text.Trim(),
                CardNo = this.txtCardNo.Text.Trim(),
                ClassId = Convert.ToInt32(this.cboClassName.SelectedValue),//获取选择班级对应的ClassId
                Age = DateTime.Now.Year - Convert.ToDateTime(this.dtpBirthday.Text).Year
            };

            #endregion

            #region 提交修改

            try
            {
                if (objStudentService.ModifyStudent(objStudent) == 1)
                {
                    MessageBox.Show("学员信息修改成功!", "提示信息");           
                    this.DialogResult = DialogResult.OK;//返回修改成功的信息
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            #endregion
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

为了方便用户操作,我们可以为dgv提供右键菜单的功能。

猜你喜欢

转载自blog.csdn.net/SlowIsFastLemon/article/details/89281696
今日推荐