客运综合管理系统项目—登录界面的实现

来源:互联网 发布:谷歌浏览器 js调试 编辑:程序博客网 时间:2024/04/30 04:50

    2.1 登录界面的实现

(1)如图2.1(图1),登录界面包括权限组,用户名,密码,验证码四个要填写的文本框,其中,权限组是下拉框绑定出来的数据,可以选择

                                                2.1(图1


从图  2.1(图1)上可以看到我们这里用到的控件有 

控件名称

说明

    文字(label

控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。右击控件选择属性在跳出框里面选择带有雷电的图标,在里面可以选择属性

下拉框(ComboBox

文本(TextBox

按钮(Button

    容器(panel)



登录界面的实现

第一步:数据库

  1.表和关系


                                                                                   2.1(图2)

1.用户表(dbo.UserList)

列名

数据类型

主键/外键

说明

UserID

int

主键

用户ID 

UserNumber

char (100)

 

用户编码

StaffID

int

外键

员工表.员工ID 

WorkValue

char (100)

 

工价

LimitsOfAuthorityGroupID

int

外键

权限组表.权限组ID

Password

char (100)

 

密码

Remarks

char (100)

 

备注

StopUseNo

bit

 

停用否 

2.员工表(dbo.StaffList)

列名

数据类型

主键/外键

说明

StaffID

int

主键

员工ID

StaffNumber

char (100)

 

员工编号

StaffName

char (100)

 

员工姓名

Sex

char (100)

 

性别

IdentityCardNumber

char (100)

 

身份证号

HomeLocation

char (100)

 

家庭地址

Phone

char (100)

 

电话

StaffTypeID

int

外键

员工类型表.员工类型ID

OrganizationID

int

外键

机构表.机构ID

StationID

int

外键

站点表.站点ID

Remarks

char (100)

 

备注

LeaveOfficeNo

bit

 

离职否

InvokingNo

bit

 

调用否

Date

datetime

 

日期

Photo

nvarchar (3000)

 

相片

3.站点表(dbo.StationList)

列名

数据类型

主键/外键

说明

StationID

int

主键

站点ID

StationNumber

char (100)

 

站点编号

StationName

char (100)

 

站点名称

StopNo

bit

 

停用否

1、绑定下拉框

第一步:数据库的存储过程

if @type='frmLogin_LimitsOfAuthorityGroup'--frmLogin_QuanXianZuBEGINSELECT     LimitsOfAuthorityGroupID, ltrim(rtrim(LimitsOfAuthorityGroupName))as LimitsOfAuthorityGroupNameFROM       LimitsOfAuthorityGroupListEND

第二步:逻辑层(BLL)代码

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.ServiceModel;using System.Data;using System.Data.SqlClient;//逻辑层(BLL)每个类都要存在以上7项        DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();        [OperationContract]        #region 下拉框的绑定        public DataSet frmLogin_LimitsOfAuthorityGroup()        {            SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char) };            mySqlParameter[0].Value = "frmLogin_LimitsOfAuthorityGroup";            DataTable myDataTable = myDALMethod.QueryDataTable("frmLogin",                               mySqlParameter);            DataSet myDataSet = new DataSet();            myDataSet.Tables.Add(myDataTable);            return myDataSet;        }

第三步:界面层(UIL)代码,在窗体的Load事件中绑定下拉框的数据

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;//界面层(UIL)每个界面的代码中都要存在以上7项          BLL客运综合管理系统.frmLogin.frmLoginClient myfrmLoginClient = new BLL客运综合管理系统.frmLogin.frmLoginClient();   private void frmLogin_Load(object sender, EventArgs e)        {            cboAuthority.DataSource = myfrmLoginClient.frmLogin_LimitsOfAuthorityGroup().Tables[0];            cboAuthority.DisplayMember = "LimitsOfAuthorityGroupName";            cboAuthority.ValueMember = "LimitsOfAuthorityGroupID";            CreateYanZheengMa();//调用方法        }

2.验证码的生成

#region 生成验证码        private void CreateImage(string cheakCode, PaintEventArgs e)        {            if (cheakCode == null || cheakCode.Trim() == string.Empty)                return;            Bitmap image = new Bitmap(cheakCode.Length * 15 + 10, 24);            Graphics g = Graphics.FromImage(image);            try            {                //生成 随机生成器                Random random = new Random();                //清空图片背景色                g.Clear(Color.White);                //图片背景噪音线                for (int i = 0; i < 80; i++)                {                    int x1 = random.Next(image.Width);                    int x2 = random.Next(image.Width);                    int y1 = random.Next(image.Height);                    int y2 = random.Next(image.Height);                    g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);                }                Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));                LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.BlueViolet, Color.Crimson, 1.2f, true);                g.DrawString(cheakCode, font, brush, 2, 2);                //图片前景噪音线                for (int i = 0; i < 100; i++)                {                    int x = random.Next(image.Width);                    int y = random.Next(image.Height);                    image.SetPixel(x, y, Color.FromArgb(random.Next()));                }                //图片边框线                g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1);                using (System.IO.MemoryStream ms = new System.IO.MemoryStream())                {                    image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);                    e.Graphics.DrawImage(image, new Point(1, 0));                }            }            finally            {                bolStar = false;                g.Dispose();                image.Dispose();            }        }         #endregion        public void p_Paint(object sender, PaintEventArgs e)        {            CreateImage(yanzhengma, e);            //txtAuthCode_KeyDown(null,null);        }        #region 随机选择        private string CreateRandomCode(int codeCount)        {            string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";            string[] allCharArray = allChar.Split(',');            string randomCode = "";            int temp = -1;            Random rand = new Random();            for (int i = 0; i < codeCount; i++)            {                int t = rand.Next(61);                temp = t;                randomCode += allCharArray[t];            }            return randomCode;        }        #endregion        public void pyanzhengma_Click(object sender, EventArgs e)        {            CreateYanZheengMa();        }        #region 给pnlAuthCode绑定数据        public void CreateYanZheengMa()//Load事件中被调用        {            this.pnlAuthCode.Controls.Clear();            pyanzhengma.Location = new Point(0, 0);            pyanzhengma.Size = new Size(84, 26);            this.pnlAuthCode.Controls.Add(pyanzhengma);            yanzhengma = CreateRandomCode(4);        }        #endregion

3.登录界面用户名和密码的绑定

第一步:数据库的存储过程

if @type='frmLogin_Enter'--frmLogin_DengLuBEGINSELECT     UserList.UserID, UserList.UserNumber, LimitsOfAuthorityGroupList.LimitsOfAuthorityGroupID, UserList.Password, StationList.StationName, StaffList.StaffName, StationWindowList.WindowNumber,                       LimitsOfAuthorityGroupList.LimitsOfAuthorityGroupName, StaffList.StaffIDFROM         UserList INNER JOIN                      LimitsOfAuthorityGroupList ON UserList.LimitsOfAuthorityGroupID = LimitsOfAuthorityGroupList.LimitsOfAuthorityGroupID INNER JOIN                      StaffList ON UserList.StaffID = StaffList.StaffID INNER JOIN                      StationList ON StaffList.StationID = StationList.StationID INNER JOIN                      StationWindowList ON StationList.WindowID = StationWindowList.WindowIDWHERE      UserList.UserNumber=@UserNumber  AND  UserList.Password=@Password      AND  UserList.LimitsOfAuthorityGroupID=@LimitsOfAuthorityGroupIDEND

第二步:逻辑层(BLL)代码

[OperationContract]        #region 登录界面数据的绑定        public DataSet frmLogin_Enter(string strUserNumber, string strPassword, int intLimitsOfAuthorityGroupID)        {            SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char),                                            new SqlParameter("@UserNumber", SqlDbType.Char),                                            new SqlParameter("@Password", SqlDbType.Char),                                            new SqlParameter("@LimitsOfAuthorityGroupID", SqlDbType.Int)};            mySqlParameter[0].Value = "frmLogin_Enter";            mySqlParameter[1].Value = strUserNumber;            mySqlParameter[2].Value = strPassword;            mySqlParameter[3].Value = intLimitsOfAuthorityGroupID;            DataTable myDataTable = myDALMethod.QueryDataTable("frmLogin", mySqlParameter);            DataSet myDataSet = new DataSet();            myDataSet.Tables.Add(myDataTable);            return myDataSet;        }        #endregion

第三步:界面层(UIL)代码

bool bolStar = true;        Panel pyanzhengma = new Panel();//声明一个新Panel        public string yanzhengma = "";        #region 页面跳转(登录)        private void btnEnter_Click(object sender, EventArgs e)        {            PublicStaticObject.strUserName = cboAuthority.Text;//用静态类的方法保存文本框的值(图2.1(图3)是建立静态类的代码)            string strUserNumber = txtUserName.Text;//声明一个字符串等于用户名框里面的值            string strPassword = txtPassword.Text;//声明一个字符串等于密码框里面的值            int intLimitsOfAuthorityGroupID = Convert.ToInt32(cboAuthority.SelectedValue);            if (this.cboAuthority.Text != "" && this.txtUserName.Text != "" && txtAuthCode.Text != "" && txtPassword.Text != "")//用户类型,用户名,密码,验证码不为空            {                StringComparison type = StringComparison.CurrentCultureIgnoreCase;//不区分大小写                if (txtAuthCode.Text.ToString().Trim().Equals(yanzhengma.ToString().Trim(), type) == true)                {                    DataTable dtUser = myfrmLoginClient.frmLogin_Enter(strUserNumber, strPassword, intLimitsOfAuthorityGroupID).Tables[0];                    PublicStaticObject.intSatffTwo = (int)dtUser.Rows[0]["StaffID"];                    if (dtUser.Rows.Count > 0)                    {                        DataTable dtUserID = myfrmLoginClient.frmLogin_Enter(strUserNumber, strPassword, intLimitsOfAuthorityGroupID).Tables[0];//实例化一个数据源                        PublicStaticObject.strStaffName = dtUserID.Rows[0]["StaffName"].ToString().Trim();                        PublicStaticObject.UserID = Convert.ToInt32(dtUserID.Rows[0]["UserID"].ToString().Trim());                        PublicStaticObject.strUserName = dtUserID.Rows[0]["LimitsOfAuthorityGroupName"].ToString().Trim();                        PublicStaticObject.strStationName = dtUserID.Rows[0]["StationName"].ToString().Trim();                        PublicStaticObject.strWindowNumber = dtUserID.Rows[0]["WindowNumber"].ToString().Trim();                        this.Close();                        PublicStaticObject.frmZ = new frmZ();                        PublicStaticObject.frmZ.Show();                        frmMian myfrmMian = new frmMian();                        myfrmMian.Show();//页面的跳转                        PublicStaticObject.pub_frmLogin.Hide();                    }                    else                    {                        MessageBox.Show("用户名或密码或验证码错误!");//用于弹出框显示值                        txtUserName.Text = "";                        txtAuthCode.Text = "";                        txtPassword.Text = "";                    }                }                else                {                    MessageBox.Show("验证码不正确!");                    CreateYanZheengMa();//调用验证码的方法                    txtAuthCode.Text = "";//文本框等于空                }            }            else            {                MessageBox.Show("用户名或密码或验证码不能为空!");            }        }


                                                     2.1(图3


                                           


                                                                                   仅供学习,禁止用于商业用途







0 0