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

📄 logindlg.cpp

📁 改程序实现了登陆管理。用户设置有ADMIN和普通用户两种。是用户管理很使用的程序。
💻 CPP
字号:
// LoginDlg.cpp : implementation file
//

#include "stdafx.h"
#include "PowerSet.h"
#include "LoginDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CLoginDlg dialog
extern CPowerSetApp theApp;

CLoginDlg::CLoginDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CLoginDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CLoginDlg)
	m_name = _T("");
	m_pwd = _T("");
	//}}AFX_DATA_INIT
}


void CLoginDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLoginDlg)
	DDX_Control(pDX, IDC_NAME, m_ctrname);
	DDX_Control(pDX, IDC_LOGIN, m_btnLogin);
	DDX_Control(pDX, IDC_CANCEL, m_btnCancel);
	DDX_CBString(pDX, IDC_NAME, m_name);
	DDX_Text(pDX, IDC_PWD, m_pwd);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLoginDlg, CDialog)
	//{{AFX_MSG_MAP(CLoginDlg)
	ON_BN_CLICKED(IDC_LOGIN, OnLogin)
	ON_BN_CLICKED(IDC_CANCEL, OnCancel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLoginDlg message handlers

void CLoginDlg::OnCancel() 
{
   CDialog::OnCancel();	
}


/////////////////////////////////////////////////////////
//进行登陆对话框权限判断验证
//作者:武
//////////////////////////////////////////////////////////
void CLoginDlg::OnLogin() 
{
	UpdateData();
	if(m_name.IsEmpty()||m_pwd.IsEmpty())
	{	
		AfxMessageBox("请输入用户名和密码!");	
		return;
	}
	else//if user enter name and password.
	{
		//成生sql语句
		CString sql="SELECT * FROM USERS where username='"+m_name+"' and passwd='"+m_pwd+"'";
		try
		{
			//查询数据库,看是否有此用户和密码
			m_pRecordset.CreateInstance("ADODB.Recordset");
			m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
			//如果没有此用户和密码,再查询是否有此用户
			if(m_pRecordset->adoEOF)
			{
			AfxMessageBox("用户名或密码错误!");
			}
			//用户名和密码存在,登录成功
			else
			{
				theApp.name=m_name;
				theApp.admin=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("power");
				theApp.pwd=m_pwd;
				CDialog::OnOK();
				return;
			}
			m_pRecordset->Close();
		}
		catch(_com_error e)///捕捉异常
		{
			CString temp;
			temp.Format("读取用户名和密码错误:%s",e.ErrorMessage());
			AfxMessageBox(temp);
			return;
		}
	}	
}

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

	/////////////////////////////////////////////////////////
	//进行登陆对话框初始化,读出数据库中的用户名,显示在控件中
	//作者:武
	//////////////////////////////////////////////////////////
	int i,recordcount;
	CString sql="SELECT username FROM USERS ORDER BY id";

	try
	{
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		recordcount=m_pRecordset->GetRecordCount();//Get records total.	

		if(!m_pRecordset->adoEOF)
		{
			for(i=0;i<recordcount;i++)
			{
			m_ctrname.AddString((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("username"));
			sql=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("username");
			m_pRecordset->MoveNext();
			}
		}

		m_pRecordset->Close();
	}
	catch(_com_error e)///捕捉异常
	{
		CString temp;
		temp.Format("读取用户名错误:%s",e.ErrorMessage());
		AfxMessageBox(temp);
		return false;
	}		
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

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