机房重构之登陆完善版

     上次博客介绍只是说了一下怎么实现登陆,这次要介绍一下具体的一些小东西

1. textbox控件

     textbox控件需要限制输入字符长度(maxlength),密码需要用特殊符号显示(passwordchar)。

这里写图片描述

2.需要限制特殊字符的输入

     可以自己写限制哪些字符能输入,哪些不能输入,也可以用正则表达式来写。

       private string pattern = @"^[0-9]*$";//只能输入0-9之间的数字
        private string param1 = null;

        private void txtusername_TextChanged(object sender, EventArgs e)
        {
            Match m = Regex.Match(this.txtusername.Text, pattern);//匹配正则表达式
            if (!m.Success)
            {
                this.txtusername.Text = param1;

                //将光标定位到文本框最后
                this.txtusername.SelectionStart = this.txtusername.Text.Length;
            }
            else
            {
                param1 = this.txtusername.Text;
            }
        }

3.判断登陆用户

     登陆窗体

                Entity.user user = new Entity.user();
                user.UserName = txtusername.Text.Trim();    //查询输入的用户是否存在
                user.PWD = txtpassword.Text;
                userids = txtusername.Text.Trim();
                Facade.Facade loginfacade = new Facade.Facade(); //实例化登陆外观将参数传递给外观层
                DataTable flag = loginfacade.selectuser(user);
                if (flag.Rows.Count!=0)
                {
                    Entity.worklog user2 = new Entity.worklog(); //查询输入的用户是否是在worklog表中存在
                    user2.userID = login.userids;
                    user2.state1 = "正在值班";
                    Facade.lineFacade loginfacade2 = new Facade.lineFacade();
                    DataTable flag2 = loginfacade2.selectuser5(user2);
                    if (flag2.Rows.Count!=0)
                    {
                        MessageBox.Show("您输入的操作员正在值班,不用重复登陆!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        main main = new main();
                        main.Show();
                    }
                    else
                    {
                        MessageBox.Show("登陆成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);//登陆成功提示信息
                        this.Hide();
                        main form2 = new main();
                        form2.Show();
                    }
                }

    主窗体

            Entity.user user = new Entity.user();
            user.userID = login.userids;                                   //查询登陆用户的级别,并给相应的权限
            Facade.lineFacade loginfacade = new Facade.lineFacade();
            DataTable flag = loginfacade.selectuser(user);
            string userlevel = Convert.ToString(flag.Rows[0][2]);          //获取级别

            switch (userlevel)
            {
                case "操作员":

                        操作员ToolStripMenuItem.Enabled = true;            //如果是操作员就保存到正在值班教师表
                        一般用户ToolStripMenuItem.Enabled = true;
                        Entity.worklog user1 = new Entity.worklog();
                        user1.userID = login.userids;
                        user1.logindate = DateTime.Now.ToString();
                        user1.computer = "公子电脑";
                        user1.state1 = "正在值班";
                        Facade.lineFacade loginfacade1 = new Facade.lineFacade();
                        DataTable flag1 = loginfacade1.selectuser1(user1);
                        break;

                case "管理员":

                        操作员ToolStripMenuItem.Enabled = true;
                        一般用户ToolStripMenuItem.Enabled = true;
                        管理员ToolStripMenuItem.Enabled = true;
                        break;

                case "一般用户":
                        一般用户ToolStripMenuItem.Enabled = true;
                        break;

            }

     为什么这样来判断呢?因为在登陆时可以判断是否有值班教师,而用户经过了登陆界面那必然是没有这个操作员在值班,就可以保存到正在值班教师表中。

4.userID

     因为这个userID需要在很多表中使用,所以在登陆界面写一个全局变量进行传值。

 public static string userids;   //声明全局变量userids

 student.userID=Form1.userids      //其他窗体调用

    这次就先介绍这些,希望这些能对你有帮助!

猜你喜欢

转载自blog.csdn.net/s123456slll/article/details/80680933