int baseprint(st_info *buf_head,char *data_name) { unsigned int i = 0,j = 0,check; st_info *p1 = buf_head->next; system("cls"); print_tips(" 浏览学生体检信息 "); printf(menu_print); if(p1 == NULL) { printf("\n\n\n Error!-----没有数据可以显示!请录入!按任意键返回"); fflush(stdin); getch(); return 0; } while(p1) { ++j; p1 = p1->next; } p1 = buf_head->next; while(p1!= NULL) { ++i; printf("\n"); printf(STINFO); p1 = p1->next; if(i % flag_page == 0 || i == j) { print_star(); if(i == j) printf("\n**************************** 输出完毕 ***********************"); printf("\n 1.按身高升序 2.按体重升序 3.按肺活量升序 4.按学号升序"); printf("\n 5.按身高降序 6.按体重降序 7.按肺活量降序 8.按学号降序"); printf("\n **共%u页***************ESC键:返回菜单********字母键:翻页***********第%u页****\r",j/flag_page + 1,(i/flag_page + (( i==j )?1:0))); fflush(stdin); check = getch(); if(check <= 56 && check >= 49) { sort_info(buf_head,data_name,check - 48); getch(); p1 = buf_head->next; } switch (check) { case 0:math_info(buf_head);break; case 27:return 1; default:if(i == j) return 1; break; } system("cls"); print_tips(" 浏览学生体检信息 "); printf(menu_print); } } getch(); return 1; }
void system_quit(st_info *buf_head,char *data_name) { char check; system("cls"); printf("\n"); print_tips(" 退出系统 "); print_star(); if(flag_save == TURE) printf("\n\n OK!-----可以安全退出!"); else { printf("\n\n Warning!-----部分修改并未保存到数据文件!是否继续退出?(确认退出请输入Y)"); fflush(stdin); check = getch(); if(check != 'Y' || check != 'y') { save_file(buf_head,data_name,N); } } printf("\n\n OK!-----系统将在三秒后自动退出!感谢您的使用!"); printf("\n\n Tips:-----您对本程序有任何建议与意见都可发送邮件到[email protected]!"); print_star(); printf("\n\n\n\n \t\t\t 学生体检信息管理系统V1.0"); printf("\n\n \t\t\t 2014.6.7"); printf("\n\n \t\t\t 作者:任强\n"); _sleep(3000); exit(1); }
void system_set(char *data_name) { char tmp; unsigned int flag_window = 0; while(1) { system("cls"); print_tips(">>> 设置 <<<"); printf("\n\n\n\n"); printf("\n\t\t┏━━━━━━━━━━━━━━━━━━━━━┓"); printf("\n\t\t┃ ┃"); printf("\n\t\t┃ 1.主菜单颜色闪动 %3s ┃",flag_color ==TURE ?"开":"关"); printf("\n\t\t┃ ┃"); printf("\n\t\t┃ 2.信息单页显示行数 %2u ┃",flag_page); printf("\n\t\t┃ ┃"); printf("\n\t\t┃ 数字键选择菜单 ESC返回 ┃"); printf("\n\t\t┗━━━━━━━━━━━━━━━━━━━━━┛"); tmp = getch(); if(tmp == 27) break; switch(tmp) { case '1':flag_color += 1; flag_color %= 2; break; case '2':flag_page -= 1; if(flag_page == 4) flag_page = 10; break; default:break; } } }
int sort_print(sort_link *sort_head,char *data_name) { sort_link *r1 = sort_head,*r2 = NULL; st_info *p1 = NULL; unsigned int i = 0,j = 0; char check; system("cls"); print_tips(" 学生体检信息排序 "); printf(menu_print); while(r1) { ++j; r1 = r1->next; } for (r1 = sort_head->next;r1;r1 = r1->next) { ++i; p1 = r1->sort_point; printf("\n"); printf(STINFO); if(i % flag_page == 0) { print_star(); printf(" Tips:-----数据过多,当前页面可能无法完全显示,请按任意键翻页!"); printf(" \n 共%u页 按S键:更新排序到文件 按ESC键:返回 第%7u 页",j/flag_page + 1,i/flag_page); printf("\r"); if((check = getch()) == 27) { sort_free(sort_head); return 0; } if (check == 's' || check == 'S') { system("cls"); save_file(sort_head,data_name,T_T); getch(); } system("cls"); print_tips(" 学生体检信息排序 "); printf(menu_print); } } printf("\n************************** 输出完毕 ***********************"); sort_free(sort_head); return 1; }
int math_info(st_info *buf_head) { st_info *p1 = NULL,*p2 = NULL; long double aver_weight = 0,aver_height = 0,aver_Lungvol = 0; long double sum_weight = 0,sum_height = 0,sum_Lungvol = 0; unsigned int i = 0,sex_num = 0; system("cls"); print_tips(" 数据分析 "); if(buf_head->next == NULL) { printf("\n\n Error!-----没有数据可供处理!请录入!"); getch(); return 0; } p1 = buf_head->next; while (p1) { ++i; if(p1->sex == 1) sex_num += 1; sum_weight+=p1->weight; sum_height+=p1->height; sum_Lungvol+=p1->Lung_vol; p1 = p1->next; } aver_weight = sum_weight/i; aver_height = sum_height/i; aver_Lungvol = sum_Lungvol/i; printf("\n\n\n\n 【人数】 男:%u人 女:%u人 总人数:%10u人",sex_num,i-sex_num,i); printf("\n\n\n 【平均值】"); printf("\n\n\t\t -->身高: %.2Lfcm",aver_height); printf("\n\n\t\t -->体重: %.2Lfkg",aver_weight); printf("\n\n\t\t -->肺活量: %.2Lfml",aver_Lungvol); printf("\n\n Tips:-----按任意键返回!"); getch(); return 1; }
void main_menu(char *local_name,char *local_password,char *data_name,st_info *buf_head) { unsigned int switcher,n = 0,swap = 0; st_info *p1=NULL; do { char system_input[20]; system("cls"); sprintf(system_input,"color 0%c",'a'+ (n == 100?n=0:n) % 5); ++n; system(system_input); print_tips("学生体检信息管理系统"); if(flag_login == 1) printf("\n\n\n\nDear admin, Welcome! \n\n\n\n"); else printf("\n\nDear anonymous,Welcome! \n\nTips:Please Login In.\n\n\n\n"); printf("\n\t\t ┎──────────────────┒"); printf("\n\t\t ┃ ┃"); printf("\n\t\t ┃ 1.系统帮助 2.系统设置 ┃"); printf("\n\t\t ┃ ┃"); if(flag_login == 1) { printf("\n\t\t ┃ 3.浏览信息 4.查找信息 ┃"); printf("\n\t\t ┃ ┃"); printf("\n\t\t ┃ 5.统计分析 6.录入数据 ┃"); printf("\n\t\t ┃ ┃"); printf("\n\t\t ┃ 7.查找删除 8.查找修改 ┃"); printf("\n\t\t ┃ ┃"); } printf("\n\t\t ┃ ┃"); if(flag_login == FALSE) printf("\n\t\t ┃ 3.登陆系统 ┃"); printf("\n\t\t ┃ ┃"); printf("\n\t\t ┃*按相应数字进入子菜单 ESC:退出系统 ┃"); printf("\n\t\t ┖──────────────────┚\n"); printf("\n-----Waiting..."); if(swap == 0) _sleep(1000); // flushall(); }while(!(swap = kbhit()) && flag_color != 0); switcher = getch(); fflush(stdin); switch(switcher) { case '1':system_help();break; case '2':system_set(data_name);break; case '3':if(flag_login == TURE) baseprint(buf_head,data_name); //输出所有信息 else { system("cls"); flag_login = login(local_name,local_password); if (flag_login == TURE) { system("mode con:cols=80 lines=30"); system_init(buf_head,data_name); } system("mode con:cols=80 lines=30"); } break; case '4':if(flag_login == TURE) { find(buf_head,0);fflush(stdin); getch(); } break; //只查找,不修改或者删除 case '5':if(flag_login == TURE); math_info(buf_head); break; case '6':if(flag_login == TURE) st_linklist(buf_head,data_name); fflush(stdin); getch(); break; case '7':if(flag_login == TURE) { if(find(buf_head,1) == 1) save_file(buf_head,data_name,N); fflush(stdin); getch(); } //查找后可删除数据 break; case '8':if(flag_login == TURE) { if(find(buf_head,2) == 1) //查找后可修改数据 save_file(buf_head,data_name,N); fflush(stdin); getch(); } break; case 27:system_quit(buf_head,data_name);break; default:break; } }
int find(st_info *buf_head,const int flag_num) { char check[21]; st_info *p1 = buf_head,*p2 = NULL,*p3 = NULL; find_link *q1,*q2,*find_head=NULL; unsigned int flag_find = 0; system("cls"); switch (flag_num) { case 0:print_tips(" 查询学生体检信息 ");break; case 2:print_tips(" 修改学生体检信息 ");break; case 1:print_tips(" 删除学生体检信息 ");break; } if(buf_head->next == NULL) { printf("\n Error!-----没有数据可供查询!请录入!"); return 0; } printf("\n\n\n\n Tips:-----请输入姓名或者学号:"); fflush(stdin); scanf("%20s",check); print_star(); printf(menu_print); while (p1->next) { p2 = p1; p1 = p1->next; if(strcmp(p1->name,check) == 0 || strcmp(p1->num,check) == 0) { ++flag_find; if(flag_find == 1) { find_head = (find_link *)malloc(M); q1 = (find_link *)malloc(M); find_head->next = q1; } q1->buf_find = p2; q2 = q1; q1 = (find_link *)malloc(M); q2->next = q1; } } if(flag_find != 0) { free(q1); q2->next = NULL; } printf("\n\n"); if(flag_find > 10) { free_find(find_head); printf("\n\n Warning!-----系统检测到您的查询结果已超过10个,数据文件可能存在问题!请检查!"); return 0; } find_print(find_head,flag_find); if(find_head == NULL) { return 0; } switch (flag_num) { case 0:free_find(find_head);break; case 1:del_info(find_head,flag_find);free_find(find_head);break; case 2:change_info(find_head,flag_find);free_find(find_head);break; } return 1; }
// Detailed view of the selected hotel void screen_hotel_select(HOTEL hotel) { while (1) { if (strcmp(hotel.name, "") == 0) return; system("cls"); print_title_bar(); setcolor(GREY); printf("\n"); printf(" +----------------------------------------------------------------+\n"); printf(" | |\n"); printf(" | |\n"); printf(" | |\n"); printf(" | |\n"); printf(" | |\n"); printf(" +----------------------------------------------------------------+\n"); printf(" | |\n"); printf(" | | |\n"); printf(" | | from... |\n"); printf(" | | |\n"); printf(" | | |\n"); printf(" | | |\n"); printf(" | | per night |\n"); printf(" | | |\n"); printf(" | | |\n"); printf(" | | |\n"); printf(" | | |\n"); printf(" | |\n"); printf(" +----------------------------------------------------------------+\n"); gotoxy(10, 8); setcolor(WHITE); printf(hotel.name); gotoxy(10, 10); setcolor(GREY); printf(hotel.location); gotoxy(37, 8); setcolor(YELLOW); printf(stars[hotel.star]); gotoxy(37, 10); printf("%d star", hotel.star); if (hotel.star > 1) printf("s"); // 1 star, 2 stars... gotoxy(54, 8); setcolor(RED); printf("%.1f ", hotel.rating); printf(heart[(int)hotel.rating]); gotoxy(51, 10); setcolor(PURPLE); printf(" %5d reviews", hotel.hits); setcolor(WHITE); gotoxy(52, 17); printf(" RM %3d.00", hotel.single_price); setcolor(GREEN); gotoxy(50, 22); printf(" Press [Enter] "); gotoxy(50, 23); printf(" to proceed >>"); print_tips("Press [Backspace] to cancel"); c = getch(); switch (c) { case 'l': screen_login(); break; case ENTER: screen_booking_hotel(); break; case BACKSPACE: return; } } }
void screen_find_hotel() { int pages = 0, curnt_page = 0; while (1) { // Search for hotels based on user options // 'found' is the number of hotel found int found = process_for_result(); pages = (found - 1) / MAX_LIST + 1; system("cls"); print_title_bar(); print_search_box(); gotoxy(19, 6); printf("* "); printf("%s", userinput); if (found != 0) { // Hotels found, show them as lists setcolor(MGREY); gotoxy(6, 9); printf("Search resullts... "); setcolor(WHITE); printf("%d found", found); printf(" "); printf("Sort by: "); setcolor(AQUA); // Current sort options switch (sortby) { case SORT_NONE: printf("----"); break; case SORT_NAME: printf("Name"); break; case SORT_STAR: printf("Star"); break; case SORT_RATING: printf("Rating"); break; case SORT_POPS: printf("Reviews"); break; case SORT_PRICE: printf("Price"); break; } gotoxy(6, 12); setcolor(MGREY); printf(" Name Star Rating Price\n"); printf(" -----------------------------------------------------------------------\n"); HOTEL hotel; // Only pprint a part of lists for (i = 0; i < MAX_LIST; i++) { hotel = hotel_search_results[i + (curnt_page * MAX_LIST)]; if (strcmp(hotel.name, "") == 0) break; setcolor(GREY); printf("\n %2d", i + 1); setcolor(0x0f); printf(" %-15.15s", hotel.name); setcolor(0x0e); printf(" %s", stars[hotel.star]); setcolor(0x0c); printf(" %s", heart[(int)hotel.rating]); setcolor(0x0f); printf(" RM %4d.00\n", hotel.single_price); } gotoxy(0, 23); // Prev/ Next button // Only appear when needed if (pages > 1) { setcolor(MGREY); if (curnt_page > 0) printf("\n\n [P] Previous "); else printf("\n\n "); printf(" (%d/%d) ", curnt_page + 1, pages); for (i = 0; i < pages; i++) { if (i == curnt_page) { setcolor(WHITE); printf("*"); } else { setcolor(MGREY); printf("-"); } } if (curnt_page < pages - 1) printf(" [N] Next"); else printf(" "); } print_tips("Press a number to select the hotel, [F] to filter and [S] to sort"); } else { // Hotels not found, don't show empty lists // Instead, show a friendly warning setcolor(GREY); gotoxy(0, 14); printf(" ______ No hotel found. \n"); printf(" | _ _ | Too bad... \n"); printf(" | | \n"); printf(" | __ | \n"); printf(" \\______/ \n"); print_tips("Press [Enter] to search again"); } // Detect next keypress c = getch(); switch (c) { case '1': case '2': case '3': case '4': case '5': // Go to the corresponding hotel detail's screen screen_hotel_select(hotel_search_results[c - '0' - 1 + curnt_page * MAX_LIST]); break; case 'p': // Prev button. Only works when not on the first page if (curnt_page > 0) curnt_page--; break; case 'n': // Next button. Only works when not on the last page if (curnt_page < pages - 1) curnt_page++; break; case 'l': screen_login(); break; case 's': // Sort: toggle between available sorting mode // None -> Name -> Star -> Rating -> Pops -> Price sortby = ++sortby % 6; break; case 'f': screen_filter(); case ENTER: // Reset sorting to NONE, and page to 1 sortby = SORT_NONE; curnt_page = 0; pages = 1; show_searching(); break; case BACKSPACE: return; } } }
void screen_home() { while (1) { system("cls"); print_title_bar(); print_search_box(); setcolor(WHITE); gotoxy(0, 13); printf (" _ _ \n"); printf (" | |__| | \n"); printf (" | __ | \n"); printf (" | | | | \n"); printf (" |_| |_| \n"); gotoxy(19, 6); printf("%c Press [Enter] to search", 27); print_tips("[H] Help [A] About"); setcolor(GREY); gotoxy(47, 28); printf("%30s", "(C) Syahrulnizam Syaz. Inc"); // Wait for next keyboard press c = getch(); switch (c) { case 'l': /* Login */ system("cls"); screen_login(); break; case ENTER: /* Find hotel */ show_searching(); screen_find_hotel(); break; case 'h': /* Help */ system("cls"); screen_help(); break; case 'a': /* About */ system("cls"); screen_about(); break; } } system("cls"); system("pause"); }