//根据给定时间区间内的销售记录 int Sale_Perst_SelectByDate(sale_list_t list, user_date_t stDate,user_date_t endDate) { FILE *fp; int i,j; int recCount; fp=fopen(SALE_DATA_FILE,"rb"); sale_t saleRec; sale_list_t newNode; if(fp==NULL) { printf("文件打开失败!\n"); } else { while(fread(&saleRec,sizeof(sale_t),1,fp)==1) { i=DateCmp( saleRec.date,stDate); // 1 j=DateCmp( endDate,saleRec.date); // 1 if( i !=-1 && j !=-1) { newNode=(sale_node_t *)malloc(sizeof(sale_node_t )); newNode->data.id=saleRec.id; newNode->data.user_id=saleRec.user_id; newNode->data.ticket_id=saleRec.ticket_id; newNode->data.date=saleRec.date; newNode->data.time=saleRec.time; newNode->data.value=saleRec.value; newNode->data.type=saleRec.type; List_AddTail(list,newNode); recCount++; break; } } } return recCount; }
//退票 void Sale_UI_ReturnTicket(){ char choice; int id,t=0; while(1){ system("clear"); printf("\n ================================================================="); printf("\n **************************剧目%s的演出计划************************"); printf("\n ================================================================="); printf("\n | 请输入演出计划ID:"); while(1){ if(scanf("%d",&id)==1){ cl_stdin(); break;} else{ cl_stdin();printf("\n **您的输入有误!**");} } ticket_t buf; schedule_t scd; Schedule_Srv_FetchByID(buf.schedule_id, &scd); if( Ticket_Srv_FetchByID(id,&buf) ){ if(buf.status==TICKET_SOLD){ Ticket_UI_Print(id); user_time_t nowtime=TimeNow(); if(DateCmp(DateNow(), scd.date)==-1 || (DateCmp(DateNow(), scd.date)==0 && scd.time.hour<nowtime.hour && scd.time.minute<nowtime.minute ) ){ t=1; Ticket_UI_Print(id); }else{ printf("\n **您的输入有误!按任意键继续**"); getchar(); break; } }else{ printf("\n **信息不存在!按任意键返回**"); getchar(); break; } } if(t){ printf("\n -----------------------------------------------------------------"); printf("\n | [Q]uik | [R]eturn |"); printf("\n ******************************************************************"); printf("\n =================================================================="); printf("\n Iput Your choice:"); choice=l_getc(); if('r'==choice || 'R'==choice) break; if('q'==choice || 'Q'==choice) { buf.status=TICKET_AVL; sale_t data; data.id=EntKey_Srv_CompNewKey("sale"); data.user_id=gl_CurUser.id; data.ticket_id=id; data.date=DateNow(); data.time=TimeNow(); data.value=buf.price; data.type=SALE_RETURN; Sale_Srv_Add(&data); Ticket_Srv_Modify(&buf); printf("\n ----------------------------**退票成功! **---------------------------------"); printf("\n =================================================================="); cl_stdin(); getchar(); break; } } } }
int Schedule_UI_Add(int play_id) { int er=0,sid,newRecCount=0; char choice; schedule_t data; studio_t sdata; play_t pdata; cl_stdin(); do { system("clear"); printf("\n\n\n\t\t ================================================================="); printf("\n\t\t ***************************添加演出计划**************************"); printf("\n\t\t ================================================================="); data.id = EntKey_Srv_CompNewKey("schedule"); data.play_id=play_id; while(1){ printf("\n\t\t | 请输入演出厅ID:"); if(scanf("%d",&sid)==1){ cl_stdin(); if(!Studio_Srv_FetchByID(sid, &sdata)){ printf("\n\t\t\t\t **没有演出厅信息!请重新输入** "); continue; } data.studio_id=sdata.id; data.price=pdata.price; data.seat_count=Seat_Number_Count(data.studio_id); break; } else{ cl_stdin(); printf("\n\t\t\t您的输入有误!请重新输入** "); } } while(1){ printf("\n\t\t | 请输入演出日期:"); if(scanf("%d%d%d",&(data.date.year), &(data.date.month), &(data.date.day))==3){ cl_stdin(); if(data.date.month>12 || data.date.day>31){ printf("\n\t\t **您输入的日期有误!请重新输入** "); continue; } if(DateCmp(data.date, DateNow())==-1){ printf("\n\t\t **您输入的日期太早!请重新输入** "); continue; } break; } else{ cl_stdin();printf("\n\t **您的输入有误!请重新输入** "); } } while(1){ printf("\n\t\t | 请输入演出时间(h min):"); if(scanf("%d %d",&(data.time.hour), &(data.time.minute))==2){ data.time.second=0; cl_stdin(); if(data.time.hour>24 || data.time.minute>60){ printf("\n\t\t **您的输入有误!请重新输入** "); continue; } break; } else{ cl_stdin(); printf("\n\t **您的输入有误!请重新输入** "); } } printf("\n\t\t =================================================================="); if(Schedule_Srv_Add(&data)){ //Ticket_Srv_AddBatch(data.id, data.studio_id); newRecCount++; printf("\n\t\t ------------------------添加计划成功!--------------------------"); printf("\n\t\t ******************************************************************"); }else{ } printf("\n\t\t =================================================================="); printf("\n\t\t | [A]dd More | [R]eturn |"); printf("\n\t\t ******************************************************************"); printf("\n\t\t Iput Your choice:"); choice=l_getc(); } while ('a' == choice || 'A' == choice); return newRecCount; }
//--------------------------------------------------------------------------- int THQGetData::GetData(TPriceListDyn *DataBuf, char *Code, int Count, bool Mode) { try { if(!DirectoryExists(FFilePath)) return -1; char cFileNameH[HQ_FILE_PATH_LEN + 5]; strcpy(cFileNameH, FFilePath); if(FFilePath[strlen(cFileNameH) - 1] != '\\') strcat(cFileNameH, "\\"); if(Code[0] == 'H' || Code [0] == 'h') strcat(cFileNameH, "Sh"); else if(Code[0] == 'S' || Code [0] == 's') strcat(cFileNameH, "Sz"); else return -2; SYSTEMTIME stCurTime; GetLocalTime(&stCurTime); SYSTEMTIME ORIGINAL_DATE = {2004, 8, 4, 5, 0, 0, 0, 0}; int iLastDate = GetDate(stCurTime, 1); char cCurFileName[HQ_FILE_NAME_LEN] = {0x0, }; int iCount = 0; THQBackFileHead FHead; THQBackPackHead PackHead; char *buffer = NULL; int SecuNo = 0; //int iFileHandle = -1; FILE *pFileHandle = NULL; while (iCount < Count) { if(pFileHandle != NULL) { fclose(pFileHandle); pFileHandle = NULL; } iLastDate = GetDate(stCurTime, -1); if( DateCmp(stCurTime, ORIGINAL_DATE) < 0) break; char cDate[10] = {0x0, }; sprintf(cDate, "%d", iLastDate); strcpy(cCurFileName, cFileNameH); strcat(cCurFileName, cDate); strcat(cCurFileName, ".dat"); char cMsg[100] = "正在获取"; strcat(cMsg, cDate); strcat(cMsg, "历史数据……"); FCallBack(cMsg, iCount); pFileHandle = fopen(cCurFileName, "rb"); if(pFileHandle == NULL) continue; if(fseek(pFileHandle, 0, 0) == -1) continue; if( fread(&FHead, sizeof(THQBackFileHead), 1, pFileHandle) <= 0) continue; if(FHead.stock_num <= 0) continue; //Read static stock info; if( fread(&PackHead, sizeof(THQBackPackHead), 1, pFileHandle) <= 0) continue; if(buffer != NULL) { delete [] buffer; buffer = NULL; } //buffer = new char[PackHead.length]; buffer = new char[ sizeof(TUDPPackage) + sizeof(TUDPPriceList)*FHead.stock_num ]; if( fread((void*)buffer, PackHead.length, 1, pFileHandle) <= 0 ) continue; SecuNo = GetSecuNo(Code, buffer); if(SecuNo < 0) continue; int iCurCount = 0; int iLastCount = iCount; while(true) { FCallBack(cMsg, iCount); if( fread(&PackHead, sizeof(THQBackPackHead), 1, pFileHandle) <= 0) break; if(fread(buffer, PackHead.length, 1, pFileHandle) <= 0) break; if(AddFreshData(buffer, DataBuf, iLastCount, iCount, SecuNo, Count)) { if( iCount < Count) { iCount++; iCurCount++; } } } ReorderData(DataBuf, iCurCount, iCount); } if(pFileHandle != NULL) { fclose(pFileHandle); pFileHandle = NULL; } if(buffer != NULL) { delete [] buffer; buffer = NULL; } FCallBack("", iCount); return iCount; } catch(...) { return -1; } }
int Schedule_UI_Modify(int id){ int ret=0,sid; char choice; schedule_t data; studio_t sdata; if(Schedule_Perst_SelectByID(id, &data)){ while(1){ system("clear"); printf("\n\n\n\t\t ================================================================="); printf("\n\t\t ***************************修改演出计划*******************************"); printf("\n\t\t ================================================================="); printf("\n\t\t\t %-5s %-10s %-12s %-10s %-10s %-10s ", "ID", "剧目ID", "演出厅ID", "放映日期","放映时间","座位数"); printf("\n\t -----------------------------------------------------------------"); printf("\n\t\t\t%-3d 『%d』\t『%d』", data.id,data.play_id,data.studio_id); printf(" %4d-%2d-%2d",data.date.year, data.date.month,data.date.day); printf(" %2d:%2d:00 ", data.time.hour, data.time.minute); printf(" %5d", data.price); printf("\n\t\t =================================================================="); printf("\n\t\t | [S]tudio | [T]ime | [R]eturn |"); printf("\n\t\t ******************************************************************"); printf("\n\t\t Iput Your choice:"); choice=l_getc(); if('r'==choice || 'R'==choice) break; switch(choice){ case 's': case 'S': while(1){ printf("\n\t\t\t\t|\t请输入演出厅ID:"); if(scanf("%d",&sid)==1){ cl_stdin(); if(!Studio_Srv_FetchByID(sid, &sdata)){ printf("\n\t\t\t\t\t\t**没有演出厅信息!请重新输入** "); continue; } data.studio_id=sdata.id; data.seat_count=Seat_Number_Count(data.studio_id); break; } else{ cl_stdin(); printf("\n\t\t\t\t **您的输入有误!请重新输入** "); } } break; case 't': case 'T': while(1){ printf("\n\t\t | 请输入上映日期( 年 月 日): "); if(scanf("%d %d %d",&(data.date.year), &(data.date.month), &(data.date.day))==3){ cl_stdin(); if(data.date.month>12 || data.date.day>31){ printf("\n\t\t **您输入的日期有误!请重新输入** "); continue; } if(DateCmp(data.date, DateNow())==-1){ printf("\n\t\t **您输入的时间早于今天!请重新输入!** "); continue; } break; } else{ cl_stdin(); printf("\n\t\t **您的输入有误!请重新输入** ");} } printf("\n\t\t | 请输入上映时间(h min):"); while(1){ if(scanf("%d %d",&(data.time.hour), &(data.time.minute))==2){ data.time.second=0; cl_stdin(); if(data.time.hour>24 || data.time.minute>60){ printf("\n\t\t **您的输入有误!请重新输入** "); continue; } break; } else{ cl_stdin();printf("\n\t\t **您的输入有误!请重新输入** "); } } break; }//switch printf("\n\t\t =================================================================="); if(Schedule_Srv_Modify(&data)){ printf("\n\t\t --------------------------修改计划成功!----------------------------"); printf("\n\t\t ******************************************************************"); ret=1; }else{ printf("\n\t\t --------------------------修改计划成功!----------------------------"); printf("\n\t\t ******************************************************************"); } sleep(1); }//while }else{ printf("\n\t\t **没有演出厅信息!** "); sleep(1); return 0; } return ret; }