C# 三层架构之系统的登录验证与添加数据的实现
来源:互联网 发布:linux 内核参数配置 编辑:程序博客网 时间:2024/05/20 18:53
利用三层架构体系,实现学生管理系统中用户的登录与添加班级信息的功能,一下代码为具体实现步骤的拆分过程:
一、用户登录界面功能的实现
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 StudentMisDAL11 {12 public class LoginDAL13 {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 LoginName=@LoginName and pwd=@pwd";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 //返回ds45 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 StudentMisBLL11 {12 public class LoginBLL13 {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 StudentMisUI14 {15 public partial class LoginUI : Form16 {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 else44 {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 else10 {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 StudentMisUI15 {16 public partial class FrmAddClassesUI : Form17 {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 else47 {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 ClassesMod13 {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 StudentMisDAL12 {13 public class ClassesDAL14 {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 StudentMisBLL11 {12 public class ClassesBLL13 {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 StudentMisUI15 {16 public partial class FrmAddClassesUI : Form17 {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 else47 {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 StudentMisUI12 {13 public partial class FrmMainUI : Form14 {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 }
阅读全文
0 0
- C# 三层架构之系统的登录验证与添加数据的实现
- C# 三层架构之系统的登录验证与添加数据的实现
- 浅析C#中三层架构的实现
- 浅析C#中三层架构的实现
- C#三十六 三层架构的实现
- C#三层架构的UserService类(注册登录使用)
- C#三层架构的UserManager类(注册登录使用)
- 【ssm架构】系统架构-SSM与三层架构的关系
- C# 在采集数据时的验证与登录处理
- C# 在采集数据时的验证与登录处理
- 温故而知新---浅析三层架构(一个超简单的系统登录三层架构实例)
- 最适合入门学习的三层架构例子(实现登录)
- Excel做为数据库登录的三层架构实现
- 三层架构之登录
- 基于.Net(C#开发)平台的三层框架架构软件的设计与实现
- 基于.Net(C#开发)平台的三层框架架构软件的设计与实现
- C#三层架构详解--以系统登录为例
- 三层登录C#实现
- 三个实例演示 Java Thread Dump 日志分析
- CodeForces
- JanusGraph
- 复习-数据结构之线性表
- GitChat · 前端 | Webpack 工程的 PWA 实战
- C# 三层架构之系统的登录验证与添加数据的实现
- Struts2 文件上传
- redis-cluster配置攻略 本人亲自尝试
- 去除PDF的水印【9种方法总结】
- up
- 复习知识
- 基于vue-cli的vue项目之axios的使用3--get传参请求
- 剑指offer-21:包含min函数的栈
- xxxxx has been explicitly marked deprecated here