www.gusucode.com > VC++宾馆管理系统(Access)程序 > VC++宾馆管理系统(Access)程序\code\RegisterDlg.cpp

    // RegisterDlg.cpp : implementation file
// Download by http://www.NewXing.com

#include "stdafx.h"
#include "HotelManageSys.h"
#include "RegisterDlg.h"
#include "MD5.h"
#include "math.h"

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

/////////////////////////////////////////////////////////////////////////////
// CRegisterDlg dialog
extern CHotelManageSysApp theApp;

CRegisterDlg::CRegisterDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CRegisterDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRegisterDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CRegisterDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRegisterDlg)
	DDX_Control(pDX, IDC_CHECKLookFor, m_LookFor);
	DDX_Control(pDX, IDC_CHECKEdit, m_Edit);
	DDX_Control(pDX, IDC_CHECKDel, m_Del);
	DDX_Control(pDX, IDC_CHECKAdd, m_Add);
	DDX_Control(pDX, IDC_EDITUser, m_UserName);
	DDX_Control(pDX, IDC_EDITPasswordC, m_PasswordC);
	DDX_Control(pDX, IDC_EDITPassword, m_Password);
	//}}AFX_DATA_MAP
}


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

/////////////////////////////////////////////////////////////////////////////
// CRegisterDlg message handlers

void CRegisterDlg::OnOK() 
{
	// TODO: Add extra validation here
	 //定义加密解密模块指针,并初始化
	CMD5* MyMD5 = new CMD5;
	CString UserName,StrTemp,StrSQL,Password,PasswordC,StrLevel; 
    UpdateData(TRUE);
	//获取用户输入的用户名
    m_UserName.GetWindowText(StrTemp);
	//加密用户输入的用户名
    UserName=MyMD5->MD5_Algorithm(StrTemp);  
    //获取用户输入的密码
	m_Password.GetWindowText(StrTemp);
    //加密用户输入的密码
	Password=MyMD5->MD5_Algorithm(StrTemp); 
    //获取用户输入的确认密码
	m_PasswordC.GetWindowText(StrTemp);
	//加密用户输入的确认密码
	PasswordC=MyMD5->MD5_Algorithm(StrTemp); 
    //对查询字符串进行赋值
	StrSQL="Select * From UserInformation Where Name = '"+UserName+" ' ";
    //初始化记录集
	m_pRs.CreateInstance("ADODB.Recordset");
	//打开记录集
	//从数据库中查找输入用户名
    m_pRs->Open((_variant_t)StrSQL, 
			    _variant_t((IDispatch *)theApp.m_pConnection,true), 
				 adOpenStatic, 
				 adLockOptimistic, 
				 adCmdText);
    //如果用户名存在,则提示“用户名存在,请重新输入用户名”
	if(m_pRs->GetRecordCount()!= 0)
	{
		AfxMessageBox("此用户名已存在,请重新输入用户名");
		m_UserName.Clear(); 
		m_UserName.SetFocus();
	}
    //如果用户名不存在,判断两次输入的密码是否一致
	//如果两次一致则保存注册信息,否则重新输入密码
	else
	{
	  if(Level()==0)
	  {
		  AfxMessageBox("请选择用户权限");
	  }
	  else
	  if(Password.CompareNoCase(PasswordC)==0)
	  {		 
		  m_pRs->AddNew();
		  m_pRs->PutCollect("Name",_variant_t(UserName));
		  m_pRs->PutCollect("Pwd",_variant_t(Password));
		  //将int型转换成CString型
		  StrLevel.Format("%d",Level());
		  m_pRs->PutCollect("Level",_variant_t(StrLevel));
		  m_pRs->Update(); 
		  AfxMessageBox("用户注册完毕");
		  //清空输入信息
		  m_UserName.Clear();
		  m_Password.Clear();
		  m_PasswordC.Clear(); 
		 CDialog::OnOK();
	  }
	  else
	  {
		AfxMessageBox("输入密码不一致请重新输入密码");
		//清空输入信息
		m_Password.Clear();
		m_PasswordC.Clear(); 
		//设置焦点
		m_Password.SetFocus();
	  }
	}

}

int CRegisterDlg::Level()
{
	//定义权限值变量
	int LevelNum;
	//初始化LevelNum值
    LevelNum=0;
    //如果“增加”权限被选中,LevelNum = 1
	if(m_Add.GetCheck() == 1)
		LevelNum+=(int)pow(2,0);
	//如果“修改”权限被选中,LevelNum = 2
	if(m_Edit.GetCheck() == 1)
		LevelNum+=(int)pow(2,1);
    //如果“删除”权限被选中,LevelNum = 4
	if(m_Del.GetCheck() == 1)
		LevelNum+=(int)pow(2,2);
    //如果“打印”权限被选中,LevelNum = 8
	if(m_LookFor.GetCheck() == 1)
		LevelNum+=(int)pow(2,3);
	return LevelNum;

}

BOOL CRegisterDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_Add.SetCheck(1);
	m_Del.SetCheck(1);
	m_Edit.SetCheck(1);
	m_LookFor.SetCheck(1);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}