📄 dataproc.cpp
字号:
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 + -