哈喽,你好啊,我是雷工!
继续 练 习人员管理系统的用户登录的功能实现,
以下为练习笔记。
01 效果演示①账号未输入时
②账号输入含非正整数字符时
③密码未输入时
④账号或密码输入错误时
⑤账号或密码输入正确时,直接显示主窗体
02 实现步骤2.1、实现思路
登录窗体的通用实现思路
①输入信息验证;
②封装包含账号和密码的对象;
③和后台代码交互;
④处理交互结果,根据需要保存数据或返回值
2.2、正则表达式
为了使账号输入的内容为正整数,这里引入正则表达式。
①添加类
在Common通用文件夹中添加一个数据验证的类DataValidate
②实现代码
using System.Text.RegularExpressions;namespace PeopleManager.Common{/// <summary>/// 基于正则表达式的验证/// </summary>internal DataValidate {public static bool IsInteger(string txt) { Regex objReg = new Regex(@"^[1-9]\d*$");return objReg.IsMatch(txt); } }}2.3、登录事件
根据编程思路实现登录按钮的编码;
代码如下:
//登录按钮事件private void btnLogin_Click(object sender, EventArgs e){ //①信息验证 if(this.txtAccount.Text.Trim().Length==0) {MessageBox.Show("请先输入登录账号!", "雷工提示");this.txtAccount.Focus();return; } if(!Common.DataValidate.IsInteger(this.txtAccount.Text.Trim())) {MessageBox.Show("登录账号必须为正整数!", "雷工提示");this.txtAccount.Focus();return; } if (this.txtPwd.Text.Trim().Length == 0) {MessageBox.Show("请先输入登录密码!", "雷工提示");this.txtAccount.Focus();return; } //②封装对象 SysAdmin objAdmin = new SysAdmin() {LoginId = Convert.ToInt32(this.txtAccount.Text.Trim()),LoginPwd = this.txtPwd.Text.Trim() }; //③后台交互 try {Program.currentUser=sysAdminService.AdminLogin(objAdmin);if(Program.currentUser!=null)//通过判断是否为空,即是否登录成功{ this.DialogResult = DialogResult.OK; this.Close();}else{ MessageBox.Show("账号或密码错误!", "雷工提示");} } catch (Exception ex) {MessageBox.Show(ex.Message,"数据信息访问操作异常"); }}2.4、取消事件
取消时首先设置窗体的对话框结果为Cancel,然后关闭登录窗口;
代码如下:
//取消登录事件private void btnClose_Click(object sender, EventArgs e){ this.DialogResult = DialogResult.Cancel; this.Close();}03 插入数据在数据库管理员表Admins中插入用户信息
插入语句:
use LeiGongPMDBgo--插入管理员信息insert into Admins (LoginPwd,AdminName) values(12345678,'雷工')insert into Admins (LoginPwd,AdminName) values(12345678,'熏悟空')04 后记以上是关于用户登录的UI实现,虽然可以实现但还有优化的空间,例如 当输完账号按回车键,光标可以直接跳转到密码输入框;
接下来再完成优化,有更好的实现方式欢迎留言评论,一起进步写出更优雅的代码;
有更多的相关话题也可以在交流群内沟通。