A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪磊 中级黑马   /  2012-12-11 00:21  /  1190 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

前段时间闲着蛋疼,做了个学生综合信息管理系统,可是后来决定去黑马了,每天忙着学习,加上毕业实习一大堆事情,导致只完成了一部分内容,目前只实现了用户登录并根据用户权限设置功能限制,修改密码,添加用户,和删除用户!其实完成这几项也就差不多了,无非就是对数据库的增删查改嘛!

窗口界面如下,功能就不用介绍了:






评分

参与人数 1黑马币 +30 收起 理由
郑文 + 30 加油 继续努力

查看全部评分

4 个回复

倒序浏览
本帖最后由 汪磊 于 2012-12-11 13:55 编辑

昨天晚上网太卡了,没写完  抱歉:
下面是公共类代码;
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Data.OleDb;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Collections;

  9. namespace 学生信息管理系统
  10. {
  11.     public class DBClass
  12.     {
  13.         //初始化字段
  14.         private static OleDbConnection conn = null;
  15.         private static OleDbCommand cmd = null;
  16.         private static OleDbDataReader sdr = null;
  17.         /// <summary>
  18.         /// 数据库操作类构造函数
  19.         /// </summary>
  20.         public DBClass()
  21.         {
  22.         }
  23.         /// <summary>
  24.         /// 获取数据库连接
  25.         /// </summary>
  26.         /// <returns>打开数据库连接</returns>
  27.         private static OleDbConnection GetConn()
  28.         {
  29.             //从配置文件获取数据库连接字符串
  30.             string connStr = ConfigurationManager.ConnectionStrings["DBPath"].ConnectionString;
  31.             conn = new OleDbConnection(connStr);
  32.             //判断数据库当前状态并选择是否打开连接
  33.             if (conn.State == ConnectionState.Closed)
  34.             {
  35.                 conn.Open();
  36.             }
  37.             return conn;
  38.         }
  39.         #region 登录判断
  40.         static int loginFlag;
  41.         /// <summary>
  42.         /// 登录判断方法
  43.         /// </summary>
  44.         /// <param name="sql">传入要查询的SQL语句</param>
  45.         /// <returns>0:表示用户名或密码不正确;1:表示权限为0的用户;2:表示权限为1的用户</returns>
  46.         public static int Login(string userName, string password)
  47.         {
  48.             using (conn = GetConn())
  49.             {
  50.                 //using (cmd=new OleDbCommand(sql,conn))//此方法易被强行注入
  51.                 using (cmd = conn.CreateCommand())
  52.                 {
  53.                     //cmd.CommandText = "select 权限 from userid where 用户名='" + userName + "' and 密码 ='" + password + "'";//字符串拼接方式构成SQL语句易被注入破解!!!切记
  54.                     cmd.CommandText = "select 权限 from userID where 用户名=@UN and 密码=@P";
  55.                     cmd.Parameters.Add(new OleDbParameter("UN", userName));
  56.                     cmd.Parameters.Add(new OleDbParameter("p", password));
  57.                     //ExecuteScalar返回Command的第一行第一列数据
  58.                     string quanxian = Convert.ToString(cmd.ExecuteScalar());
  59.                     ////不采用!因为多调用一个对象
  60.                     //using (sdr = cmd.ExecuteReader())
  61.                     //{
  62.                     //    while (sdr.Read())
  63.                     //    {
  64.                     //        string quanxian = sdr[0].ToString();
  65.                     //    }
  66.                     //}
  67.                     //权限判断
  68.                     switch (quanxian)
  69.                     {
  70.                         case "":
  71.                             loginFlag = 0;
  72.                             break;
  73.                         case "0":
  74.                             loginFlag = 1;
  75.                             break;
  76.                         case "1":
  77.                             loginFlag = 2;
  78.                             break;
  79.                         default:
  80.                             break;
  81.                     }
  82.                 }
  83.             }
  84.             return loginFlag;
  85.             //用HasRows的方法判断
  86.             //conn = GetConn();
  87.             //cmd = new OleDbCommand(sql, conn);
  88.             //sdr = cmd.ExecuteReader();//执行oledatacommand命令,
  89.             //return sdr.HasRows;
  90.         }
  91.         #endregion
  92.         #region 修改密码
  93.         /// <summary>
  94.         /// 修改密码方法
  95.         /// </summary>
  96.         /// <param name="userName">被修改的用户</param>
  97.         /// <param name="newP">新密码</param>
  98.         public static void ChangePassword(string userName, string newP)
  99.         {
  100.             using (conn = GetConn())
  101.             {
  102.                 using (cmd = conn.CreateCommand())
  103.                 {
  104.                     //cmd.CommandText = "insert into userid(用户名,密码,权限) values('123','reee','0')";
  105.                     cmd.CommandText = "update userid set 密码=@P where 用户名=@UN";
  106.                     cmd.Parameters.Add(new OleDbParameter("P", newP));
  107.                     cmd.Parameters.Add(new OleDbParameter("UN", userName));
  108.                     //执行参数化查询
  109.                     int i = cmd.ExecuteNonQuery();
  110.                 }
  111.             }
  112.         }
  113.         #endregion
  114.         #region 添加用户
  115.         /// <summary>
  116.         /// 添加用户方法
  117.         /// </summary>
  118.         /// <param name="userName">传入要添加的用户名</param>
  119.         /// <param name="password">传入要添加的密码</param>
  120.         /// <param name="role">传入要添加的角色</param>
  121.         public static void AddUser(string userName, string password, string role)
  122.         {
  123.             using (conn = GetConn())
  124.             {
  125.                 using (cmd = conn.CreateCommand())
  126.                 {
  127.                     cmd.CommandText = "insert into userid(用户名,密码,权限) values(@UN,@P,@R)";
  128.                     cmd.Parameters.Add(new OleDbParameter("UN", userName));
  129.                     cmd.Parameters.Add(new OleDbParameter("P", password));
  130.                     cmd.Parameters.Add(new OleDbParameter("R", role));
  131.                     cmd.ExecuteNonQuery();
  132.                 }
  133.             }
  134.         }
  135.         #endregion
  136.         #region 取出所有用户
  137.         /// <summary>
  138.         /// 取出所有用户的用户名
  139.         /// </summary>
  140.         /// <returns>包含所有用户用户名的数组</returns>
  141.         public static ArrayList ReadUser()
  142.         {
  143.             //conn = GetConn();
  144.             //cmd = conn.CreateCommand();
  145.             //cmd.CommandText = "select 用户名 from userid";
  146.             //sdr=cmd.ExecuteReader();
  147.             //ArrayList arr = new ArrayList();
  148.             // while (sdr.Read())
  149.             // {
  150.             //     arr.Add(sdr[0].ToString());
  151.             // }
  152.             // return arr;
  153.              using (conn = GetConn())
  154.              {
  155.                  using (cmd = conn.CreateCommand())
  156.                  {
  157.                      cmd.CommandText = "select 用户名 from userid";
  158.                      using (sdr = cmd.ExecuteReader())
  159.                      {
  160.                          //定义一个动态数组接受该列数据并返回!
  161.                          ArrayList arr = new ArrayList();
  162.                          while (sdr.Read())
  163.                          {
  164.                              arr.Add(sdr[0].ToString());
  165.                          }
  166.                          return arr;
  167.                      }
  168.                  }
  169.              }
  170.         }
  171.         #endregion
  172.         #region 删除用户
  173.         /// <summary>
  174.         /// 删除用户方法
  175.         /// </summary>
  176.         /// <param name="userName">传入要删除的用户名</param>
  177.         public static void DeleteUser(string userName)
  178.         {
  179.             using (conn = GetConn())
  180.             {
  181.                 using (cmd = conn.CreateCommand())
  182.                 {
  183.                     cmd.CommandText = "delete from userid where 用户名=@UN";
  184.                     cmd.Parameters.Add(new OleDbParameter("UN", userName));
  185.                     cmd.ExecuteNonQuery();
  186.                 }
  187.             }
  188.         }
  189.         #endregion
  190.     }
  191. }
