容易的用戶密碼管理系統(tǒng)
發(fā)表時間:2024-06-18 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]一、功能 提供軟件的一般用戶管理系統(tǒng) 二、設(shè)計思路及程序?qū)崿F(xiàn) 1.建立的表:以下表在建立時應(yīng)該先加密碼,程序打開時才由程序傳遞密碼。以 避免直接用工具可打開DB文件。 ① 用戶資料表 用戶ID: 用戶登錄時輸入的用戶名。 用戶...
一、功能
提供軟件的一般用戶管理系統(tǒng)
二、設(shè)計思路及程序?qū)崿F(xiàn)
1.建立的表:以下表在建立時應(yīng)該先加密碼,程序打開時才由程序傳遞密碼。以
避免直接用工具可打開DB文件。
① 用戶資料表
用戶ID: 用戶登錄時輸入的用戶名。
用戶姓名: 用戶的真實姓名。
密碼: 用戶密碼(在存入前應(yīng)該進行必要的加密)
權(quán)限: 用戶級別。
有效期開始:該帳號從何時開始有效(下面程序沒利用該功能)
有效期截止:何時該帳號不能用。
是否有效: 可以讓該用戶暫時為不可用。
出錯次數(shù): 用戶連續(xù)輸錯密碼次數(shù)(當(dāng)有正確輸入時復(fù)位)
出錯限度: 允許輸錯密碼次數(shù),如果超過該限度,該用戶置為不可用,必須找管理員為其復(fù)位。
備注: 必要的說明。
② 活動表:
用戶ID: 記錄進入系統(tǒng)的用戶ID.
活動狀態(tài): 該用戶是否是當(dāng)前活動用戶。(程序允許A用戶進入后,不必
退出系統(tǒng)而讓B用戶進入,A用戶被置為非活動用戶,當(dāng)B退出后A被變?yōu)榛顒佑脩簦?
有第一個用戶才能退出系統(tǒng),同時清空活動表)
2. 進入系統(tǒng)的驗證
① 供用戶進入系統(tǒng)的密碼輸入窗口。
② 當(dāng)用戶輸入完成后,首先打開用戶資料表,檢查該用戶是否存在,若不存在,清空用戶輸入,提示不存在該用戶,讓用戶從新輸入,用戶名輸入錯誤這里將不作次數(shù)限制。
③ 若存在該用戶,接著驗證密碼,如果正確,根據(jù)用戶的使用期限,是否有效作判斷,并根據(jù)結(jié)果作出是否允許用戶進入系統(tǒng)。如果不允許,給出相應(yīng)的提示后關(guān)閉系統(tǒng)。否則,根據(jù)用戶的級別置某些功能不能使用,同時在活動表中記錄該用戶已進
入,并復(fù)位出錯次數(shù)字段。
④ 如果存在該用戶,但密碼錯誤,用戶資料表中的出錯次數(shù)加一。讓用戶從新輸入。
⑤ 實現(xiàn)部分功能的程序
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("出錯次數(shù)")->Value=cout;
DM1->PasDTable->Post();
if(DM1->PasDTable->FieldByName("權(quán)限")->Value>1)
//根據(jù)權(quán)限設(shè)置不可用菜單
{
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("活動狀態(tài)")->Value=true;
DMPaswd->ActiveTable->Post();
Session->RemovePassword(123456);
DMPaswd->ActiveTable->Close();
}
else{MessageBox(NULL,"密碼出錯,累積三次將關(guān)閉系統(tǒng)","密碼輸入信息
",MB_OK);
cout=DM1->PasDTable->FieldByName("出錯次數(shù)")->Value;
cout++;
DM1->PasDTable->Edit();
DM1->PasDTable->FieldByName("出錯次數(shù)")->Value=cout;
DM1->PasDTable->Post();
if(DM1->PasDTable->FieldByName("出錯次數(shù)")->Value
< DM1->PasDTable->FieldByName("出錯限制")->Value)
{passwdfm->Edit1->Text="";
passwdfm->Edit2->Text="";
passwdfm->ActiveControl=Edit1;
}
else
{ MessageBox(NULL,"登錄失敗次數(shù)超過限額,請與管理員聯(lián)系",
"密碼輸入信息",MB_OK);
Application->Terminate();
}
}
}
else//無該用戶
{MessageBox(NULL,"無該用戶","密碼輸入信息",MB_OK);
passwdfm->Edit1->Text="";
passwdfm->Edit2->Text="";
passwdfm->ActiveControl=Edit1;
}
}
}
3、密碼修改
一般用戶只能修改自己的密碼,當(dāng)用戶選擇該功能時,提示用戶輸入一次舊密碼,兩次新密碼。用戶可以按清除鍵重新輸入。當(dāng)用戶輸入完成后,先從活動表找出
該用戶ID,再按ID尋找用戶資料表找到該用戶,先比較舊密碼,錯誤提示從新修改,正
確則完成修改。
4、超級用戶可以設(shè)置/修改用戶資料表中的所有資料及密碼初始化。