Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

mengyanjun/book-manage-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

2 Commits

Repository files navigation

book-manage-system

登陆界面,连接数据库 // LoginDlg.cpp : implementation file //

#include "stdafx.h" #include "BookManage.h" #include "LoginDlg.h"

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

///////////////////////////////////////////////////////////////////////////// // CLoginDlg dialog

CLoginDlg::CLoginDlg(CWnd* pParent /=NULL/) : CDialog(CLoginDlg::IDD, pParent) { //{{AFX_DATA_INIT(CLoginDlg) m_pwd = _T(""); m_userid = _T(""); //}}AFX_DATA_INIT m_pRecordset = NULL; m_pConnection = NULL; VariantInit(&varUserName); }

void CLoginDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLoginDlg) DDX_Text(pDX, IDC_EDIT_PWD, m_pwd); DDX_Text(pDX, IDC_EDIT_USERID, m_userid); //}}AFX_DATA_MAP DDX_Control(pDX, IDC_BTN_LOGIN, m_btnLogin); DDX_Control(pDX, IDCANCEL, m_btnCancel); }

BEGIN_MESSAGE_MAP(CLoginDlg, CDialog) //{{AFX_MSG_MAP(CLoginDlg) ON_BN_CLICKED(IDC_BTN_LOGIN, OnBtnLogin) ON_WM_CTLCOLOR() //}}AFX_MSG_MAP END_MESSAGE_MAP()

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

//功能:登录时身份验证 //时间:2009年9月23日 void CLoginDlg::OnBtnLogin() { // TODO: Add your control notification handler code here //HRESULT hr; UpdateData(TRUE); //m_pwd.TrimRight(); //把密码右边的空格去掉

//char buf[20];
CString strSRC = "Provider = SQLOLEDB.1; Integrated Security = SSPI; Persist Security Info=False; Initial Catalog = BookManage; Data Source = .\\SQLEXPRESS";
_bstr_t strConnect = strSRC;
//_variant_t var;
CString strSQL = "";
//CString strReaderType;
_variant_t varRet; //存储Output的参数

// int index;

//检查用户ID和密码是否为空,且检测空格
if(m_userid.IsEmpty())
{
	MessageBox("请输入您的用户编号!","温馨提示",
		MB_OK | MB_ICONEXCLAMATION);
	m_pwd.Empty();
	UpdateData(FALSE);
	return;
}
if(m_pwd.IsEmpty())
{
	MessageBox("请输入您的密码!","温馨提示",
		MB_OK | MB_ICONEXCLAMATION);
	m_pwd.Empty();
	UpdateData(FALSE);
	return;
}

/* else if(" " == m_userid.Left(1) || " " == m_userid.Right(1)) //用户编号的空格不用检测 { MessageBox("用户编号中不正确!","温馨提示", MB_OK | MB_ICONEXCLAMATION); //m_userid.Empty(); m_pwd.Empty(); UpdateData(FALSE); return; }*/ else if(" " == m_pwd.Left(1) || " " == m_pwd.Right(1)) //密码的空格需要检测 { MessageBox("密码不正确!","温馨提示", MB_OK | MB_ICONEXCLAMATION); //m_userid.Empty(); m_pwd.Empty(); UpdateData(FALSE); return; }

