【C#学习记录】用户设置模块设计与实现(winform)

大家好,我是雷工!

最近练习实现一个企业人事管理系统,涉及到用户设置模块,将该模块的实现过程记录如下。

一、系统运行环境

本系统的程序运行环境具体如下。

(1)、系统开发平台:Microsoft Visual Studio 2019。

(2)、系统开发语言:C#。

(3)、数据库管理软件:Microsoft SQL Server 2008。

二、数据库表结构设计

本模块使用的数据表为:tb_Login(用户表)、tb_UserPope(用户权限表)两张数据表。

1、tb_Login表结构:

字段名

数据类型

是否主键

描述说明

ID

varchar(5)

用户编号

Name

varchar(20)

用户名

Pass

varchar(20)

密码


2、tb_UserPope表结构:

字段名

数据类型

是否主键

描述说明

AutoID

int

自动编号

ID

varchar(5)

操作员编号

PopeName

varchar(50)

权限名称

Pope

int

权限标识

三、用户设置界面设计及演示效果

用户设置模块主要对系统中的用户信息进行管理,包括对用户信息的添加、修改和删除等操作,而且还可以为指定的用户设置操作权限。另外,如果要对管理员信息进行修改、删除和设置操作权限等操作,系统会提示不能对管理员进行操作。

用户设置窗体运行效果如下图所示:

用户设置窗体运行效果


1、设计用户设置窗体

1>创建Windows窗体,命名为F_User.cs。

2>在窗体中添加控件,并布局。

2、实现添加\修改功能

1>创建Windows窗体,命名为F_UserAdd。

2>添加用户信息窗口运行效果:

添加用户信息窗口运行效果


3>修改用户信息窗口运行效果:

修改用户信息窗口运行效果


3、点击“添加”按钮,当用户名和密码为空时,演示效果:

请输入用户名


4、当“添加”的用户名在tb_Login(用户表)里已经存在时,演示效果:

用户名已存在


5、当添加用户成功时,演示效果:

添加用户成功


6、当试图修改超级用户admin的信息时,演示效果:

超级用户


7、当修改非超级用户时,演示效果:

修改用户


8、当点击“删除”按钮时,演示效果:

删除效果


9、当修改非超级用户的权限时,演示效果:

权限效果


四、主要代码的实现与分析

1、“添加”/“修改”按钮功能

在F_User窗体中单击工具栏中的“添加”/“修改”按钮,实例化F_UserAdd窗体的一个对象,并分别为该对象的Tag属性赋值为1和2,以标识在F_UserAdd窗体中将执行哪种操作。

代码如下:

				//工具栏-添加按钮功能
        private void tool_UserAdd_Click(object sender, EventArgs e)
        {
            //实例化F_UserAdd窗体类对象
            PerForm.F_UserAdd FrmUserAdd = new PerForm.F_UserAdd();
            //设置F_UserAdd窗体的Tag属性为1,以标识执行添加操作
            FrmUserAdd.Tag = 1;
            FrmUserAdd.Text = "【雷工笔记】"+tool_UserAdd.Text + "用户";//设置F_UserAdd窗体的标题
            FrmUserAdd.ShowDialog(this);//以对话框形式显示窗体
        }
        //工具栏-修改按钮功能
        private void tool_UserAmend_Click(object sender, EventArgs e)
        {
            if(ModuleClass.MyModule.User_ID.Trim()=="0001")//判断选择的是不是超级用户
            {
                MessageBox.Show("不能修改超级用户。");
                return;
            }
            //实例化F_UserAdd窗体类对象
            PerForm.F_UserAdd FrmUserAdd = new PerForm.F_UserAdd();
            //设置F_UserAdd窗体的Tag属性为2,以标识执行修改操作
            FrmUserAdd.Tag = 2;
            FrmUserAdd.Text= "【雷工笔记】" + tool_UserAmend.Text + "用户";//设置F_UserAdd窗体的标题
            FrmUserAdd.ShowDialog(this);//以对话框形式显示窗体
        }

2、“保存”按钮功能

在F_UserAdd窗体中单击“保存”按钮,判断“用户名”文本框和“密码”文本框是否为空。如果为空,则弹出提示信息;否则,根据该窗体的Tag属性值判断是执行用户添加操作,还是执行用户修改操作。

