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(); } }
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"); }
//根据计划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');
//根据计划ID,显示演出票 void Sale_UI_ShowTicket(int schID) { int pageSize=10, i; int listSize; int ticket_id; char choice; ticket_list_t list,s; seat_t buf; Pagination_t paging; List_Init(list,ticket_node_t); listSize=Ticket_Srv_FetchBySchID(list, schID); system("clear"); paging.pageSize = pageSize; paging.totalRecords = listSize; Paging_Locate_FirstPage(list, paging); do { system("clear"); printf("\n\t\t\033[34m=====================影票列表======================\n"); printf("\t\t%6s %17s%10s%8s%8s%8s\n","id","演出计划id","座位id","行","列","状态"); printf("\t\t---------------------------------------------------\n"); for (i = 0, s= (ticket_node_t *) (paging.curPos);s != list && i < paging.pageSize; i++, s=s->next) { Seat_Srv_FetchByID(s->data.seat_id,&buf); if(buf.status==1) printf("\033[31m\t\t%6d%10d%11d%7d%7d %12s\n\033[0m",s->data.id,s->data.schedule_id, s->data.seat_id,buf.row+1, buf.column+1,Status(s->data.status)); } printf("\t\t\033[34m---------------------------------------------------\n"); printf("\t\t------总行数 :%2d --------------页码: %2d/%2d -------\n",paging.totalRecords, Pageing_CurPage(paging),Pageing_TotalPages(paging)); printf("\t\t===================================================\n"); printf("\t\t** 【R】返回上一级 【B】订票 **\n"); printf("\t\t** 【P】上一页 【N】下一页 **\n"); printf("\t\t** 【T】 退票 **\n"); printf("\t\t===================================================\033[0m\n"); printf("\t\tYour Choice:"); scanf("\t\t%c", &choice); getchar(); switch (choice) { case 'B': ; case 'b': printf("请输入你要订购的票的id:"); scanf("%d",&ticket_id); getchar(); Sale_UI_SellTicket(ticket_id); paging.totalRecords=Ticket_Srv_FetchBySchID(list, schID); List_Paging(list,paging,ticket_node_t); break; case 'r': case 'R': break; case 't': case 'T': printf("请输入你要退的票的id:"); scanf("%d",&ticket_id); getchar(); Sale_UI_ReturnTicket(ticket_id); paging.totalRecords=Ticket_Srv_FetchBySchID(list, schID); List_Paging(list,paging,ticket_node_t); break; case 'p': case 'P': if (1 < Pageing_CurPage(paging)) { Paging_Locate_OffsetPage(list, paging, -1, ticket_node_t); } break; case 'n': case 'N': if (Pageing_TotalPages(paging) > Pageing_CurPage(paging)) { Paging_Locate_OffsetPage(list, paging, 1, ticket_node_t); } break; } } while (choice != 'r' && choice != 'R'); }