C#学习记录——人事管理系统登录模块设计(winform)
大家好,我是雷工。
最近在做一个人事管理系统的样例,首先需要登录,本篇介绍下登录模块的实现。
一、系统运行环境
本系统的程序运行环境具体如下。
(1)、系统开发平台:Microsoft Visual Studio 2019。
(2)、系统开发语言:C#。
(3)、数据库管理软件:Microsoft SQL Server 2008。
二、数据库与数据表设计
开发应用程序时,对数据库的操作是必不可少的。数据库设计是根据程序的需求及其实现功能所定制的,数据库设计的合理性将直接影响程序的开发过程。
1、数据库分析
企业人事管理系统主要用来记录一个企业中所有员工的基本信息以及每个员工的工作简历、家庭成员、奖惩记录等,数据量是根据企业员工的多少来决定的。SQL Server 2008作为常用的数据库在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大、效率高,所以本系统采用SQL Server 2008数据库作为后台数据库。数据库命名为db_PWMS,其中包含了23张数据表,登录模块使用的数据表:tb_Login。
2、创建数据库
在SQL Server 2008 中创建数据库db_PWMS
3、创建数据表
数据库表结构如下图所示
三、登录模块设计
登录模块主要是通过输入正确的用户名和密码进入主窗体,它可以提高程序的安全性,保护数据资料不外泄。登录模块运行结果如下图:
1、设计登录窗体
新建一个Windows窗体,命名为F_Login.cs,主要用于实现系统的登录功能,将窗体的FormBorderStyle属性设置为None,以便去掉窗体的标题栏。F_Login窗体用到的主要控件如下表所示:
添加控件及属性设置
控件类型 | 属性 | 值 | 说明 |
窗体 | Size | 353,211 | 设置窗口尺寸 |
FormBorderStyle | None | 去掉窗体标题栏 | |
TextBox1 | textName | 无 | 输入登录用户名 |
TextBox2 | textPass | PasswordChar属性设置为“*” | 输入登录用户密码 |
Button1 | butLogin | Text属性设置为“登录” | 登录 |
Button2 | butClose | Text属性设置为“取消” | 取消 |
PictureBox | pictureBox1 | SizeMode属性设置为StretchImage | 显示登录窗体的背景图片 |
2、按Enter键时移动鼠标焦点
当用户在“用户名”文本框中输入值,并按下Enter键时,将鼠标焦点移动到“密码”文本框中。当在“密码”文本框中输入值,并按下Enter键时,将鼠标焦点移动到“登录”按钮上。实现代码如下:
private void textName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r') //判断是否按下Enter键
textPass.Focus(); //将鼠标焦点移动到“密码文本框”
}
private void textPass_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r') //判断是否按下Enter键
butLogin.Focus(); //将鼠标焦点移动到“登录”按钮
}
说明:KeyPressEventArgs指定在用户按键时撰写的字符。例如,当用户按Shift+a键时,KeyChar属性返回一个大写字母A。
3、登录功能的实现
当用户输入用户名和密码后,单击“登录”按钮进行登录。在“登录”按钮的Click事件中,首先判断用户名和密码是否为空。如果为空,则弹出提示框,通知用户将登录信息填写完整。否则将判断用户名和密码是否正确,如果正确,则进入本系统。详细代码如下。
using System;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace A002_PWMS
{
public partial class F_Login : Form
{
DataClass.MyMeans MyClass = new A002_PWMS.DataClass.MyMeans();
public F_Login()
{
InitializeComponent();
}
private void butClose_Click(object sender, EventArgs e)
{
if ((int)(this.Tag) == 1)
{
DataClass.MyMeans.Login_n = 3;
Application.Exit();
}
else
{
if ((int)(this.Tag) == 2)
this.Close();
}
}
private void butLogin_Click(object sender, EventArgs e)
{
if (textName.Text != "" & textPass.Text != "")
{
//用自定义方法getcom()在tb_Login数据表中查找是否有当前登录用户
SqlDataReader temDR = MyClass.getcom("select*from tb_Login where Name='" + textName.Text.Trim() + "'and Pass='" + textPass.Text.Trim() + "'");
bool ifcom = temDR.Read();//必须用Read()方法读取数据
//当有记录时,表示用户名和密码正确
if (ifcom)
{
DataClass.MyMeans.Login_Name = textName.Text.Trim();//将用户名记录到公共变量中
DataClass.MyMeans.Login_ID = temDR.GetString(0); //获取当前操作员编号
DataClass.MyMeans.My_con.Close(); //关闭数据库连接
DataClass.MyMeans.My_con.Dispose(); //释放所有资源
DataClass.MyMeans.Login_n = (int)(this.Tag); //记录当前窗体的Tag属性值
this.Close(); //关闭当前窗体
}
else
{
MessageBox.Show("用户名或密码错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
textName.Text = "";
textPass.Text = "";
}
MyClass.con_close(); //关闭数据库连接
}
else
MessageBox.Show("请将登录信息填写完整!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void F_Login_Load(object sender, EventArgs e)
{
try
{
MyClass.con_open();//连接数据库
MyClass.con_close();
textName.Text = "";
textPass.Text = "";
}
catch
{
MessageBox.Show("数据库连接失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Exit();
}
}
private void textName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r') //判断是否按下Enter键
textPass.Focus(); //将鼠标焦点移动到“密码文本框”
}
private void textPass_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r') //判断是否按下Enter键
butLogin.Focus(); //将鼠标焦点移动到“登录”按钮
}
private void F_Login_Activated(object sender, EventArgs e)
{
textName.Focus();
}
}
}
四、演示效果
1、填写信息不完整时会提示:“请将登录信息填写完整!”
2、账号或密码错误时会提示:“用户名或密码错误!”
3、当输入正确的账户或密码时,跳转主窗口。
请先 后发表评论~