学习C#和Microsoft SQL Server以来,作为一个初学者的我,第一次有了一个较为完整的小案例的实现,想通过这个案例的实现过程与各位前辈进行交流,如有不足恳请各位前辈指正,希望我们共同进步:
人事管理系统在网上有很多的源码,却很少有针对这些源码进行分析的案例,对于初学者在理解上确实有一定的困难,往往其中有很多细节,可能困扰像我这样的初学者很长时间。
一个人事管理系统首先有一个登陆使用的账号和密码组成的口令进入系统,相应的应该有一个数据存放的“容器”,这时候需要使用到数据库来作为这个“数据仓库”,对于数据库的设计在以后的内容中会进行补充。
登陆界面,设计了一种最常见的类型,设计界面如下:
界面利用了TextBox控件接收用户名和密码,label控件用于显示姓名,密码的文字提示,两个Button按钮分别为LogIn和Cancel。
当我们输入用户名和密码之后需要将这个组合进行验证,这时候我们就需要对数据库进行访问,对于数据库的访问设计了一个MyMeans类,这个类放到DataClass文件夹下,这个将在后续进行补充这个类的设计。
实例化MyMeans类的一个对象:
DataClass.MyMeans MyClass = new DataClass.MyMeans();
当运行时,通过窗体的加载事件来对数据库进行连接,连接为一次一连接类型,这样可以减少资源占用,提高效率。
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();
}
}
当窗体活动时,将焦点设置到用户名TextBox:
private void F_LogIn_Activated(object sender, EventArgs e)
{
//当处于活动窗体时,焦点在name的TextBox控件上
textName.Focus();
}
实现的过程如下:通过两个TextBox控件得到组合,当点击登陆按钮时将会触发这个按钮的Click事件:
private void butLogIn_Click(object sender, EventArgs e)
{
if (textName.Text != "" & textPass.Text != "")
{
//获取登陆表中的用户名和密码的组合
SqlDataReader temDataReader = MyClass.getCommand("select * from tb_Login where Name='" + textName.Text.Trim() + "' and Pass= '" + textPass.Text.Trim() + "'");
//read()得到的返回值bool型,利用这个特性
bool ifcom = temDataReader.Read();
if (ifcom)
{
//获取登录名
DataClass.MyMeans.LogIn_Name = textName.Text.Trim();
//获取登陆的ID地址
DataClass.MyMeans.LogIn_ID = temDataReader.GetString(0);
//断开连接
DataClass.MyMeans.My_Con.Close();
//释放占用的资源
DataClass.MyMeans.My_Con.Dispose();
//获取对象的引用
DataClass.MyMeans.LogIn_n = (int)(this.Tag);
//窗口关闭,进入主界面
this.Close();
}
else
{
MessageBox.Show("用户名或密码错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
//重新设置为空
textName.Text = "";
textPass.Text = "";
}
//调用MyMeans类中定义的Close方法
MyClass.con_close();
}
else
MessageBox.Show("请将登录信息添写完整!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
设计两个TextBox窗体的KeyPress事件,当输入完毕后,按回车键跳到下一个控件:
private void textName_KeyPress(object sender, KeyPressEventArgs e)
{
//当按下回车键时,焦点转移到密码textBox控件上
if (e.KeyChar == '\r')
textPass.Focus();
}
private void textPass_KeyPress(object sender, KeyPressEventArgs e)
{
//当按下回车键时,焦点转移到密码LogIn按钮
if (e.KeyChar == '\r')
butLogIn.Focus();
}
注:当设计完毕后续的主窗体时,需要将启动窗体设置为启动窗体:
在Program.cs文件中修改 为 Application.Run(new F_Main());
假设F_Main()为主窗体。
note: 源代码以及数据库:
https://github.com/TianlongZhang0625s/PWMS_System_simpleCode/tree/master/PWMS_SYSTEM_V1.0