如果你想重命名类,最好的办法就是删除后重新建立。 接下来是按照计算机需要走的过程。
实体层:所有的定义需要放在这里,并且设定的传参也需要放在这里。
public class UserInfo
{
//分别定义用户:ID字段、用户名字段、密码字段、等级字段、状态字段。
public string UserID { set; get; }
public string UserName { get; set; }
public string PassWord { set; get; }
public string Level { set; get; }
public string Head { set; get; }
}
D层:主要查询数据库操作,我认为命名:哪层+操作+数据库+条件(最好参照命名规则)
using System.Configuration;
using System.Data;
using System.Data.SqlClient;//操作SQL server数据库需要引用
///
/// 查询: 登录
///
///
///
/// 返回DataTable
///
public DataTable selectUser(Entity.UserInfo user)
{
SQLHelper sqlHelperLogin = new SQLHelper(); //实例化一个SQLHelper
//定义需要传递的参数
SqlParameter[] sqlParamsLogin = {
new SqlParameter("@UserID", user.UserID),
new SqlParameter("@PassWord", user.PassWord) }; //@后面是实体名
string sqlLogin = @"SELECT * FROM UserInfo WHERE UserID=@UserID AND PassWord=@PassWord";
DataTable table = sqlHelperLogin.ExecuteQuery(sqlLogin, sqlParamsLogin, CommandType.Text);
return table;
}
I层(接口层):用于调取D层,命名需要和D层的方法命名保持一致。
using System.Data;
//仅用于查登陆
DataTable selectUser(Entity.UserInfo UserInfo); //用于查询
Factory(工厂层),一开始写即可,并且一个类中只写一个即可,让他们直接调用。详情请参照三种书写
using System.Configuration;
using System.Reflection;
//接收来自配置文件的数据
string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];
public IDAL.IUser CreateUser()
{
//DAL层的类名
string ClassName = StrDB + "." + "SqlServerUser";
//反射加工厂的应用
return (IDAL.IUser)Assembly.Load(StrDB).CreateInstance(ClassName);
}
B层:逻辑转换,所有的int、Boolean、DataTable、list等的转换需要在这里。
using DAL;
using System.Data;
using Entity;
public DataTable Userbll(Entity.UserInfo user)
{
Factory.UserFactory fact = new Factory.UserFactory();//实例化工厂
IDAL.IUser select = fact.CreateUser(); //调用工厂方法创建接口
DataTable table =select.selectUser(user); //接收IDAL层的返回值
return table ;
}
Facade(外观层):接收来自B层的值,为子系统中的一组接口提供一个一致的界面。
using BLL;
using System.Data;
///
/// 仅用于登录判断是否正确,返回是否
///
///
///
public DataTable SelectUser(Entity.UserInfo user)
{
//实例化B层
UserBLL userBLL = new UserBLL(); //实例化B层
DataTable flag = userBLL.Userbll(user);
return flag; //返回
}
U层:主要的逻辑操作:
private void lblLogin_Click(object sender, EventArgs e)
{
if (txtUserID.Text.Trim()=="")
{
MessageBox.Show("请输入用户名!", "HERRY提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (txtPWD.Text=="")
{
MessageBox.Show("用户名或密码错误,请重新输入!", "HENRRY提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
//实例化登录外观将参数传递给外观层
Entity.UserInfo user = new Entity.UserInfo();
user.UserID = txtUserID.Text.Trim();
user.PassWord = txtPWD.Text;
//实例化外观
Facade.UserFacade FLogin = new Facade.UserFacade(); DataTable level = FLogin.SelectUser(user);
if (level.Rows .Count !=0 )
{
this.Hide(); //隐藏当前窗体
this.DialogResult = System.Windows.Forms.DialogResult.OK;
if (level.Rows[0][3].ToString().Trim() == "学生") //3表示第四列
{
//实例化窗体
frmStu frmStudent = new frmStu();
//显示实例化的学生界面
frmStudent.Show();
}
}
else if (level.Rows[0][3].ToString().Trim()=="操作员")
{
frmOpert frmopert = new frmOpert();
frmopert.Show();
}
else
{
frmAdmin frmadmin = new frmAdmin();
frmadmin.Show();
}
}
else
{
MessageBox.Show("密码或者用户名错误");
txtPWD.Text = "";
this.txtPWD.Focus();//光标位置。
}
}
private void lblCancel_Click(object sender, EventArgs e)
{
System.Environment.Exit(0); //彻底退出,不管什么线程都会强制退出,非常干净。
}
这个是按照数据库建立的类,并且所有的上机都放在了User表里面,从此没有Card表,谢谢观看哦。