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

📄 userdata.cpp

📁 停车场用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#pragma hdrstop

#include "UserData.h"
#include "servermodule.h"
#include "bdbf.h"
#include "option.h"
#include "InqUser.h"
#include "EditUser.h"
#include "param.h"
#include "gridtool.h"
#include "datetool.h"
#include "dido.h"
#include "Maintain.h"
#include "CBuilder.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//设置编辑格栅的列宽度
static void SetTextDBGridWith(TDBGrid *pDBGrid);
//设置编辑、链表
static void SetEditText(TUserForm *ta);
//获取相同内容的其它记录(0=>无,1=>其它记录)
static int GetOtherUserOnTable(USERDATA *Sour,int nOld);
//保存到HolderData数据表(nMode=0 追加)
static int SaveToHolderTable(USERDATA *t,int nMode);
//删除HolderData数据表(RecordID=t->HolderNo)记录
static int DelCurRecordOnHolderTable(USERDATA *t);
//转化UserData为HolderData
static void *UserDataToHolder(HOLDERDATA *Dest,USERDATA *Sour);
//显示当前记录
static void ShowCurRecord(TUserForm *te,USERDATA *t);
//清除当前停车记录
static void ClearCurRecord(TUserForm *te);

//---------------------------------------------------------------------------
__fastcall TUserForm::TUserForm(TComponent* Owner)
    : TForm(Owner)
{
 m_nDone=0;
}
//设置用户数据
int SetUserData(TComponent* Owner)
 {
  TUserForm *se;
  int rc;

  rc=FALSE;
  se = new TUserForm((TComponent*)Owner);
  if(se!=NULL){
    SetEditText(se);
    se->ShowModal();
    rc=se->m_nDone;
    delete se;
   }
  return(rc);
 }
//设置编辑、链表
void SetEditText(TUserForm *ta)
 {
  TADOQuery *pQuery;

  //用EditADOQuery元件查询一个表中记录
  pQuery = (TADOQuery *)GetEditQuery();
  if(pQuery!=NULL)
   QueryOneADOTable(pQuery,GetUserTableName(),NULL,"CARTAG");
  ta->m_TextDataSource->DataSet = pQuery;
    //设置编辑格栅的列宽度
  SetTextDBGridWith(ta->m_TextDBGrid);
 }
void __fastcall TUserForm::m_CloseButClick(TObject *Sender)
{
  ModalResult=IDOK;
}
//用户资料维护
void __fastcall TUserForm::MaintainUserButClick(TObject *Sender)
 {
  TADOQuery *pQuery;
  int rc;
  USERDATA a;
  int nMode;

  nMode = ((TControl *)Sender)->Tag-1000;
  if(nMode<0)nMode=0; //默认为领用
  pQuery = (TADOQuery *)m_TextDataSource->DataSet;
  rc = (int)pQuery;
  if(rc){
    ReadUserRecord(pQuery,&a);
    rc=a.nHolderNo; //持卡者编号必须>0
   }
  if(rc)   //维护用户帐号
    rc=MaintainUserData(this,&a,nMode);
  if(rc){
    rc=EditDataSet(pQuery);
    if(rc)SaveUserRecord(pQuery,&a);
    if(rc)rc=PostDataSet(pQuery);
    if(!rc)ShowTableError(1);
   }
 }
//---------------------------------------------------------------------------
void __fastcall TUserForm::m_FindUserButClick(TObject *Sender)
{
 int rc;
 char *pszStr,szOrder[20];
 TADOQuery *pQuery;

 pszStr = new char[500];
 rc=(int)pszStr;
 if(rc){
   pQuery = (TADOQuery *)m_TextDataSource->DataSet;
   rc=(int)pQuery;
  }
 if(rc)
   rc=  ReworkInqUser(this,pszStr,500);//输入查询多条件
 if(rc){     //获取SQL查询Where条件
   GetQueryOrderBy(pQuery->SQL,szOrder);
   QueryOneADOTable(pQuery,GetUserTableName(),pszStr,szOrder);
  }
 if(pszStr!=NULL)delete[] pszStr;
}
//挂失
void __fastcall TUserForm::m_LostCardButClick(TObject *Sender)
{
  static char   pszText[]="是否真的挂失\n\n"
         "当前用户(编号为:\"%d\")\n所领用卡片(卡号为:\"%d\")?\n\n"
         "卡片挂失后, 在被恢复之前将不在有效!!",
      pszDef[]= "当前用户所领用卡片(卡号为:\"%d\")\n已经被挂失!",
      pszNoHolder[]="用户不存在或未领用卡片!";
  TADOQuery *pQuery;
  int rc;
  char szBuf[200];
  USERDATA a;

  pQuery = (TADOQuery *)m_TextDataSource->DataSet;
  rc = (int)pQuery;
  if(rc){
    ReadUserRecord(pQuery,&a);
    if(a.nHolderNo==0 || a.nCardNo==0){
      rc=FALSE;
      Application->MessageBox(pszNoHolder,GetMainTitle(),
         MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
     }
   }
  if(rc){
    rc=!GetUserPauseFlag(&a);
    MessageBeep(MB_ICONSTOP);
    if(rc){//提示挂失
      wsprintf(szBuf,pszText,a.nHolderNo,a.nCardNo);
      rc= Application->MessageBox(szBuf,GetMainTitle(),
         MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
      if(rc==IDYES)rc=TRUE;
      else rc=FALSE;
     }
    else{//已经挂失
      wsprintf(szBuf,pszDef,a.nCardNo);
      Application->MessageBox(szBuf,GetMainTitle(),
         MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
     }
   }
  if(rc){
    SetUserPauseFlag(&a,TRUE);
    rc=SaveUserDataToCardTable(&a);//保存用户部分资料到卡片表中
   }
  if(rc){
    rc=EditDataSet(pQuery);
    if(rc)SaveUserRecord(pQuery,&a);
    if(rc)rc=PostDataSet(pQuery);
    if(!rc)ShowTableError(1);
   }
}
//恢复领用卡片
void __fastcall TUserForm::m_ResetCardButClick(TObject *Sender)
{
  static char   pszText[]="是否真的恢复\n\n"
         "当前用户(编号为:\"%d\")\n所领用卡片(卡号为:\"%d\")?\n\n",
      pszDef[]= "当前用户所领用卡片(卡号为:\"%d\")\n已经被恢复!",
      pszNoHolder[]="用户不存在或未领用卡片!";
  TADOQuery *pQuery;
  int rc;
  char szBuf[200];
  USERDATA a;

  pQuery = (TADOQuery *)m_TextDataSource->DataSet;
  rc = (int)pQuery;
  if(rc){
    ReadUserRecord(pQuery,&a);
    if(a.nHolderNo==0 || a.nCardNo==0){
      rc=FALSE;
      Application->MessageBox(pszNoHolder,GetMainTitle(),
         MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
     }
   }
  if(rc){
    rc=GetUserPauseFlag(&a);
    MessageBeep(MB_ICONSTOP);
    if(rc){//提示恢复
      wsprintf(szBuf,pszText,a.nHolderNo,a.nCardNo);
      rc= Application->MessageBox(szBuf,GetMainTitle(),
         MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
      if(rc==IDYES)rc=TRUE;
      else rc=FALSE;
     }
    else{//已经恢复
      wsprintf(szBuf,pszDef,a.nCardNo);
      Application->MessageBox(szBuf,GetMainTitle(),
         MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
     }
   }
  if(rc){
    SetUserPauseFlag(&a,FALSE);
    rc=SaveUserDataToCardTable(&a);//保存用户部分资料到卡片表中
   }
  if(rc){
    rc=EditDataSet(pQuery);
    if(rc)SaveUserRecord(pQuery,&a);
    if(rc)rc=PostDataSet(pQuery);
    if(!rc)ShowTableError(1);
   }
}
//注销
void __fastcall TUserForm::m_LogoutCardButClick(TObject *Sender)
{
  static char   pszText[]="是否真的注销\n\n"
         "当前用户(编号为:\"%d\")\n所领用卡片(卡号为:\"%d\")?\n\n"
         "卡片注销后, 在被领用之前将不在有效!!",
      pszNoHolder[]="用户不存在或未领用卡片!";
  TADOQuery *pQuery;
  int rc;
  char szBuf[200];
  USERDATA a;

  pQuery = (TADOQuery *)m_TextDataSource->DataSet;
  rc = (int)pQuery;
  if(rc){
    ReadUserRecord(pQuery,&a);
    if(a.nHolderNo==0 || a.nCardNo==0){
      rc=FALSE;
      Application->MessageBox(pszNoHolder,GetMainTitle(),
         MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
     }
   }
  if(rc){
    rc=GetUserHoldFlag(&a);
    MessageBeep(MB_ICONSTOP);
    if(rc){//提示注销
      wsprintf(szBuf,pszText,a.nHolderNo,a.nCardNo);
      rc= Application->MessageBox(szBuf,GetMainTitle(),
         MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
      if(rc==IDYES)rc=TRUE;
      else rc=FALSE;
     }
   }
  if(rc){
    SetUserHoldFlag(&a,FALSE);//注销领用卡片
    rc=SaveUserDataToCardTable(&a);//保存用户部分资料到卡片表中
   }
  if(rc){
    a.nCardNo=0;  //注销领用卡片
    rc=EditDataSet(pQuery);
    if(rc)SaveUserRecord(pQuery,&a);
    if(rc)rc=PostDataSet(pQuery);
    if(!rc)ShowTableError(1);
   }
}
//设置编辑格栅的列宽度
void SetTextDBGridWith(TDBGrid *pDBGrid)
 {
 int i,n,nWidth;
 int x[10];

  nWidth = pDBGrid->ClientRect.Width()-10;
  n = pDBGrid->Columns->Count;
  ZeroMemory(x,sizeof(x));

  x[2]=55; x[3]=55;
  for(i=0;i<n;i++)nWidth -= x[i]+1;
  if(n>2)nWidth /= (n-2);
  x[0]=x[1]=nWidth-1;
  for(i=0;i<n;i++)
   pDBGrid->Columns->Items[i]->Width=x[i];
 }

void __fastcall TUserForm::m_TextDBGridTitleClick(TColumn *Column)
{
 static char *pszName[]={"CARTAG","USERSTR","CARDNO"};
 int rc;
 TADOQuery *pQuery;
 char szBuf[500];

 rc=Column->Index;
 if(rc>=0 && rc<sizeof(pszName)/sizeof(char *))
   pQuery = (TADOQuery *)m_TextDataSource->DataSet;
 else pQuery==NULL;
 if(pQuery!=NULL){     //获取SQL查询Where条件

⌨️ 快捷键说明

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