📄 logdlg.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 + -