CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

登录界面

楼主chenlin526(chenlin)2003-12-02 11:58:23 在 VC/MFC / 界面 提问

如何用vc制作带密码检验功能的登录界面????? 问题点数:0、回复次数:10Top

1 楼lifengli(lifengli)回复于 2003-12-02 12:33:59 得分 0

用数据查找的功能Top

2 楼arvid_gs(west)回复于 2003-12-02 12:37:45 得分 0

?Top

3 楼bohut(●伯虎● )回复于 2003-12-02 13:36:10 得分 0

做一个对话框,放置你的几个editbox,至于你的密码可以存放在文件中也可以放在数据库中。Top

4 楼yanw0212(爱家的男人)回复于 2003-12-05 15:24:38 得分 0

1.在对话框的OnInitDialog()   中  
   
  BOOL   CAdminisLogin::OnInitDialog()    
  {  
  CDialog::OnInitDialog();  
  ::SetFocus(m_combobox.m_hWnd);  
          m_combobox.DeleteString(0);  
          sql.Empty();  
  sql   =   "SELECT   LoginName   FROM   t_UserInfo   WHERE     UserTypeID=0   AND     EnableFlag<>0";  
  if(!m_pDb.IsOpen())  
  {  
  if(m_pDb.Open(strConnection))  
  {  
  m_pRs.Close();  
  m_pRs   =   CADORecordset(&m_pDb);  
  }  
  else  
  {  
  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"请确认数据库服务器是否打开,连接是否正常,然后单击“确定”按钮!","ExceptionManager提示",   0   |   MB_ICONERROR   );  
  ::EnableWindow(GetDlgItem(IDOK)->m_hWnd,false);  
          return   false;  
  }  
  }  
  if(m_pRs.Open(sql,   CADORecordset::openQuery))  
  {  
  while(!m_pRs.IsEOF())  
  {  
  if(   !m_pRs.GetFieldValue(0,LoginName)   )    
  {  
                                  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息",   0   |   MB_ICONASTERISK   |   MB_TOPMOST)   ;  
          return   false;  
  }  
          m_pRs.MoveNext();  
  }  
          }  
  else  
  {  
  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息",   0   |   MB_ICONASTERISK   |   MB_TOPMOST)   ;  
  return   false;  
  }//   结束数据库查询  
          m_combobox.AddString(LoginName);  
   
  sql.Empty();  
  sql   =   "SELECT   LoginName,LoginPWD   ,UserTypeID   FROM   t_UserInfo   WHERE   EnableFlag<>0   AND   UserTypeID<>0";  
  if(m_pRs.Open(sql,   CADORecordset::openQuery))  
  {  
  while(!m_pRs.IsEOF())  
  {  
  if(   !m_pRs.GetFieldValue(0,LoginName)   )    
  {  
                                  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息",   0   |   MB_ICONASTERISK   |   MB_TOPMOST)   ;  
          return   false;  
  }  
  if(   !m_pRs.GetFieldValue(1,LoginPWD)   )    
  {  
                                  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息",   0   |   MB_ICONASTERISK   |   MB_TOPMOST)   ;  
          return   false;  
  }  
  if(   !m_pRs.GetFieldValue(2,UserTypeID)   )    
  {  
                                  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息",   0   |   MB_ICONASTERISK   |   MB_TOPMOST)   ;  
          return   false;  
  }  
  m_combobox.AddString(LoginName);  
  m_pRs.MoveNext();  
  }  
  }  
  else  
  {  
  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息",   0   |   MB_ICONASTERISK   |   MB_TOPMOST)   ;  
  return   false;  
  }//   结束数据库查询  
             
   
  return   TRUE;     //   return   TRUE   unless   you   set   the   focus   to   a   control  
                              //   EXCEPTION:   OCX   Property   Pages   should   return   FALSE  
  }  
   
  2   。当用户添入了登陆名和密码后,点击登陆按钮  
  void   CAdminisLogin::OnOK()    
  {  
  UpdateData(true);  
           
  static   int   count   =   1;  
  if(   m_LoginName.IsEmpty()   )  
  {  
  ::MessageBox(NULL,"登录名不能为空,请重新输入!","ExceptionManager提示信息"   ,0   |   MB_ICONHAND)   ;  
  return;  
  }  
  bool   havedata   =   false;  
   
  sql.Empty();  
  sql   =     "SELECT   LoginPWD,UserID   FROM   t_UserInfo   WHERE     EnableFlag<>0   AND     LoginName='";  
  sql   +=   m_LoginName;  
  sql   +=   "'";    
   
  if(m_pRs.Open(sql,   CADORecordset::openQuery))  
  {  
  while(!m_pRs.IsEOF())  
  {  
  havedata   =   true;  
  if(   !m_pRs.GetFieldValue(0,m_dbpassword)   )    
  {  
                                  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息",   0   |   MB_ICONASTERISK   |   MB_TOPMOST)   ;  
          return;  
  }  
  if(   !m_pRs.GetFieldValue(1,m_dbuserid)   )    
  {  
                                  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息",   0   |   MB_ICONASTERISK   |   MB_TOPMOST)   ;  
          return;  
  }  
  m_pRs.MoveNext();  
  }  
  }  
  else  
  {  
  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"数据库操作异常!","ExceptionManager提示信息",   0   |   MB_ICONASTERISK   |   MB_TOPMOST)   ;  
  return;  
  }//   结束数据库查询  
   
  if(!havedata)  
  {  
  if   (count   >=   3)  
  {  
  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"非法用户不能登录,系统将关闭","ExceptionManager提示信息"   ,0   |   MB_ICONHAND)   ;    
  PostQuitMessage(WM_QUIT);  
  }  
  else  
  {  
        ::MessageBox(NULL,"登录名无效,不能登录","ExceptionManager提示信息"   ,0   |   MB_ICONHAND)   ;    
  }  
   
  count   ++;  
  return;  
  }  
          else  
  {  
  m_password.MakeUpper();  
  m_dbpassword.MakeUpper();  
  if((m_password     ==   m_dbpassword)   )  
  {  
  AdminisName.Empty();  
  AdminisName   =   m_LoginName;  
   
  AdminisID   =   0;  
  AdminisID   =   m_dbuserid;  
                     
  CString   LogID;  
  LogID.Empty();  
  LogID.Format("%d",m_dbuserid)   ;  
  sql.Empty();  
  sql   =   "INSERT   INTO   t_UserLog(UserID,LoginName,SystemFunction,HappenTime,UserAction,Description   )   VALUES(   ";                                              
  sql   +=   LogID   ;  
  sql   +=   ",'";  
  sql   +=   m_LoginName;  
  sql   +=   "'   ,'BasicManager',   GETDATE(),'Login',   '用户登录'   )";  
   
  if   (   !m_pDb.IsOpen()   )  
  {  
  if   (   !m_pDb.Open()   )  
  {  
                                          m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"请确认数据库服务器是否打开,连接是否正常,然后单击“确定”按钮!","ExceptionManager提示",   0   |   MB_ICONERROR   );  
  }  
  }  
  m_pDb.Execute(sql);          
   
  CDialog::OnOK();  
  }  
  else  
  {  
  if   (count   >=   3)  
  {  
  m_pRs.Close();  
  m_pDb.Close();  
  ::MessageBox(NULL,"非法用户不能登录,系统将关闭","ExceptionManager提示信息"   ,0   |   MB_ICONHAND)   ;    
  PostQuitMessage(WM_QUIT);  
  }  
  else  
  {  
  ::MessageBox(NULL,"登录密码错误,不能登录","ExceptionManager提示信息"   ,0   |   MB_ICONHAND)   ;    
  }  
                          count   ++;  
  return;  
  }  
  }  
  m_pRs.Close();  
          m_pDb.Close();  
  }Top

5 楼chenlin526(chenlin)回复于 2003-12-10 17:07:39 得分 0

非常感谢诸位!特别是yanw0212()!Top

6 楼chenlin526(chenlin)回复于 2003-12-10 17:24:02 得分 0

请问yanw0212(),我怎么给分给你?Top

7 楼checkyvc6(已所不欲,勿施于人)回复于 2003-12-10 17:28:54 得分 0

如果问题解决了话,赶快揭帖啊!  
   
  你可以对密码进行简单的加密这样文件中或者数据库中显示的密码不是昵登陆时的密码  
  下面给你一个加密类直接用就可以了  
  class   CCrypt      
  {  
  public:  
  CCrypt();  
  virtual   ~CCrypt();  
  public:  
  static   CString   Encrypt(CString   S,   WORD   Key);   //   加密函数  
  static   CString   Decrypt(CString   S,   WORD   Key);   //   解密函数  
  };  
   
  //   常量  
  #define   C1   52845  
  #define   C2   22719  
   
  //////////////////////////////////////////////////////////////////////  
  //   Construction/Destruction  
  //////////////////////////////////////////////////////////////////////  
   
  CCrypt::CCrypt()  
  {  
   
  }  
   
  CCrypt::~CCrypt()  
  {  
   
  }  
   
  CString   CCrypt::Encrypt(CString   S,   WORD   Key)   //   加密函数  
  {  
  CString   Result,str;  
  int   i,j;  
   
  Result=S;   //   初始化结果字符串  
  for(i=0;   i<S.GetLength();   i++)   //   依次对字符串中各字符进行操作  
  {  
  Result.SetAt(i,   S.GetAt(i)^(Key>>8));   //   将密钥移位后与字符异或  
  Key   =   ((BYTE)Result.GetAt(i)+Key)*C1+C2;   //   产生下一个密钥  
  }  
  S=Result;   //   保存结果  
  Result.Empty();   //   清除结果  
  for(i=0;   i<S.GetLength();   i++)   //   对加密结果进行转换  
  {  
  j=(BYTE)S.GetAt(i);   //   提取字符  
  //   将字符转换为两个字母保存  
  str="12";   //   设置str长度为2  
  str.SetAt(0,   65+j/26);  
  str.SetAt(1,   65+j%26);  
  Result   +=   str;  
  }  
  return   Result;  
  }  
   
  CString   CCrypt::Decrypt(CString   S,   WORD   Key)   //   解密函数  
  {  
  CString   Result,str;  
  int   i,j;  
   
  Result.Empty();   //   清楚结果  
  for(i=0;   i   <   S.GetLength()/2;   i++)   //   将字符串两个字母一组进行处理  
  {  
  j   =   ((BYTE)S.GetAt(2*i)-65)*26;  
  j   +=   (BYTE)S.GetAt(2*i+1)-65;  
  str="1";   //   设置str长度为1  
  str.SetAt(0,   j);  
  Result+=str;   //   追加字符,还原字符串  
  }  
  S=Result;   //   保存中间结果  
  for(i=0;   i<S.GetLength();   i++)   //   依次对字符串中各字符进行操作  
  {  
  Result.SetAt(i,   (BYTE)S.GetAt(i)^(Key>>8));   //   将密钥移位后与字符异或  
  Key   =   ((BYTE)S.GetAt(i)+Key)*C1+C2;   //   产生下一个密钥  
  }  
  return   Result;  
  }  
   
  Top

8 楼canjian(奋斗,探求,不达目的誓不罢休!)回复于 2003-12-10 18:30:50 得分 0

收藏Top

9 楼lxz9117()回复于 2003-12-10 19:56:53 得分 0

dingTop

10 楼yanw0212(爱家的男人)回复于 2003-12-25 13:12:06 得分 0

在论坛里找到你的帖自,点击管理菜单,然后给分!Top

相关问题

  • 登录界面的问题
  • 字符界面登录问题
  • 如何改XP的登录界面
  • windows98 登录界面的替换
  • 很菜的问题,做登录界面
  • asp登录出错界面调整
  • 请教:登录界面的问题
  • 循环出现登录界面
  • 如何防止跳过登录界面
  • 如何防止跳过登录界面

关键词

  • 数据库
  • 密码
  • 信息
  • exceptionmanager
  • pdb
  • prs
  • iconasterisk
  • loginname
  • topmost
  • mb

得分解答快速导航

  • 帖主:chenlin526

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo