zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [网络流24题]飞行员配对方案问题
    bzoj 1571: [Usaco2009 Open]滑雪课
    bzoj 1001: [BeiJing2006]狼抓兔子
    bzoj 1711: [Usaco2007 Open]Dining吃饭
    bzoj 3379: [Usaco2004 Open]Turning in Homework 交作业
    bzoj 1412: [ZJOI2009]狼和羊的故事
    luogu P1345 [USACO5.4]奶牛的电信Telecowmunication
    hdu1512 Monkey King
    [BZOJ2006][NOI2010]超级钢琴(ST表+堆)
    [BZOJ4824][CQOI2017]老C的键盘(树形DP)
  • 原文地址:https://www.cnblogs.com/start-from-scratch/p/5431388.html
Copyright © 2011-2022 走看看