⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 password.cpp

📁 这是本人前不久为公司做的一个财产登记软件,实现中用到的是ADO Access数据库.登陆的初始密码为:111111,当然你可以进行更改.
💻 CPP
字号:
// PassWord.cpp : implementation file
//

#include "stdafx.h"
#include "AssetEnrol.h"
#include "PassWord.h"

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

/////////////////////////////////////////////////////////////////////////////
// PassWord dialog


PassWord::PassWord(CWnd* pParent /*=NULL*/)
	: CDialog(PassWord::IDD, pParent)
{
	//{{AFX_DATA_INIT(PassWord)
	m_PassWord = _T("");
	m_PrePassword = _T("");
	m_NewPassword1 = _T("");
	m_NewPassword2 = _T("");
	//}}AFX_DATA_INIT
}


void PassWord::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(PassWord)
	DDX_Text(pDX, IDC_EDIT1, m_PassWord);
	DDV_MaxChars(pDX, m_PassWord, 16);
	DDX_Text(pDX, IDC_PRE_PASSWORD, m_PrePassword);
	DDX_Text(pDX, IDC_NEW_PASSWORD1, m_NewPassword1);
	DDX_Text(pDX, IDC_NEWPASSWORD2, m_NewPassword2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(PassWord, CDialog)
	//{{AFX_MSG_MAP(PassWord)
	ON_BN_CLICKED(IDC_MODIFY_OK, OnModifyOk)
	ON_BN_CLICKED(IDC_QUIT, OnQuit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// PassWord message handlers

void PassWord::OnOK() 
{
	// add
	extern CAssetEnrolApp theApp;
	extern BOOL IsOpen;
	_variant_t var;
	CString password;
	UpdateData();

	if(m_PassWord=="")
	{
		MessageBox("   密码不能为空!   \n\n   请输入密码...","提示!");
		return;
	}
	//创建一个数据库连接
	m_pRecordset.CreateInstance(__uuidof(Recordset));

	try
	{
		//打开AssetEnrol表(所有字段)
		m_pRecordset->Open("SELECT * FROM Identify",theApp.m_pConnection.GetInterfacePtr(), 
			adOpenDynamic, adLockOptimistic,adCmdText); 
	
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox("表内数据为空!");
		    return;
		}

		var=m_pRecordset->GetCollect("PassWord");
		if(var.vt!=VT_NULL)
		{
			password=(LPCSTR)_bstr_t(var);
			if(m_PassWord!=password)
			{
				MessageBox("   输入密码不正确!   \n\n   请重新输入密码...","提示!");
				m_PassWord="";

				UpdateData(FALSE);

				return;
			}
		}

	}

	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

	IsOpen=TRUE;

	UpdateData(FALSE);

	m_pRecordset->Close();

	CDialog::OnOK();
}




void PassWord::OnModifyOk() 
{
	// add...

	extern CAssetEnrolApp theApp;
	_variant_t var;
	CString password;
	UpdateData();

	if(m_PrePassword=="" || m_NewPassword1=="" || m_NewPassword2=="")
	{
		MessageBox("密码不能为空","提示!");
		return;
	}

	//创建一个数据库连接
	m_pRecordset.CreateInstance(__uuidof(Recordset));

	try
	{
		//打开AssetEnrol表(所有字段)
		m_pRecordset->Open("SELECT * FROM Identify",theApp.m_pConnection.GetInterfacePtr(), 
			adOpenDynamic, adLockOptimistic,adCmdText); 
	
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			MessageBox("表内数据为空!","提示!");
		    return;
		}

		var=m_pRecordset->GetCollect("PassWord");
		if(var.vt!=VT_NULL)
		{
			password=(LPCSTR)_bstr_t(var);
			if(m_PrePassword!=password)
			{
				MessageBox("   原密码输入不正确!   \n\n   请重新输入原密码...","提示!");
				m_PrePassword="";

				UpdateData(FALSE);

				return;
			}

			if(m_NewPassword1!=m_NewPassword2)
			{
				MessageBox("   两次密码输入不一样!   \n\n   请重新输入新密码...","提示!");
				m_NewPassword1="";
				m_NewPassword2="";

				UpdateData(FALSE);

				return;
			}

			if(m_NewPassword1.GetLength()<6 ||m_NewPassword2.GetLength()<6)
			{
				MessageBox("   密码长度不能少于6位!   \n\n   请重新输入新密码...","提示!");
				m_NewPassword1="";
				m_NewPassword2="";

				UpdateData(FALSE);

				return;
			}

			if(m_NewPassword1.GetLength()>12 ||m_NewPassword2.GetLength()>12)
			{
				MessageBox("   密码长度不能大于12位!   \n\n   请重新输入新密码...","提示!");
				m_NewPassword1="";
				m_NewPassword2="";

				UpdateData(FALSE);

				return;
			}

	
			m_pRecordset->Delete(adAffectCurrent);  //删除当前行记录

			//记录移到第一个
			m_pRecordset->MoveFirst(); 
			//写入新的密码
			m_pRecordset->AddNew();
			m_pRecordset->PutCollect("PassWord",_variant_t(m_NewPassword1));
			m_pRecordset->Update();

			MessageBox("密码已修改!!\n","提示!");
		}

	}

	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}


}

BOOL PassWord::OnInitDialog() 
{
	CDialog::OnInitDialog();

	extern BOOL IsOpen;

	IsOpen=FALSE;
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void PassWord::OnQuit() 
{
	// add...
	
	CDialog::OnCancel();	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -