C#简易电影记录管理系统:开发七[用户分类]
本期概述
在绝大部分数据管理系统中,管理员和普通用户这2类用户通常是必不可少的,当然还有更细的分类.前几期,我们用到的系统用户只有普通用户一类.那么在这一期,我们将在系统中设置2类用户, 管理员Administrator 和普通用户NormalUser.
我们在这里分类用户的目的是为了区分不同用户的功能权限,通常管理员拥有所有功能的使用权限,而普通用户只能限制性的使用部分功能(比如只能查看数据,而不修改数据). 当然,管理员可以赋予普通用户更多的功能权限,这个在后期随笔里面会继续说明.
原理
原理很简单,我在之前的用户登录界面FrmLogin 里新增了一个全局变量 UserType 用于获取当前登录用户的用户类型,在判断登录成功的代码里赋给一个登录用户类型(登录类型来自数据库里存储的用户类型)-Administrator或者NormalUser,在获取登录用户类型后, 我们需要设置普通用户的功能使用权限, 在那些需要屏蔽相应功能按钮的窗体里来获取全局变量 UserType,然后判断是否为 NormalUser;如果是,则将相应功能按钮的 Enabled 属性设置为 false.
首先,我们需要对数据库做些小的调整,在原先的数据库表MovieAccount 和Log 里分别新增一列用户类型 UserType.
数据库修改完了,我们开始写代码.
首先,在登录窗体类FrmLogin.cs 里新增一条 全局变量UserType, 用于获取 当前登录用户的用户类型.
//定义一个登录全局变量 用来获取 "登录" 或是"退出" public static string Situation; //---------------------新增代码----------------------// //定义一个全局变量UserType 用来获 登录用户的类型 public static string UserType; //---------------------新增代码----------------------//
然后将之前的sql语句稍作修改,增加一个 UserType 字段.
// 注释掉之前的select语句 string sql = "select MUserPwd from MovieAccount where MUserName ='" + txtName.Text + "'"; //---------------------新增代码----------------------// //这里新增了 从数据库里 获取UserType 这列的内容 string sql = "select MUserPwd,UserType from MovieAccount where MUserName ='" + txtName.Text + "'"; //---------------------新增代码----------------------//
通过SqlDataReader sdr 来从数据库中读取该用户的类型 并传给字符串 uType.
//则将对应该用户名下的 第一个字段 即使密码(MUserPwd为select的第一个字段) 赋给 字符串pwd ,并且依次往后读取 所有的密码 //Trim()方法为移除字符串前后的空白 string pwd =sdr.GetString(0).Trim(); //---------------------新增代码-------------------------------// //读取器sdr获取了2列数据 第1列为密码 第2列 即索引为1的是用户类型 string uType = sdr.GetString(1); //---------------------新增代码-------------------------------//
在登录成功后,将字符串 uType 获取的登录类型 赋给全局变量 UserType.
//添加获取当前登录情况的代码 //获取当前用户登录的情况 Situation = "登录"; //---------------------新增代码-------------------------------// //将登录成功的用户类型 赋给全局变量UserType //用于获取当前登录 用户的类型 UserType = uType; //---------------------新增代码-------------------------------//
这样当用户登录系统后,系统就能获得 登录系统的用户类型了; 我们到主窗体FrmMain上做个小测试.
我们现在主窗体FrmMain界面新增一个label框(name:lblSayHi) 用于获得登录的用户类型.
然后,在加载窗体下添加如下代码.
//当窗体加载的时候 自动运行 private void FrmMain_Load(object sender, EventArgs e) { //------------------------------新增代码----------------------------------// //这里 新增来一个用户类型 判断 FrmLogin.UserType //将当前登录用户名和登录时间赋给label的text属性 //并在当前主界面窗体加载的时候 显示在label框上 lblCurrentUser.Text = "当前登录用户为:" + FrmLogin.Uid + " 用户类型 " + FrmLogin.UserType + " 登录时间为:" + FrmLogin.Time; //------------------------------新增代码----------------------------------// //------------------------------新增代码----------------------------------// //给当前用户打招呼 //这里通过获取当前用户电脑上的时间 以及判断登录用户的类型 来给不同类型的用户打招呼 // 定义整型变量 intTime 来获取 用户电脑上的具体小时数 然后在如下进行判断 int intTime = FrmLogin.Time.Hour; //获取FrmLogin窗体的全局变量 UserType 用户类型, 用于一下给不同类型的用户打招呼 string uType = FrmLogin.UserType; //在凌晨0-6点的时候 if (intTime >= 0 && intTime < 6) { if (uType == "Administrator") lblSayHi.Text = "尊敬的 " + FrmLogin.Uid + " 深夜了,该休息了!"; else if (uType == "NormalUser") lblSayHi.Text = "亲爱的 " + FrmLogin.Uid + "凌晨了,要赶紧休息哦!"; } //早上6点-中午12点的时候 else if (intTime >= 6 && intTime < 12) { if (uType == "Administrator") lblSayHi.Text = "尊敬的 " + FrmLogin.Uid + " 早上好!"; else if (uType == "NormalUser") lblSayHi.Text = "亲爱的 " + FrmLogin.Uid + " 早上好!"; } //中午12点-下午6点的时候 else if (intTime >= 12 && intTime < 18) { if (uType == "Administrator") lblSayHi.Text = "尊敬的 " + FrmLogin.Uid + " 下午好!"; else if (uType == "NormalUser") lblSayHi.Text = "亲爱的 " + FrmLogin.Uid + " 下午好!"; } //晚上 else if (intTime >= 18 && intTime < 24) { if (uType == "Administrator") lblSayHi.Text = "尊敬的 " + FrmLogin.Uid + " 晚上好!"; else if (uType == "NormalUser") lblSayHi.Text = "亲爱的 " + FrmLogin.Uid + " 晚上好!"; } else //否则 默认为 lblSayHi.Text = "欢迎使用 电影记录管理系统" + FrmLogin.Uid; //------------------------------新增代码----------------------------------// //------------------------------新增代码----------------------------------// //判断用户类型 并给用户设置功能权限 if (uType == "NormalUser") { tsbRegistration.Enabled = false; tsbLog.Enabled = false; } //------------------------------新增代码----------------------------------// }
我们来做个小测试,测试之前,你需要在数据库 MovieAccount表的 UserType列里手动插入几条用户类型.这里我得admin1的用户类型为Administrator.
管理员 admin1 登录
普通用户 user1 登录
在用户类型获取成功之后,我们需要给管理员和普通用户 分配相应的功能权限 (管理员默认是拥有所有功能的使用权限,普通用户有些功能无法使用).
首先,我们在主窗体FrmMain上对普通用户禁用几个功能按钮,(将按钮的Enabled属性设置为 false).
这里禁用了 用户注册 和 日志查看 2个按钮的功能,(将如下代码 添加到加载窗体下).
//------------------------------新增代码----------------------------------// //判断用户类型 并给用户设置功能权限 if (uType == "NormalUser") { tsbRegistration.Enabled = false; tsbLog.Enabled = false; } //------------------------------新增代码----------------------------------//
我们再来测试下,使用 用户类型为NormalUser user1登录系统.
user1 登录后,用户注册和日志查询变为不可用.
然后,在管理界面里 普通用户设置权限为 可以查看数据 但不能增删改.
//当系统加载的时候自动显示DataGridView的数据 private void FrmManager_Load(object sender, EventArgs e) { //调用刷新数据的方法 Refresh(); cmbforTypeSelecting.Text = "全局搜索"; cmbforTypeSelecting.Items.Add("全局搜索"); cmbforTypeSelecting.Items.Add("编号"); cmbforTypeSelecting.Items.Add("电影名称"); cmbforTypeSelecting.Items.Add("导演"); cmbforTypeSelecting.Items.Add("发行时间"); //----------------------新增代码-------------------// //添加对用户 类型的判断 用来设置功能按钮的使用权限 if (FrmLogin.UserType == "NormalUser") { btnDelete.Enabled = false; btnAdd.Enabled = false; btnSave.Enabled = false; } //----------------------新增代码-------------------// }
我们再来测试下,用的还是 普通用户 user1.但 添加 删除 和 保存记录 3个按钮 变得置灰(不可用)了.
当然,由于新增了一列UserType,之前的用户注册功能(没有分类用户) 所以我们得稍作修改.
我们在 用户注册窗体FrmRegistration上增加2个radiobutton,用于注册的时候进行用户分类注册.
一个是管理员name:rdoAdministrator 一个是普通用户name: rdoNormalUser
然后,修改之前的用户注册代码.很简单,主要是在radiobutton的CheckedChanged事件下 增加了 一个uType 类型 用于获取当前的用户类型.
然后在之前的Sql插入语句里 新增了一列 UserType.
//----------------------新增代码-------------------------// //new一个 uType 来获取 radiobutton 点击事件下 触发的用户类型赋值 string uType = ""; if (rdoAdministrator.Checked) //当管理员的radiobutton被点击后 uType = "Administrator"; //传给 uType 一个管理员 else if (rdoNormalUser.Checked) //同理 uType = "NormalUser"; else //若不点击 则默认为普通用户注册 uType = "NormalUser"; //sql 插入语句 我们新增了 一列 UserType string sqlInsert = "insert into MovieAccount(MUserName,MUserPwd,UserType) values(@MUserName,@MUserPwd,@UserType) "; //使用1个SQL参数数组 来装载 需要插入的数据 SqlParameter[] param = { new SqlParameter("@MUserName",txtUid.Text), new SqlParameter("@MUserPwd",txtPwd.Text), new SqlParameter("@UserType",uType) //新增了1个sql参数 uType }; //----------------------新增代码-------------------------//
好了,我们来简单测试下 新做好的用户分类注册.
先注册个管理员用户 admin03
然后,数据库里多了一行数据 admin03, 用户类型是 Administrator.
我们再注册一个 普通用户 user03.
数据库里多了 一条user03 用户类型为 NormalUser
这样,我们的用户分类和简单的功能权限设置就完成.感兴趣的朋友可以自己动手在日志查询那里新增一列-用户类型,这里就不讲了.
附上源代码
MovieRecordManagementSystem07.zip
相关推荐 [点此查看目录]
作者:SilverSky(SoFlash)
出处:http://www.cnblogs.com/longwu/
欢迎学习和转载,转载请注明出处.