简单的用户密码管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、功能

提供软件的一般用户管理系统

二、设计思路及程序实现

1.建立的表:以下表在建立时应该先加密码,程序打开时才由程序传递密码。以避免直接用工具可打开DB文件。

①用户资料表

用户ID:用户登录时输入的用户名。

用户姓名:用户的真实姓名。

密码:用户密码(在存入前应该进行必要的加密)

权限:用户级别。

有效期开始:该帐号从何时开始有效(下面程序没利用该功能)

有效期截止:何时该帐号不能用。

是否有效:可以让该用户暂时为不可用。

出错次数:用户连续输错密码次数(当有正确输入时复位)

出错限度:允许输错密码次数,如果超过该限度,该用户置为不可用,必须找管理员为其复位。

备注:必要的说明。

②活动表:

用户ID:记录进入系统的用户ID.

活动状态:该用户是否是当前活动用户。(程序允许A用户进入后,不必退出系统而让B用户进入,A用户被置为非活动用户,当B退出后A被变为活动用户,只

有第一个用户才能退出系统,同时清空活动表)

2. 进入系统的验证

①供用户进入系统的密码输入窗口。

②当用户输入完成后,首先打开用户资料表,检查该用户是否存在,若不存在,清空用户输入,提示不存在该用户,让用户从新输入,用户名输入错误这里将不作次数限制。

③若存在该用户,接着验证密码,如果正确,根据用户的使用期限,是否有效作判断,并根据结果作出是否允许用户进入系统。如果不允许,给出相应的提示后关闭系统。否则,根据用户的级别置某些功能不能使用,同时在活动表中记录该用户已进

入,并复位出错次数字段。

④如果存在该用户,但密码错误,用户资料表中的出错次数加一。让用户从新输入。

⑤实现部分功能的程序

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、密码修改

一般用户只能修改自己的密码,当用户选择该功能时,提示用户输入一次旧密码,两次新密码。用户可以按清除键重新输入。当用户输入完成后,先从活动表找出

相关文档
最新文档