Beispiel #1
0
void Ticket_Info(ticket_t *data)
{
	schedule_t p;
	play_t buf;
	seat_t s;
	Seat_Srv_FetchByID(data->seat_id,&s);
	Schedule_Srv_FetchByID(data->schedule_id,&p); 
	if(Play_Srv_FetchByID(p.play_id,&buf))
	{
		printf("\n\t\t====================影票信息======================\n");
		printf("\t\t剧目名称: %s\n",buf.name);
		printf("\t\t类型:%s\n",type(buf.type));
		printf("\t\t出品地区:%s\n",buf.area);
		printf("\t\t剧目等级:%s\n",rating(buf.rating));
		printf("\t\t时长: %d 分钟\n",buf.duration);
		printf("\t\t上映时间: %d年%d月 %d日\n",buf.start_date.year,buf.start_date.month,buf.start_date.day);
		printf("\t\t放映日期: %d时%d分%d秒\n",p.time.hour,p.time.minute,p.time.second);
		printf("\t\t结束放映时间:%d年%d月%d日\n",buf.end_date.year,buf.end_date.month,buf.end_date.day);
		printf("\t\t票价:%d 元\n",buf.price);
		printf("\t\t演出厅id :%d\n",p.studio_id);
		printf("\t\t位置: %d行%d列\n",s.row+1,s.column+1);
		printf("\t\t======================================================\n");
		printf("Press Any Key To Continue......");
		getchar();
	}
}
Beispiel #2
0
void Ticket_UI_Print(int ID){

	ticket_t buf;
	seat_t     sed;
	schedule_t scd;
	studio_t   std;
	play_t     pld;
	
   	Ticket_Srv_FetchByID(ID,&buf);
   	Seat_Srv_FetchByID(buf.seat_id, &sed);
   	
   	Schedule_Srv_FetchByID(buf.schedule_id, &scd);
   	
   	Studio_Srv_FetchByID(scd.studio_id, &std);
   	Play_Srv_FetchByID( scd.play_id,  &pld);
   	
   	char ptype[10];
   	switch(pld.type){
		case PLAY_TYPE_FILE: 	strcpy(ptype,"电影");   	break;
		case PLAY_TYPE_OPEAR: 	strcpy(ptype,"戏曲");	break;
		case PLAY_TYPE_CONCERT: strcpy(ptype,"音乐"); 	break;
	}

   	system("clear");
   	printf("\n\n\n\n");
   	
/*
	printf("\t\t\t╔================================================================================╗\n");
   	printf("\t\t\t‖"); printf("%80s‖\n"," ");
   	printf("\t\t\t‖%30s %20s %30s ‖\n"," ","X X 电影院"," ");
   	printf("\t\t\t‖"); printf("%80s‖\n"," ");
	printf("\t\t\t‖ \t%5s\t%-20s\t %5s\t%3d %3s %3d %3s","影厅:", std.name ,"座位:", sed.row ,"行", sed.column,"列");  printf("\t\t\t\t ‖\n");
	printf("\t\t\t‖"); printf("%80s‖\n"," ");
	printf("\t\t\t‖\t%5s\t%-20s\t%5s\t%5s\t%5s%3d","剧名:", pld.name,"类别:",ptype,"票价:",pld.price);  printf("\t\t ‖\n");
	printf("\t\t\t‖"); printf("%80s‖\n"," ");
	printf("\t\t\t‖\t%10s\t%5d-%02d-%02d\t%5s\t%02d:%02d","放映日期:",scd.date.year,scd.date.month,scd.date.day,"时间:" ,scd.time.hour,scd.time.minute);  printf("\t\t\t\t ‖\n");
	printf("\t\t\t‖"); printf("%80s‖\n"," ");
	printf("\t\t\t‖\t%25s:%5d ","本票ID(退票时使用)",ID); printf("\t\t\t\t\t\t ‖\n");
	printf("\t\t\t‖"); printf("%80s‖\n"," ");
	printf("\t\t\t‖"); printf("%80s‖\n"," ");
	printf("\t\t\t╚================================================================================╝\n\n");
*/
	printf("\t\t\t\t\033[34m☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ ☊ \033[0m\n");
	printf("\t\t\t\t\033[36m♫\033[0m                                                               \033[36m♫\033[0m\n");
	printf("\t\t\t\t\033[31m♫\033[0m\t\t\t\t\033[33m%-24s\033[0m\t\t\033[31m♫\033[0m\n",std.name);
	printf("\t\t\t\t\033[36m♫\033[0m                                                               \033[36m♫\033[0m\n");
	printf("\t\t\t\t\033[31m♫\033[0m\t剧目名称: %s\t\t剧目类型: %s\t\t\033[31m♫\033[0m\n",pld.name,ptype);
	printf("\t\t\t\t\033[36m♫\033[0m                                                               \033[36m♫\033[0m\n");
	printf("\t\t\t\t\033[31m♫\033[0m\t放映日期: %5d-%02d-%02d\t\t放映时间: %02d:%02d\t\t\033[31m♫\033[0m\n",scd.date.year,scd.date.month,scd.date.day,scd.time.hour,scd.time.minute);
	printf("\t\t\t\t\033[36m♫\033[0m                                                               \033[36m♫\033[0m\n");
	printf("\t\t\t\t\033[31m♫\033[0m\t座位: %d 行 %d 列\t\t\t票价: %d\t\t\033[31m♫\033[0m\n",sed.row,sed.column,pld.price);
	printf("\t\t\t\t\033[36m♫\033[0m                                                               \033[36m♫\033[0m\n");
	printf("\t\t\t\t\033[31m♫\033[0m\t本票ID (退票时使用) :	%d\t\t\t\t\033[31m♫\033[0m\n",ID);
	printf("\t\t\t\t\033[36m♫\033[0m                                                               \033[36m♫\033[0m\n");
	printf("\t\t\t\t\033[34m☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ ☋ \033[0m\n\n");
}
Beispiel #3
0
int Ticket_Srv_AddBatch(int schedule_id, int studio_id){
	int rtn,i,key;
	ticket_node_t *p;
	seat_node_t  *q;
	ticket_list_t ticket_list;
	seat_list_t   seat_list;
	
	schedule_t scd;
	play_t pld;
	
	Schedule_Srv_FetchByID(schedule_id, &scd);
	Play_Srv_FetchByID( scd.play_id,  &pld);
	
	
	//Seat_Number_Count(studio_id);
	 List_Init(ticket_list, ticket_node_t);
	 
	 List_Init(seat_list,seat_node_t);
	 
	 rtn=Seat_Srv_FetchValidByRoomID(seat_list, studio_id);
	 key=EntKey_Srv_CompNewKeys("ticket",rtn);
	 //Seat_Srv_FetchByRoomID(seat_list,studio_id);
	  
	
	 q=seat_list->next;
	for(i=1;i<=rtn;i++)
	{
	   
	   p=(ticket_node_t *)malloc(sizeof(ticket_node_t));
	   p->data.id=key;
	   p->data.schedule_id=schedule_id;
	  	p->data.seat_id=q->data.id;
	   	p->data.price=pld.price;
	   	p->data.status=TICKET_AVL;
	   	List_AddTail(ticket_list,p);
	   	key++;
	   	q=q->next;
	   
	 }
	 
	
	   Ticket_Perst_Insert(ticket_list);
       	   return 1;
}
Beispiel #4
0
//根据剧目ID显示演出计划
void Sale_UI_ShowScheduler(int playID) {
	int i, id;
	char choice;
	
	play_t pdata;
	ticket_list_t tickList;
	seat_list_t   seatList;
	
	schedule_list_t head;
	schedule_node_t *p;
	Pagination_t paging;
	
	Play_Srv_FetchByID(playID, &pdata);
	
	List_Init(head, schedule_node_t);
	
	paging.offset = 0;
	paging.pageSize = SCHEDULE_PAGE_SIZE;

	//载入数据
	paging.totalRecords = Schedule_Srv_FetchByPlay(head,playID);
	
	Paging_Locate_FirstPage(head, paging);

	do {
		system("clear");
		printf("\n		=================================================================");
        	printf("\n		**************************剧目%s的演出计划*************************");
          	printf("\n		=================================================================");
		printf("\t\t%5s\t%5s\t%8s\t%10s\t%10s\t%10s\n", "ID", "剧目编号", "演出厅编号",
		 "上映日期","上映时间","票价");
		printf("\n		-----------------------------------------------------------------");
		
		if(!List_IsEmpty(head)){
			//显示数据
			for (i = 0, p = (schedule_node_t *) (paging.curPos);p != head && i < paging.pageSize; i++){
				printf("%5d  『%d』%20s  『%d』%2s ", p->data.id, p->data.play_id, p->data.play_name,p->data.studio_id, p->data.studio_name);
				printf("  %4d-%02d-%02d",p->data.date.year, p->data.date.month, p->data.date.day);
				printf("\t%2d:%02d:%02d ", p->data.time.hour, p->data.time.minute, p->data.time.second);
				printf("\t%5d\n", p->data.price);
			}
		}else{
		
			printf("\n		                    **没有演出厅信息!**");
			printf("\n		==================================================================");
		}
		printf("\n		==================================================================");
        	printf("\n		|----------总数%2d------------------------------%2d/%2d页---------|",paging.totalRecords, Pageing_CurPage(paging),Pageing_TotalPages(paging));
		printf("\n		******************************************************************");
        	printf("\n		|       [P]revPage          |              [N]extPage          |");
		printf("\n		-----------------------------------------------------------------");
		printf("\n		|         [S]ale       	  |             [R]eturn              |");
		printf("\n		******************************************************************");
		printf("\n		==================================================================");
		printf("\n		Iput Your choice:");
		choice=l_getc();
	

		switch (choice) {
			
		case 's':
		case 'S':
			{
				
				
				
				List_Init(tickList, ticket_node_t);
				List_Init(seatList,   seat_node_t);
				
				
			
			
				Sale_UI_SellTicket(tickList,seatList);
				
				List_Destroy(tickList, ticket_node_t);
				List_Destroy(seatList,   seat_node_t);
			}
			break;
		case 'p':
        case 'P':
			system("clear");
            if(Pageing_TotalPages(paging)>Pageing_CurPage(paging)){
                Paging_Locate_OffsetPage(head,paging,1,schedule_node_t);
            }
			break;
		case 'n':
        case 'N':
			 system("clear");
            if(Pageing_TotalPages(paging)>Pageing_CurPage(paging)){
                Paging_Locate_OffsetPage(head,paging,1,schedule_node_t);
            }
			break;
		}
	} while (choice != 'r' && choice != 'R');
	//释放链表空间
	List_Destroy(head, schedule_node_t);
}
Beispiel #5
0
//根据计划ID,显示演出票
void Sale_UI_ShowTicket(int schID){
	char choice;int i;
	ticket_list_t list;
	ticket_list_t pTemp;
	char status[10];
	play_t play;
	schedule_t sch;
	studio_t stu;
	seat_list_t seat_l;
	seat_t seat;
	Pagination_t paging;

	List_Init(seat_l,seat_node_t);
	List_Init(list,ticket_node_t);
	
	Schedule_Srv_FetchByID(schID, &sch);
	Play_Srv_FetchByID(sch.play_id, &play);
	Studio_Srv_FetchByID(sch.studio_id, &stu);
	Seat_Srv_FetchByRoomID(seat_l,sch.studio_id);
	paging.offset = 0;
	paging.pageSize = 10;
	paging.totalRecords = Ticket_Srv_FetchBySchID(list,schID);
	Paging_Locate_FirstPage(list, paging);
	do{
		system("clear");
	printf("|=============================================================================================================================|\n");
	printf("|-------------------------------------------------------票 信 息 输 出--------------------------------------------------------|\n");
	printf("|-----------------------------------------------------------------------------------------------------------------------------|\n");
                printf("%10s%20s%20s%20s%20s%20s%20s%20s\n","票ID","演出计划ID","剧目名称","演出厅名称","座位ID","座位行列号","票价","座位状态");
	printf("|-----------------------------------------------------------------------------------------------------------------------------|\n");
	Paging_ViewPage_ForEach(list, paging, ticket_node_t, pTemp, i)
	{
		Seat_Srv_FetchByID(pTemp->data.seat_id,&seat);
		if (pTemp->data.status == (ticket_status_t)0)
      			strcpy(status,"待售");
		else if (pTemp->data.status == (ticket_status_t)1)
       			strcpy(status,"已售");
		else if (pTemp->data.status == (ticket_status_t)9)
              		strcpy(status,"预留");
		printf("%9d%12d%18s%15s%18d          (%d,%d) %18d%16s\n",pTemp->data.id,pTemp->data.schedule_id,play.name,stu.name,pTemp->data.seat_id,seat.row,seat.column,pTemp->data.price,status);
	}
		printf("|------------------------ 总条数:%2d ------------------------------------------------------ 页码 %2d/%2d ------------------------|\n",
				paging.totalRecords, Pageing_CurPage(paging),
				Pageing_TotalPages(paging));
		printf("|-----------------------------[P]上一页   |  [N]下一页   |   [r]返回上一级 | [b]售票---------------------------------------|\n");
		printf("|=============================================================================================================================|\n");
		printf("请选择:");
	        scanf("%c",&choice);	flu();
		switch(choice)
		{
			case 'b':
			case 'B':
				if(Sale_UI_SellTicket(list,seat_l))
				{
					printf("正在重载票....\n");
					if (Ticket_Srv_FetchBySchID(list,schID))
						printf("票信息重载成功!\n");
				}
				printf("输入Enter返回...");	flu();
				break;
			case 'p':
			case 'P':
				if (!Pageing_IsFirstPage(paging)) {
					Paging_Locate_OffsetPage(list, paging, -1, ticket_node_t);
				}
				break;
			case 'N':
			case 'n':
				if (!Pageing_IsLastPage(paging)) {
					Paging_Locate_OffsetPage(list, paging, 1, ticket_node_t);
				}
				break;
			//case 'r':
			//case 'R':
			//	return;
		}
	}while(choice != 'R' && choice != 'r');
void Sale_UI_ShowTicket(USER* user)
{
	system("cls");
	BIOS_GOTO_BOX(22, 100, 5, 25);
	BIOS_GOTO_BOX(22, 100, 8, 7);
	TTMS_GotoXY(52, 6);
	printf_s("请输入查询的演出计划ID:");
	int ID;
	scanf_s("%d", &ID);
	auto *schedule = Schedule_Srv_FetchByID(ID);
	if (!schedule)
	{
		TTMS_GotoXY(50, 24);
		printf_s("无此演出计划的信息");
	}
	else
	{
		for (auto i = 11; i < 21; i++)
		{
			TTMS_GotoXY(30, i);
			printf_s("*");
			TTMS_GotoXY(92, i);
			printf_s("*");
		}
		for (auto i = 30; i < 92; i++)
		{
			TTMS_GotoXY(i, 11);
			printf_s("*");
			TTMS_GotoXY(i, 21);
			printf_s("*");
		}
		TTMS_GotoXY(92, 21);
		printf_s("*");
		TTMS_GotoXY(55, 13);
		printf_s("没人来剧院");
		TTMS_GotoXY(33, 15);
		auto *play = Play_Srv_FetchByID(schedule->data.play_id);
		switch (play->data.type)
		{
		case PLAY_TYPE_FLIM: printf_s("电影");
			break;
		case PLAY_TYPE_OPEAR: printf_s("歌剧");
			break;
		case PLAY_TYPE_CONCERT: printf_s("音乐会");
			break;
		default:
			break;
		}
		printf_s("名称:%s", play->data.name);
		TTMS_GotoXY(70, 15);
		printf_s("#适用于");
		switch (play->data.rating)
		{
		case PLAY_RATE_CHILD: printf_s("儿童");
			break;
		case PLAY_RATE_TEENAGE: printf_s("青年");
			break;
		case PLAY_RATE_ADULT: printf_s("成人");
			break;
		default:
			break;
		}
		printf_s("观众#");
		TTMS_GotoXY(33, 17);
		printf_s("播放地址:");
		auto *studio = Studio_Srv_FetchByID(schedule->data.studio_id);
		printf_s("%s演出厅", studio->data.name);
		TTMS_GotoXY(70, 17);
		printf_s("全片时长:%d分钟", play->data.duration);
		TTMS_GotoXY(33, 19);
		printf_s("开始时间 %d年%d月%d日%d时%d分", schedule->time.daytime.year, schedule->time.daytime.month, schedule->time.daytime.day, schedule->time.hour, schedule->time.minute);
		TTMS_GotoXY(73, 19);
		printf_s("票价:¥%d", play->data.price);
	}
	_getch();
	Main_UI_MgtEntry(user);
}
Beispiel #7
0
void Schedule_UI_MgtEntry(int play_id){
     int i, id;
	char choice;
	play_t pdata;
	schedule_list_t head;
	schedule_node_t *p;
	Pagination_t paging;
	Play_Srv_FetchByID(play_id, &pdata);
	List_Init(head, schedule_node_t);
	paging.offset = 0;
	paging.pageSize = SCHEDULE_PAGE_SIZE;
	//载入数据
	paging.totalRecords = Schedule_Srv_FetchByPlay(head,play_id);
	Paging_Locate_FirstPage(head, paging);
	do {
		system("clear");
		printf("\n\n\n\t		=================================================================");
        	printf("\n\t		**************************剧目%d的演出计划*************************",play_id);
          	printf("\n\t		=================================================================");
		printf("\n\t\t\t    %-5s%-10s   %-12s   %-12s      %-12s   %-5s", "ID", "剧目", "演出厅",
		 "上映日期","上映时间","票价");
		    printf("\n\t		-----------------------------------------------------------------");
		//显示数据
		for (i = 0, p = (schedule_node_t *) (paging.curPos);p != head && i < paging.pageSize; i++){
			printf("\n\t\t\t    %-3d 『%d』 \t   『%d』 ", p->data.id, p->data.play_id,p->data.studio_id);
			printf("\t%4d-%02d-%02d\t",p->data.date.year, p->data.date.month, p->data.date.day);
			printf("%2d:%02d:00", p->data.time.hour, p->data.time.minute);
			printf("    %-5d\n", p->data.price);
			p=p->next;
		}
		printf("\n\t		==================================================================");
        printf("\n\t		|-------------总数%2d----------------------------%2d/%2d页-----------|",paging.totalRecords, Pageing_CurPage(paging),Pageing_TotalPages(paging));
		printf("\n\t		******************************************************************");
        printf("\n\t		|       [P]revPage            |              [N]extPage           |");
		printf("\n\t		|     [A]dd   |   [D]elete    |     [U]udate      |   [V]iew All  |");         
		printf("\n\t		------------------------[R]eturn----------------------------------");	
  		printf("\n\t		==================================================================");
        	printf("\n\t		Iput Your choice:");
		
		choice=l_getc();
	

		switch (choice) {
		case 'a':
		case 'A':
			{
				studio_list_t slist;
				List_Init(slist, studio_node_t);
				Studio_Srv_FetchAll(slist);
				if(!List_IsEmpty(slist) ){
					if (Schedule_UI_Add(pdata.id)) //新添加成功,跳到最后一页显示
					{
						paging.totalRecords =Schedule_Srv_FetchByPlay(head,play_id);
						Paging_Locate_LastPage(head, paging, schedule_node_t);
					}
				}else{
					if(List_IsEmpty(slist)){
						printf("\n		               **没有演出厅信息,无法添加计划!**  /n");
					}
					printf("\n		-------------------------------按任意键返回-------------------------");
					getchar();
				}
			}
			break;
		case 'd':
		case 'D':
			printf("\n\t		|     请输入计划ID:");
			while(1){
					if(scanf("%d",&id)==1){ cl_stdin(); break;}
					else{ cl_stdin();printf("\n\t		                        **您的输入有误!请重新输入**     ");}
				}
			
			if (Schedule_UI_Delete(id)) {	//从新载入数据
					paging.totalRecords = Schedule_Srv_FetchByPlay(head,play_id);
					List_Paging(head, paging, schedule_node_t);
			}
			break;
		case 'u':
		case 'U':
				printf("\n		|     请输入计划ID:");
				while(1){
					if(scanf("%d",&id)==1){ cl_stdin(); break;}
					else{ cl_stdin();printf("\n\t		                        **您的输入有误!请重新输入**     "); }
				}
			
				if (Schedule_UI_Modify(id)) {	//从新载入数据
					paging.totalRecords = Schedule_Srv_FetchByPlay(head,play_id);
					List_Paging(head, paging, schedule_node_t);
				}
			break;
		case 'v':
		case 'V':
			Schedule_UI_ListAll();
			break;
		case 't':
		case 'T':
			//();
			break;
		case 24 :
	     if (1 < Pageing_CurPage(paging)) {
				Paging_Locate_OffsetPage(head, paging, -1, schedule_node_t);
			}
			break;
		case 25 :
			if (Pageing_TotalPages(paging) > Pageing_CurPage(paging)) {
				Paging_Locate_OffsetPage(head, paging, 1, schedule_node_t);
			}
			break;
		}
	} while (choice != 'r' && choice != 'R');
	//释放链表空间
	List_Destroy(head, schedule_node_t);
}
Beispiel #8
0
//根据剧目ID显示演出计划
void Sale_UI_ShowScheduler(int playID)
{
	play_t buf;
	if(Play_Srv_FetchByID(playID,&buf))
	{
		int listSize,sal_id,i;
		char choice;
		Pagination_t paging;
		schedule_list_t list,pos;
		schedule_t buf;
		List_Init(list,schedule_node_t);
		listSize=Schedule_Srv_FetchByPlay(list,playID);
		paging.pageSize =PAGESIZE;
		paging.totalRecords = listSize;
		Paging_Locate_FirstPage(list, paging);
		do {
				system("clear");
				printf("\n\t\t\033[32m************************* 计划表 **************************\n");
				printf("\t\t    %2s  %10s  %8s  %10s  %10s   %10s\n", "ID", "剧目ID", "演出厅ID","放映日期","放映时间","座位数");
				printf("\t\t***********************************************************\n");
				Paging_ViewPage_ForEach(list,paging,schedule_node_t,pos,i)
				{
					printf("\033[34m\t\t    %2d%10d%8d%6d-%2d-%2d%4d:%2d:%2d%10d\n",pos->data.id,pos->data.play_id,pos->data.studio_id,pos->data.date.year,pos->data.date.month,pos->data.date.day,pos->data.time.hour,pos->data.time.minute,pos->data.time.second,pos->data.seat_count);
				}
				printf("\t\t\033[32m-----------------------------------------------------------\n");
				printf("\t\t-------总记录数:%2d ------------------- 页数: %2d/%2d -------\n",paging.totalRecords, Pageing_CurPage(paging),	Pageing_TotalPages(paging));
				printf("\t\t-----------------------------------------------------------\n");
				printf("\t\t** 【P】上一页 【[N】下一页 【R】返回 【S】进入售票系统  **\n");
				printf("\t\t===========================================================\033[0m\n");
				printf("\t\tYour Choice:");
				fflush(stdin);
				scanf("\t\t%c", &choice);
				getchar();
				switch (choice)
				{
					case 'S': ;
					case 's':
									printf("请输入演出计划id :");
									scanf("%d",&sal_id);
									getchar();
									if(!Schedule_Srv_FetchByID(sal_id,&buf ))
									{
										printf("你输入的演出计划不存在!回车继续");
										getchar();
									}
									else
									{
										Sale_UI_ShowTicket(sal_id);
									}
									paging.totalRecords=Schedule_Srv_FetchByPlay(list,playID);
									List_Paging(list, paging, schedule_node_t);
							      	break;
					case 'r':
					case 'R':break;
					case 'p':
					case 'P':
							if (1 < Pageing_CurPage(paging))
							{
								Paging_Locate_OffsetPage(list, paging, -1, studio_node_t);
							}
							choice='r';
							break;
					case 'n':
					case 'N':
							if (Pageing_TotalPages(paging) > Pageing_CurPage(paging))
							{
								Paging_Locate_OffsetPage(list, paging, 1, studio_node_t);
							}
							choice='r';
							break;
			}
		} while (choice != 'r' && choice != 'R');