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;
}
Пример #8
0
// 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;
		}
	}

}
Пример #9
0
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;
		}

	}
}
Пример #10
0
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");
}