在登录之前要输入用户名和密码,如图(1)
图(1)
从图中可以看出登录界面主要由两个文本框和登录按钮组成
控件名称 | 说明 |
文本(TextBox) | 控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。 |
图片按钮(PictureBox),登录按钮 |
功能实现
首先在窗体Load事件设置txtPassWord文本显示为“*”
private void Form1_Load(objectsender, EventArgs e)
{
txtPassWord.PasswordChar = Convert.ToChar("*");
}
第一步:数据库
1.表已关系
表1:用户表
列名 | 数据类型 | 主键/外键 | 说明 |
UserID | Int | 主键 | 用户ID |
UserName | nchar(10) |
| 用户名 |
UserCode | nchar(20) |
| 用户代码 |
Password | nchar(20) |
| 密码 |
2.登录代码
第一步:数据库的存储过程
第二步:逻辑层(BLL)代码
DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod();
[OperationContract]
public DataSet Frm_Login_SelectSYS_UserList()
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
};
mySqlParameters[0].Value = "Frm_Login_SelectSYS_UserList";
DataTable dt = myDALMethod.QueryDataTable("登Ì?录?_Frm_Login", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
第三步:界面层(UIL)代码,txtPassWord
按钮单击事件代码
dtUser = myFrm_LoginClient.Frm_Login_SelectSYS_UserList().Tables[0]; //声明一个DataTable查询用户
for (int i = 0; i < dtUser.Rows.Count; i++)//遍历每个用户
{
strUserCode = dtUser.Rows[i]["UserCode"].ToString().Trim();//获取他的代码
if (txtUserCode.Text == strUserCode)//如果文本框代码正确
{
intUserID = Convert.ToInt32(dtUser.Rows[i]["UserID"]);//获取他的ID
txtUserName.Text = dtUser.Rows[i]["UserName"].ToString().Trim();//在隔壁文本框显示他的登录名
}
}
if (txtUserCode.Text == "")
{
txtUserName.Text = "";
}
3:登录单击事件代码
第一步:数据库的存储过程
if(@Type='Frm_Login_SelectSYS_UserListWherePassword')
begin
SELECT Password,UserID
FROM SYS_UserList
end
第二步:逻辑层(BLL)代码
[OperationContract]
public DataSet Frm_Login_SelectSYS_UserListWherePassword()
{
SqlParameter[] mySqlParameters = {
new SqlParameter ("@Type",SqlDbType .Char),
};
mySqlParameters[0].Value = "Frm_Login_SelectSYS_UserListWherePassword";
DataTable dt = myDALMethod.QueryDataTable("登Ì?录?_Frm_Login", mySqlParameters);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}
第三步:界面层(UIL)代码
int Userid = 0;
if (txtUserCode.Text == "")//如果用户名代码为空,提示请输入用户名代码
{
MessageBox.Show("请输入用户名.");
return;
}
if (txtPassWord.Text == "")
{
MessageBox.Show("请输入密码.");//如果密码为空,提示请输入密码
return;
}
if (txtUserName.Text == "")
{
MessageBox.Show("经检测,没有此用户名.");//如果用户名为空,则提示经检测,没有此用户名
txtPassWord.Text = "";
return;
}
DataTable dtid = myFrm_LoginClient.Frm_Login_SelectSYS_UserListWherePassword().Tables[0];//查询用户
for (int i = 0; i < dtid.Rows.Count; i++)//循环遍历用户
{
Userid = Convert.ToInt32(dtid.Rows[i]["UserID"]);//获取用户ID
strPassWord = dtid.Rows[i]["PassWord"].ToString().Trim();//获取用户密码
if (txtPassWord.Text == strPassWord && Userid == intUserID)//如果密码和用户ID相同就进入登录界面
{
Main myMain = new Main();
myMain.Show();
this.Hide();
return;
}
}
if (txtPassWord.Text != strPassWord && Userid != intUserID)//否则提示
{
MessageBox.Show("密码错误.");
txtPassWord.Text = "";
return;
}
4:在窗体的MouseClick事件写下面代码,和txtPassWord
单击的一样,为的是在单击窗体任一位置时功能实现
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
dtUser = myFrm_LoginClient.Frm_Login_SelectSYS_UserList().Tables[0];
for (int i = 0; i < dtUser.Rows.Count; i++)
{
strUserCode = dtUser.Rows[i]["UserCode"].ToString().Trim();
if (txtUserCode.Text == strUserCode)
{
intUserID = Convert.ToInt32(dtUser.Rows[i]["UserID"]);
txtUserName.Text = dtUser.Rows[i]["UserName"].ToString().Trim();
}
}
if (txtUserCode.Text == "")
{
txtUserName.Text = "";
}
}
5,:当再次点击txtUserCode时,清空全部
private void txtUserCode_Click(object sender, EventArgs e)
{
if (txtUserCode.Text != "")
{
txtUserCode.Text = "";
txtUserName.Text = "";
}
}
仅供学习,禁止用于商业用途,违者后果自负