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

📄 dataproc.cpp

📁 停车场用
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  if(nDate>0)nTime=nTime+24*60; //计算时间零头
  if(nTime<0)nTime=0;
  nTime = MAKELONG(nTime,nDate);
  pParkrec->nParkTime = nTime;
  return(nTime);
 }
//计算停车收费(nPaidDate=上次付款日期)
float GetParkPrice(PARKREC *pParkrec,DWORD nPaidDate)
 {
  PRICEDATA *pPrice;
  int nParkTime,nNowDate,nPaidType;
  float f;

  f=0.0f;
  //根据编号获取用户收费
  pPrice = (PRICEDATA *)GetPriceWithID(pParkrec->nUserType);
  if(pPrice!=NULL){
    nParkTime = pParkrec->nParkTime;
    nNowDate =  pParkrec->nOutDate;
    nPaidType = pPrice->nChargeType;

    if(nPaidType==PAID_NUMBER)//"按次收费"
      f=GetParkPriceInNumber(pPrice,nParkTime);

    else if(nPaidType==PAID_PERIOD)//"按时收费"
      f=GetParkPriceInPeriod(pPrice,nParkTime);

    else if(nPaidType==PAID_DAY)  //"按日收费",
      f=GetParkPriceInDay(pPrice,nPaidDate,nNowDate,nParkTime);

    else if(nPaidType==PAID_MONTH) //"按月收费",
      f=GetParkPriceInMonth(pPrice,nPaidDate,nNowDate);

    else if(nPaidType==PAID_QUARTER)  "按季收费",
      f=GetParkPriceInQuarter(pPrice,nPaidDate,nNowDate);

    else if(nPaidType==PAID_YEAR)  "按年收费",
      f=GetParkPriceInYear(pPrice,nPaidDate,nNowDate);
   }
  pParkrec->fParkPrice = f;

  return(f);
 }
//用户付款
int UserPayMoney(USERDATA *pUser,float fPrice,int nNowDate)
 {
  int rc, nPaid;

  nPaid = FALSE;
  rc=TRUE;
  if(fPrice>1.0e-2f){//须付款
    if(pUser->nHolderNo!=0 && //有帐号用户
            GetUserMoneylessFlag(pUser)==FALSE){//帐上有钱
      nPaid=TRUE;
      if(pUser->fMoney>=fPrice){
         pUser->fMoney -= fPrice;
         pUser->nPaidDate=nNowDate;
        }
      else rc=FALSE;
     }
    else rc=FALSE;
   }
  if(nPaid){//有帐号用户,且须付款
    if(rc==FALSE)
       SetUserMoneylessFlag(pUser,TRUE);
    else{
       fPrice = GetUserNextPaid(pUser->nUserType);
       if(fPrice>1.0e-2 && pUser->fMoney<fPrice)
          SetUserMoneylessFlag(pUser,TRUE);
      }
    SaveOldUserData(pUser);
   }
  return(rc);
 }
//根据卡号或内码读取卡片资料
int ReadCardRecordWithNo(void *pCard,int nCardNo,int nCardID)
 {
  TADOQuery *pQuery;
  char szBuf[100];
  int rc,n;

  rc=TRUE;
  if(nCardNo!=0)//用卡号查询
    wsprintf(szBuf,"CARDNO=%u",nCardNo);
  else if(nCardID!=0)//用内码查询
    wsprintf(szBuf,"CARDID=%u",nCardID);
  else rc=FALSE;

  if(rc){ //用OtherADOQuery元件查询一个表中记录
    pQuery = (TADOQuery *)GetOtherQuery();
    rc=QueryOneADOTable(pQuery,GetCardTableName(),szBuf,NULL);
   }
  if(rc>0){
    ReadCardRecord(pQuery,pCard); //读取感应卡片
    n = GetCardNewStatus(pCard);//获取卡片最新状态
    if(n!=0){//状态已改变,重新写回数据表中
      n=EditDataSet(pQuery);
      if(n)SaveCardRecord(pQuery,pCard);
      if(n)n=PostDataSet(pQuery);
      if(!n)ShowTableError(1);
     }
   }
  else {
    rc=FALSE;
    ZeroMemory(pCard,sizeof(CARDDATA));
   }
  return(rc);
 }
//根据卡号读取已停车记录
int ReadParkinRecordWithCardNo(void *pParkin,int nCardNo,int nDelete)
 {
  TADOQuery *pQuery;
  char szBuf[100];
  int rc;

  if(nCardNo!=0){//用卡号查询
    wsprintf(szBuf,"CARDNO=%u",nCardNo);
    rc=TRUE;
   }
  else rc=FALSE;

  if(rc){ //用OtherADOQuery元件查询一个表中记录
    pQuery = (TADOQuery *)GetOtherQuery();
    rc=QueryOneADOTable(pQuery,GetParkinTableName(),szBuf,NULL);
   }
  if(rc>0){
    ReadParkinRecord(pQuery,pParkin); //读取已停车记录
    ((PARKREC *)pParkin)->pInPhoto =
                 GetFieldBlobOnTable(pQuery,GetInPhotoFieldName());
    if(nDelete)//准备删除该记录
      DelCurRecordOnTable(pQuery);//删除当前一条记录
   }
  else {
    rc=FALSE;
    ZeroMemory(pParkin,sizeof(PARKREC));
   }
  return(rc);
 }
