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

📄 monitor.cpp

📁 停车场用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    if(pControl !=NULL)
      pControl->SetTextBuf(szBuf);
   }
  ShowOneImage(te->m_RInImage,NULL);//显示入口图象
  ShowOneImage(te->m_ROutImage,NULL);//显示出口图象
 }
//显示正在外出停车资料
void ShowCurParkOut(TMonitorFrame *te,PARKREC *t)
 {
  TADOQuery *pQuery;
  USERDATA User;
  int n,nCardNo,nHolderNo;
  char szBuf[100];

  nCardNo = t->nCardNo;
  nHolderNo = t->nHolderNo;
  ZeroMemory(&User,sizeof(User));
  if(nHolderNo!=0){//非临时用户,则查找车主资料
    wsprintf(szBuf,"HOLDERNO=\'%s\'",nHolderNo);
    pQuery = (TADOQuery *)GetOtherQuery();//用OtherADOQuery元件查询一个表中记录
    n=QueryOneADOTable(pQuery,GetUserTableName(),szBuf,NULL);
    if(n>0){
      ReadUserRecord(pQuery,&User);
      User.pPhoto = GetFieldBlobOnTable(pQuery,GetCarPhotoFieldName());
     }
   }
  te->m_UserNamePanel->Caption=t->szUserName;
  te->m_CarTypePanel->Caption=t->szCarType;
  te->m_CarTagPanel->Caption=t->szCarTag;
  te->m_CarColorPanel->Caption=t->szCarColor;

  GetUserTypeText(szBuf,User.nUserType);//获取用户类型名称文本
  te->m_UserTypePanel->Caption=szBuf;
  sprintf(szBuf,"%-9.2f",User.fMoney);
  te->m_MoneyPanel->Caption=szBuf;

  GetDWORDDateText(szBuf,User.nBeginDate);
  te->m_BeginDatePanel->Caption=szBuf; //结束日期
  GetDWORDDateText(szBuf,User.nEndDate);
  te->m_EndDatePanel->Caption=szBuf;  //开始日期

  GetRoadwayNameText(szBuf,t->nInRoadNo);//获取进入车道名称文本
  te->m_InRoadPanel->Caption=szBuf;
  GetRoadwayNameText(szBuf,t->nOutRoadNo);//获取外出车道名称文本
  te->m_OutRoadPanel->Caption=szBuf;

  DWORDToYMDHMStr(szBuf,t->nInDate,t->nInTime);//长整数转化为"YYYY-MM-DD HH:MM"格式串
  te->m_InTimePanel->Caption=szBuf;    //进入时间
  DWORDToYMDHMStr(szBuf,t->nOutDate,t->nOutTime);//长整数转化为"YYYY-MM-DD HH:MM"格式串
  te->m_OutTimePanel->Caption=szBuf; //外出时间

  GetNumberText(szBuf,nCardNo);
  te->m_CardNoPanel->Caption=szBuf;

  sprintf(szBuf,"%8.2f",t->fParkPrice);
  te->m_ParkPricePanel->Caption=szBuf;

  te->m_ManaulPanel->Caption=GetManualText(t);

  ShowOneImage(te->m_InImage,t->pInPhoto);//显示入口图象
  ShowOneImage(te->m_OutImage,t->pOutPhoto);//显示出口图象
  ShowOneImage(te->m_CarImage,User.pPhoto);//显示车辆图象
  DeleteBlobData(User.pPhoto);
 }
//检查人工比对记录
int CheckManaulParkrec(TMonitorFrame *te)
 {
  void *pHead,*pCur;
  PARKREC *pParkrec;
  int nIndex;

  if(te->m_nManual){ //正在人工比对
    nIndex = te->m_MonitorPageControl->ActivePageIndex;
    if(nIndex!=0)//确定监控页面
    te->m_MonitorPageControl->ActivePageIndex=0;
    return(FALSE);
   }

  pHead = GetManualParkrecList();
  if(LookCount(pHead)<=0)return(FALSE); //没有外出车辆

  pCur = GetDotOnTList(pHead,0);
  pParkrec = LookParkrec(pCur);

  ShowCurParkOut(te,pParkrec);//显示正在外出停车资料

  if(GetParkManPhotoFlag(pParkrec) ||
        GetParkManPhotoFlag(pParkrec)){//需要人工比对
    te->m_nManual = TRUE;
    te->m_OkBut->Enabled = TRUE;
    te->m_CancelBut->Enabled = TRUE;
    nIndex = te->m_MonitorPageControl->ActivePageIndex;
    if(nIndex!=0)//确定监控页面
      te->m_MonitorPageControl->ActivePageIndex=0;
   }
  else //不须比对,则删除链上的第0个PARKREC节点
    DelParkrecDotOnTList(pHead,0);
  return(TRUE);
 }
//获取比对内容
char *GetManualText(PARKREC *pParkrec)
 {
  static char *pszText[]={"请确认车辆交费, 和进出车辆图片!",
    "请比对确认进出车辆图片!"
    "请确认车辆交费!",
    "合法车辆,不须比对确认."};
  int n,nPhoto,nPaid;

  nPhoto = GetParkManPhotoFlag(pParkrec);
  nPaid = GetParkManPhotoFlag(pParkrec);
  if(nPhoto && nPaid)n=0;
  else if(nPhoto)n=1;
  else if(nPaid)n=2;
  else n=0;
  return(pszText[n]);
 }
