客运综合管理系统项目—登录界面的实现
来源:互联网 发布:谷歌浏览器 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)
仅供学习,禁止用于商业用途
- 客运综合管理系统项目—登录界面的实现
- 客运综合管理系统项目—售票管理(售票)
- 客运综合管理系统项目—售票管理(退票)
- 客运综合管理系统项目—售票管理(废票)
- 客运综合管理系统项目—售票管理(留票)
- 客运综合管理系统项目—出车情况
- 客运综合管理系统项目—附加(员工图片的上传)
- 客运综合管理系统项目—附加(数据的导出)
- 客运综合管理系统项目解析-检票管理-检票
- 客运综合管理系统项目解析-检票管理-补检
- 客运综合管理系统项目解析-检票管理-检票查询
- 客运综合管理系统项目解析-调度管理-临时加班
- 客运综合管理系统项目—售票管理(库存/取票)
- 客运综合管理系统项目—线路管理(站点新增修改)
- 客运综合管理系统项目(1) 搭建WCF框架
- 客运综合管理系统项目解析-领导查询-售票查询
- 客运综合管理系统项目解析—安全检查(模块)-司机信息
- 客运综合管理系统项目—报班统计(员工报班)
- C++的const_cast的问题
- hibernate多对一关系中,JSON serializing对象时报JsonMappingException
- 熟悉Android开发不得不知道的技巧
- 北京络捷斯特第三方物流信息系统技术解析(二) 订单录入-入库订单
- github:Failed to publish this branch
- 客运综合管理系统项目—登录界面的实现
- 网络服务器常见设计
- mybatis学习(二)
- Intellij IDEA 13 利用Grails开发框架构建Java web项目
- C++的const_cast的问题
- HDU 1050 Moving Tables
- 第三章三十九题
- hash blog http://www.360doc.com/content/13/0409/14/10384031_277138819.shtml
- php获取客户端IP地址的几种方法