登陆+抽象工厂+反射配置文件

本文分享了作者在实现三层架构的收费系统过程中遇到的问题、解决方法及代码实践。通过UML图帮助理解架构设计,并详细展示了各层代码实现,最终克服困难完成系统的构建。

    视频中的三层例子,在敲的时候的确很好敲,但是当自己做的时候就不是这样了。

    还记得照葫芦画瓢吗?在敲机房收费系统的时候的确是照着三层加上自己的理解来敲的,整个过程下来就是完全照葫芦画瓢的。但是第一次成型,出现问题的时候,请教了别人。他将我的错误指出来,以及我自创的三层架构。看了看别人的,我的简直不堪入目。别人长得是葫芦,我这本来是葫芦根,长出来的确是丝瓜,四不像。之后忍受各种打击,坚强的把这葫芦整形,整过来了!韩国美容技术不错,我这美容技术自我感觉良好。一下便是整容后的成果。

    首先是一张Uml图。一张图把重心表达出来,自己的方向也就不会走偏了!

                                     

    这张UML图,帮了我不少的忙。最初懵懂的我逐渐清晰的认识到三层应该是什么样子的。话说原理都能听懂看懂,但是等自己实践的时候就不是这个样子了。

    在U和B层之间,用了一个外观模式,外观模式大家还能想起来吧,大概就是将一致的东西打包一下,每次放假回家米老师都会说我们不要打包小包领回家,要将东西打包一下,这样既简单又好找。在这里外观模式就是起到这么一个作用,我们都知道在B层中我们写的是各种实现的方法过程,但是有很多实现似的,比如对卡的操作,对学生的操作,等等我们 可以进行分类,也可以根据对数据库的增删改查进行分类。

    还有就是在B层和D层之间,现在的两层并不是相互联系的,而是通过工厂,接口进行联系,这样体现面向对象的开放扩展原则。同时在这张图中大家能看到Entity这个实例,这个实例是被抽象出来的,因为 在各个层都要用到,从这里也可以体现到面向对象。

    通过敲代码,虽说面向对象和面向过程在理论上可以区分,但是当我们在敲代码的时候,很难注意到,所以图还是一个很重要的辅助工具,以防我们跑偏。

看完图,接下来向大家展示我的代码:

首先 是U层代码:

 private void cmdLogin_Click(object sender, EventArgs e)
        {
            LoginModle.UserInfo user1 = new LoginModle.UserInfo();
            LoginModle.UserInfo user2 = new LoginModle.UserInfo();
            user2.UserName = txtUserName.Text.Trim();
            user2.Password = txtPassword.Text;
            LoginBLL.LoginManager mgr = new LoginBLL.LoginManager();
            user1 = mgr.UserLogin(user2);
            try
            {
                MessageBox.Show(user1.UserName);
            }
            catch 
            {
                MessageBox.Show("请检查用户名或密码是否正确");
            }
        }

B层代码:

  public class LoginManager
    {
        Factory.DataAccess data = new Factory.DataAccess();
        public UserInfo UserLogin(UserInfo user)
        {
                LoginModle.UserInfo modle = new UserInfo();
            
                data.CreateUser();
                Interface.Iuser getuser = (Interface.Iuser)data.CreateUser();
                modle = getuser.GetUser(user);
                return modle;
                
 
        }
    }

D层代码:

 public class SQLUser : Interface.Iuser
    {

        public LoginModle.UserInfo GetUser(LoginModle.UserInfo user)
        {

            using (SqlConnection conn = new SqlConnection(Dbutil.ConnString))//创建链接
            {
                SqlCommand cmd = conn.CreateCommand();  // 创建一个Cmd
                cmd.CommandText = @"select ID,UserName,Password from Users where UserName=@userName and Password=@password";
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.Add(new SqlParameter("@userName", user.UserName));
                cmd.Parameters.Add(new SqlParameter("@password", user.Password));

                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                LoginModle.UserInfo modle = null;

                while (reader.Read())
                {
                    if (modle == null)
                    {
                        modle = new LoginModle.UserInfo();
                    }
                    modle.ID = reader.GetInt32(0);
                    modle.UserName = reader.GetString(1);
                    modle.Password = reader.GetString(2);
                }


                return modle;
            }
        }
    }

Factory:

namespace Factory
{
    public class DataAccess
    {
        private static readonly string AssemblyName = "LoginDAL";
        private static readonly string db = "SQL";
        
        public   Interface.Iuser  CreateUser()
        {
            string className = AssemblyName + "." + db + "User";
            return (Interface.Iuser )Assembly.Load(AssemblyName).CreateInstance(className);

        }        
    }
   
}

interface:

namespace Interface
{

   public  interface Iuser
    {
       LoginModle.UserInfo GetUser(LoginModle.UserInfo user);
    }
   public  interface IFactory
    {
        Iuser CreatUser();
    }
}


    这些便是我的成果,虽然在配置文件这个地方还有一些小小的错误,整形师德水平需要提高,他终究会让我磨平的。

    这个登陆经历丑陋不堪到还算对的起大众这个过程,自己每次打开VS的时候,有时候会忍不住打开这个小例子,让他在运行一次,看着都很欣慰,很有动力。整形师的技术虽有待提高,但是我坚信我会做的更好。没有一个痛苦的经历,我的收获有源自哪里呢?

代码下载地址: https://pan.quark.cn/s/b4a8e0160cfc 齿轮与轴系零件在机械设备中扮演着至关重要的角色,它们负责实现动力传输、调整运动形态以及承受工作载荷等核心功能。 在机械工程的设计实践中,齿轮和轴系的设计是一项关键的技术任务,其内容涵盖了材料选用、构造规划、承载能力分析等多个技术层面。 下面将系统性地介绍《齿轮及轴系零件结构设计指导书》中的核心知识点。 一、齿轮设计1. 齿轮种类:依据齿廓轮廓的不同,齿轮可划分为直齿齿轮、斜齿轮以及人字齿轮等类别,各类齿轮均具有特定的性能特点与适用工况,能够满足多样化的工作环境与载荷需求。 2. 齿轮规格参数:模数大小、压力角数值、齿数数量、分度圆尺寸等是齿轮设计的基础数据,这些参数直接决定了齿轮的物理尺寸与运行性能。 3. 齿轮材质选用:齿轮材料的确定需综合评估其耐磨损性能、硬度水平以及韧性表现,常用的材料包括铸铁、钢材、铝合金等。 4. 齿轮强度验证:需进行齿面接触应力分析与齿根弯曲应力分析,以确保齿轮在实际运行过程中不会出现过度磨损或结构破坏。 5. 齿轮加工工艺:涉及切削加工、滚齿加工、剃齿加工、淬火处理等工艺流程,工艺方案的选择将直接影响齿轮的加工精度与使用寿命。 二、轴设计1. 轴的分类方式:依据轴在机械装置中的功能定位与受力特点,可将轴划分为心轴、转轴以及传动轴等类型。 2. 轴的材料选择:通常采用钢材作为轴的材料,例如碳素结构钢或合金结构钢,特殊需求时可选用不锈钢材料或轻质合金材料。 3. 轴的构造规划:需详细考虑轴的轴向长度、截面直径、键槽布置、轴承安装位置等要素,以满足轴的强度要求、刚度要求以及稳定性要求。 4. 轴的强度验证:需进行轴的扭转强度分析与弯曲强度分析,以防止轴在运行过程中发生塑性变形...
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值