//设置监视当天停车记录
int SetMonitorTodayParkrec(TMonitorFrame *te)
 {
  static char pszTitle[]="(当天)";
  TADOQuery *pQuery;;
  int rc,nNowDate,nIndex;
  char szBuf[50],szStr[30],szTable[20],*p;

  pQuery=(TADOQuery *)GetRecordQuery();
  te->m_RecordDataSource->DataSet=pQuery;
  if(pQuery==NULL)return(FALSE);

  te->m_RecordTab->GetTextBuf(szBuf,sizeof(szBuf));
  p=strchr(szBuf,'(');
  if(p!=NULL)*p=0;
  lstrcat(szBuf,pszTitle);
  te->m_RecordTab->SetTextBuf(szBuf);

  nNowDate = GetDateOnNow();
  DWORDToDate(szStr,nNowDate);
  wsprintf(szBuf,"OUTTIME=%s",szStr);

  GetQueryOrderBy(pQuery->SQL,szStr);
  GetQueryTableName(pQuery->SQL,szTable);

  rc=QueryOneADOTable(pQuery,szTable,szBuf,szStr);
  nIndex = te->m_MonitorPageControl->ActivePageIndex;
  if(nIndex!=2)//确定监控页面
      te->m_MonitorPageControl->ActivePageIndex=2;

  SetParkrecDBGridWidth(te->m_RecordDBGrid);
  return(rc);
 }
//设置监视所有停车记录
int SetMonitorAllParkrec(TMonitorFrame *te)
 {
  TADOQuery *pQuery;;
  int rc,nIndex;
  char szBuf[50],szStr[30],szTable[20],*p;

  pQuery=(TADOQuery *)GetRecordQuery();
  te->m_RecordDataSource->DataSet=pQuery;
  if(pQuery==NULL)return(FALSE);

  te->m_RecordTab->GetTextBuf(szBuf,sizeof(szBuf));
  p=strchr(szBuf,'(');
  if(p!=NULL)*p=0;
  te->m_RecordTab->SetTextBuf(szBuf);

  GetQueryOrderBy(pQuery->SQL,szStr);
  GetQueryTableName(pQuery->SQL,szTable);

  rc=QueryOneADOTable(pQuery,szTable,NULL,szStr);
  nIndex = te->m_MonitorPageControl->ActivePageIndex;
  if(nIndex!=2)//确定监控页面
      te->m_MonitorPageControl->ActivePageIndex=2;

  SetParkrecDBGridWidth(te->m_RecordDBGrid);
  return(rc);
 }
//设置监视所有场内车辆
int SetMonitorAllParkin(TMonitorFrame *te)
 {
  TADOQuery *pQuery;
  int rc,nIndex;
  char *p,szTable[30],szStr[30];

  pQuery=(TADOQuery *)GetParkInQuery();
  te->m_ParkinDataSource->DataSet=pQuery;
  if(pQuery==NULL)return(FALSE);

    //修改标题
  te->m_ParkInTab->GetTextBuf(szStr,sizeof(szStr));
  p=strchr(szStr,'(');
  if(p!=NULL)*p=0;
  te->m_ParkInTab->SetTextBuf(szStr);

  GetQueryOrderBy(pQuery->SQL,szStr);
  GetQueryTableName(pQuery->SQL,szTable);

  rc=QueryOneADOTable(pQuery,szTable,NULL,szStr);

  nIndex = te->m_MonitorPageControl->ActivePageIndex;
  if(nIndex!=1)//确定监控页面
      te->m_MonitorPageControl->ActivePageIndex=1;

  SetParkinDBGridWidth(te->m_ParkInDBGrid);
   return(rc);
 }
//设置监视外出车辆
int SetMonitorOut(TMonitorFrame *te)
 {
  int rc,nIndex;

  nIndex = te->m_MonitorPageControl->ActivePageIndex;
  if(nIndex!=0)//确定监控页面
      te->m_MonitorPageControl->ActivePageIndex=0;

  return(nIndex);
 }
//多条件查询停车记录
int InquireParkrec(TMonitorFrame *pFrame)
 {
  static char pszTitle[]="(多条件)";
  TADOQuery *pQuery;
  int rc,nIndex;
  char *pszBuf,*p;
  char szText[50],szStr[30],szTable[20];

  pQuery=(TADOQuery *)GetRecordQuery();
  pFrame->m_RecordDataSource->DataSet=pQuery;
  if(pQuery==NULL)return(FALSE);

  pszBuf = new char [500];
  rc = ReworkInqParkrec(pFrame,pszBuf,500);
  if(rc){
    //修改标题
    pFrame->m_RecordTab->GetTextBuf(szText,sizeof(szText));
    p=strchr(szText,'(');
    if(p!=NULL)*p=0;
    lstrcat(szText,pszTitle);
    pFrame->m_RecordTab->SetTextBuf(szText);

    GetQueryOrderBy(pQuery->SQL,szStr);
    GetQueryTableName(pQuery->SQL,szTable);

    rc=QueryOneADOTable(pQuery,szTable,pszBuf,szStr);
    nIndex = pFrame->m_MonitorPageControl->ActivePageIndex;
    if(nIndex!=2)//确定监控页面
      pFrame->m_MonitorPageControl->ActivePageIndex=2;

    SetParkrecDBGridWidth(pFrame->m_RecordDBGrid);
   }
  delete[] pszBuf;
  return(rc);
 }
