您的位置: 首页 > 软件教程 > C++ Builder教程专题 > C++ Builder简单的用户密码管理系统

C++ Builder简单的用户密码管理系统

8.3分
出处:网络 时间:2011-06-27

您可能感兴趣的话题: C++ Builder  

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

  一、功能

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

  二、设计思路及程序实现

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

  一般用户只能修改自己的密码,当用户选择该功能时,提示用户输入一次旧密码,两次新密码。用户可以按清除键重新输入。当用户输入完成后,先从活动表找出该用户ID,再按ID寻找用户资料表找到该用户,先比较旧密码,错误提示从新修改,正确则完成修改。

  4、超级用户可以设置/修改用户资料表中的所有资料及密码初始化。

网友评论
多特网友 2012-04-18 08:04:09 回复
密码修改的代码怎么写?
多特网友 2012-03-14 17:49:36 回复
C++程序设计详细过程
多特网友 2012-03-14 17:46:43 回复
没有细节,我是新手
多特网友 2012-03-14 17:46:43 回复
没有细节,我是新手
多特网友 2012-04-18 08:04:09 回复
密码修改的代码怎么写?
多特网友 2012-03-14 17:49:36 回复
C++程序设计详细过程
精品软件课程
更多 >
C++是一种静态数据类型检查的,支持多重编程... [详细]
Java,是由Sun Microsystem... [详细]
C语言是一种面向过程的计算机程序设计语言。多... [详细]
Visual Basic是一种由微软公司开发... [详细]
Oracle Database,又名Orac... [详细]
Visual Basic.NET是从 Vis... [详细]