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

📄 logdlg.cpp

📁 此程序为EVC编写的MIS系统
💻 CPP
字号:
// 登陆界面类,该类的功能验证登陆者身份是否合法,
//	并且记录登陆者的名字。
//  创建时间:2004.02.25,创建人:苟艳
///////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "抄表系统.h"
#include "LogDlg.h"
#include "CreateDB.h"
#include "rapi.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////////////////////////////////////////
//抄表人员记录的字段
#define prop_10  L"抄表员编号"
#define prop_11  L"抄表员名称"
#define prop_12  L"抄表员密码"
//抄表管理员的字段
#define prop_20  L"抄表管理员名称"
#define prop_21	 L"抄表管理员密码"

/////////////////////////////////////////////////////////////////////////////
// CLogDlg dialog
extern CCreateDB  database;
CString LogName="";        //记录登陆用户名字
CString NameCode="";        //抄表员的编号

////////////////////////////////////////////////////////////////////////////




CLogDlg::CLogDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CLogDlg::IDD, pParent)
{
	Manager="抄表管理员";
	//{{AFX_DATA_INIT(CLogDlg)
	m_edit = _T("");
	//}}AFX_DATA_INIT
}


void CLogDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLogDlg)
	DDX_Control(pDX, IDC_STATIC1, m_static);
	DDX_Control(pDX, IDC_EDIT, m_code);
	DDX_Control(pDX, IDC_COMBO1, m_combox);
	DDX_Text(pDX, IDC_EDIT, m_edit);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLogDlg, CDialog)
	//{{AFX_MSG_MAP(CLogDlg)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
	ON_EN_CHANGE(IDC_EDIT, OnChangeEdit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLogDlg message handlers

void CLogDlg::OnButton1()   //登陆后的身份确认
{
	if(Manager.Compare(name)==0)   //抄表管理员身份登陆
	{
		CEOID oid,seloid;
		DWORD index;
		WORD propnumber;
		PCEPROPVAL pRecord=0;
		DWORD cbBuff;
		TCHAR readpassword[50];

			oid=WriteManager();//如果是第一次用抄表管理员身份登陆,把抄表管理员的名称和密码写入数据库中
			if(oid!=0)
			{
				seloid=CeSeekDatabase(managerhandle,CEDB_SEEK_CEOID,oid,&index);
				if(seloid==0)
				{
					CloseHandle(managerhandle);
					return;
				}
				seloid=CeReadRecordProps(managerhandle,CEDB_ALLOWREALLOC,&propnumber,NULL,(LPBYTE*)&pRecord,&cbBuff);
				  for(int i=0;i<propnumber;i++)
					{
						if(pRecord->propid==MAKELONG(CEVT_LPWSTR,prop_21))
						lstrcpy(readpassword,pRecord->val .lpwstr );
						 pRecord++;
					}
				  CloseHandle(managerhandle);
			}
		if(wcsncmp(readpassword,password,50)!=0)
		{
			::MessageBox(this->m_hWnd,L"请输入正确的抄表管理员的密码!!",L"ERROR",MB_OK);
			m_code.SetWindowText(L"");
			m_code.SetFocus();
			return;
		}
	}
	else
		if(!GetCheck())
			return;
	for(int i=0;i<wcslen(name);i++)
		LogName+=name[i];
	//::AfxMessageBox(name);

	CDialog::OnOK();	
}
//把抄表管理员的名字和密码写入抄表管理员数据库中
CEOID CLogDlg::WriteManager()
{
	CEOID findceoid;
	WORD propnumber;
	PCEPROPVAL pRecord=0;
	DWORD cbBuff;
	DWORD index;
	LPWSTR password=L"123";      //抄表管理员的初试密码
	LPWSTR manager=L"抄表管理员";

	if(database.CreateManagerDB())   //打开了抄表管理员数据库
		managerhandle=database.managerhandle ;
	findceoid=CeSeekDatabase(managerhandle,CEDB_SEEK_BEGINNING,0,&index);
	if(findceoid==0)      //抄表管理员数据库中无记录
	{ 
		CEPROPVAL propval[2];
		propval[0].propid =MAKELONG(CEVT_LPWSTR,prop_20);//添加操作员名字
		propval[0].wFlags =0;
		propval[0].val .lpwstr =manager;
		propval[1].propid =MAKELONG(CEVT_LPWSTR,prop_21);//添加操作员名称
		propval[1].wFlags=0;
		propval[1].val .lpwstr =password;
		findceoid=CeWriteRecordProps(managerhandle,0,2,propval);
	}

	return findceoid;
}

void CLogDlg::OnSelchangeCombo1() 
{
	int i=m_combox.GetCurSel();
    m_combox.GetLBText (i,name);
	
}

BOOL CLogDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	//
	CRect rect;
	CWnd::GetClientRect (&rect);
	SetWindowRgn(NULL,TRUE);
	CenterWindow();	
	MoveWindow(0,1,rect.right,rect.bottom);	
	::SetWindowPos(CWnd::GetSafeHwnd(),wndTopMost,0,1,0,0,SWP_NOSIZE);
	//
	m_combox.SetCurSel (0);
	m_combox.GetLBText (0,name);
	//
	ReadFromOperatorDB();
	DisplayDay();
	//
	m_code.SetFocus();
	
	
	return TRUE;  
}

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

