?? logdlg.cpp
字號:
// 登陸界面類,該類的功能驗證登陸者身份是否合法,
// 并且記錄登陸者的名字。
// 創(chuàng)建時間:2004.02.25,創(chuàng)建人:茍艷
///////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "抄表系統(tǒng).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() //登陸后的身份確認(rèn)
{
if(Manager.Compare(name)==0) //抄表管理員身份登陸
{
CEOID oid,seloid;
DWORD index;
WORD propnumber;
PCEPROPVAL pRecord=0;
DWORD cbBuff;
TCHAR readpassword[50];
oid=WriteManager();//如果是第一次用抄表管理員身份登陸,把抄表管理員的名稱和密碼寫入數(shù)據(jù)庫中
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();
}
//把抄表管理員的名字和密碼寫入抄表管理員數(shù)據(jù)庫中
CEOID CLogDlg::WriteManager()
{
CEOID findceoid;
WORD propnumber;
PCEPROPVAL pRecord=0;
DWORD cbBuff;
DWORD index;
LPWSTR password=L"123"; //抄表管理員的初試密碼
LPWSTR manager=L"抄表管理員";
if(database.CreateManagerDB()) //打開了抄表管理員數(shù)據(jù)庫
managerhandle=database.managerhandle ;
findceoid=CeSeekDatabase(managerhandle,CEDB_SEEK_BEGINNING,0,&index);
if(findceoid==0) //抄表管理員數(shù)據(jù)庫中無記錄
{
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);//讀出記錄的內(nèi)容
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);//讀出記錄的內(nèi)容
}
}
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"該操作員無進(jìn)入本系統(tǒng)權(quán)限!!",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;
}
//////顯示當(dāng)前的日期
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);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -