Beispiel #1
0
//根据给定时间区间内的销售记录
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;
}
Beispiel #2
0
//退票
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;
       			}
       					
       		}
     			
		
	}
	
}
Beispiel #3
0
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;
			
     
}
Beispiel #4
0
//---------------------------------------------------------------------------
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;
  }
}
Beispiel #5
0
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;
}