void CLogDlg::OnChangeEdit() 
{
	UpdateData(TRUE);
	wcscpy(password,m_edit);
	
}
////////////
void CLogDlg::ReadFromOperatorDB()  //从抄表员记录中读出抄表员名称
{
	CEOID findceoid;
	WORD propnumber;
	PCEPROPVAL pRecord=0;
	DWORD cbBuff;
	DWORD index;
	TCHAR operators[50];
	int k=0;
	BOOL result;
	if(result=database.CreateOperDB())
	{
		operhandle=database.operhandle;
		findceoid=CeSeekDatabase(operhandle,CEDB_SEEK_BEGINNING,0,&index);
		if(findceoid==0)
		{
			CloseHandle(operhandle);
			return;
		}
		findceoid=CeReadRecordProps(operhandle,CEDB_ALLOWREALLOC,&propnumber,NULL,(LPBYTE*)&pRecord,&cbBuff);//读出记录的内容
		while(findceoid!=0)
		{
			for(int i=0;i<propnumber;i++)
			{
					if(pRecord->propid==MAKELONG(CEVT_LPWSTR,prop_11))
					lstrcpy(operators,pRecord->val .lpwstr );
					pRecord++;
				
			}
			if(Manager.Compare(operators)!=0)
				m_combox.InsertString(k++,operators);
			pRecord=0;
			findceoid=CeReadRecordProps(operhandle,CEDB_ALLOWREALLOC,&propnumber,NULL,(LPBYTE*)&pRecord,&cbBuff);//读出记录的内容
		}
	}
	CloseHandle(operhandle);
}
////
BOOL CLogDlg::GetCheck()
{
	TCHAR readpassword[50];
	TCHAR readcode[50];
	WORD propnumber;
	PCEPROPVAL pRecord=0;
	DWORD cbBuff;
	BOOL seekresult;
	CEOID oid;
	DWORD index;
	CEPROPVAL Property;
	
	BOOL result=database.openOperator();
	if(result)
	{
		operhandle=database.operhandle;
		if(m_edit=="")
		{
			::MessageBox(this->m_hWnd,L"请输入密码!!",L"ERROR",MB_OK);
			CloseHandle(operhandle);
			return FALSE;
		}
	   oid=CeSeekDatabase(operhandle,CEDB_SEEK_BEGINNING,0,&index);	
	   Property.propid  =MAKELONG(CEVT_LPWSTR,prop_11);
	   Property.wFlags =0;	
	   Property.val.lpwstr =name;
	   oid=CeSeekDatabase(operhandle,CEDB_SEEK_VALUEFIRSTEQUAL,(DWORD)&Property ,&index);
	   if(oid==0)
	   {
		   ::MessageBox(NULL,L"该操作员无进入本系统权限!!",L"ERROR",MB_OK);
			CloseHandle(operhandle);
			   return FALSE;
	   }
	   oid=CeReadRecordProps(operhandle,CEDB_ALLOWREALLOC,&propnumber,NULL,(LPBYTE*)&pRecord,&cbBuff);
	   if(oid==0)
	   {
		   //::MessageBox(NULL,L"没读到信息!!",L"ERROR",MB_OK);
		   CloseHandle(operhandle);
			   return FALSE;
	   }
	   
	   for(int i=0;i<propnumber;i++)
	   {
			if(pRecord->propid==MAKELONG(CEVT_LPWSTR,prop_10))
				lstrcpy(readcode,pRecord->val .lpwstr );
		   if(pRecord->propid==MAKELONG(CEVT_LPWSTR,prop_12))
				lstrcpy(readpassword,pRecord->val .lpwstr );
		   pRecord++;
	   }
		if(m_edit.Compare(readpassword)!=0)
		{
			::AfxMessageBox(L"登陆密码输入错误!!!");
			m_code.SetWindowText(L"");
			m_code.SetFocus();
			CloseHandle(operhandle);
			return FALSE;
		}
		else
		{
			for(int j=0;j<wcslen(readcode);j++)    //抄表员的编号
				NameCode+=readcode[j];
		}
	}
	else
	{
		CloseHandle(operhandle);
		return FALSE;
	}
	CloseHandle(operhandle);
	return TRUE;
}
//////显示当前的日期
void CLogDlg::DisplayDay()
{
	COleDateTime daytime;
	daytime = COleDateTime::GetCurrentTime();
	int year,month,day,hour,minute;
	year=daytime.GetYear();
	month=daytime.GetMonth ();
	day=daytime.GetDay();
	minute=daytime.GetMinute ();
	hour=daytime.GetHour();
	CString str;
	str.Format(L"%d-%d-%d %d:%d",year,month,day,hour,minute);
	m_static.SetWindowText(str);
}

⌨️ 快捷键说明

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