复制代码
回复 使用道具 举报
登录窗口代码:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.OleDb;
  6. using System.Drawing;
  7. using System.Text;
  8. using System.Windows.Forms;

  9. namespace 学生信息管理系统
  10. {
  11.     public partial class FormLogin : Form
  12.     {
  13.         public FormLogin()
  14.         {
  15.             InitializeComponent();
  16.         }
  17.         #region 登录事件
  18.         int errorTimes = 3;
  19.         public static string userName, quanxian;
  20.         private void btnLogin_Click(object sender, EventArgs e)
  21.         {
  22.             //判断用户名密码是否为空!
  23.             if (txtName.Text == "" || txtPassword.Text == "")
  24.             {
  25.                 MessageBox.Show("用户名或密码不能为空,请输入密码和用户名", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  26.                 txtName.Focus();
  27.                 return;
  28.                 //Console.WriteLine("用户名或密码不能为空");
  29.             }
  30.             else
  31.             {
  32.                 switch (DBClass.Login(txtName.Text, txtPassword.Text))
  33.                 {
  34.                     case 0://登录失败,用户名或密码错误
  35.                         errorTimes--;
  36.                         if (errorTimes>0)
  37.                         {
  38.                             MessageBox.Show("用户名或密码错误,你还能尝试" + errorTimes + "次!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  39.                             txtName.Text = "";
  40.                             txtPassword.Text = "";
  41.                             txtName.Focus();
  42.                         }
  43.                         else
  44.                         {
  45.                             MessageBox.Show("错误次数过多,程序退出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  46.                             Application.Exit();
  47.                             return;
  48.                         }
  49.                         break;
  50.                     case 1://登录成功并确定权限为0;
  51.                         userName = txtName.Text;
  52.                         quanxian = "管理员";
  53.                         MessageBox.Show("欢迎您" + txtName.Text, "登录成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
  54.                         MdiFather mdi = new MdiFather();
  55.                         mdi.Show();
  56.                         this.Hide();
  57.                         break;
  58.                     case 2://登录成功并确定权限为1;
  59.                         userName = txtName.Text;
  60.                         quanxian = "学生";
  61.                         MessageBox.Show("欢迎您" + txtName.Text, "登录成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
  62.                         mdi = new MdiFather();
  63.                         mdi.Show();
  64.                         this.Hide();
  65.                         break;
  66.                     default://用不到的,万一出现情况程序重启!
  67.                         //throw Exception ex;
  68.                         MessageBox.Show("程序出错\n即将退出", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  69.                         Application.Restart();
  70.                         break;
  71.                 }
  72.             }
  73.             //string sql = string.Format("select*from userID where 用户名='{0}' and 密码='{1}'", txtName.Text, txtPassword.Text);
  74.             ////判断用户名密码是否为空!
  75.             //if (txtName.Text == "" || txtPassword.Text == "")
  76.             //{
  77.             //    MessageBox.Show("用户名或密码不能为空,请输入密码和用户名", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  78.             //    txtName.Focus();
  79.             //    //Console.WriteLine("用户名或密码不能为空");
  80.             //}
  81.             //else if (DBClass.Login(sql))
  82.             //{
  83.             //    MessageBox.Show("欢迎您" + txtName.Text, "登录成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
  84.             //    MdiFather mdi = new MdiFather();
  85.             //    mdi.Show();
  86.             //    this.Hide();
  87.             //    DBClass.conn.Close();
  88.             //}
  89.             //else
  90.             //{
  91.             //    MessageBox.Show("用户名或密码错误,请输入正确的密码和用户名", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  92.             //    txtName.Text = "";
  93.             //    txtPassword.Text = "";
  94.             //    txtName.Focus();
  95.             //}
  96.         }

  97.         private void btnReset_Click(object sender, EventArgs e)
  98.         {
  99.             txtName.Text = "";
  100.             txtPassword.Text = "";
  101.             txtName.Focus();

  102.         }
  103.         #endregion

  104.     }
  105. }
复制代码
回复 使用道具 举报
添加用户代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;

  8. namespace 学生信息管理系统
  9. {
  10.     public partial class MdiChild1 : Form
  11.     {
  12.         public MdiChild1()
  13.         {
  14.             InitializeComponent();
  15.         }

  16.         private void button2_Click(object sender, EventArgs e)
  17.         {
  18.             txtUserName.Text = "";
  19.             txtPassword.Text = "";
  20.             txtPassword2.Text = "";
  21.             cbRole.Text = "";
  22.             txtUserName.Focus();
  23.         }

  24.         private void btntjyh_Click(object sender, EventArgs e)
  25.         {
  26.             string userName = txtUserName.Text;
  27.             string password = txtPassword.Text;
  28.             string password2 = txtPassword2.Text;
  29.             string role = cbRole.SelectedIndex.ToString();
  30.             if (password==password2)
  31.             {
  32.                 DBClass.AddUser(userName, password, role);
  33.                 MessageBox.Show("添加成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  34.                 txtUserName.Text = "";
  35.                 txtPassword.Text = "";
  36.                 txtPassword2.Text = "";
  37.                 cbRole.Text = "";
  38.                 txtUserName.Focus();
  39.             }
  40.             else
  41.             {
  42.                 MessageBox.Show("两次输入的密码不一致!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  43.             }
  44.         }
  45.     }
  46. }
复制代码
回复 使用道具 举报
删除用户代码:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Data.OleDb;
  9. using System.Collections;

  10. namespace 学生信息管理系统
  11. {
  12.     public partial class MdiChild2 : Form
  13.     {
  14.         public MdiChild2()
  15.         {
  16.             InitializeComponent();
  17.         }

  18.         private void btnDelete_Click(object sender, EventArgs e)
  19.         {
  20.             if (cbUser.SelectedItem.ToString() == "admin")
  21.             {
  22.                 MessageBox.Show("你不能删除管理员账户", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  23.             }
  24.             else
  25.             {
  26.                 MessageBox.Show("你确定要删除该用户吗?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
  27.                 DBClass.DeleteUser(cbUser.SelectedItem.ToString());
  28.                 MessageBox.Show("删除成功", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
  29.             }
  30.         }

  31.         private void btnRefresh_Click(object sender, EventArgs e)
  32.         {
  33.             cbUser.Items.Clear();
  34.             ArrayList arr = DBClass.ReadUser();
  35.             foreach (string str in arr)
  36.             {
  37.                 cbUser.Items.Add(str);
  38.             }
  39.         }

  40.         private void cbUser_DropDown(object sender, EventArgs e)
  41.         {
  42.             cbUser.Items.Clear();
  43.             ArrayList arr = DBClass.ReadUser();
  44.             foreach (string str in arr)
  45.             {
  46.                 cbUser.Items.Add(str);
  47.             }
  48.         }

  49.     }
  50. }
复制代码

评分

参与人数 1技术分 +3 收起 理由
宋天琪 + 3

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马