数据库设计
这里由于增加了普通用户权限值,我们需要对数据库结构稍作修改.这里在MovieAccount表中增加4列内容 分别用于
RightFManager 判断普通用户管理界面权限 RightFRegistration 判断普通用户注册权限
RightFPwdChange 判断普通用户密码修改权限 RightFLog 判断普通用户日志查询权限
详细数据库语句:
1 use Vip 2 select * from VipAccount 3 alter table VipAccount add RightFManager int null 4 alter table VipAccount add RightFRegistration int null 5 alter table VipAccount add RightFPwdChange int null 6 alter table VipAccount add RightFLog int null
登录窗体(VIPLogin.cs)代码修改,详细代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace 会员管理系统 { public partial class VIPLogin : Form { public VIPLogin() { InitializeComponent(); } //用于连接配置文件App.config string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; //定义一个全局变量 Uid; //用于获取登录成功后的用户名 public static string uid; //定义一个全局变量 time; //用于获取用户登录时的时间 public static DateTime time; //定义一个全局变量situation //用于获取用户的登录状态 public static string situation; //定义一个全局变量UserType //用于获取用户权限 public static string UserType; //定义一个全局变量 数组FRight 来获取登录成功的普通用户功能权限 public static int[] FRight; //登录按钮 private void btnLogin_Click(object sender, EventArgs e) { //连接数据库语句 using(SqlConnection con=new SqlConnection(connStr)) { //操作数据库语句 string sql = "select vuserpwd,usertype,RightFManager,RightFRegistration,RightFPwdChange,RightFLog from vipaccount where vUserName='" + txtName.Text + "'"; using(SqlCommand cmd=new SqlCommand(sql,con)) { //打开数据库 con.Open(); //使用 SqlDataReader 来 读取数据库 using (SqlDataReader sdr = cmd.ExecuteReader()) { //SqlDataReader 在数据库中为 从第1条数据开始 一条一条往下读 if (sdr.Read()) //如果读取账户成功(文本框中的用户名在数据库中存在) { //则将第1条 密码 赋给 字符串pwd ,并且依次往后读取 所有的密码 //Trim()方法为移除字符串前后的空白 string pwd = sdr.GetString(0).Trim(); //读取器sdr获取了2列数据 第1列为密码 第2列 即索引为1的是用户类型 string uType = sdr.GetString(1).Trim() ; //如果 文本框中输入的密码 ==数据库中的密码 if (pwd == txtPwd.Text) { uid = txtName.Text; time = DateTime.Now; situation = "登录"; //将登录成功的用户类型 赋给全局变量UserType //用于获取当前登录 用户的类型 UserType = uType; /************用户登录成功后 对用户类型进行判断********************/ //用户功能权限索引i 对应的数据读取器sdr里的索引是 是 i+2 //FRight[0] = sdr.GetInt32(2); //RightFManager //FRight[1] = sdr.GetInt32(3); //RightFRegistration //FRight[2] = sdr.GetInt32(4); //RightFPwdChange //FRight[3] = sdr.GetInt32(5); //RightFLog //如果用户为普通用户 则检查 其功能权限 管理员不被检查 if (UserType == "NormalUser") { FRight = new int[4]; for (int i = 0; i < FRight.Length; i++) { //如果数据读取器中读到数据库中的权限值为0 if (sdr.GetInt32(i + 2) == 0) { //则赋给全局变量0 说明该功能被禁用 FRight[i] = 0; } //如果 为1 else if (sdr.GetInt32(i + 2) == 1) { //赋给全局变量1 该功能可用 FRight[i] = 1; } else { //否则默认为0 该功能不可用 FRight[i] = 0; } } } //说明在该账户下 密码正确, 系统登录成功 MessageBox.Show("登录成功,正在进入主界面......"); //***************新增代码*************** VIPLog vl = new VIPLog(); //添加当前的用户信息到日志中 vl.AddMsg(); //退出程序 //创建新的会员资料管理界面窗体并显示,同时把登录界面隐藏 //VIPManager vm=new VIPManager(); VIPMain vmain = new VIPMain(); vmain.Show(); this.Hide(); //***************新增代码*************** } else { //密码错误 MessageBox.Show("密码错误,请重新输入"); txtPwd.Text = ""; } } else { //用户名错误 MessageBox.Show("用户名错误,请重新输入!"); txtName.Text = ""; } } } } } //设置快捷键 private void VIPLogin_KeyDown(object sender, KeyEventArgs e) { //如果按下ESC键 if (e.KeyCode == Keys.Escape) { //关闭窗体 this.Close(); } //如果按下F5键 else if (e.KeyCode == Keys.F5) { //调用登录按钮单击事件 this.btnLogin_Click(null,null); } } //关闭 private void btnClose_Click(object sender, EventArgs e) { //彻底的退出 System.Environment.Exit(0); } //当登录窗体为活动窗体时 private void VIPLogin_Activated(object sender, EventArgs e) { //设置文本框txtName获得焦点 txtName.Focus(); } //获取文本框txtName的快捷键 private void txtName_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { txtPwd.Focus(); txtPwd.SelectAll(); } } //获取文本框txtPwd的快捷键 private void txtPwd_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { btnLogin_Click(null, null); } } } }
主界面(VIPMain.cs)代码修改,详细如下:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 namespace 会员管理系统 12 { 13 public partial class VIPMain : Form 14 { 15 public VIPMain() 16 { 17 InitializeComponent(); 18 //窗体加载的时候 自动获取 并判断普通用户的功能权限 19 20 //当用户为普通用户的时候 需要判断下其功能权限 管理员不接受检查 21 if (VIPLogin.UserType=="NormalUser") 22 { 23 //对应的功能权限为1的时候 本功能开放 24 if (VIPLogin.FRight[0] == 1) 25 { 26 btnVIPManager.Enabled = true; 27 } 28 //否则 禁用本功能 29 else 30 { 31 btnVIPManager.Enabled = false; 32 } 33 //对应的功能权限为1的时候 本功能开放 34 if (VIPLogin.FRight[1] == 1) 35 { 36 btnRegistration.Enabled = true; 37 } 38 //否则 禁用本功能 39 else 40 { 41 btnRegistration.Enabled = false; 42 } 43 //对应的功能权限为1的时候 本功能开放 44 if (VIPLogin.FRight[2] == 1) 45 { 46 btnPwdChange.Enabled = true; 47 } 48 //否则 禁用本功能 49 else 50 { 51 btnPwdChange.Enabled = false; 52 } 53 //对应的功能权限为1的时候 本功能开放 54 if (VIPLogin.FRight[3] == 1) 55 { 56 btnLog.Enabled = true; 57 } 58 //否则 禁用本功能 59 else 60 { 61 btnLog.Enabled = false; 62 } 63 } 64 } 65 66 private void btnVIPManager_Click(object sender, EventArgs e) 67 { 68 VIPManager vm = new VIPManager(); 69 vm.Show(); 70 this.Hide(); 71 } 72 73 private void btnVIPLogin_Click(object sender, EventArgs e) 74 { 75 VIPLog vipl = new VIPLog(); 76 vipl.GetExitTime(); 77 vipl.AddMsg(); 78 VIPLogin vp = new VIPLogin(); 79 vp.Show(); 80 this.Hide(); 81 } 82 83 private void btnClose_Click(object sender, EventArgs e) 84 { 85 VIPLog vipl = new VIPLog(); 86 vipl.GetExitTime(); 87 vipl.AddMsg(); 88 //彻底的退出 89 System.Environment.Exit(0); 90 } 91 92 private void btnPwdChange_Click(object sender, EventArgs e) 93 { 94 VIPPwdChange vpc = new VIPPwdChange(); 95 vpc.Show(); 96 this.Hide(); 97 } 98 99 private void VIPMain_Load(object sender, EventArgs e) 100 { 101 lblCurrentUser.Text = "当前登录用户为:"+VIPLogin.uid+ " 用户类型:" + VIPLogin.UserType + " 登录时间为:"+VIPLogin.time; 102 //给当前用户打招呼 103 //这里通过获取当前用户电脑上的时间 以及判断登录用户的类型 来给不同类型的用户打招呼 104 // 定义整型变量 intTime 来获取 用户电脑上的具体小时数 然后在如下进行判断 105 int inttime = VIPLogin.time.Hour; 106 //获取VIPLogin窗体的全局变量 UserType 用户类型, 用于给不同类型的用户打招呼 107 string uType = VIPLogin.UserType; 108 //在凌晨0-6点的时候 109 if (inttime >= 0 && inttime < 6) 110 { 111 if (uType == "Administrator") 112 { 113 lblSayHi.Text = "尊敬的"+ VIPLogin.uid + "您好,现在已夜深,请注意休息!"; 114 } 115 else if (uType == "NormalUser") 116 { 117 lblSayHi.Text = "亲爱的" + VIPLogin.uid + "您好,现在已夜深,请注意休息!"; 118 } 119 } 120 //早上6点-中午12点的时候 121 else if (inttime >= 6 && inttime < 12) 122 { 123 if (uType == "Administrator") 124 { 125 lblSayHi.Text = "尊敬的" + VIPLogin.uid + "早上好!"; 126 } 127 else if (uType == "NormalUser") 128 { 129 lblSayHi.Text = "亲爱的" + VIPLogin.uid + "早上好!"; 130 } 131 } 132 //中午12点-下午6点的时候 133 else if (inttime >= 12 && inttime < 18) 134 { 135 if (uType == "Administrator") 136 { 137 lblSayHi.Text = "尊敬的" + VIPLogin.uid + "下午好!"; 138 } 139 else if (uType == "NormalUser") 140 { 141 lblSayHi.Text = "亲爱的" + VIPLogin.uid + "下午好!"; 142 } 143 } 144 //晚上 145 else if (inttime >= 18 && inttime < 24) 146 { 147 if (uType == "Administrator") 148 { 149 lblSayHi.Text = "尊敬的" + VIPLogin.uid + "晚上好!"; 150 } 151 else if (uType == "NormalUser") 152 { 153 lblSayHi.Text = "亲爱的" + VIPLogin.uid + "晚上好!"; 154 } 155 } 156 //否则 默认为 157 else 158 { 159 lblSayHi.Text = "欢迎使用会员管理系统!"; 160 } 161 ////判断用户类型 并给用户设置功能权限 162 //if (uType == "NormalUser") 163 //{ 164 // btnRegistration.Enabled = false; 165 // btnLog.Enabled = false; 166 //} 167 } 168 169 private void btnLog_Click(object sender, EventArgs e) 170 { 171 VIPLog vl=new VIPLog(); 172 vl.Show(); 173 this.Hide(); 174 } 175 176 private void btnRegistration_Click(object sender, EventArgs e) 177 { 178 VIPRegistration vrn = new VIPRegistration(); 179 vrn.Show(); 180 this.Hide(); 181 } 182 183 private void btnVIPUserManger_Click(object sender, EventArgs e) 184 { 185 VIPUserManger vum = new VIPUserManger(); 186 vum.Show(); 187 this.Hide(); 188 } 189 } 190 }
用户权限功能判断成功之后,我们便要开始写管理员给普通用户分配权限的功能,我们新建一个普通用户管理窗体VIPUserManger.cs(该功能仅限于管理员使用).
窗体设计如下:
详细代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 using System.Data.SqlClient; 11 using System.Configuration; 12 13 namespace 会员管理系统 14 { 15 public partial class VIPUserManger : Form 16 { 17 public VIPUserManger() 18 { 19 InitializeComponent(); 20 } 21 //定义私有变量-功能权限值 用于获取 radiobutton 被check后的返回值 22 private int rightFManager = 0; 23 private int rightFRegistration = 0; 24 private int rightFPwdChange = 0; 25 private int rightFLog = 0; 26 27 //strType 用于获取 当前DataGridView 被点中行的用户类型 28 private string strUType = ""; 29 30 //经常会调用的数据库语句,放出来方便使用 31 string connstr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; 32 33 private void ViewAllUsers() 34 { 35 //string connstr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; 36 SqlConnection conn = new SqlConnection(connstr); 37 string sql = "select * from VipAccount"; 38 SqlCommand cmd = new SqlCommand(sql,conn); 39 DataTable dt = new DataTable(); 40 SqlDataAdapter sda = new SqlDataAdapter(cmd); 41 sda.Fill(dt); 42 dgvUserManger.DataSource = dt; 43 } 44 45 private void VIPUserManger_Load(object sender, EventArgs e) 46 { 47 //为cboUserType下拉框添加可选值 48 cboUserType.Items.AddRange(new string[] { "NormalUser", "Administrator" }); 49 //刷新dgvUserManger数据界面 50 ViewAllUsers(); 51 } 52 53 private void btnBack_Click(object sender, EventArgs e) 54 { 55 VIPMain vm = new VIPMain(); 56 vm.Show(); 57 this.Hide(); 58 } 59 60 private void btnClose_Click(object sender, EventArgs e) 61 { 62 Application.Exit(); 63 } 64 65 private void dgvUserManger_CellContentClick(object sender, DataGridViewCellEventArgs e) 66 { 67 //点中DataGridView后,将当前行内容传递给文本框 便于在文本框中修改 68 txtUserName.Text = dgvUserManger.Rows[e.RowIndex].Cells["vusername"].Value.ToString(); 69 txtPwd.Text = dgvUserManger.Rows[e.RowIndex].Cells["vuserpwd"].Value.ToString(); 70 cboUserType.Text = dgvUserManger.Rows[e.RowIndex].Cells["usertype"].Value.ToString(); 71 72 //获取用户类型 73 strUType = cboUserType.Text.Trim(); 74 /************************************************************************************/ 75 //每次点击 DataGridView新的行之前 都要把前一次点击行的 CheckBox 状态调整为系统默认状态 全未选中 并且都可选 76 //比如 如果之前 点了NormalUser 再点Administer 会保留之前NormalUser的选择项 这里我们需要清空 77 chkManager.Checked = false; 78 chkRegistration.Checked = false; 79 chkPwdChange.Checked = false; 80 chkLog.Checked = false; 81 82 txtUserName.Enabled = true; 83 txtPwd.Enabled = true; 84 cboUserType.Enabled = true; 85 chkManager.Enabled = true; 86 chkRegistration.Enabled = true; 87 chkPwdChange.Enabled = true; 88 chkLog.Enabled = true; 89 90 if (strUType == "NormalUser") 91 { 92 //获取当前DataGridView被点中行内容中的用户权限值 93 rightFManager = Convert.ToInt32(dgvUserManger.Rows[e.RowIndex].Cells["RightFManager"].Value); 94 rightFRegistration = Convert.ToInt32(dgvUserManger.Rows[e.RowIndex].Cells["RightFRegistration"].Value); 95 rightFPwdChange = Convert.ToInt32(dgvUserManger.Rows[e.RowIndex].Cells["RightFPwdChange"].Value); 96 rightFLog = Convert.ToInt32(dgvUserManger.Rows[e.RowIndex].Cells["RightFLog"].Value); 97 98 //同时判断获取的权限值 并相应的选中Checkbox 99 if (rightFManager == 1) 100 chkManager.Checked = true; 101 else 102 chkManager.Checked = false; 103 if (rightFRegistration == 1) 104 chkRegistration.Checked = true; 105 else 106 chkRegistration.Checked = false; 107 if (rightFPwdChange == 1) 108 chkPwdChange.Checked = true; 109 else 110 chkPwdChange.Checked = false; 111 if (rightFLog == 1) 112 chkLog.Checked = true; 113 else 114 chkLog.Checked = false; 115 } 116 //当用户类型为管理员的时候,将所有的CheckBox禁用, 管理员功能权限不允许设置 117 else if (strUType == "Administrator") 118 { 119 chkManager.Enabled = false; 120 chkPwdChange.Enabled = false; 121 chkRegistration.Enabled = false; 122 chkLog.Enabled = false; 123 124 txtUserName.Enabled = false; 125 txtPwd.Enabled = false; 126 cboUserType.Enabled = false; 127 } 128 } 129 130 //查询用户信息 131 private void txtUserQuery_TextChanged(object sender, EventArgs e) 132 { 133 string sql = ""; 134 135 if (txtUserQuery.Text.Trim() == "") 136 { 137 //执行查询语句 138 sql = "select * from VipAccount"; 139 } 140 else 141 { 142 //全局搜索 (通过用户ID 用户名和 用户类型进行模糊查找) 143 sql = "select * from VipAccount where(vId like'%" + txtUserQuery.Text.Trim() + "%')or(vUserName like'%" + txtUserQuery.Text.Trim() + "%')or(UserType like'%" + txtUserQuery.Text.Trim() + "%')"; 144 } 145 SqlConnection conn = new SqlConnection(connstr); 146 SqlCommand cmd = new SqlCommand(sql, conn); 147 DataTable dt = new DataTable(); 148 SqlDataAdapter sda = new SqlDataAdapter(cmd); 149 sda.Fill(dt); 150 dgvUserManger.DataSource = dt; 151 152 } 153 154 //调用查看所有用户的方法来刷新当前 DataGridView的内容 155 private void btnView_Click(object sender, EventArgs e) 156 { 157 //点击 "查看所有" 按钮 调用 ViewAllUsers 方法 刷新 并查当前看所有用户 158 ViewAllUsers(); 159 } 160 161 //添加用户 162 private void btnAdd_Click(object sender, EventArgs e) 163 { 164 //判断插入的数据是否为空,如果为空,则提示重新插入! 165 if (txtUserName.Text.Trim() == "" || txtPwd.Text.Trim() == "" || cboUserType.Text == "") 166 { 167 MessageBox.Show("插入数据不能为空,请按要求插入数据!"); 168 return; 169 } 170 if (cboUserType.Text == "Administrator") 171 { 172 MessageBox.Show("暂不开放注册管理员功能!"); 173 return; 174 } 175 176 //使用SQL插入数据语句 177 string sql = "insert into VipAccount(vUserName,vUserPwd,UserType,RightFManager,RightFRegistration,RightFPwdChange,RightFLog) values (@vUserName,@vUserPwd,@UserType,@RightFManager,@RightFRegistration,@RightFPwdChange,@RightFLog)"; 178 179 //判断 哪些CheckBox 被选中 180 JudgeChecked(); 181 182 //向数据库插入参数 183 SqlParameter[] param ={ 184 new SqlParameter("@vUserName",txtUserName.Text.Trim()), 185 new SqlParameter("@vUserPwd",txtPwd.Text.Trim()), 186 new SqlParameter("@UserType",cboUserType.Text.Trim()), 187 new SqlParameter("@RightFManager",rightFManager), 188 new SqlParameter("@RightFRegistration",rightFRegistration), 189 new SqlParameter("@RightFPwdChange",rightFPwdChange), 190 new SqlParameter("@RightFLog",rightFLog) 191 192 }; 193 194 SqlConnection conn = new SqlConnection(connstr); 195 SqlCommand cmd = new SqlCommand(sql,conn); 196 conn.Open(); 197 cmd.Parameters.AddRange(param); 198 int n = cmd.ExecuteNonQuery(); 199 conn.Close(); 200 201 if (n > 0) 202 { 203 MessageBox.Show("数据插入成功!"); 204 } 205 else 206 { 207 MessageBox.Show("插入失败!"); 208 return; 209 } 210 211 //调用ViewAllUsers 方法 用于刷新 在添加完成数据后 自动刷新数据 212 ViewAllUsers(); 213 } 214 //判断CheckBox是否被点重或是取消, 用于更新和修改用户权限 215 private void JudgeChecked() 216 { 217 //当相应的功能权限 checkbox 被点中 或者取消 将分别赋值 并传给相应的私有变量 用于数据库添加,更新等操作 218 if (chkManager.Checked == true) 219 rightFManager = 1; 220 else 221 rightFManager = 0; 222 if (chkRegistration.Checked == true) 223 rightFRegistration = 1; 224 else 225 rightFRegistration = 0; 226 if (chkPwdChange.Checked == true) 227 rightFPwdChange = 1; 228 else 229 rightFPwdChange = 0; 230 if (chkLog.Checked == true) 231 rightFLog = 1; 232 else 233 rightFLog = 0; 234 } 235 236 //保存修改的信息 237 private void btnSave_Click(object sender, EventArgs e) 238 { 239 //在对数据进行修改之前 对文本框的内容做一下检查 是否用户已经输入内容, 如果为空 则提示重新输入 240 if (txtUserName.Text.Trim() == "" || txtPwd.Text.Trim() == "" || cboUserType.Text.Trim() == "") 241 { 242 MessageBox.Show("文本框的输入不能为空!"); 243 return; 244 } 245 if (cboUserType.Text == "Administrator") 246 { 247 MessageBox.Show("暂不开放注册管理员功能!"); 248 return; 249 } 250 251 //判断 哪些CheckBox 被选中 252 JudgeChecked(); 253 254 //使用SQL update 更新语句 255 //获取文本框 和ComboBox 输入的内容, 通过用户的ID(vId) 进行更新(ID为当前鼠标点击行的vId) 256 string sqlUpdate = "update VipAccount set vUserName = @vUserName, vUserPwd = @vUserPwd,UserType=@UserType,RightFManager=@RightFManager,RightFRegistration=@RightFRegistration,RightFPwdChange=@RightFPwdChange,RightFLog=@RightFLog where vId=@vId"; 257 258 SqlParameter[] param ={ 259 new SqlParameter("@vUserName",txtUserName.Text.Trim()), 260 new SqlParameter("@vUserPwd",txtPwd.Text.Trim()), 261 new SqlParameter("@UserType",cboUserType.Text.Trim()), 262 new SqlParameter("@RightFManager",rightFManager), 263 new SqlParameter("@RightFRegistration",rightFRegistration), 264 new SqlParameter("@RightFPwdChange",rightFPwdChange), 265 new SqlParameter("@RightFLog",rightFLog), 266 new SqlParameter("@vId",dgvUserManger.CurrentRow.Cells[0].Value), 267 }; 268 SqlConnection conn = new SqlConnection(connstr); 269 SqlCommand cmd = new SqlCommand(sqlUpdate, conn); 270 conn.Open(); 271 cmd.Parameters.AddRange(param); 272 int n = cmd.ExecuteNonQuery(); 273 conn.Close(); 274 275 //判定 如果n=0,则说明没有获取到数据,ExecuteNonQuery执行不成功 276 if (n == 0) 277 { 278 //提示更新失败 279 MessageBox.Show("更新失败!"); 280 return;// 并且返回 281 } 282 else 283 { 284 //否则更新成功 285 MessageBox.Show("恭喜你!更新成功!"); 286 } 287 288 //保存完以后 调用刷新方法,将更新后的数据 显示在datagridview上面 289 ViewAllUsers(); 290 } 291 292 //删除DataGridView里 选中的用户 293 private void btnDelete_Click(object sender, EventArgs e) 294 { 295 //使用sql删除语句 296 string sqlDelete = null; 297 //如果datagridview的当前行被选中 298 if (dgvUserManger.CurrentRow.Selected) 299 { 300 //获取当前点中行的vID 并且 将当前行的vID号 赋给SQL 语句 301 sqlDelete = "delete from VipAccount where vId=@vId"; 302 } 303 304 SqlParameter[] param = { 305 new SqlParameter("@vId",Convert.ToInt32(dgvUserManger.CurrentRow.Cells[0].Value)) 306 }; 307 SqlConnection conn = new SqlConnection(connstr); 308 SqlCommand cmd = new SqlCommand(sqlDelete, conn); 309 conn.Open(); 310 cmd.Parameters.AddRange(param); 311 int n = cmd.ExecuteNonQuery(); 312 conn.Close(); 313 //如果n>0 说明删除数据成功 314 if (n > 0) 315 { 316 MessageBox.Show("删除成功!"); 317 } 318 else //否则失败 319 { 320 MessageBox.Show("不存在的ID!"); 321 } 322 //删除完后 刷新一下当前数据 323 ViewAllUsers(); 324 } 325 } 326 }
最后,由于在数据库中新增了几列普通用户功能权限的字段,我们的用户注册窗体也需要稍作修改(这里普通用户注册是默认禁用其所有功能权限,需要管理员在普通用户管理窗体赋予其相应的功能权限).
详细代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 using System.Data.SqlClient; 11 using System.Configuration; 12 13 namespace 会员管理系统 14 { 15 public partial class VIPRegistration : Form 16 { 17 public VIPRegistration() 18 { 19 InitializeComponent(); 20 } 21 22 23 //提交按钮 24 private void btnOK_Click(object sender, EventArgs e) 25 { 26 27 string connstr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; 28 SqlConnection conn = new SqlConnection(connstr); 29 string sql = string.Format("select vusername from VipAccount where vUserName='{0}' ", txtName.Text); 30 SqlCommand cmd = new SqlCommand(sql, conn); 31 conn.Open(); 32 SqlDataReader sda = cmd.ExecuteReader(); 33 34 //new一个 uType 来获取 radiobutton 点击事件下 触发的用户类型赋值 35 string uType = ""; 36 37 int rightFManager = 0; 38 int rightFRegistration = 0; 39 int rightFPwdChange = 0; 40 int rightFLog = 0; 41 42 if (rdoAdministrator.Checked) 43 { 44 uType = "Administrator"; 45 rightFManager = 1; 46 rightFRegistration = 1; 47 rightFPwdChange = 1; 48 rightFLog = 1; 49 } 50 else if (rdoNormalUser.Checked) 51 { 52 uType = "NormalUser"; 53 } 54 else 55 { 56 uType = "NormalUser"; 57 } 58 59 //--------------------------- 60 if (txtName.Text.Trim() == "") 61 { 62 lblName.Text = "用户名不能为空"; 63 return; 64 } 65 else if (txtPwd.Text.Trim() == "" || txtPwdConfirm.Text.Trim() == "") 66 { 67 lblPwd.Text = "密码不能为空"; 68 return; 69 } 70 else if (txtPwdConfirm.Text.Trim() != txtPwd.Text.Trim()) 71 { 72 lblPwdConfirm.Text = "两次密码输入不同,请确认后再输"; 73 return; 74 } 75 else if (sda.Read()) 76 { 77 lblName.Text = "用户名已存在,请重新输入"; 78 return; 79 } 80 else 81 { 82 conn.Close(); 83 SqlConnection conninsert = new SqlConnection(connstr); 84 //string insertsql = string.Format("insert into VipAccount(vUserName,vUserPwd) values('{0}','{1}')",txtName.Text,txtPwd.Text); 85 string insertsql = "insert into VipAccount(vUserName,vUserPwd,UserType,RightFManager,RightFRegistration,RightFPwdChange,RightFLog) values(@vUserName,@vUserPwd,@UserType,@RightFManager,@RightFRegistration,@RightFPwdChange,@RightFLog) "; 86 //使用1个SQL参数数组 来装载 需要插入的数据 87 SqlParameter[] param = { 88 new SqlParameter("@vUserName",txtName.Text), 89 new SqlParameter("@vUserPwd",txtPwd.Text), 90 new SqlParameter("@UserType",uType), 91 new SqlParameter("@RightFManager",rightFManager), 92 new SqlParameter("@RightFRegistration",rightFRegistration), 93 new SqlParameter("@RightFPwdChange",rightFPwdChange), 94 new SqlParameter("@RightFLog",rightFLog) 95 }; 96 97 SqlCommand cmdinsert = new SqlCommand(insertsql, conninsert); 98 conninsert.Open(); 99 cmdinsert.Parameters.AddRange(param); 100 int n = cmdinsert.ExecuteNonQuery(); 101 if (n == 0) 102 { 103 MessageBox.Show("注册失败,请重新输入"); 104 } 105 else 106 { 107 MessageBox.Show("注册成功"); 108 } 109 conninsert.Close(); 110 111 } 112 //conn.Close(); 113 } 114 115 //返回主菜单 116 private void btnBack_Click(object sender, EventArgs e) 117 { 118 VIPMain vm = new VIPMain(); 119 vm.Show(); 120 this.Hide(); 121 } 122 123 private void VIPRegistration_Load(object sender, EventArgs e) 124 { 125 lblName.Text = ""; 126 lblPwd.Text = ""; 127 lblPwdConfirm.Text = ""; 128 } 129 130 } 131 }
附上源代码: