利用三层架构体系,实现学生管理系统中用户的登录与添加班级信息的功能,一下代码为具体实现步骤的拆分过程:
一、用户登录界面功能的实现
1、在数据访问层(LoginDAL)进行对数据库中数据的访问操作
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 //引入命名空间 7 using System.Data; 8 using System.Data.SqlClient; 9 10 namespace StudentMisDAL 11 { 12 public class LoginDAL 13 { 14 /// <summary> 15 /// 创建返回值类型为DataSet的有参构造函数 16 /// </summary> 17 /// <param name="name"></param> 18 /// <param name="pwd"></param> 19 /// <returns></returns> 20 public DataSet DoLogin(string name,string pwd) 21 { 22 string connstring = "server=.;database=StudentMISDB;uid=sa;pwd=123456"; 23 SqlConnection conn = new SqlConnection(connstring); 24 //执行参数化的sql查询语句 25 string sql = @"select * from Login where [email protected] and [email protected]"; 26 SqlCommand cmd = new SqlCommand(sql, conn); 27 //定义参数 28 SqlParameter[] parameter = new SqlParameter[]{ 29 new SqlParameter("@LoginName",SqlDbType.VarChar,32), 30 new SqlParameter("@pwd",SqlDbType.VarChar,16) 31 }; 32 //给参数赋值 33 parameter[0].Value = name; 34 parameter[1].Value = pwd; 35 //将参数添加到命令对象中 36 cmd.Parameters.AddRange(parameter); 37 //创建适配器 38 SqlDataAdapter da = new SqlDataAdapter(cmd); 39 //创建缓冲区 40 DataSet ds = new DataSet(); 41 conn.Open(); 42 da.Fill(ds); 43 conn.Close(); 44 //返回ds 45 return ds; 46 } 47 } 48 }
2、在业务逻辑层(LoginBLL)对数据访问层中获取到的数据进行逻辑判断分析
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 //引入命名空间 7 using System.Data; 8 using StudentMisDAL; 9 10 namespace StudentMisBLL 11 { 12 public class LoginBLL 13 { 14 /// <summary> 15 /// 创建一个返回值类型为bool型的有参构造函数 16 /// </summary> 17 /// <param name="name"></param> 18 /// <param name="pwd"></param> 19 /// <returns></returns> 20 public bool GetMisUI(string name,string pwd){ 21 //实例化类LoginDAL(数据访问层) 22 LoginDAL ld = new LoginDAL(); 23 //调用方法并接收返回值 24 DataSet ds=ld.DoLogin(name,pwd); 25 //根据返回值:受影响的行数,来进行判断 26 if (ds.Tables[0].Rows.Count<1) 27 { 28 return false; 29 } 30 //防SQL注入 31 //获取到数据库中对应的第一张表中的第一行(也可以传入下标值)的列名叫做LoginName和pwd的值 32 string Name = ds.Tables[0].Rows[0]["LoginName"].ToString(); 33 string PWD = ds.Tables[0].Rows[0]["pwd"].ToString(); 34 if (name==Name&&pwd==PWD) 35 { 36 return true; 37 } 38 return false; 39 } 40 } 41 }
3、在表示层(LoginUI)对业务逻辑层(LoginBLL)中的分析与判断进行调用和可视化
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 using StudentMisBLL; 12 13 namespace StudentMisUI 14 { 15 public partial class LoginUI : Form 16 { 17 public LoginUI() 18 { 19 InitializeComponent(); 20 } 21 /// <summary> 22 /// 为登录按钮添加点击事件 23 /// </summary> 24 /// <param name="sender"></param> 25 /// <param name="e"></param> 26 private void button1_Click(object sender, EventArgs e) 27 { 28 //获取到文本框中输入的值 29 string name = this.txtLoginName.Text.Trim(); 30 string pwd = this.txtPwd.Text.Trim(); 31 //将LoginBLL类(逻辑层)进行实例化 32 LoginBLL lb = new LoginBLL(); 33 //调用方法 34 bool bo=lb.GetMisUI(name,pwd); 35 if (bo==true) 36 { 37 MessageBox.Show("登陆成功!"); 38 //跳转至主窗体 39 FrmMainUI frmMain = new FrmMainUI(); 40 frmMain.Show(); 41 this.Hide(); 42 } 43 else 44 { 45 MessageBox.Show("登陆失败,登录名或密码错误!"); 46 //清空输入框 47 this.txtLoginName.Text = ""; 48 this.txtPwd.Text = ""; 49 } 50 } 51 } 52 }
二、添加班级信息功能的实现
1、在表示层(LoginUI)中进行操作:将LoginUI窗体进行隐藏,将主窗体(FrmMainUI)进行展示
代码如下:
1 if (bo==true) 2 { 3 MessageBox.Show("登陆成功!"); 4 //跳转至主窗体 5 FrmMainUI frmMain = new FrmMainUI(); 6 frmMain.Show(); 7 this.Hide(); 8 } 9 else 10 { 11 MessageBox.Show("登陆失败,登录名或密码错误!"); 12 //清空输入框 13 this.txtLoginName.Text = ""; 14 this.txtPwd.Text = ""; 15 }
2、在表示层(StudentMisUI)创建主窗体(FrmMainUI)
3、位子菜单的“添加班级”菜单创建一个窗体
5、为“添加”按钮添加点击事件
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 using StudentMisModel; 12 using StudentMisBLL; 13 14 namespace StudentMisUI 15 { 16 public partial class FrmAddClassesUI : Form 17 { 18 public FrmAddClassesUI() 19 { 20 InitializeComponent(); 21 } 22 /// <summary> 23 /// 为‘添加班级’窗体中的‘添加按钮’添加点击事件 24 /// </summary> 25 /// <param name="sender"></param> 26 /// <param name="e"></param> 27 private void btnAdd_Click(object sender, EventArgs e) 28 { 29 //实例化‘添加班机’实体类 30 ClassesMod classes = new ClassesMod(); 31 //给实体类赋值 32 classes.ClassesNo = this.txtClassesNo.Text.Trim(); 33 classes.ByName = this.txtByName.Text.Trim(); 34 classes.Name = this.txtClassesName.Text.Trim(); 35 //实例化ClassesBLL类(逻辑层) 36 ClassesBLL cb = new ClassesBLL(); 37 bool bo = cb.AddClassesInfor(classes); 38 if (bo==true) 39 { 40 MessageBox.Show("添加成功!"); 41 //添加成功后清空输入框 42 this.txtClassesNo.Text = ""; 43 this.txtByName.Text = ""; 44 this.txtClassesName.Text = ""; 45 } 46 else 47 { 48 MessageBox.Show("添加失败!"); 49 } 50 } 51 52 53 } 54 }
4、为该系统结构添加实体类(ClassesMod)(序号顺序写反了,但是没有写错)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace StudentMisModel 8 { 9 /// <summary> 10 /// 为‘添加班级’创建实体类 11 /// </summary> 12 public class ClassesMod 13 { 14 //创建班级ID属性 15 public int ClassId { get; set; } 16 //创建班级名称属性 17 public string Name { get; set; } 18 //创建班级别名属性 19 public string ByName { get; set; } 20 //创建班级编号属性 21 public string ClassesNo { get; set; } 22 } 23 }
6、在数据访问层(ClassesDAL)进行数据访问
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 //引入命名空间 7 using StudentMisModel; 8 using System.Data; 9 using System.Data.SqlClient; 10 11 namespace StudentMisDAL 12 { 13 public class ClassesDAL 14 { 15 public int AddClasses(ClassesMod classes) 16 { 17 //建立连接数据库的字符串 18 string connString = "server=.;database=StudentMISDB;uid=sa;pwd=123456"; 19 //创建连接对象 20 SqlConnection conn = new SqlConnection(connString); 21 //参数化的查询语句 22 string sql = "insert into Classes Values(@Name,@ByName,@ClassesNo)"; 23 //执行查询命令 24 SqlCommand cmd = new SqlCommand(sql,conn); 25 //定义参数 26 SqlParameter[] parameters = new SqlParameter[]{ 27 new SqlParameter("@Name",SqlDbType.NVarChar,16), 28 new SqlParameter("@ByName",SqlDbType.NVarChar,32), 29 new SqlParameter("@ClassesNo",SqlDbType.VarChar,16) 30 }; 31 //给参数赋值 32 parameters[0].Value = classes.Name; 33 parameters[1].Value = classes.ByName; 34 parameters[2].Value = classes.ClassesNo; 35 //将参数添加到命令对象 36 cmd.Parameters.AddRange(parameters); 37 conn.Open(); 38 //返回插入后影响的行数 39 int i = cmd.ExecuteNonQuery(); 40 conn.Close(); 41 //返回行数 42 return i; 43 } 44 } 45 }
7、在业务逻辑层(ClassesBLL)进行逻辑判断分析
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 //引入命名空间 7 using StudentMisDAL; 8 using StudentMisModel; 9 10 namespace StudentMisBLL 11 { 12 public class ClassesBLL 13 { 14 public bool AddClassesInfor(ClassesMod classes) 15 { 16 //实例化ClassesDAL类(数据访问层) 17 ClassesDAL cd = new ClassesDAL(); 18 //调用类中的方法并接受 19 int i = cd.AddClasses(classes); 20 //返回一个布尔值 21 return i > 0; 22 } 23 } 24 }
8、再次回到表示层(FrmAddClassesUI)。将业务逻辑层中的方法和分析进行调用,并在表示层进行可视化
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 using StudentMisModel; 12 using StudentMisBLL; 13 14 namespace StudentMisUI 15 { 16 public partial class FrmAddClassesUI : Form 17 { 18 public FrmAddClassesUI() 19 { 20 InitializeComponent(); 21 } 22 /// <summary> 23 /// 为‘添加班级’窗体中的‘添加按钮’添加点击事件 24 /// </summary> 25 /// <param name="sender"></param> 26 /// <param name="e"></param> 27 private void btnAdd_Click(object sender, EventArgs e) 28 { 29 //实例化‘添加班机’实体类 30 ClassesMod classes = new ClassesMod(); 31 //给实体类赋值 32 classes.ClassesNo = this.txtClassesNo.Text.Trim(); 33 classes.ByName = this.txtByName.Text.Trim(); 34 classes.Name = this.txtClassesName.Text.Trim(); 35 //实例化ClassesBLL类(逻辑层) 36 ClassesBLL cb = new ClassesBLL(); 37 bool bo = cb.AddClassesInfor(classes); 38 if (bo==true) 39 { 40 MessageBox.Show("添加成功!"); 41 //添加成功后清空输入框 42 this.txtClassesNo.Text = ""; 43 this.txtByName.Text = ""; 44 this.txtClassesName.Text = ""; 45 } 46 else 47 { 48 MessageBox.Show("添加失败!"); 49 } 50 } 51 52 53 } 54 }
9、实现点击“添加”按钮后让子窗体(FrmAddClassesUI)在父窗体(FrmMainUI)中进行显示。
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 StudentMisUI 12 { 13 public partial class FrmMainUI : Form 14 { 15 public FrmMainUI() 16 { 17 InitializeComponent(); 18 } 19 /// <summary> 20 /// 为‘添加班级’菜单添加点击事件 21 /// 弹出‘添加班级’窗体 22 /// </summary> 23 /// <param name="sender"></param> 24 /// <param name="e"></param> 25 private void AddClassesToolStripMenuItem_Click(object sender, EventArgs e) 26 { 27 //实例化‘添加班级’类 28 FrmAddClassesUI frmAL = new FrmAddClassesUI(); 29 //指定其父窗体 30 frmAL.MdiParent = this; 31 //显示子窗体 32 frmAL.Show(); 33 } 34 } 35 }
时间: 2024-10-24 23:05:40