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

📄 loginsys.cpp

📁 停车场用
💻 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 + -