基于C#的windows窗体的报修系统开发——登录注册欢迎界面
程序员文章站
2022-07-16 19:17:41
...
功能说明
登录一个系统的时候,必然需要有登录界面,有时候还需要一个欢迎界面来加载系统资源。这里实现了一个登录注册欢迎的功能,会先后出现三个基本界面:欢迎界面、登录界面、注册或主界面。
一、先设计四个窗体
分别命名为WelcomeFrom、LoginFrom、RegistFrom、MainForm(规范命名),实现代码将会上传到GitHub。
| centered 文本居中 | right-aligned 文本居右
二、逻辑程序代码实现
1、首先设置一下程序入口(显示欢迎界面)
在Program.cs里面设置,新建项目会自动生成Program.cs
namespace RepairSystem
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
// 隐藏边框和按钮
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// 首先显示欢迎界面
Application.Run(new WelcomeForm());
}
}
}
2、设计欢迎界面如何显示(可设置应用程序加载资源)
// 这部分可用线程加载资源
namespace RepairSystem
{
public partial class WelcomeForm : Form
{
LoginForm loginForm = new LoginForm();
public WelcomeForm()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;
}
private void WelcomeForm_Load(object sender, EventArgs e)
{
// 设置定时器,控制页面时间
this.timer1.Start();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void timer1_Tick(object sender, EventArgs e)
{
if (this.Opacity < 1)
{
// 单位时间添加的透明度,即欢迎界面停留时间
this.Opacity += 0.02;
}
else
{
this.timer1.Stop();
this.Hide();
// 跳转到登录界面
loginForm.Show();
}
}
}
}
3、登录窗体代码设计
这部分内容涉及数据库连接——请看数据库设计
namespace RepairSystem
{
public partial class LoginForm : Form
{
public LoginForm()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;
}
private void LoginForm_Load(object sender, EventArgs e)
{
// 调用下拉列表函数
Role_ComboBox();
}
/// <summary>
/// 登录按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonLogin_Click(object sender, EventArgs e)
{
try
{
// 1. 验证输入数据是否合法
// 获取文本框的值
string name = this.userName.Text.Trim();
string pwd = this.passWord.Text.Trim();
string role = this.Roles.Text.Trim();
// 验证输入的值
if (name.Equals(""))
{
MessageBox.Show("用户名不能为空!","提示");
// 获取焦点
userName.Focus();
return;
}else if (pwd.Equals(""))
{
MessageBox.Show("密码不能为空", "提示");
// 获取焦点
passWord.Focus();
return;
}
else if (Roles.Equals(""))
{
MessageBox.Show("身份不能为空", "提示");
// 获取焦点
Roles.Focus();
return;
}
// 数据库查询用户信息
string sqlStr = "select userName, userPwd, roles from user_info where userName = '"+name+"'";
DataSet ds = DBconn.getData(sqlStr);
// 一个大坑,数据库取出来的数据的字符串中有空字符,需要使用trim()去掉
// string roles = ds.Tables[0].Rows[0][2].ToString().Trim();
int count = ds.Tables[0].Rows.Count;
if (count==0)
{
MessageBox.Show("用户名不存在,请重新输入", "提示");
// 文本框置空
userName.Text = "";
passWord.Text = "";
Roles.Text = "";
userName.Focus();
}else if(ds.Tables[0].Rows[0][1].ToString().Trim() == pwd)
{
string roles = ds.Tables[0].Rows[0][2].ToString().Trim();
// 验证身份
if (roles.Equals("后勤老师")&&roles.Equals(role))
{
MessageBox.Show("恭喜您登录成功!", "提示");
// 验证通过,页面跳转
SuperAdminForm superAdminForm = new SuperAdminForm();
this.Hide();
superAdminForm.Show();
}
else if (roles.Equals("维修工程师") && roles.Equals(role))
{
MessageBox.Show("恭喜您登录成功!", "提示");
// 验证通过,页面跳转
AdminForm adminForm = new AdminForm();
this.Hide();
adminForm.Show();
}
else if (roles.Equals("学生") && roles.Equals(role))
{
// 验证通过,页面跳转
MessageBox.Show("恭喜您登录成功!", "提示");
MainForm mainForm = new MainForm();
mainForm.LabUser.Text = name;
this.Hide();
mainForm.Show();
}
else
{
MessageBox.Show("请正确选择您的身份!");
Roles.Text = "";
userName.Focus();
}
}
else
{
MessageBox.Show("密码错误!请重新输入!");
userName.Text = "";
passWord.Text = "";
Roles.Text = "";
userName.Focus();
}
}
catch(Exception ex)
{
MessageBox.Show("登录异常:" + ex.Message);
userName.Text = "";
passWord.Text = "";
Roles.Text = "";
userName.Focus();
}
finally
{
// 最后关闭数据库
DBconn.conn.Close();
}
}
// 角色下拉列表设置
public void Role_ComboBox()
{
Roles.Items.Add("学生");
Roles.Items.Add("维修工程师");
Roles.Items.Add("后勤老师");
this.Roles.SelectedIndex = 0;
}
// 测试-捕获选定列表中的内容
private void Roles_SelectedIndexChanged(object sender, EventArgs e)
{
/*switch (Roles.SelectedItem.ToString())
{
case "学生": MessageBox.Show("学生");break;
case "维修工程师": MessageBox.Show("维修工程师"); break;
case "后勤老师": MessageBox.Show("后勤老师"); break;
}*/
}
private void ButtonRegist_Click(object sender, EventArgs e)
{
RegistForm registForm = new RegistForm();
registForm.Show();
}
private void buttonCancel_Click(object sender, EventArgs e)
{
if (MessageBox.Show("确认退出?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
this.Close();
}
}
private void passWord_TextChanged(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
buttonLogin_Click(sender, e);
}
}
private void LoginForm_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
}
}
4、注册页面逻辑代码
namespace RepairSystem
{
public partial class RegistForm : Form
{
public RegistForm()
{
InitializeComponent();
// 加载下拉列表
Role_ComboBox();
}
// 清空输入
void ClearAll()
{
RegistName.Text = "";
PassWord.Text = "";
}
// 注册下拉列表方法
public void Role_ComboBox()
{
RolesBox.Items.Add("学生");
RolesBox.Items.Add("维修工程师");
this.RolesBox.SelectedIndex = 0;
}
// 判断注册用户是否已经存在
bool UserName(string userName)
{
string sqlStr = "select userName from user_info where userName='" + RegistName.Text.Trim() + "'";
DataSet ds = DBconn.getData(sqlStr);
if (ds.Tables[0].Rows.Count == 0)
{
return false;
}
return true;
}
private void ButReject_Click(object sender, EventArgs e)
{
try
{
if (RegistName.Text.Trim().Equals(""))
{
MessageBox.Show("用户名不能为空!", "提示");
RegistName.Focus();
}else if (PassWord.Text.Trim().Equals(""))
{
MessageBox.Show("密码不能为空!", "提示");
PassWord.Focus();
}else if (UserName(RegistName.Text.Trim()))
{
MessageBox.Show("用户名已经存在!", "提示");
ClearAll();
}
else
{
string sqlStr = "insert user_info (userName, userPwd, roles) values('" + RegistName.Text.Trim() + "','" + PassWord.Text.Trim() + "','" + RolesBox.Text.Trim() + "')";
if (DBconn.PDData(sqlStr))
{
MessageBox.Show("用户" + RegistName.Text.Trim() + "注册成功!");
}
this.Close();
}
}catch(Exception ex) {
DBconn.conn.Close();
MessageBox.Show(ex.Message);
ClearAll();
}
}
// 取消注册
private void Cancel_Click(object sender, EventArgs e)
{
if (MessageBox.Show("确认取消注册?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
this.Close();
}
}
private void PassWord_TextChanged(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
ButReject_Click(sender, e);
}
}
}
}
上一篇: C++实现金山打字通助手
下一篇: C#的入门