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

📄 userlogin.cpp

📁 自己编的设备管理系统
💻 CPP
字号:
// UserLogin.cpp : implementation file
//

#include "stdafx.h"
#include "eq_manager_sys.h"
#include "eq_manager_sysDlg.h"
#include "UserLogin.h"

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

int CUserLogin::DBAflag = 1;
bool CUserLogin::flag = 1;
CString CUserLogin::UID = "";
//CString CUserLogin::PWD = "eq_system";
/////////////////////////////////////////////////////////////////////////////
// CUserLogin dialog


CUserLogin::CUserLogin(CWnd* pParent /*=NULL*/)
	: CDialog(CUserLogin::IDD, pParent)
{
	//{{AFX_DATA_INIT(CUserLogin)
	m_ePassword = _T("");
	m_eUser = _T("");
	count=0;
	m_Point1 = _T("");
	m_Point2 = _T("");
	m_Point3 = _T("");
	m_Wait = _T("");
	//}}AFX_DATA_INIT
}


void CUserLogin::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CUserLogin)
	DDX_Text(pDX, IDC_EDIT_Password, m_ePassword);
	DDX_Text(pDX, IDC_EDIT_User, m_eUser);
	DDX_Text(pDX, IDC_STATIC_Point1, m_Point1);
	DDX_Text(pDX, IDC_STATIC_Point2, m_Point2);
	DDX_Text(pDX, IDC_STATIC_Point3, m_Point3);
	DDX_Text(pDX, IDC_STATIC_Wait, m_Wait);
	//}}AFX_DATA_MAP
}


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

/////////////////////////////////////////////////////////////////////////////
// CUserLogin message handlers
void CUserLogin::ConnectDB()//function for connect DataBase
{
	TRY
	{
		 m_db.OpenEx("DSN=ORADB;UID=eq_system;PWD=eq_system",CDatabase::noOdbcDialog);
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox("问题出在连接数据库");
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH
	//InitCtrlData();
}

void CUserLogin::OnCancel() 
{
	// TODO: Add extra cleanup here
	m_db.Close();
	CDialog::OnCancel();
}

void CUserLogin::OnOK() 
{
	// TODO: Add extra validation here
	CString user_name,user_password,date,sql;
	int year,month,day;
	CString point[3];
	CDBVariant user_power;
	SYSTEMTIME st;

	///display the waiting points
	::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));

//	m_Wait = "Please wait ...";

/*	for(i=0;i<10;i++)
	{
	//	UpdateData(TRUE);
		for(j=0;j<3;j++)
		{
			(i%10==j)?(point[j]="."):(point[j]="");
		}
		m_Point1 = point[0];
		m_Point2 = point[1];
		m_Point3 = point[2];
		UpdateData(FALSE);
		for(j=0;j<100000;j++)
			;
	}*/
	CUserLogin::ConnectDB();

	if(!m_db.IsOpen())
	{
		MessageBox("数据库没打开");
			return;
	}
	UpdateData(TRUE);
	CRecordset rs(&m_db);
	rs.Open(CRecordset::dynaset,"select * from eq_user");///get the recordset from DB
	while(!rs.IsEOF())
	{
		rs.GetFieldValue((short)0,user_name);
		rs.GetFieldValue((short)1,user_password);
		rs.GetFieldValue((short)2,user_power,SQL_C_SLONG);
		
		CUserLogin::UID = user_name;
		if(m_eUser==user_name&&m_ePassword==user_password)
			break;
		rs.MoveNext();
	}

	if(!rs.IsEOF())//if username and password matched
	{

		///save the login user's info
		if(user_power.m_dwType!=DBVT_NULL)
			CUserLogin::DBAflag = user_power.m_lVal;
		user_power.Clear();
//		if(CUserLogin::DBAflag==1)
//		{
//			CUserLogin::UID = user_name;
//			CUserLogin::PWD = user_password;
//		}
		//set the system time for Last_login in eq_user
		::GetSystemTime(&st);
		year = st.wYear;
		month = st.wMonth;
		day = st.wDay;
		date.Format("%d-%d-%d",year,month,day);

		sql.Format("update eq_user set Last_Login='%s' where user_name='%s'",date,m_eUser);
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		////close the recordset and db connection
		rs.Close();
		m_db.Close();

		CDialog::OnOK();
	}
	else
	{
		rs.Close();
		m_db.Close();
		if(m_eUser!=user_name)
			MessageBox("No Such User.Please contact with DBA.","登陆错误");
		else 
		{
			MessageBox("Error Password!","登陆错误");
		}
		m_eUser = "";
		m_ePassword = "";
		m_Wait = "";
		UpdateData(FALSE);
		/////every time user could login three times
		while(count==2)
			CDialog::OnCancel();
		count++;
	}
}

⌨️ 快捷键说明

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