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);
            }
        }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM