C#_会员管理系统:开发八(权限分配)

数据库设计

这里由于增加了普通用户权限值,我们需要对数据库结构稍作修改.这里在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 }

 附上源代码:

会员管理系统.rar

posted @ 2016-04-25 16:24  翻滚吧炒鸡蛋  阅读(4052)  评论(1编辑  收藏  举报