int Studio_UI_Add(void) { studio_t rec; int newRecCount = 0; char choice; do { /*system("cls");*/ printf("\n=======================================================\n"); printf("**************** Add New Projection Room ****************\n"); printf("-------------------------------------------------------\n"); printf("Room Name:"); fflush(stdin); gets(rec.name); printf("Row Count of Seats:"); scanf("%d", &(rec.rowsCount)); printf("Column Count of Seats:"); scanf("%d", &(rec.colsCount)); rec.seatsCount = 0; printf("=======================================================\n"); //��ȡ���� rec.id = EntKey_Srv_CompNewKey("Studio"); if (Studio_Srv_Add(&rec)) { newRecCount += 1; printf("The new room added successfully!\n"); } else printf("The new room added failed!\n"); printf("-------------------------------------------------------\n"); printf("[A]dd more, [R]eturn:"); fflush(stdin); scanf("%c", &choice); } while ('a' == choice || 'A' == choice); return newRecCount; }
int EntKey_Perst_CompKeyP() { FILE *fp; auto key = EntKey_Srv_CompNewKey(); fopen_s(&fp, "EntityKey.dat", "w"); fprintf_s(fp, "%d", key); fclose(fp); return 0; }
//添加一个用户账号信息 int Account_UI_Add(void) { int er=0,newRecCount=0; char choice; account_t data,buf; do { system("clear"); printf("\n\t\t=================================================================="); printf("\n\t\t***************************添加用户********************************"); printf("\n\t\t=================================================================="); cl_stdin(); while(1){ printf("\n\t\t| 用户名:"); gets(data.username); if(Account_Srv_FetchByUsrName(data.username,&buf)){ printf("\t\t **用户已存在!**"); //cl_stdin(); }else break; } //cl_stdin(); printf("\n\t\t| 密码:"); gets(data.password); printf("\n -------[1].CLERK------------[2].MANG-------------[3].ADMAIN--------"); while(1){ printf("\n | 请选择用户类型:"); er=0; choice=l_getc(); switch(choice){ case '1': data.type= USR_CLERK; break; case '2': data.type= USR_MANG; break; case '3': data.type= USR_ADMIN; break; default : er=1; printf("\n\t\t **输入有误!** "); } if(er!=1) break; } data.id = EntKey_Srv_CompNewKey("User"); if(Account_Srv_Add(&data)){ newRecCount++; printf("\n ----------------------------添加成功!------------------------------"); }else{ printf("\n ----------------------------添加失败!------------------------------"); } printf("\n =================================================================="); printf("\n | [A]dd More | [R]eturn |"); printf("\n ******************************************************************"); printf("\n Input Your choice:"); choice=l_getc(); } while ('a' == choice || 'A' == choice); return newRecCount; }
void Account_Srv_InitSys() { account_t data; if(!Account_Perst_CheckAccFile()) { data.id=EntKey_Srv_CompNewKey("account"); strcpy(data.username,"admin"); strcpy(data.password,"admin123"); data.type=1; Account_Perst_Insert(&data); } }
//添加一个用户账号信息,如果账号名存在,提示出错信息 int Account_UI_Add(account_list_t list ) { int i=0; int newRecCount=0; char a[30]; char choice; account_t pos; account_node_t *temp; // account_list_t p; do{ printf("请输入用户名\n");fflush(stdin); gets(pos.username); temp=(account_node_t *)malloc(sizeof(account_node_t)); temp=Account_Srv_FindByUsrName(list,pos.username); if(temp!=NULL) { printf("用户名已存在\n"); return 0; } printf("请输入密码\n"); fflush(stdin); scanf("%s",&(pos.password)); printf("请输入账户类型:\n"); printf("0.匿名用户 1.销售经理 2.经理 9.系统管理员"); fflush(stdin); scanf("%d",&i); pos.type=(account_type_t)i; pos.id=EntKey_Srv_CompNewKey("usr"); if (Account_Srv_Add(&pos)) { newRecCount ++; printf("The new room added successfully!\n"); // p=(account_list_t)malloc(sizeof(account_node_t)); // p->data=pos; // List_AddTail(list,p); } else printf("The new room added failed!\n"); printf("-------------------------------------------------------\n"); printf("[A]dd more, [R]eturn:"); fflush(stdin); scanf("%c", &choice); } while ('a' == choice || 'A' == choice); return newRecCount; }
int Studio_UI_Add(void){ studio_t rec; int newRecCount =0; char choice; getchar(); do{ printf("\n\n\n \t=================================================================="); printf("\n \t*************************添加演出厅*******************************"); printf("\n \t=================================================================="); printf("\n \t| 姓名:"); gets(rec.ROOM); printf("\n \t| 规模:"); gets(rec.SIZE); printf("\n \t| 类型:"); gets(rec.MOD); printf("\n \t| 座椅类型:"); gets(rec.SEAT); printf("\n \t| 座位行数:"); scanf("%d",&rec.rowsCount); printf("\n\t | 座位列数:"); scanf("%d",&rec.colsCount); getchar(); rec.seatsCount = rec.rowsCount*rec.colsCount; // printf("\n%d\n",rec.seatsCount); 检测 printf("\n\t =================================================================="); rec.id = EntKey_Srv_CompNewKey("Studio"); if(Studio_Srv_Add(&rec)){ newRecCount+=1; printf("\n\t ------------------------添加演出厅成功!--------------------------"); } else{ printf("\n\t ------------------------添加演出厅失败!--------------------------"); } printf("\n\t =================================================================="); printf("\n\t | [A]dd More | [R]eturn |"); printf("\n\t ******************************************************************"); printf("\n\t Input Your choice:"); scanf("%c",&choice); system("clear"); getchar(); }while('a'==choice||'A'==choice); return newRecCount; }
//创建系统初始化账号admin void Account_Srv_InitSys(){ char entName[8]; if(Account_Perst_CheckAccFile()); else { system("clear"); account_t data_admin; data_admin.id=EntKey_Srv_CompNewKey(entName);//调用函数获取用户id printf("\n\n\n\t\t\t\t \033[31m为您创建系统初始化帐号ADMIN\033[0m"); printf("\n\n\t\t\t\t请输入姓名:"); scanf("%s",data_admin.username);//为ata_admin账号赋值成员信息 data_admin.type=9; cl_stdin(); printf("\n\t\t\t\t请输入密码:"); getpwd(30,data_admin.password); Account_Srv_Add(&data_admin);//将新建data_admin账号写入文件 printf("\n\t\t\t\t\t创建成功!"); sleep(1); } }
//退票 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; } } } }
//根据计划ID显示所有票 void Ticket_UI_ListBySch(const schedule_t *sch, ticket_list_t tickList, seat_list_t seatList) { int i,id; char choice; ticket_node_t *pos; Pagination_t paging; paging.offset = 0; paging.pageSize = TICKET_PAGE_SIZE; //演出计划schedule_id paging.totalRecords=Ticket_Srv_FetchBySchID(tickList, sch->id); Paging_Locate_FirstPage(tickList, paging); do { system("clear"); printf("\t\t\t\033[32m=====================================================================================\n\n"); printf("\t\t\t***************************************\033[0m\033[34m 票 \033[0m\033[32m******************************************\033[0m\n\n"); printf("\t\t\t\033[33m%s\t\t%s\t\t%s\033[0m\t\t\033[36m%s\033[0m\t\t\033[31m%s\033[0m","票ID","演出计划ID","座位ID","票价","票状态"); printf("\n\t\t\t\033[32m-------------------------------------------------------------------------------------\033[0m\n"); Paging_ViewPage_ForEach(tickList, paging, ticket_node_t, pos, i){ printf("\t\t\t\033[33m%2d\t\t%5d\t\t %11d\033[0m\t\033[36m%10d\033[0m\t\t", pos->data.id, pos->data.schedule_id, pos->data.seat_id, pos->data.price); switch(pos->data.status){ case TICKET_AVL: printf("\033[31m%5s\033[0m\n","待售"); break; case TICKET_SOLD: printf("\033[31m%5s\033[0m\n","已售"); break; case TICKET_RESV: printf("\033[31m%5s\033[0m\n","预留"); break; } } printf("\n\t\t\t\033[32m----------------- 共 \033[0m\033[33m%d\033[0m\033[32m 条数据 -------------------------- 页码: %d\033[0m/\033[33m%d\033[0m\033[32m -----------------\033[0m\n\n", paging.totalRecords, Pageing_CurPage(paging), Pageing_TotalPages(paging)); printf("\t\t\t\033[32m======================================================================================\033[0m\n\n"); printf("\n\t\t\t\033[33m------------------------ [A]售票 -------------- [B]预留票 ----------------------------\033[0m\n\n"); printf("\t\t\t\033[32m---------------\033[0m[\033[32mP\033[0m]\033[32m上页---------------\033[0m[\033[33mR\033[0m]\033[33m返回\033[0m\033[32m---------------\033[0m[\033[36mN\033[0m]\033[36m下页\033[0m\033[32m--------------------\033[0m\n\n"); printf("\t\t\t\033[32m======================================================================================\033[0m\n\n"); printf("\t\t\t\033[33m请选择: \033[0m"); choice=l_getc(); switch(choice) { case 'p': case 'P': if (!Pageing_IsFirstPage(paging)) { Paging_Locate_OffsetPage(tickList, paging, -1, ticket_node_t); } break; case 'n': case 'N': if (!Pageing_IsLastPage(paging)) { Paging_Locate_OffsetPage(tickList, paging, 1, ticket_node_t); } break; case 'a': case 'A': { seat_node_t *p; int row,column,t=0; printf("\n\t\t\t\033[33m请输入座位的行号: \033[0m"); while(1){ if(scanf("%d", &(row))==1){ cl_stdin(); break;} else {cl_stdin(); printf("\n\t\t\t\033[31m输入有误,请重新输入: \033[0m");} } printf("\n\t\t\t\033[33m请输入座位的列号: \033[0m"); while(1){ if(scanf("%d", &(column))==1){ cl_stdin(); break;} else {cl_stdin(); printf("\n\t\t\t\033[31m输入有误,请重新输入: \033[0m");} } List_ForEach(seatList, p){ if(row==p->data.row && column==p->data.column){ ticket_node_t *td; td= Ticket_Srv_FindBySeatID(tickList, p->data.id); if(QueryTicket(td->data.id)==1){ if(UpdateTicket(td->data.id) ){ sale_t sdata; sdata.id=EntKey_Srv_CompNewKey("sale"); sdata.user_id=gl_CurUser.id; sdata.ticket_id=td->data.id; sdata.date=DateNow(); sdata.time=TimeNow(); sdata.value=td->data.price; sdata.type=SALE_SELL; Sale_Srv_Add(&sdata); system("echo '\n\t\t\t\033[36m售票成功!\t系统正在出票, 请稍候....\033[0m\n' | pv -qL 15"); sleep(1); Ticket_UI_Print(td->data.id); printf("\n\n\t\t\t\033[33m按任意键继续....\033[0m\n"); getchar(); t=1; break; }else{ printf("\n\t\t\t\033[31m售票失败! 请稍候重试! \033[0m\n\t\t\t\033[33m按任意键返回....\033[0m\n"); getchar(); t=0; break; } }else{ printf("\n\t\t\t\033[31m该票已预留或售出!\033[0m\033[33m\n\t\t\t按任意键继续....\033[0m\n"); getchar(); t=1; break; } } } if(!t){ printf("\n\t\t\t\033[31m未找到该座位!\033[0m\033[33m\n\t\t\t按任意键继续....\033[0m\n"); getchar(); } paging.totalRecords = Ticket_Srv_FetchBySchID(tickList, sch->id); List_Paging(tickList, paging, ticket_node_t); } break; case 'b': case 'B': { seat_node_t *p; int row,column,t=0; printf("\n\t\t\t\033[33m请输入座位的行号: \033[0m"); while(1){ if(scanf("%d", &(row))==1){ cl_stdin(); break;} else {cl_stdin(); printf("\n\t\t\t\033[31m输入有误,请重新输入: \033[0m");} } printf("\n\t\t\t\033[33m请输入座位的列号: \033[0m"); while(1){ if(scanf("%d", &(column))==1){ cl_stdin(); break;} else {cl_stdin(); printf("\n\t\t\t\033[31m输入有误,请重新输入: \033[0m");} } List_ForEach(seatList, p){ if(row==p->data.row && column==p->data.column){ ticket_node_t *td; td= Ticket_Srv_FindBySeatID(tickList, p->data.id); if(QueryTicket(td->data.id)==1){ ticket_t data; data=td->data; data.status=TICKET_RESV; if(Ticket_Srv_Modify(&data) ){ printf("\n\t\t\t\033[33m预留票成功!\033[0m\n"); printf("\n\t\t\t\033[34m按任意键继续....\033[0m\n"); getchar(); t=1; break; }else{ printf("\n\t\t\t\033[31m预留票失败! 请稍候重试! \033[0m\n\t\t\t\033[33m按任意键返回....\033[0m\n"); getchar(); t=0; break; } }else{ printf("\n\t\t\t\033[31m该票已预留或售出!\033[0m\033[33m\n\t\t\t按任意键继续....\033[0m\n"); getchar(); t=1; break; } } } if(!t){ printf("\n\t\t\t\033[31m未找到该座位!\033[0m\033[33m\n\t\t\t按任意键继续....\033[0m\n"); getchar(); } paging.totalRecords = Ticket_Srv_FetchBySchID(tickList, sch->id); List_Paging(tickList, paging, ticket_node_t); } break; } } while (choice != 'r' && choice != 'R');
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; }
//根据计划ID显示所有票 void Ticket_UI_ListBySch(const schedule_t *sch, ticket_list_t tickList, seat_list_t seatList) { int i,id; char choice; ticket_node_t *pos; Pagination_t paging; paging.offset = 0; paging.pageSize = TICKET_PAGE_SIZE; //演出计划schedule_id paging.totalRecords=Ticket_Srv_FetchBySchID(tickList, sch->id); Paging_Locate_FirstPage(tickList, paging); do { system("clear"); printf("\t\t\t=====================================================================================\n\n"); printf( "\t\t\t*************************************票******************************************\n\n"); printf("\t\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s","票ID","演出计划ID","座位ID","票价","票状态"); printf("\n\t\t\t---------------------------------------------------------------------------------------\n"); Paging_ViewPage_ForEach(tickList, paging, ticket_node_t, pos, i){ printf("\t\t\t%2d\t\t%5d\t\t %8d\t%10d\t\t", pos->data.id, pos->data.schedule_id, pos->data.seat_id, pos->data.price); switch(pos->data.status){ case TICKET_AVL: printf("%5s\n","待售"); break; case TICKET_SOLD: printf("%5s\n","已售"); break; case TICKET_RESV: printf("%5s\n","预留"); break; } } printf("\n\t\t\t------- 总数:%2d ---------------------------------------------------- 页数 %2d/%2d ----\n", paging.totalRecords, Pageing_CurPage(paging), Pageing_TotalPages(paging)); printf("\t\t\t***************************************************************************************\n"); printf("\n\t\t\t===================================================================================\n\n"); printf("\n\t\t\t=========[P]上一页====================================[N]下一页=====================\n"); printf("\n\t\t\t=========[A]售票==============[B]预留票===============[R]返回=====================\n"); printf("\n\t\t\t===================================================================================\n"); printf("\t\t\t请选择:"); choice=l_getc(); switch(choice) { case 'p': case 'P': if (!Pageing_IsFirstPage(paging)) { Paging_Locate_OffsetPage(tickList, paging, -1, ticket_node_t); } break; case 'n': case 'N': if (!Pageing_IsLastPage(paging)) { Paging_Locate_OffsetPage(tickList, paging, 1, ticket_node_t); } break; case 'a': case 'A': { seat_node_t *p; int row,column,t=0; printf("\t\t\t请输入座位的行号:"); while(1){ if(scanf("%d", &(row))==1){ cl_stdin(); break;} else {cl_stdin(); printf("\t\t\t输入有误,请重新输入:");} } printf("\t\t\t请输入座位的列号:"); while(1){ if(scanf("%d", &(column))==1){ cl_stdin(); break;} else {cl_stdin(); printf("\t\t\t输入有误,请重新输入:");} } List_ForEach(seatList, p){ if(row==p->data.row && column==p->data.column){ ticket_node_t *td; td= Ticket_Srv_FindBySeatID(tickList, p->data.id); if(QueryTicket(td->data.id)==1){ if(UpdateTicket(td->data.id) ){ sale_t sdata; sdata.id=EntKey_Srv_CompNewKey("sale"); sdata.user_id=gl_CurUser.id; sdata.ticket_id=td->data.id; sdata.date=DateNow(); sdata.time=TimeNow(); sdata.value=td->data.price; sdata.type=SALE_SELL; Sale_Srv_Add(&sdata); printf("\n\t\t\t售票成功!\t系统正在出票,请稍候。。。\n"); sleep(1); Ticket_UI_Print(td->data.id); printf("\n\n\t\t\t按任意键继续!。。。\n"); getchar(); t=1; break; }else{ printf("\n\t\t\t售票失败!\t请稍候重试。\n\t\t\t按任意键返回。。。\n"); getchar(); t=1; break; } }else{ printf("\n\t\t\t该票已预留或售出!\t请重新输入。\n\t\t\t按任意键继续!。。。\n"); getchar(); break; } } } if(!t){ printf("\n\t\t\t未找到该座位!\t请重新输入。\n\t\t\t按任意键继续!。。。\n"); getchar(); } paging.totalRecords = Ticket_Srv_FetchBySchID(tickList, sch->id); List_Paging(tickList, paging, ticket_node_t); } break; case 'b': case 'B': { seat_node_t *p; int row,column,t=0; printf("\t\t\t请输入座位的行号:"); while(1){ if(scanf("%d", &(row))==1){ cl_stdin(); break;} else {cl_stdin(); printf("\t\t\t输入有误,请重新输入:");} } printf("\t\t\t请输入座位的列号:"); while(1){ if(scanf("%d", &(column))==1){ cl_stdin(); break;} else {cl_stdin(); printf("\t\t\t输入有误,请重新输入:");} } List_ForEach(seatList, p){ if(row==p->data.row && column==p->data.column){ ticket_node_t *td; td= Ticket_Srv_FindBySeatID(tickList, p->data.id); if(QueryTicket(td->data.id)==1){ ticket_t data; data=td->data; data.status=TICKET_RESV; if(Ticket_Srv_Modify(&data) ){ printf("\n\t\t\t预留票成功!\n"); printf("\n\n\t\t\t按任意键继续!。。。\n"); getchar(); t=1; break; }else{ printf("\n\t\t\t预留票失败!\t请稍候重试。\n\t\t\t按任意键返回。。。\n"); getchar(); t=1; break; } }else{ printf("\n\t\t\t该票已预留或售出!\t请重新输入。\n\t\t\t按任意键继续!。。。\n"); getchar(); break; } } } if(!t){ printf("\n\t\t\t未找到该座位!\t请重新输入。\n\t\t\t按任意键继续!。。。\n"); getchar(); } paging.totalRecords = Ticket_Srv_FetchBySchID(tickList, sch->id); List_Paging(tickList, paging, ticket_node_t); } break; } } while (choice != 'r' && choice != 'R');