C#登录窗体

前言

这么久都还没有总结登录呢,说来话长,对于我来说最值得总结的就是登录了,因为它不仅涵盖了我重构的一个起跑点也涵盖了我思路的一个起跑线,也是技术的一个改变,什么是技术的改变,请大家接着往下看。

正文

登录的过程真是太痛苦了,那段时间简直不想动计算机,因为不知道从何入手,整个人很懵逼,也导致效力极慢,浪费了很多时间,究其根底没有找前辈们聊,还是没有使用好站在巨人的肩膀上成长还有厚脸皮这两大原则,该打该
打。引以为鉴。
废话不多说,下面是我登录窗体所新涵盖的技术:

枚举 判断不同登录显示不同界面,适用于三个或三个以上的界面或事物用此
泛型list替代DataTable 之所以没有用DataTable呢?与及它们两者之间的区别呢,我上篇博客有提到,大家可以查看,这里就不再重复。

上面也提到了此登录窗体,我用的是根据用户的账号不同判断进入界面的不同,下面就是我的重点代码展示部分:
U层

           TOOL.Enum.LoginType flag;
            if (rbtnStu.Checked == false && rbtnTc.Checked == false)
            {
                MessageBox.Show("请选取老师或学生", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (rbtnTc.Checked)
            {
                flag = FacadeUsers.SelectUser(user);

            }
            else
            {
                flag = FacadeStu.SelectUser(student);

            }

            //调用枚举方法,返回给user

            //TOOL.Enum.LoginType toolStu = FacadeStu.SelectUser( student);
            //TOOL.Enum.LoginType toolUser = FacadeUsers.SelectUser(user);

            FrmStudent frmstu = new FrmStudent();
            FrmOperator frmcaozuo = new FrmOperator();
            FrmAdmin frmguanli = new FrmAdmin();

            switch (flag)
            {
                case TOOL.Enum.LoginType.student:
                    frmstu.Show();
                    this.Hide();

                    break;
                case TOOL.Enum.LoginType.caozuo:
                    frmcaozuo.Show();
                    FacadeUsers.Update(user);
                    this.Hide();

                    break;
                case TOOL.Enum.LoginType.guanli:
                    frmguanli.Show();
                    this.Hide();

                    break;
                case TOOL.Enum.LoginType.error:
                    MessageBox.Show("输入不正确,请重新输入", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    break;
            }

        }

B层(student)

 public TOOL.Enum.LoginType StudentBll(Student student)
        {
           Factory.StudentFactory fact = new Factory.StudentFactory();//实例化工厂
             IDAL.IStudent idal = fact.CreateStudent();//调用了工厂方法创建接口
            /*TOOL.Enum.LoginType table = idal.SelectUser(Users);*///接受D层的返回值,用户表
            List<Student> list = idal.SelectStudent(student);//接受D层的返回值,学生表
                                                                          //list.Contains(new loginEnitity.Student() { Level = "操作员" })            
            if (list.Count > 0)
            {

                return TOOL.Enum.LoginType.student;

            }
            else
            {
                return TOOL.Enum.LoginType.error;
            }



            //bool  flag=false ;
            ////查询不到时,显示没有该用户
            //if (tableStu.Rows[0][0].ToString ().Trim () == null)
            //{
            //    return flag;
            //}

            //if (tableStu.Rows[0][11].ToString().Trim() == "普通用户" || tableStu.Rows[0][3].ToString().Trim() == "会员用户")

            //{
            //    flag = true ;//学生界面
            //}
            //return flag; //返回数值,账号存在


        }

D层(user)


 public List<Enitity.Users > SelectUser(Enitity.Users  user)
        {
            SQLHelper sqlHelper = new SQLHelper();
            SqlParameter[] sqlparams = { new SqlParameter("@StudentNo",user.UserName ), new SqlParameter("@Password", user.Password) };
            string sql = @"select * from Users where UserName=@StudentNo and Password =@Password";
            DataTable dt = sqlHelper.ExecuteQuery(sql, sqlparams, CommandType.Text);//SQLHelper层查询
            ConvertHelper convert = new ConvertHelper();
            List<Enitity.Users> list = convert.ConvertToList<Enitity.Users >(dt);
            return list;//返回B层
        }

枚举层

 public enum LoginType
        {
            student,
            caozuo,
            guanli,
            error,
        }

总结

厚脸皮,多找人交流,弄清楚有全局把控就干

发布了67 篇原创文章 · 获赞 72 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42957931/article/details/98475813