功能:将用户名、密码存在数据库,连续三次密码输错需等待30分钟才能再次登录
看似小小的功能,也是调试花了很长的时间。本来是想着,数据库可以记录用户连续输错3次的时间点,如果判断用户是在30分钟后再次尝试登陆就清空时间点再次判断。但写了挺久才写了一半,因为还有很多东西要看,就先跳过了。
有个不好的地方,代码太多嵌套if语句了,到了后面维护应该比较困难。
下面代码也没什么用处的,作为数据库基本操作的练习而已。
1:新建一个窗口LoginWindow.xaml
<Grid>
<GridName="m_grid"><!--三行两列-->
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlockText="用户名:"Grid.Row="0"Grid.Column="0"></TextBlock>
<TextBlockText="密码:"Grid.Row="1"Grid.Column="0"></TextBlock>
<TextBoxName="m_txt_user"Grid.Row="0"Grid.Column="1"></TextBox>
<PasswordBoxName="m_pbox_password"Grid.Row="1"Grid.Column="1"></PasswordBox>
<ButtonName="m_bt_login"Content="登陆"Grid.Row="2"Grid.Column="0"></Button>
</Grid>
</Grid>
2:数据库新建一张表T_Users
staticinterrortime=3;//记录剩余次数
privatevoidm_bt_login_Click(objectsender,RoutedEventArgse)
{
//用户名是否存在¨
intcount=0;//记录用户名是否存在¨
stringusername=m_txt_user.Text;
stringpassword=m_pbox_password.Password;
using(SqlConnectionconn=newSqlConnection("DataSource=.;InitialCatalog=test;UserId=sa;Password=123456"))
{
conn.Open();
using(SqlCommandcmd=conn.CreateCommand())
{
cmd.CommandText="selectUserNamefromT_Users";
using(SqlDataReaderreader=cmd.ExecuteReader())
{
while(reader.Read())
{
if(username==reader.GetString(0))
{
count+=1;
}
}
}
}
}
if(count<=0)
{
MessageBox.Show("没有此用户");
return;
}
else
{
using(SqlConnectionconn=newSqlConnection("DataSource=.;InitialCatalog=test;UserId=sa;Password=123456"))
{
conn.Open();
using(SqlCommandcmd=conn.CreateCommand())
{
cmd.CommandText="selectUserName,Password,ErrorTimefromT_Users";
using(SqlDataReaderreader=cmd.ExecuteReader())
{
while(reader.Read())
{
if(password!=reader.GetString(1))
{
if(--errortime>0)
{
MessageBox.Show("你还有"+errortime+"次机会¨");
return;
}
else
{
cmd.CommandText="updateT_UserssetErrorTime=GETDATE()whereUserName='admin'";//这里不知为何无法更新数据库数据(~语句写错了。。)
MessageBox.Show("请在30分钟后再尝试登陆");
return;
}
}
}
}
}
}
}
分享到:
相关推荐
WPF登陆界面美化: 1:账号和密码框都做了美化, 2:关闭按钮和登陆按钮都做了美化,当鼠标移动上去,都做了处理, 3:总体界面四个边角是圆弧形,挺好看的。。。。
开发技术 .NETFramework 3.5 WPF开发仿概念版QQ登录界面(超炫) 适合初学者
MVVMLight框架下的wpf登陆程序demo,包含两个界面,一个主界面和一个登陆界面,启动时先启动登陆界面,验证通过后打开主界面。使用WPF下的MVVM框架开发。
当程序启动时,首先进入一个登陆界面,进行登陆认证,认证成功后转入程序布局主窗口。 设计思路 WPF程序框架搭建后,程序中存一个Shell.xaml,相当于表演者的唯一舞台。登陆窗体(以下简称 LoginView)和程序布局...
开发环境 :VS2013/VS2017 WPF C# ACCESS 采用wpf进行开发的酒店管理系统,界面相当美观,功能齐全 菜单功能 1、预订登记:可选择入住时间、离店时间、所在城市、证件类型,保存、删除、查询、返回 2、住宿结算:...
采用wpf进行开发的酒店管理系统,界面相当美观,功能齐全 菜单功能 1、预订登记:可选择入住时间、离店时间、所在城市、证件类型,保存、删除、查询、返回 2、住宿结算:新增入住、保存、删除、查询、返回 3、...
WPF 技术主要特点是数据驱动界面 UI,当数据发生变化时,WPF 将自动通知 UI 界面同步更新,MVVM 模式充分利用了 WPF 的依赖属性、数据和命令绑定等机制,最大限度地界面显示和逻辑代码之间的耦合度,如需要调整界面...
作者开发不易,打赏给点底气,以便维持生计。Installation | 下载安装项目$ git clone https://github.com/ElecRex/HospitalManagementSystem-WPF.git$ cd HospitalManagementSystem-WPFRequirementsVisual Studio ...
开发语言:C# 运行环境:windows .net 4.5 以上 设置开机启动,捕获windows电脑的键盘事件,从而禁用windows快捷键来关闭此程序,并且强制此程序在显示在最顶层
技术基础 New Folder 多样式星期名字转换 [Design, C#] .NET关于string转换的一个...C#+ASP.NET开发基于Web的RSS阅读器 ASP.NET RSS Toolkit(RSS工具) Serialize Your Deck with Positron [XML Serialization, XSD, C#]...