//连接数据库
try 
{ 
	m_pConnection.CreateInstance("ADODB.Connection"); //创建实例
	//身份验证模式为:"sql server和windows"
	//_bstr_t strConnect = "Provider = SQLOLEDB.1;Persist Security Info = True;User ID = sa;Password = 123;Initial Catalog = BookManage;Data Source=.";
	//身份验证模式为:"仅windows"
	m_pConnection->Open(strConnect, "", "", adModeUnknown); 
	//if( m_pConnection->State==adStateOpen) 
		//MessageBox("连接数据库"); 
	/*if( m_pConnection->State==adStateClosed) 
		MessageBox("断开连接"); */
	//创建存储过程的命令对象
	m_pCommand.CreateInstance("ADODB.Command"); //创建实例
	m_pCommand->ActiveConnection = m_pConnection;	 //设置连接
	m_pCommand->CommandText = "usp_Login";			 //存储过程为usp_Login
	//建立传入存储过程的参数
	//m_pParamID.CreateInstance("ADODB.Parameter");
	//m_pParamPwd.CreateInstance("ADODB.Parameter");
	//m_pParamRet.CreateInstance("ADODB.Parameter");
	
	m_pParamID = m_pCommand->CreateParameter("rdID",adInteger,adParamInput,-1,(_variant_t)m_userid); //给参数设置属性
	m_pCommand->Parameters->Append(m_pParamID);		 //加入到Command对象的参数集属性中
	m_pParamPwd = m_pCommand->CreateParameter("rdPwd",adVarChar,adParamInput,10,(_variant_t)m_pwd);
	m_pCommand->Parameters->Append(m_pParamPwd);
	m_pParamRet = m_pCommand->CreateParameter("ret",adChar,adParamReturnValue,1);
	m_pCommand->Parameters->Append(m_pParamRet);
	m_pCommand->Execute(NULL,NULL,adCmdStoredProc);
 varRet = m_pCommand->Parameters->GetItem("ret")->GetValue();
	varRet.ChangeType(VT_I4, NULL);
	if(V_I4(&varRet))							 //通过身份验证
	{
		//MessageBox("登录成功!");
		//CString strType;
		//strType = m_userid.Left(1); //获取用户ID首字母
		m_pRecordset.CreateInstance("ADODB.Recordset");
		 //判断是否是管理员登录
		strSQL.Format("select * from Manager where mgID = '%s'", m_userid);
		m_pRecordset->Open((_bstr_t)strSQL,m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
		
		while(!m_pRecordset->adoEOF)
		{
			varUserType = m_pRecordset->GetCollect("mgType"); //获得管理员类型
			varUserName = m_pRecordset->GetCollect("mgName");		 //获得管理员名
			m_pRecordset->MoveNext();
		}
		if(m_pRecordset->State)
			m_pRecordset->Close();
		 
		if(NULL == varUserName.vt)								 //读者登录
		{
			strSQL.Format("select * from Reader where rdID = '%s'", m_userid);
			m_pRecordset->Open((_bstr_t)strSQL,m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
			
			while(!m_pRecordset->adoEOF)
			{
				varUserType = m_pRecordset->GetCollect("rdType"); //获得读者类型
				varUserName = m_pRecordset->GetCollect("rdName");	 //获得读者名
				m_pRecordset->MoveNext();
			}
		}
	}
	else
	{
		MessageBox("用户编号或密码不正确!","温馨提示",
		MB_OK | MB_ICONEXCLAMATION);
		m_pwd = "";
		UpdateData(FALSE);
		return;
	}
} 
catch(_com_error e) 
{ 
	AfxMessageBox(e.ErrorMessage()); 
	// 显示错误信息
	AfxMessageBox(e.Description());
	return;
} 
if(m_pRecordset->State)
	m_pRecordset->Close();
this->EndDialog(TRUE);

}

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

// TODO: Add extra initialization here
m_btnLogin.SetShade(CShadeButtonST::SHS_HSHADE,8,20,5,RGB(55,55,255));
m_btnLogin.DrawFlatFocus(TRUE);
m_btnCancel.SetShade(CShadeButtonST::SHS_HSHADE,8,20,5,RGB(55,55,255));
m_btnCancel.DrawFlatFocus(TRUE);
m_brush.CreateSolidBrush(RGB(208, 196, 174));
return TRUE; // return TRUE unless you set the focus to a control
 // EXCEPTION: OCX Property Pages should return FALSE

}

HBRUSH CLoginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { /*HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
return hbr;*/
if(pWnd->GetDlgCtrlID() == IDC_STATIC1 || 
	pWnd->GetDlgCtrlID() == IDC_STATIC2)
{	
	pDC->SetBkColor(RGB(208, 196, 174));
}
return m_brush; //返加绿色刷子

}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /