上位机学习记录(六)用户权限管理

上位机学习记录(六)用户权限管理

使用到的控件如下:

控件名称 控件类型
dgv_User DataGridView
txt_CurrentUser,txt_User TextBox
chk_HandCtrl,chk_AutoCtrl,chk_SysLog,chk_Trend TextBox
chk_Report,chk_SysSet,chk_UserManage CheckBox
btn_Add,btn_Delete,btn_Save,btn_Select Button
LoginName DataGridViewTextBoxColumn

需求分析

  1. 界面初始化的时候:(1)加载所有的用户信息(2)在界面上所有控件显示第一个用户的信息

  2. 界面运行的时候:

    1. 查询原有用户权限,并且能够进行修改
    2. 增加新用户
    3. 删除旧的用户

功能编写:

  1. 界面初始化:

    修改DataGridView样式

    注意:在界面初始化时: this.dgv_User.AutoGenerateColumns = false;

    image-20230315144733936

    编写加载所有用户信息方法:

    1. 将每一个读到的用户信息加载到AdminList列表中。
    2. dgv_User.DataSource绑定AdminList。
    3. 在界面控件上显示第一个用户信息
        #region 绑定用户集合
        private void BindAdminList()
        {
            AdminList = GetAdminList();
            this.dgv_User.DataSource = null;
            this.dgv_User.DataSource = AdminList;
        }

        /// <summary>
        /// 获取所有的用户列表
        /// </summary>
        /// <returns></returns>
        private List<SysAdmins> GetAdminList()
        {
            string sql = "Select * from SysAdmins";

            MySqlDataReader dr = MySQLHelper.GetReader(sql);

            List<SysAdmins> AdminList = new List<SysAdmins>();

            while (dr.Read())
            {
                AdminList.Add(new SysAdmins()
                {
                    LoginName = dr["LoginName"].ToString(),
                    LoginPwd = Register.Decrypt(dr["LoginPwd"].ToString()),
                    HandCtrl = dr["HandCtrl"].ToString() == "1",
                    AutoCtrl = dr["AutoCtrl"].ToString() == "1",
                    SysSet = dr["SysSet"].ToString() == "1",
                    SysLog = dr["SysLog"].ToString() == "1",
                    Report = dr["Report"].ToString() == "1",
                    Trend = dr["Trend"].ToString() == "1",
                    UserManage = dr["UserManage"].ToString() == "1",
                });
            }
            return AdminList;
        }
        #endregion
            
        /// 加载读取到的第一个用户信息
        private void FrmUserManage_Load(object sender, EventArgs e)
        {
            BindAdminList();
            this.txt_CurrentUser.Text = CommonMethods.objAdmin.LoginName;

            if (AdminList.Count > 0)
            {
                SysAdmins objAdmin = AdminList[0];

                this.txt_User.Text = objAdmin.LoginName;
                this.txt_Pwd.Text = objAdmin.LoginPwd;
                this.chk_HandCtrl.Checked = objAdmin.HandCtrl;
                this.chk_AutoCtrl.Checked = objAdmin.AutoCtrl;
                this.chk_SysSet.Checked = objAdmin.SysSet;
                this.chk_SysLog.Checked = objAdmin.SysLog;
                this.chk_Report.Checked = objAdmin.Report;
                this.chk_Trend.Checked = objAdmin.Trend;
                this.chk_UserManage.Checked = objAdmin.UserManage;
            }
        }
  1. 界面运行的时候。

    核心思想:先找到AdminList中对应的objAdmin,然后用objAdmin的方法进行修改。(目前代码可读性高,但是不够规范,应该把模型的操作方法放到Models中,但是对于初学者尽快上手,目前可以这样简单去做,代码没有使用Sql生成器,后面可能出现sql语句维护的问题)

    1. 对原有用户信息查看与修改。(点击表格,跳转出详细用户信息)

              #region 点击DGV
              private void dgv_User_CellClick(object sender, DataGridViewCellEventArgs e)
              {
                  if (this.dgv_User.SelectedRows.Count > 0)
                  {
                      int index = e == null ? 0 : e.RowIndex;
      
                      if (index >= 0)
                      {
                          UpdateUI(AdminList[index]);
                      }
                  }
              }
              #endregion
              
              private void btn_Save_Click(object sender, EventArgs e)
              {
                  if (this.txt_User.Text == "管理员" && this.txt_CurrentUser.Text != "管理员")
                  {
                      MessageBox.Show("管理员信息修改权限不足", "保存修改");
                      return;
                  }
      
                  if (CheckLoginNameExit(this.txt_User.Text))
                  {
                      //封装用户对象
                      SysAdmins objAdmin = new SysAdmins()
                      {
                          LoginName = this.txt_User.Text.Trim(),
                          LoginPwd = Register.Encrypt(this.txt_Pwd.Text.Trim()),
                          HandCtrl = this.chk_HandCtrl.Checked,
                          AutoCtrl = this.chk_AutoCtrl.Checked,
                          SysSet = this.chk_SysSet.Checked,
                          SysLog = this.chk_SysLog.Checked,
                          Report = this.chk_Report.Checked,
                          Trend = this.chk_Trend.Checked,
                          UserManage = this.chk_UserManage.Checked
                      };
                      if (UpdateUser(objAdmin))
                      {
                          MessageBox.Show("用户信息修改成功", "保存修改");
                      }
                      else
                      {
                          MessageBox.Show("用户信息修改失败", "保存修改");
                          return;
                      }
      
                      BindAdminList();
                  }
                  else
                  {
                      MessageBox.Show("当前修改的用户名不存在,请添加后修改", "保存修改");
                  }
      
              }
      		
             private bool UpdateUser(SysAdmins objAdmin)
              {
                  StringBuilder sb = new StringBuilder();
      
                  sb.Append("Update SysAdmins set LoginPwd='{0}',HandCtrl={1},AutoCtrl={2},");
      
                  sb.Append("SysSet={3},SysLog={4},Report={5},Trend={6},UserManage={7}");
      
                  sb.Append(" where LoginName='{8}'");
      
                  string sql = string.Format(sb.ToString(), objAdmin.LoginPwd, objAdmin.HandCtrl ? 1 : 0,
      
                      objAdmin.AutoCtrl ? 1 : 0, objAdmin.SysSet ? 1 : 0, objAdmin.SysLog ? 1 : 0, objAdmin.Report ? 1 : 0,
      
                       objAdmin.Trend ? 1 : 0, objAdmin.UserManage ? 1 : 0, objAdmin.LoginName);
      
                  return MySQLHelper.Update(sql) == 1;
              
              }
      
      
      1. 新建与删除用户

                #region 添加用户
                private void btn_Add_Click(object sender, EventArgs e)
                {
                    if (!CheckLoginNameExit(this.txt_User.Text.Trim()))
                    {
                        //封装用户对象
                        SysAdmins objAdmin = new SysAdmins()
                        {
                            LoginName = this.txt_User.Text.Trim(),
                            LoginPwd = Register.Encrypt(this.txt_Pwd.Text.Trim()),
                            HandCtrl = this.chk_HandCtrl.Checked,
                            AutoCtrl = this.chk_AutoCtrl.Checked,
                            SysSet = this.chk_SysSet.Checked,
                            SysLog = this.chk_SysLog.Checked,
                            Report = this.chk_Report.Checked,
                            Trend = this.chk_Trend.Checked,
                            UserManage = this.chk_UserManage.Checked
                        };
                        if (AddUser(objAdmin))
                        {
                            MessageBox.Show("添加用户成功!", "添加用户");
                        }
                        else
                        {
                            MessageBox.Show("添加用户失败!", "添加用户");
                            return;
                        }
                        BindAdminList();
                    }
                    else
                    {
                        MessageBox.Show("当前用户名已经存在,请修改后添加", "添加用户");            
                    }
                }
        
                #endregion
        
                #region 检测用户名是否存在,存在为True,不存在未False
                private bool CheckLoginNameExit(string LoginName)
                {
                    foreach (var item in AdminList)
                    {
                        if (item.LoginName == LoginName)
                        {
                            return true;
                        }
                    }
                    return false;
                }
        
                #endregion
        
                #region 根据用户对象添加用户
        
                private bool AddUser(SysAdmins objAdmin)
                {
                    StringBuilder sb = new StringBuilder();
        
                    sb.Append("Insert into SysAdmins(LoginName,LoginPwd,HandCtrl,AutoCtrl,SysSet,SysLog,Report,Trend,UserManage)");
        
                    sb.Append(" values('{0}','{1}',{2},{3},{4},{5},{6},{7},{8})");
        
                    string sql = string.Format(sb.ToString(), objAdmin.LoginName, objAdmin.LoginPwd, objAdmin.HandCtrl ? 1:0, objAdmin.AutoCtrl ? 1 : 0, 
                        
                        objAdmin.SysSet ? 1 : 0, objAdmin.SysLog ? 1 : 0, objAdmin.Report ? 1 : 0, objAdmin.Trend ? 1 : 0, objAdmin.UserManage ? 1 : 0);
        
                    return MySQLHelper.Update(sql) == 1;
        
                }
                #endregion
        
        
                private void btn_Delete_Click(object sender, EventArgs e)
                {
                    if (this.txt_User.Text == "管理员")
                    {
                        MessageBox.Show("管理员用户无法删除", "删除用户");
                        return;
                    }
        
                    SysAdmins objAdmin = new SysAdmins()
                    {
                        LoginName = this.txt_User.Text.Trim()
                    };
                    if (DeleteUser(objAdmin))
                    {
                        MessageBox.Show("用户删除成功!", "删除用户");
                    }
                    else
                    {
                        MessageBox.Show("用户删除失败!", "删除用户");
                        return;
                    }
                    BindAdminList();
                }
        
        
                #region 根据用户对象进行删除
        
                private bool DeleteUser(SysAdmins objAdmin)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("Delete from SysAdmins");
                    sb.Append(" where LoginName='{0}'");
        
                    string sql = string.Format(sb.ToString(), objAdmin.LoginName);
        
                    return MySQLHelper.Update(sql) == 1;
                
                }
        
                #endregion
        
        
posted @ 2023-03-15 15:11  聆听微风  阅读(297)  评论(0编辑  收藏  举报