简朴的用户暗码打点系统
副标题#e#
一、成果
提供软件的一般用户打点系统
二、设计思路及措施实现
1.成立的表:以下表在成立时应该先加暗码,措施打开时才由措施通报暗码。以制止直接用东西可打开DB文件。
① 用户资料表
用户ID:用户登录时输入的用户名。
用户姓名:用户的真实姓名。
暗码:用户暗码(在存入前应该举办须要的加密)
权限:用户级别。
有效期开始:该帐号从何时开始有效(下面措施没操作该成果)
有效期截至:何时该帐号不能用。
是否有效:可以让该用户临时为不行用。
堕落次数:用户持续输错暗码次数(当有正确输入时复位)
堕落限度:答允输错暗码次数,假如高出该限度,该用户置为不行用,必需找打点员为其复位。
备注:须要的说明。
② 勾当表:
用户ID:记录进入系统的用户ID.
勾当状态:该用户是否是当前勾当用户。(措施答允A用户进入后,不必 退出系统而让B用户进入,A用户被置为非勾当用户,当B退出后A被变为勾当用户,只有第一个用户才气退出系统,同时清空勾当表)
2. 进入系统的验证
① 供用户进入系统的暗码输入窗口。
② 当用户输入完成后,首先打开用户资料表,查抄该用户是否存在,若不存在,清空用户输入,提示不存在该用户,让用户重新输入,用户名输入错误这里将不作次数限制。
③ 若存在该用户,接着验证暗码,假如正确,按照用户的利用期限,是否有效作判定,并按照功效作出是否答允用户进入系统。假如不答允,给出相应的提示后封锁系统。不然,按照用户的级别置某些成果不能利用,同时在勾当表中记录该用户已进入,并复位堕落次数字段。
④ 假如存在该用户,但暗码错误,用户资料表中的堕落次数加一。让用户重新输入。
#p#副标题#e#
⑤ 实现部门成果的措施
void __fastcall Tpasswdfm::Edit2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
String userID;
bool endflag=0;
short cout=0;
if(Key==VK_RETURN)
{
userID=Edit1->Text;
Session->AddPassword(123456);
DM1->PasDTable->Active=true;
DM1->PasDTable->FindFirst();
while((!DM1->PasDTable->Eof) && (!endflag))//找到用户
{
if(DM1->PasDTable->FieldByName("用户代码")->Value==userID)
{ endflag=1;
}
else {DM1->PasDTable->Next();}
}
if(endflag)//找到了用户
{
if(DM1->PasDTable->FieldByName("暗码")->Value==
passwdfm->Edit2->Text)
{
DM1->PasDTable->Edit();
cout=0;
DM1->PasDTable->FieldByName("堕落次数")->Value=cout;
DM1->PasDTable->Post();
if(DM1->PasDTable->FieldByName("权限")->Value>1)
//按照权限配置不行用菜单
{
Main->N5->Enabled=false;
}
else {
Main->N5->Enabled=true;
}
Session->RemovePassword(123456);
DM1->PasDTable->Close();
passwdfm->Close();
Session->AddPassword(123456);// 用户利用表挂号
DMPaswd->ActiveTable->Active=true;
DMPaswd->ActiveTable->FindFirst();
DMPaswd->ActiveTable->Insert();
DMPaswd->ActiveTable->FieldByName
("用户代码")->Value=userID;
DMPaswd->ActiveTable->FieldByName("勾当状态")->Value=true;
DMPaswd->ActiveTable->Post();
Session->RemovePassword(123456);
DMPaswd->ActiveTable->Close();
}
else{MessageBox(NULL,"暗码堕落,累积三次将封锁系统","暗码输入信息",MB_OK);
cout=DM1->PasDTable->FieldByName("堕落次数")->Value;
cout++;
DM1->PasDTable->Edit();
DM1->PasDTable->FieldByName("堕落次数")->Value=cout;
DM1->PasDTable->Post();
if(DM1->PasDTable->FieldByName("堕落次数")->Value
< DM1->PasDTable->FieldByName("堕落限制")->Value)
{passwdfm->Edit1->Text="";
passwdfm->Edit2->Text="";
passwdfm->ActiveControl=Edit1;
}
else
{ MessageBox(NULL,"登录失败次数高出限额,请与打点员接洽", "暗码输入信息",MB_OK);
Application->Terminate();
}
}
}
else//无该用户
{MessageBox(NULL,"无该用户","暗码输入信息",MB_OK);
passwdfm->Edit1->Text="";
passwdfm->Edit2->Text="";
passwdfm->ActiveControl=Edit1;
}
}
}
3、暗码修改
#p#分页标题#e#
一般用户只能修改本身的暗码,当用户选择该成果时,提示用户输入一次旧暗码,两次新暗码。用户可以按排除键从头输入。当用户输入完成后,先从勾当表找出
该用户ID,再按ID寻找用户资料表找到该用户,先较量旧暗码,错误提示重新修改,正
确则完成修改。
4、超等用户可以配置/修改用户资料表中的所有资料及暗码初始化。