代码如下:


        //保存按钮的实现代码
        private void button1_Click(object sender, EventArgs e)
        {
            if(text_Name.Text==""&&text_Pass.Text=="")//判断用户名和密码是否为空
            {
                MessageBox.Show("请将用户名和密码添加完整。");
                return;
            }
            DSet = MyDataClass.getDataSet("select Name from tb_Login where Name='" + text_Name.Text + "'", "tb_Login");
            //判断窗体的Tag属性是否为2,以执行修改操作
            if((int)this.Tag==2&&text_Name.Text==ModuleClass.MyModule.User_Name)
            {
                MyDataClass.getsqlcom("update tb_Login set Name='" + text_Name.Text + "',Pass='" + text_Pass.Text + "'where ID='" + ModuleClass.MyModule.User_ID + "'");
                MessageBox.Show("修改成功。");
                return;
            }
            if(DSet.Tables[0].Rows.Count>0)//判断用户是否已经存在
            {
                MessageBox.Show("当前用户名已存在,请重新输入。");//弹出提示信息
                text_Name.Text = "";
                text_Pass.Text = "";
                return;
            }
            //判断窗体的Tag属性是否为1,以执行添加操作
            if((int)this.Tag==1)
            {
                AutoID = MyMC.GetAutocoding("tb_Login", "ID");//自动生成编号
                //调用公共类中的方法添加用户信息
                MyDataClass.getsqlcom("insert into tb_Login (ID,Name,Pass) values('" + AutoID + "','" + text_Name.Text + "','" + text_Pass.Text + "')");
                MyMC.ADD_Pope(AutoID, 0);//为新添加的用户设置权限
                MessageBox.Show("添加成功。");
            }
            else
            {
                //调用公共类中的方法修改用户信息
                MyDataClass.getsqlcom("update tb_Login set Name='" + text_Name.Text + "',Pass ='" + text_Pass.Text + "'where ID='" + ModuleClass.MyModule.User_ID + "'");
                //判断新添加的用户编码号是否与登录用户的编号相同
                if (ModuleClass.MyModule.User_ID == DataClass.MyMeans.Login_ID)
                    DataClass.MyMeans.Login_Name = text_Name.Text;//设置登录用户名为“用户名”文本框的值
                MessageBox.Show("修改成功。");
            }
            this.Close();//关闭当前窗体
        }


3、“删除”按钮功能

在F_User窗体中单击工具栏中的“删除”按钮,判断要删除的用户是不是管理员。如果是,则弹出提示信息,提示不能修改管理员信息;否则,删除选中的用户信息,同时删除其权限信息。

代码如下:

        //工具栏中“删除”按钮的实现代码
        private void tool_UserDelete_Click(object sender, EventArgs e)
        {
            if (ModuleClass.MyModule.User_ID != "")
            {
                if (ModuleClass.MyModule.User_ID.Trim() == "0001")//判断要删除的用户是不是超级用户
                {
                    MessageBox.Show("不能删除超级用户。");
                    return;
                }
                //删除用户信息
                MyDataClass.getsqlcom("Delete tb_Login where ID='" + ModuleClass.MyModule.User_ID.Trim() + "'");
                //删除用户权限信息
                MyDataClass.getsqlcom("Delete tb_UserPope where ID='" + ModuleClass.MyModule.User_ID.Trim() + "'");
                //在数据库中查找所有用户信息,并将结果存储在DataSet数据集中
                MyDS_Grid = MyDataClass.getDataSet("select ID as编号,Name as 用户名 from tb_Login", "tb_Login");
                dataGridView1.DataSource = MyDS_Grid.Tables[0];//为DataGridView控件设置数据源
            }
            else
                MessageBox.Show("无法删除空数据表。");
        }


3、“权限”按钮功能

在F_User窗体中单击工具栏的“权限”按钮,弹出F_UserPope窗体(用户权限设置窗体)。

代码如下:

        //权限按钮功能
        private void tool_UserPopedom_Click(object sender, EventArgs e)
        {
            if (ModuleClass.MyModule.User_ID.Trim() == "0001")
            {
                MessageBox.Show("不能修改超级用户权限。");
                return;
            }
            F_UserPope FrmUserPope = new F_UserPope();
            FrmUserPope.Text = "用户权限设置";
            FrmUserPope.ShowDialog(this);
        }

用户权限设置窗体中可以设置用户的权限,在该窗体中选中要拥有权限的复选框,单击“保存”按钮,调用MyModule公共类中的Amend_Pope方法为用户设置权限,同时将MyMeans公共类中的静态变量Login_n设置为2,以便在调用“重新登录”窗体时,使用新设置的权限对其进行初始化。

代码如下:

        private void User_Save_Click(object sender, EventArgs e)
        {
            //调用公共类的Amend_Pope方法为指定的用户设置权限
            MyMC.Amend_Pope(groupBox2.Controls, ModuleClass.MyModule.User_ID);
            //判断登录用户的编号是否与修改的用户编号相同
            if (DataClass.MyMeans.Login_ID == ModuleClass.MyModule.User_ID)
                //将静态变量Login_n设置为2,以便在调用“重新登录”窗体时,使用新设置的权限对其进行初始化
                DataClass.MyMeans.Login_n = 2;
        }

五、总结

本篇主要介绍了练习项目企业人事管理系统中的用户设置模块,通过该模块的开发练习,对用户设置模块有了初步的认识,如果觉得有用欢迎点赞收藏,如果觉得有不对之处,欢迎评论区留言。

举报
评论 0