📄 loginsys.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "LoginSys.h"
#include "dido.h"
#include "option.h"
#include "param.h"
#include "dog.h"
#include "NoteDlg.h"
#include "source.h"
#include "dido.h"
#include "right.h"
#include "status.h"
#include "servermodule.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//比较帐号和登录数据
static int CheckAccount(ACCOUNT *a,char *pszUser,char *pszPass);
//确认登录
static int AffirmLogin(void *pHead,char *pszUser,char *pszPassword);
//设置编辑内容
static void SetEditText(TLoginForm *te);
//---------------------------------------------------------------------------
__fastcall TLoginForm::TLoginForm(TComponent* Owner)
: TForm(Owner)
{
m_pHead = new TList;
}
void __fastcall TLoginForm::FormDestroy(TObject *Sender)
{
DelTList(m_pHead);
delete m_pHead;
m_pHead=NULL;
}
//登录
int DoLogin(TObject *Owner)
{
TLoginForm *Login;
int rc;
rc=FALSE;
Login = new TLoginForm((TComponent*)Owner);
if(Login!=NULL){
SetEditText(Login);//设置编辑内容
if(Login->ShowModal()==IDOK)rc=TRUE;
delete Login;
}
if(rc) DispOperator(GetCurAccName());//显示操作员
return(rc);
}
//设置编辑内容
void SetEditText(TLoginForm *te)
{
ReadAllAccount(te->m_pHead);
te->m_UserEdit->Text="";
te->m_PasswordEdit->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TLoginForm::m_OkButClick(TObject *Sender)
{
static char pszText[]="输入的用户名或密码错误!";
char szUser[30],szPassword[30];
m_UserEdit->GetTextBuf(szUser,sizeof(szUser));
m_PasswordEdit->GetTextBuf(szPassword,sizeof(szPassword));
if(AffirmLogin(m_pHead,szUser,szPassword))
ModalResult=IDOK;
else{//输入错误
Application->MessageBox(pszText,GetMainTitle(),
MB_OK|MB_ICONINFORMATION);
m_UserEdit->SetFocus();
ModalResult=0;
}
}
//---------------------------------------------------------------------------
void __fastcall TLoginForm::m_CanButClick(TObject *Sender)
{
ModalResult=IDCANCEL;
}
//确认登录
int AffirmLogin(void *pHead,char *pszUser,char *pszPassword)
{
void *pCur;
ACCOUNT *t;
int i,nCount,rc,nManage;
nManage=FALSE;
for(i=0;;i++){
pCur =GetDotOnTList(pHead,i);//获取TList链上的节点(From "0")
if(pCur==NULL)break;
t=LookAccount(pCur);
if(CheckAccount(t,pszUser,pszPassword))
break;
else if(t->nRight==RIGHT_MANAGE)
nManage=TRUE; //有管理员帐号
}
rc=FALSE;
if(i>=nCount || pCur==NULL){ //无相应的帐号
if(nManage==FALSE){//无管理员帐号,则比较默认帐号
t = (ACCOUNT *)GetDefAccount();//获取默认帐号
rc =CheckAccount(t,pszUser,pszPassword);
}
}
else rc=TRUE;//有相应帐号,则更新当前帐号
if(rc)SetCurAccount(t);
return(rc);
}
//比较帐号和登录数据
int CheckAccount(ACCOUNT *t,char *pszUser,char *pszPass)
{
int rc;
rc=lstrcmpi(t->szName,pszUser);
if(rc==0 && t->szPassword[0]!=0)
rc=lstrcmpi(t->szPassword,pszPass);
return(!rc);
}
//初始化
int InitStart(TComponent* Owner)
{
void *pForm;
int rc;
pForm = CreateNoteDlg(Owner,NULL);
OpenADODatabase();//打开ADO数据库
rc=DoLogin(Owner);
Application->ProcessMessages();
if(rc) CheckRgdlDog(0,5,0x7890);
if(rc) rc=InitLookParam();
if(rc)InitDataSource();
DispParkOutNum(0);//显示外出数
DispParkInNum(0);//显示进入数
DeleteNoteDlg(pForm);
return(rc);
}
//释放已分配资源
void CloseWork(void)
{
CloseDataSource(); //断开通信。
CloseLookParam();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -