设为首页 加入收藏

TOP

7.6.3 管理员登录的实现
2013-10-07 14:53:08 来源: 作者: 【 】 浏览:63
Tags:7.6.3 管理员 登录 实现

7.6.3  管理员登录的实现

管理员的登录几乎是每个系统中必不可少的部分,这个功能的实现其实并不复杂,只需要通过用户输入的用户名和密码在数据表中查找匹配的数据。如果查找到则登录成功,可以进行相关的操作;否则登录失败。添加一个对话框资源将ID改为IDD_DLG_PASSWORD,添加如图7-22所示的控件。

 
图7-22  用户登录界面

在对话框的空白区域双击,进入添加类对话框。为对话框资源创建一个新类CLoginDlg,通过类向导为控件关联相关的变量,并给对话框添加WM_INITDIALOG初始化消息,该消息函数中代码如下:

代码位置:见光盘中本章源代码的CLoginDlg类。

  1. 1  BOOL CLoginDlg::OnInitDialog()  
  2. 2  {  
  3. 3   CDialog::OnInitDialog();  
  4. 4      LOGFONT LogFont;                                         //定义结构变量  
  5. 5   GetFont()->GetLogFont(&LogFont);                        //获取字体的信息  
  6. 6      LogFont.lfHeight+=LogFont.lfHeight/2;                    //修改字体的信息  
  7. 7   LogFont.lfWidth+=LogFont.lfWidth/2;  
  8. 8      CFont m_font;                                        //定义字体变量  
  9. 9   m_font.CreateFontIndirect(&LogFont);                    //创建字体  
  10. 10      GetDlgItem(IDC_STATIC_LOG)->SetFont(&m_font);           //设置对话框的字体  
  11. 11      SetWindowText("用户登录");                          //设置对话框的标题  
  12. 12      return TRUE;  
  13. 13  }  

第4~10行代码设置对话框显示的字体。

第11行代码设置对话框的标题。

上述代码中调用函数GetFont()获取当前字体的信息,对字体的信息进行修改后,调用函数CreateFontIndirect()创建新的字体的信息。给【登录】按钮添加消息响应函数,其中的代码如下:

代码位置:见光盘中本章源代码的CTransView类。

  1. 1  void CLoginDlg::OnUserlog()  
  2. 2  {  
  3. 3       CPasswordSet m_pset;                                //定义记录集对象  
  4. 4   UpdateData();                                           //更新数据  
  5. 5   try  
  6. 6   {  
  7. 7       if(m_pset.Open())                                   //如果已经打开记录集  
  8. 8           m_pset.Close();                             //则关闭  
  9. 9       m_pset.m_strFilter.Format("USER_ID='%s'",m_name);   //设置查询内容  
  10. 10          m_pset.Open(CRecordset::snapshot,NULL,CRecordset::none);    //打开记录集  
  11. 11          if(m_pset.IsEOF())                              //遍历记录集  
  12. 12          {  
  13. 13              m_pset.Close();                             //关闭记录集  
  14. 14              MessageBox("用户名错误请重试!","提示!",MB_ICONWARNING);  
  15. 15              m_name="";                                  //清空字符串  
  16. 16              m_pass="";  
  17. 17              UpdateData(false);  
  18. 18              return;  
  19. 19          }  
  20. 20          m_pset.m_strFilter="";  
  21. 21          m_pset.Close();  
  22. 22          m_pset.m_strFilter.Format("USER_PASSWORD='%s'",m_pass);                                                                         //设置查询内容  
  23. 23          m_pset.Open(CRecordset::snapshot,NULL,CRecordset::none);  
  24. 24          if(m_pset.IsEOF())                              //遍历记录集查询  
  25. 25          {  
  26. 26              m_pset.Close();  
  27. 27              MessageBox("密码错误请重试!","提示!",MB_ICONWARNING);  
  28. 28              m_pass="";  
  29. 29              UpdateData(false);  
  30. 30              return;  
  31. 31          }  
  32. 32          else  
  33. 33          {  
  34. 34              //…                                         //省略添加日志代码  
  35. 35                  EndDialog(IDOK);  
  36. 36              CMapPublicApp *app=(CMapPublicApp *)AfxGetApp();    //获取应用类指针  
  37. 37              app->m_User_ID=m_name;                      //变量的赋值  
  38. 38              app->bEnableMenu=true;  
  39. 39          }  
  40. 40      }  
  41. 41      catch(CDBException *e)                              //捕捉异常  
  42. 42      {  
  43. 43         e->ReportError();  
  44. 44         return;  
  45. 45      }  
  46. 46  }  

第7~19行代码从数据表中查找用户名和密码是否存在。

第24~31行代码为当用户名密码错误时进行的操作。

第32~39行代码为用户登录成功后,将用户的操作添加到用户日志表中。

第41~45行代码为数据库操作出错时捕捉异常处理。

上述代码中的查找是通过记录集的成员变量m_strFilter来实现的,先判断用户名是否存在,再判断密码是否正确。如果登录成功,则把用户登录的信息添加到日志表中,记录用户的操作信息。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇7.6.5 整条线路维护的实现(1) 下一篇7.6.2 公交信息维护模块技术分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: