更改口令的界面的开发 (VC和数据库应用)

类别:VC语言 点击:0 评论:0 推荐:

// ChangePswDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Address.h"
#include "ChangePswDlg.h"
#include "PswdSet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CChangePswDlg dialog


CChangePswDlg::CChangePswDlg(CWnd* pParent /*=NULL*/)
 : CDialog(CChangePswDlg::IDD, pParent)
{
 //{{AFX_DATA_INIT(CChangePswDlg)
 m_oldpassword = _T("");
 m_newpassword = _T("");
 m_qurenpassword = _T("");
 //}}AFX_DATA_INIT
}


void CChangePswDlg::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
 //{{AFX_DATA_MAP(CChangePswDlg)
 DDX_Control(pDX, IDC_EDIT1, m_ctrloldpassword);
 DDX_Text(pDX, IDC_EDIT1, m_oldpassword);
 DDX_Text(pDX, IDC_EDIT2, m_newpassword);
 DDX_Text(pDX, IDC_EDIT3, m_qurenpassword);
 //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CChangePswDlg, CDialog)
 //{{AFX_MSG_MAP(CChangePswDlg)
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////
//名称:OnOk
//功能:更改用户口令


////////////////////////////////////////////////////////////////////////
void CChangePswDlg::OnOK()
{
 // TODO: Add extra validation here
 UpdateData(TRUE);//读入用户输入的密码
 CDBVariant varValue;///CDBVariant???  A CDBVariant object represents a variant data type for the MFC ODBC classes. CDBVariant is similar to COleVariant; however, CDBVariant does not use OLE. CDBVariant allows you to store a value without worrying about the value’s data type
 CPswdSet m_recordset(&m_database);//记录及类
 CString strSQL;
 strSQL.Format("select * from password where PASSWORD='%s'",m_oldpassword);
 m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
 //此处为一种执行SQL语句语法之一,

 
 //int temp=0;
 //m_recordset.GetFieldValue(temp,varValue);
 //如果输入的密码与数据库中的不一致,则弹出提示框
 if(m_recordset.GetRecordCount()==0)//改点特强 
 //if(m_oldpassword.Compare(varValue.m_pstring->GetBuffer(1))!=0)
 {
  MessageBox("原密码错误!","提示",MB_OK|MB_ICONINFORMATION);
  m_oldpassword.Empty();
  m_newpassword.Empty();
  m_qurenpassword.Empty();
  m_ctrloldpassword.SetFocus();
  UpdateData(FALSE);//清空所输入的内容将变化反映到对话框中
 }
 //如果原密码正确,两次新密码不同
 else
 {
  if(m_newpassword.Compare(m_qurenpassword)!=0)//比较两个字符串是否相同
  {
   MessageBox("新密码错误!","提示",MB_OK|MB_ICONINFORMATION);
   m_oldpassword.Empty();
   m_newpassword.Empty();
   m_qurenpassword.Empty();
   UpdateData(FALSE);//清空所输入的内容
  }
  else
  {
   strSQL.Format("update password set PASSWORD='%s' where PASSWORD='%s'",m_newpassword,m_oldpassword);
   m_database.ExecuteSQL(strSQL);//该种执行SQL 语句的最佳且最 容易理解的 方法 ,
   CDialog::OnOK();
   MessageBox("恭喜,口令更改成功!下次登录请使用口令: "+m_newpassword+"  ","提示",MB_OK|MB_ICONINFORMATION);
  }
 }
}


/////////////////////////////////////////////////////////////////////////
//名称:OnInitDialog
//功能:更改口令对话框初始化


////////////////////////////////////////////////////////////////////////
BOOL CChangePswDlg::OnInitDialog()
{
 CDialog::OnInitDialog();
 
 // TODO: Add extra initialization here
 m_ctrloldpassword.SetFocus();//注意在定义变量时 有一个技巧的,
   //那就是,可以一个控件有两种类型的 变量, 因为不同类型的 变量有不同的成员函数
 return TRUE;  // return TRUE unless you set the focus to a control
               // EXCEPTION: OCX Property Pages should return FALSE
}

本文地址:http://com.8s8s.com/it/it706.htm