• C#--C/S--学员管理系统--9--考勤打卡和管理员修改密码


    以下是学习笔记:

    一,考勤打卡

    打卡效果如下:

    打卡器:刷卡后,自动回车键

     打卡成功:

     实现:

    1,后台部分:

    在DAL--StudentService学员信息访问类添加代码

            #region 查询学员【根据班级、学号、卡号】
    
            /// <summary>
            /// 根据班级名称查询学员信息
            /// </summary>
            /// <param name="className"></param>
            /// <returns></returns>
            public List<StudentExt> GetStudentByClass(string className)
            {
                string sql = "select StudentName,StudentId,Gender,Birthday,ClassName from Students";
                sql += " inner join StudentClass on Students.ClassId=StudentClass.ClassId";
                sql += " where ClassName='{0}'";
                sql = string.Format(sql, className);
                SqlDataReader objReader = SQLHelper.GetReader(sql);
                List<StudentExt> list = new List<StudentExt>();
                while (objReader.Read())
                {
                    list.Add(new StudentExt()
                        {
                            StudentId = Convert.ToInt32(objReader["StudentId"]),
                            StudentName = objReader["StudentName"].ToString(),
                            Gender = objReader["Gender"].ToString(),
                            Birthday = Convert.ToDateTime(objReader["Birthday"]),
                            ClassName = objReader["ClassName"].ToString()
                        });
                }
                objReader.Close();
                return list;
    
            }
            /// <summary>
            ///根据学号查询学员对象
            /// </summary>
            /// <param name="studentId"></param>
            /// <returns></returns>
            public StudentExt GetStudentById(string studentId)
            {
                string sql = "select StudentId,StudentName,Gender,Birthday,ClassName,StudentIdNo,PhoneNumber,StudentAddress,CardNo from Students";
                sql += " inner join StudentClass on Students.ClassId=StudentClass.ClassId";
                sql += " where StudentId=" + studentId;
                SqlDataReader objReader = SQLHelper.GetReader(sql);
                StudentExt objStudent = null;
                if (objReader.Read())
                {
                    objStudent = new StudentExt()
                    {
                        StudentId = Convert.ToInt32(objReader["StudentId"]),
                        StudentName = objReader["StudentName"].ToString(),
                        Gender = objReader["Gender"].ToString(),
                        Birthday = Convert.ToDateTime(objReader["Birthday"]),
                        ClassName = objReader["ClassName"].ToString(),
                        CardNo = objReader["CardNo"].ToString(),
                        StudentIdNo = objReader["StudentIdNo"].ToString(),
                        PhoneNumber = objReader["PhoneNumber"].ToString(),
                        StudentAddress = objReader["StudentAddress"].ToString()
                    };
                }
                objReader.Close();
                return objStudent;
            }
    
            /// <summary>
            /// 根据卡号查询学生信息(请思考如何将上面的方法合并,像下面的方法这么简单)
            /// </summary>
            /// <param name="CardNo"></param>
            /// <returns></returns>
            public StudentExt GetStudentByCardNo(string CardNo)
            {
                string whereSql = string.Format(" where CardNo='{0}'", CardNo);
                return this.GetStudent(whereSql);
            }
            private StudentExt GetStudent(string whereSql)
            {
                string sql = "select StudentId,StudentName,Gender,Birthday,ClassName,";
                sql += "StudentIdNo,PhoneNumber,StudentAddress,CardNo from Students";
                sql += " inner join StudentClass on Students.ClassId=StudentClass.ClassId ";
                sql += whereSql;
                SqlDataReader objReader = SQLHelper.GetReader(sql);
                StudentExt objStudent = null;
                if (objReader.Read())
                {
                    objStudent = new StudentExt()
                    {
                        StudentId = Convert.ToInt32(objReader["StudentId"]),
                        StudentName = objReader["StudentName"].ToString(),
                        Gender = objReader["Gender"].ToString(),
                        Birthday = Convert.ToDateTime(objReader["Birthday"]),
                        ClassName = objReader["ClassName"].ToString(),
                        CardNo = objReader["CardNo"].ToString(),
                        StudentIdNo = objReader["StudentIdNo"].ToString(),
                        PhoneNumber = objReader["PhoneNumber"].ToString(),
                        StudentAddress = objReader["StudentAddress"].ToString()
                    };
                }
                objReader.Close();
                return objStudent;
            }
            #endregion
    

     2,前端UI部分:

            public FrmAttendance()//窗体构造函数
            {
                InitializeComponent();
                timer1_Tick(null, null);//避免时间显示的延迟
            }
    
            //显示当前时间
            private void timer1_Tick(object sender, EventArgs e)
            {
                this.lblYear.Text = DateTime.Now.Year.ToString();
                this.lblMonth.Text = DateTime.Now.Month.ToString();
                this.lblDay.Text = DateTime.Now.Day.ToString();
                this.lblTime.Text = DateTime.Now.ToLongTimeString();
                switch (DateTime.Now.DayOfWeek)
                {
                    case DayOfWeek.Tuesday:
                        this.lblWeek.Text = "二";
                        break;
                    case DayOfWeek.Wednesday:
                        this.lblWeek.Text = "三";
                        break;
                    case DayOfWeek.Thursday:
                        this.lblWeek.Text = "四";
                        break;
                    case DayOfWeek.Monday:
                        this.lblWeek.Text = "一";
                        break;
                    case DayOfWeek.Saturday:
                        this.lblWeek.Text = "六";
                        break;
                    case DayOfWeek.Friday:
                        this.lblWeek.Text = "五";
                        break;
                    case DayOfWeek.Sunday:
                        this.lblWeek.Text = "日";
                        break;
                }
            }
            //学员打卡
            private AttendanceService objAttendanceService = new AttendanceService();
            private void txtStuCardNo_KeyDown(object sender, KeyEventArgs e)
            {
                if (this.txtStuCardNo.Text.Trim().Length != 0 && e.KeyValue == 13)
                {
                    //显示学员信息
                    StudentExt objStu = new StudentService().GetStudentByCardNo(this.txtStuCardNo.Text.Trim());
                    if (objStu == null)
                    {
                        MessageBox.Show("卡号不正确!", "信息提示");
                        this.txtStuCardNo.SelectAll();
                        return;
                    }
                    this.lblStuName.Text = objStu.StudentName;
                    this.lblStuClass.Text = objStu.ClassName;
                    this.lblStuId.Text = objStu.StudentId.ToString();
                    //添加打卡信息
                    string result = objAttendanceService.AddRecord(this.txtStuCardNo.Text.Trim());
                    if (result != "success")
                    {
                        this.lblInfo.Text = "打卡失败!";
                        MessageBox.Show(result, "错误提示");
                    }
                    else
                        this.lblInfo.Text = "打卡成功!";
                    this.txtStuCardNo.Text = ""; //等待下一个打卡
                    this.txtStuCardNo.Focus();
                }
            }  

     二,管理员修改密码:

     1,后台部分

    在DAL--SysAdminService管理数据访问类中添加

    namespace DAL
    {
        /// <summary>
        /// 管理员数据访问类
        /// </summary>
        public class SysAdminService
        {
            /// <summary>
            /// 根据登录账号和密码登录
            /// </summary>
            /// <param name="objAdmin">封装了登录账号和密码的管理员对象</param>
            /// <returns>返回包含管理员信息的对象</returns>
            public SysAdmin AdminLogin(SysAdmin objAdmin)
            {
                //组合SQL语句
                string sql = "select AdminName from Admins where LoginId={0}  and LoginPwd='{1}'";
                sql = string.Format(sql, objAdmin.LoginId, objAdmin.LoginPwd);
                //从数据库中查询
                SqlDataReader objReader = SQLHelper.GetReader(sql);
                if (objReader.Read())
                {
                    objAdmin.AdminName = objReader["AdminName"].ToString();
                }
                else
                {
                    objAdmin = null;//如果登录不成功,则将当前对象清空
                }
                objReader.Close();
                //返回结果
                return objAdmin;
            }
    
            /// <summary>
            /// 修改管理员密码
            /// </summary>
            /// <param name="objAdmin"></param>
            /// <returns></returns>
            public int ModifyPwd(SysAdmin objAdmin)
            {
                string sql = "update Admins set LoginPwd='{0}' where LoginId={1}";
                sql = string.Format(sql, objAdmin.LoginPwd, objAdmin.LoginId);
                try
                {
                    return SQLHelper.Update(sql);
                }
                catch (SqlException)
                {
                    throw new Exception("应用程序和数据库连接出现问题!");
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
    }
    

      2,前端UI:

    确认修改的按钮事件

            //修改密码
            private void btnModify_Click(object sender, EventArgs e)
            {
                #region 密码验证
                if (this.txtOldPwd.Text.Trim().Length == 0)
                {
                    MessageBox.Show("请输入原密码!", "提示信息");
                    this.txtOldPwd.Focus();
                    return;
                }
                if (this.txtOldPwd.Text.Trim() != Program.objCurrentAdmin.LoginPwd)
                {
                    MessageBox.Show("请输入的原密码不正确!", "提示信息");
                    this.txtOldPwd.Focus();
                    this.txtOldPwd.SelectAll();
                    return;
                }
                if (this.txtNewPwd.Text.Trim().Length == 0)
                {
                    MessageBox.Show("请输入不少于6位的新密码!", "提示信息");
                    this.txtNewPwd.Focus();
                    return;
                }
                if (this.txtNewPwd.Text.Trim().Length < 6)
                {
                    MessageBox.Show("新密码长度不能少于6位!", "提示信息");
                    this.txtNewPwd.Focus();
                    return;
                }
                if (this.txtNewPwdConfirm.Text.Trim().Length == 0)
                {
                    MessageBox.Show("请再次输入新密码!", "提示信息");
                    this.txtNewPwdConfirm.Focus();
                    return;
                }
                if (this.txtNewPwdConfirm.Text.Trim() != this.txtNewPwd.Text.Trim())
                {
                    MessageBox.Show("两次输入的新密码不一致!", "提示信息");
                    return;
                }
                #endregion
    
                //修改密码
                try
                {
                    SysAdmin objAdmin = new SysAdmin()
                    {
                        LoginId = Program.objCurrentAdmin.LoginId,
                        LoginPwd = this.txtNewPwd.Text.Trim()
                    };
                    if (new SysAdminService().ModifyPwd(objAdmin) == 1)
                    {
                        MessageBox.Show("密码修改成功,请妥善保管!", "成功提示");
                        //同时修改当前保存的用户密码
                        Program.objCurrentAdmin.LoginPwd = this.txtNewPwd.Text.Trim();
                        this.Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    

      

  • 相关阅读:
    HttpClient
    充值保存
    button 样式
    创建窗口
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
    第七次作业
    第六次作业
  • 原文地址:https://www.cnblogs.com/baozi789654/p/13971627.html
Copyright © 2020-2023  润新知