//多条件查询入场记录
int InquireParkin(TMonitorFrame *pFrame)
 {
  static char pszTitle[]="(多条件)" ;
  TADOQuery *pQuery;;
  int rc,nIndex;
  char *pszBuf,*p;
  char szText[50],szStr[30],szTable[20];

  pQuery=(TADOQuery *)GetParkInQuery();
  pFrame->m_ParkinDataSource->DataSet=pQuery;
  if(pQuery==NULL)return(FALSE);

  pszBuf = new char [500];
  rc = ReworkInqParkin(pFrame,pszBuf,500);
  if(rc){
    //修改标题
    pFrame->m_ParkInTab->GetTextBuf(szText,sizeof(szText));
    p=strchr(szText,'(');
    if(p!=NULL)*p=0;
    lstrcat(szText,pszTitle);
    pFrame->m_ParkInTab->SetTextBuf(szText);

    GetQueryOrderBy(pQuery->SQL,szStr);
    GetQueryTableName(pQuery->SQL,szTable);

    rc=QueryOneADOTable(pQuery,szTable,pszBuf,szStr);
    nIndex = pFrame->m_MonitorPageControl->ActivePageIndex;
    if(nIndex!=1)//确定监控页面
      pFrame->m_MonitorPageControl->ActivePageIndex=1;

    SetParkinDBGridWidth(pFrame->m_ParkInDBGrid);
   }
  delete[] pszBuf;
  return(rc);
 }
//删除场内车辆
int DeleteParkinRecord(TMonitorFrame *pFrame,int nMode)
 {
  static char *pszText[]={"是否真的删除(不可恢复地)\n当前一条入场记录",
    "是否真的删除(不可恢复地)\n当前所有入场记录"};
  TADOQuery *pParkinQuery,*pOtherQuery;
  char szWhere[200];
  int rc,nIndex;

  rc=FALSE;
  pParkinQuery = (TADOQuery *)pFrame->m_ParkinDataSource->DataSet;
  nIndex = pFrame->m_MonitorPageControl->ActivePageIndex;
  if(nIndex==1 && GetAllRecNum(pParkinQuery)>0){//获取总记录数
    if(nMode==DELETE_ALL)nIndex=1;
    else nIndex=0;
    nIndex=Application->MessageBox(pszText[nIndex],GetMainTitle(),
      MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
    if(nIndex==IDYES) rc=TRUE;
   }
  if(rc){
    if(nMode==DELETE_ALL){//删除当前所有
      GetQueryWhereName(pParkinQuery->SQL,szWhere);
      pOtherQuery = (TADOQuery *)GetOtherQuery();
      EmptyOneADOTable(pOtherQuery,GetParkinTableName(),szWhere);//删除表中数据
      OpenADOQuery(pParkinQuery,NULL);//查询数据表
     }
    else {//删除当前一条
      DelCurRecordOnTable(pParkinQuery); //删除记录
      OpenADOQuery(pParkinQuery,NULL);//查询数据表
     }
   }
  return(rc);
 }
//删除停车记录
int DeleteParkrecRecord(TMonitorFrame *pFrame,int nMode)
 {
  static char *pszText[]={"是否真的删除(不可恢复地)\n当前一条停车记录",
    "是否真的删除(不可恢复地)\n当前所有停车记录"};
  TADOQuery *pRecQuery,*pOtherQuery;
  char szWhere[200];
  int rc,nIndex;

  rc=FALSE;
  pRecQuery = (TADOQuery *)pFrame->m_RecordDataSource->DataSet;
  nIndex = pFrame->m_MonitorPageControl->ActivePageIndex;
  if(nIndex==2 && GetAllRecNum(pRecQuery)>0){//获取总记录数
    if(nMode==DELETE_ALL)nIndex=1;
    else nIndex=0;
    nIndex=Application->MessageBox(pszText[nIndex],GetMainTitle(),
      MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
    if(nIndex==IDYES) rc=TRUE;
   }
  if(rc){
    if(nMode==DELETE_ALL){//删除当前所有
      GetQueryWhereName(pRecQuery->SQL,szWhere);
      pOtherQuery = (TADOQuery *)GetOtherQuery();
      EmptyOneADOTable(pOtherQuery,GetParkrecTableName(),szWhere);//删除表中数据
      OpenADOQuery(pRecQuery,NULL);//查询数据表
     }
    else {//删除当前一条
      DelCurRecordOnTable(pRecQuery); //删除记录
      OpenADOQuery(pRecQuery,NULL);//查询数据表
     }
   }
  return(rc);
 }


⌨️ 快捷键说明

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