//根据持卡者编号读取用户资料
int ReadUserRecordWithHolderNo(void *pUser,int nHolderNo)
 {
  TADOQuery *pQuery;
  char szBuf[100];
  int rc,n;

  if(nHolderNo!=0){//用持卡者编号查询
    wsprintf(szBuf,"HOLDERNO=%u",nHolderNo);
    rc=TRUE;
   }
  else rc=FALSE;

  if(rc){//用OtherADOQuery元件查询一个表中记录
    pQuery = (TADOQuery *)GetOtherQuery();
    rc=QueryOneADOTable(pQuery,GetUserTableName(),szBuf,NULL);
   }
  if(rc>0){
    ReadUserRecord(pQuery,pUser); //读取用户记录
    n = GetUserNewStatus(pUser);//获取用户最新状态
    if(n!=0){//状态已改变,重新写回数据表中
      n=EditDataSet(pQuery);
      if(n)SaveUserRecord(pQuery,pUser);
      if(n)n=PostDataSet(pQuery);
      if(!n)ShowTableError(1);
     }
   }
  else {
    rc=FALSE;
    ZeroMemory(pUser,sizeof(USERDATA));
   }
  return(rc);
 }
//保存一个IOData记录
int SaveOneIOData(void *pIOData)
 {
  TADOQuery *pQuery;
  int rc;

  //用IODataADOQuery元件查询一个表中记录
  pQuery = (TADOQuery *)GetIODataQuery();
  if(pQuery!=NULL){
    rc=GetDataSetActive(pQuery);//获取数据库表是否活动
    if(!rc)rc=QueryOneADOTable(pQuery,GetIODataTableName(),NULL,NULL);
    if(rc>=0){
      rc=AppendDataSet(pQuery);
      if(rc)SaveIODataRecord(pQuery,pIOData);
      if(rc)rc=PostDataSet(pQuery);
     }
    else rc=FALSE;
    if(!rc)ShowTableError(1);
   }
  else rc=FALSE;
  return(rc);
 }
//保存一个入场记录
int SaveOneParkin(void *pParkin)
 {
  TADOQuery *pQuery;
  int rc;

  //用OtherADOQuery元件查询一个表中记录
  pQuery = (TADOQuery *)GetParkInQuery();//获取停车场内车辆记录表
  if(pQuery!=NULL){
    rc=GetDataSetActive(pQuery);//获取数据库表是否活动
    if(!rc)rc=QueryOneADOTable(pQuery,GetParkinTableName(),NULL,NULL);
    if(rc>=0){
      rc=AppendDataSet(pQuery);
      if(rc){
        SaveParkinRecord(pQuery,pParkin);
        SetFieldBlobOnTable(pQuery,GetInPhotoFieldName(),
         ((PARKREC *)pParkin)->pInPhoto);
       }
      if(rc)rc=PostDataSet(pQuery);
      if(!rc)ShowTableError(1);
     }
    else rc=FALSE;
   }
  else rc=FALSE;
  if(rc)IncParkinNum(1);
  return(rc);
 }
//保存一个停车记录
int SaveOneParkrec(void *pParkrec)
 {
  TADOQuery *pQuery;
  int rc;

  //用OtherADOQuery元件查询一个表中记录
  pQuery = (TADOQuery *)GetRecordQuery();
  if(pQuery!=NULL){
    rc=GetDataSetActive(pQuery);//获取数据库表是否活动
    if(!rc)rc=QueryOneADOTable(pQuery,GetParkrecTableName(),NULL,NULL);
    if(rc>=0){
      rc=AppendDataSet(pQuery);
      if(rc){
        SaveParkrecRecord(pQuery,pParkrec);
        SetFieldBlobOnTable(pQuery,GetInPhotoFieldName(),
           ((PARKREC *)pParkrec)->pInPhoto);
        SetFieldBlobOnTable(pQuery,GetOutPhotoFieldName(),
           ((PARKREC *)pParkrec)->pOutPhoto);
       }
      if(rc)rc=PostDataSet(pQuery);
      if(!rc)ShowTableError(1);
     }
    else rc=FALSE;
   }
  else rc=FALSE;
  if(rc)IncParkoutNum(1);
  return(rc);
 }
//更新UserData记录
int SaveOldUserData(void *pUser)
 {
  TADOQuery *pQuery;
  char szBuf[50];
  int rc,nHolderNo;

  //用OtherADOQuery元件查询一个表中记录
  pQuery = (TADOQuery *)GetOtherQuery();
  nHolderNo = ((USERDATA *)pUser)->nHolderNo;
  if(pQuery!=NULL && nHolderNo!=0){
    wsprintf(szBuf,"HOLDERNO=%d",nHolderNo);
    rc=QueryOneADOTable(pQuery,GetUserTableName(),szBuf,NULL);
    if(rc>=0){
      rc=AppendDataSet(pQuery);
      if(rc)SaveUserRecord(pQuery,pUser);
      if(rc)rc=PostDataSet(pQuery);
     }
    else rc=FALSE;
    if(!rc)ShowTableError(1);
   }
  else rc=FALSE;
  return(rc);
 }
//增加进入数
int IncParkinNum(int n)
 {
  static int nTotal;

  nTotal += n;
  DispParkInNum(nTotal);//显示进入数
  return(nTotal);
 }
//增加外出数
int IncParkoutNum(int n)
 {
  static int nTotal;

  nTotal += n;
  DispParkOutNum(nTotal);//显示进入数
  return(nTotal);
 }


⌨️ 快捷键说明

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