学生体测信息管理系统

废话不多说,我们直接进入正题。
(C语言)
我们要完成一个学生体测信息管理系统,实现以下功能:
1、学生数据录入
2、学生信息修改
3、学生信息删除
4、学生成绩查询
5、学生不及格项目查询
6、各项目通过率汇总

UI界面

首先让我们完成UI界面

#include<stdio.h>

int choice;//定义全局变量choice,方便函数调用,用于储存用户所选择的功能

void UI()
{
	printf("\t ------------------------------------\n");
	printf("\t|        学生体测信息管理系统        |\n");
	printf("\t|          0.退出本系统              |\n");
	printf("\t|          1.输入学生数据            |\n");
	printf("\t|          2.修改学生数据            |\n");
	printf("\t|          3.删除学生数据            |\n");
	printf("\t|          4.查询学生成绩            |\n");
	printf("\t|          5.查询不合格科目          |\n");
	printf("\t|          6.查询体测合格率          |\n");
	printf("\t ------------------------------------\n");
	printf("请选择功能:");
	scanf("%d", &choice);
	printf("\n");
}

退出系统

再来写一下这个最简单的操作吧!
这个就没必要写单独的函数了,直接放在主函数中

printf("感谢使用本系统,祝您生活愉快!");
return 0;

输入学生数据

让我们思考一下该如何储存学生数据呢?
没错我们可以使用结构体来对学生数据进行储存,
查阅了相关资料C语言中汉字其实是可以用字符串存储的,每个汉字占用两个字节。。。。

struct Student
{
	char name[20];//姓名
	char stuNum[20];//学号
	char department[20];//院系
	int sex;//性别

	float height;//身高
	float weight;//体重
	float BMI; //体重指数
	float VC;//肺活量
	float jump;//跳远
	float runShort;//短跑
	float runLong;//长跑
	int count;//引体向上,仰卧起坐个数

	//记录成绩
	int BMI_score;
	int VC_score;
	int jump_score;
	int runShort_score;
	int runLong_score;
	int count_score;
};

接着来完成数据录入操作
简单的完成当然很容易,但我们如何让我们的程序更加完美呢?
我们便要完成判断输入数据是否合法。(防止有些人喜欢乱输使程序出错)
另外我们如果只需读取单个数据,用户却输入了一堆,
经过测试与查阅相关资料,我们知道这些多余的数据并不会消除,
而是会保存在输入流中进而被下一个scanf读取,
这时我们便可以使用while (getchar() != '\n');巧妙的完成对输入流的清空,
所以我们在每一次scanf函数后重复一遍重复此操作

#include<string.h>

int i, j;//用于循环
int flag;//用于情况标记
int choice;//记录功能选择
struct Student students[100];//最大学生量可以自定义
int nowSum = 0;//目前已存学生数
int nowSum_index;//用于

void InputData()
{
	int choice1 = -1;
	int flag;//用于情况标记
	printf("是否开始录入新的学生数据?\n");
	printf("<1:开始录入,0:取消录入> :");
	scanf("%d", &choice1);
	while (getchar() != '\n');
	while (1)
	{
		if (choice1 == 1)//录入开始
		{
			choice1 = -1;
			printf("姓名:");//录入姓名
			scanf("%s", students[nowSum].name);
			while (getchar() != '\n');

			printf("院系:");//录入院系
			scanf("%s", students[nowSum].department);
			while (getchar() != '\n');

			printf("学号:");//录入学号
			while (1)
			{
				flag = 1;
				scanf("%s", students[nowSum].stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(students[nowSum].stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (students[nowSum].stuNum[0] > 'Z' || students[nowSum].stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (students[nowSum].stuNum[i] > '9' || students[nowSum].stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}	
				//判断学号是否输入重复
				if (flag != 0)
				{
					for(i = 0;i<nowSum;i++)
						if (strcmp(students[nowSum].stuNum, students[i].stuNum) == 0)
						{
							printf("学号重复,请重新输入:");
							flag = 0;
							break;
						}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else//数据正确,完成输入
					break;
			}

			printf("性别(男1,女2):");//录入性别
			while (1)
			{
				students[nowSum].sex = -1;
				scanf("%d", &students[nowSum].sex);
				while (getchar() != '\n');
				if (students[nowSum].sex != 1 && students[nowSum].sex != 2)
					printf("怎么能乱输呢,请重新输入:");
				else
					break;
			}
			
			printf("身高(m):");//录入身高
			while (1)
			{
				students[nowSum].height = -1.0f;
				scanf("%f", &students[nowSum].height);
				while (getchar() != '\n');
				if (students[nowSum].height > 2.5f  || students[nowSum].height < 1.0f)
					printf("你确定有这么高?请重新输入:");
				else
					break;
			}

			printf("体重(kg):");//录入体重
			while (1)
			{
				students[nowSum].weight = -1.0f;
				scanf("%f", &students[nowSum].weight);
				while (getchar() != '\n');
				if (students[nowSum].weight > 200.0f || students[nowSum].weight < 20.0f)
					printf("你确定有这么重?请重新输入:");
				else
					break;
			}

			printf("肺活量(ml):");//录入肺活量
			while (1)
			{
				students[nowSum].VC = -1.0f;
				scanf("%f", &students[nowSum].VC);
				while (getchar() != '\n');
				if (students[nowSum].VC > 10000.0f || students[nowSum].VC < 300.0f)
					printf("输错了吧?请重新输入:");
				else
					break;
			}

			printf("跳远(m):");//录入跳远距离
			while (1)
			{
				students[nowSum].jump = -1.0f;
				scanf("%f", &students[nowSum].jump);
				while (getchar() != '\n');
				if (students[nowSum].jump > 10.0f || students[nowSum].jump < 1.0f)
					printf("输错了吧?请重新输入:");
				else
					break;
			}

			printf("50m短跑(s):");//录入短跑时间
			while (1)
			{
				students[nowSum].runShort = -1.0f;
				scanf("%f", &students[nowSum].runShort);
				while (getchar() != '\n');
				if (students[nowSum].runShort > 50.0f || students[nowSum].runShort < 0.5f)
					printf("怎么能乱输呢?请重新输入:");
				else
					break;
			}

			printf("1000m/800m短跑(s):");//录入短跑时间
			while (1)
			{
				students[nowSum].runLong = -1.0f;
				scanf("%f", &students[nowSum].runLong);
				while (getchar() != '\n');
				if (students[nowSum].runLong > 800.0f || students[nowSum].runLong < 100.0f)
					printf("怎么能乱输呢?请重新输入:");
				else
					break;
			}

			printf("引体向上/仰卧起坐个数:");//录入引体向上/仰卧起坐个数
			while (1)
			{
				students[nowSum].count = -1;
				scanf("%d", &students[nowSum].count);
				while (getchar() != '\n');
				if (students[nowSum].count > 120 || students[nowSum].count < 0)
					printf("数据错误?请重新输入:");
				else
					break;
			}
			printf("录入完毕,是否录入下一位(是:1,否:0)");
			scanf("%d", &choice1);
			printf("\n");
			while (getchar() != '\n');
			nowSum++;
		}

		else if (choice1 == 0)//取消录入
			break;
		else//选择错误
		{
			printf("数据错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}			
	}	
}

修改学生数据

参照上面的代码,很容易就能写出来

void ChangeData()
{
	char stuNum[20];
	int flag;
	int choice1 =1;
	int flag1;
	int flag2;
	while (1)
	{
		if (choice1 == 1)
		{
			choice1 = -1;
			printf("输入你要修改的学生学号:");
			while (1)//判断学号是否合法
			{
				flag = 1;

				scanf("%s", stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (stuNum[0] > 'Z' || stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (stuNum[i] > '9' || stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else //数据正确,完成输入
					break;
			}

			flag1 = 0;
			for (i = 0; i < nowSum; i++)//学生找查
				if (strcmp(stuNum, students[i].stuNum) != 0)
				{
					flag1 = 0;
				}
				else//找到直接跳出循环
				{
					flag1 = 1;
					nowSum_index = i;						
					break;
				}
			if (flag1 == 0)
			{
				printf("查无此人,是否重新找查?(是:1,否:0)");
				scanf("%d", &choice1);
				printf("\n");
				while (getchar() != '\n');
				continue;
			}

			//找到后才会执行
			printf("选择你要修改的项:\n1.姓名  2.性别  3.院系  4.身高  5.体重\n ");
			printf("6.肺活量  7.跳远  8.短跑  9.长跑  10.引体向上or仰卧起坐\n ");
			flag = 1;
			while (1)
			{
				flag2 = -1;
				flag = 1;
				scanf("%d", &flag2);
				while (getchar() != '\n');
				switch (flag2)
				{
					
				case 1:
					printf("姓名:");//录入姓名
					scanf("%s", students[nowSum_index].name);
					while (getchar() != '\n');
					break;
				case 2:
					printf("性别(男1,女2):");//录入性别
					while (1)
					{
						students[nowSum_index].sex = -1;
						scanf("%d", &students[nowSum_index].sex);
						while (getchar() != '\n');
						if (students[nowSum_index].sex != 1 && students[nowSum_index].sex != 2)
							printf("怎么能乱输呢,请重新输入:");
						else
							break;
					}
					break;
				case 3:
					printf("院系:");//录入院系
					scanf("%s", students[nowSum_index].department);
					while (getchar() != '\n');
					break;
				case 4:
					printf("身高(m):");//录入身高
					while (1)
					{
						students[nowSum_index].height = -1.0f;
						scanf("%f", &students[nowSum_index].height);
						while (getchar() != '\n');
						if (students[nowSum_index].height > 2.5f || students[nowSum_index].height < 1.0f)
							printf("你确定有这么高?请重新输入:");
						else
							break;
					}
					break;
				case 5:
					printf("体重(kg):");//录入体重
					while (1)
					{
						students[nowSum_index].weight = -1.0f;
						scanf("%f", &students[nowSum_index].weight);
						while (getchar() != '\n');
						if (students[nowSum_index].weight > 200.0f || students[nowSum_index].weight < 20.0f)
							printf("你确定有这么重?请重新输入:");
						else
							break;
					}
					break;
				case 6:
					printf("肺活量(ml):");//录入肺活量
					while (1)
					{
						students[nowSum_index].VC = -1.0f;
						scanf("%f", &students[nowSum_index].VC);
						while (getchar() != '\n');
						if (students[nowSum_index].VC > 10000.0f || students[nowSum_index].VC < 300.0f)
							printf("输错了吧?请重新输入:");
						else
							break;
					}
					break;
				case 7:
					printf("跳远(m):");//录入跳远距离
					while (1)
					{
						students[nowSum_index].jump = -1.0f;
						scanf("%f", &students[nowSum_index].jump);
						while (getchar() != '\n');
						if (students[nowSum_index].jump > 10.0f || students[nowSum_index].jump < 1.0f)
							printf("输错了吧?请重新输入:");
						else
							break;
					}
					break;
				case 8:
					printf("50m短跑(s):");//录入短跑时间
					while (1)
					{
						students[nowSum_index].runShort = -1.0f;
						scanf("%f", &students[nowSum_index].runShort);
						while (getchar() != '\n');
						if (students[nowSum_index].runShort > 50.0f || students[nowSum_index].runShort < 0.5f)
							printf("怎么能乱输呢?请重新输入:");
						else
							break;
					}
					break;
				case 9:
					printf("1000m/800m短跑(s):");//录入短跑时间
					while (1)
					{
						students[nowSum_index].runLong = -1.0f;
						scanf("%f", &students[nowSum_index].runLong);
						while (getchar() != '\n');
						if (students[nowSum_index].runLong > 800.0f || students[nowSum_index].runLong < 100.0f)
							printf("怎么能乱输呢?请重新输入:");
						else
							break;
					}
					break;
				case 10:
					printf("引体向上/仰卧起坐个数:");//录入引体向上/仰卧起坐个数
					while (1)
					{
						students[nowSum_index].count = -1;
						scanf("%d", &students[nowSum_index].count);
						while (getchar() != '\n');
						if (students[nowSum_index].count > 120 || students[nowSum_index].count < 0)
							printf("数据错误?请重新输入:");
						else
							break;
					}
					break;
				default:
					printf("选择错误,请重新输入:");
					flag = 0;
				}
				if (flag == 0)
					continue;
				else
				{
					printf("修改完毕,是否继续修改本学生?(是:1,否:0)");
					while (1)
					{
						flag = -1;
						scanf("%d", &flag);
						while (getchar() != '\n');
						if (flag != 1 && flag != 0)
							printf("选择错误,重新选择:");
						else
							break;
					}						
				}
				if (flag == 1)
				{
					printf("选择你要修改的项:\n1.姓名  2.性别  3.院系  4.身高  5.体重\n ");
					printf("6.肺活量  7.跳远  8.短跑 9.长跑  10.引体向上or仰卧起走\n ");
					continue;
				}						
				else
					break;
			}
			
			printf("是否修改其他学生?(是:1,否:0)");
			scanf("%d", &choice1);
			while (getchar() != '\n');
			continue;
		}
		else if (choice1 == 0)//取消修改
			break;
		else//选择错误
		{
			printf("选择错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}
	}			
}

删除学生数据

写道这里才发现还是用链表来储存好啊,淦!链表还能动态拓容。。。
算了数组凑合用吧

void DeletData()
{
	int choice1 =1;
	int flag,flag1;
	char stuNum[20];
	while (1)
	{
		if (choice1 == 1)
		{
			choice1 == -1;
			printf("输入你要删除的学生学号:");
			while (1)//判断学号是否合法
			{
				flag = 1;

				scanf("%s", stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (stuNum[0] > 'Z' || stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (stuNum[i] > '9' || stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else //数据正确,完成输入
					break;
			}

			flag1 = 0;
			for (i = 0; i < nowSum; i++)//学生找查
				if (strcmp(stuNum, students[i].stuNum) != 0)
				{
					flag1 = 0;
				}
				else//找到直接跳出循环
				{
					flag1 = 1;
					nowSum_index = i;
					break;
				}
			if (flag1 == 0)
			{
				printf("查无此人,是否重新找查?(是:1,否:0)");
				scanf("%d", &choice1);
				while (getchar() != '\n');
				continue;
			}

			//找到后才会执行
			printf("是否确认删除?(是:1,否:0)");
			while (1)
			{
				flag = -1;
				scanf("%d", &flag);
				while (getchar() != '\n');
				if (flag != 1 && flag != 0)
					printf("选择错误,重新选择:");
				else
					break;
			}
			if (flag == 0)
			{
				printf("是否重新选择学生删除(是:1,否:0)");
				scanf("%d", &choice1);
				while (getchar() != '\n');
				continue;
			}
			else
			{
				for (i = nowSum_index + 1; i < nowSum; i++)
					students[nowSum_index] = students[i];
				nowSum--;
				printf("删除完毕是否继续删除(是:1,否:0)");
				scanf("%d", &choice1);
				while (getchar() != '\n');
				continue;
			}			
		}

		else if (choice1 == 0)//取消修改
			break;
		else//选择错误
		{
			printf("选择错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}
	}
}

查询学生成绩

想要知道学生成绩,我们便需要成绩的计算标准
我参考大学生体测标准写了一份

//进行成绩计算
	if (students[nowSum].sex == 1)
	{
		students[nowSum].BMI = students[nowSum].weight / students[nowSum].height / students[nowSum].height;
		if (students[nowSum].BMI > 17.8f && students[nowSum].BMI < 24.0f)
			students[nowSum].BMI_score = 100;
		else if (students[nowSum].BMI <= 17.8f || students[nowSum].BMI >= 24.0f && students[nowSum].BMI < 28.0f)
			students[nowSum].BMI_score = 80;
		else
			students[nowSum].BMI_score = 60;

		if (students[nowSum].VC >= 5040.0f)
			students[nowSum].VC_score = 100;
		else if (students[nowSum].VC >= 4800.0f)
			students[nowSum].VC_score = 90;
		else if (students[nowSum].VC >= 4300.0f)
			students[nowSum].VC_score = 80;
		else if (students[nowSum].VC >= 3700.0f)
			students[nowSum].VC_score = 70;
		else if (students[nowSum].VC >= 3100.0f)
			students[nowSum].VC_score = 60;
		else if (students[nowSum].VC >= 2940.0f)
			students[nowSum].VC_score = 50;
		else if (students[nowSum].VC >= 2780.0f)
			students[nowSum].VC_score = 40;
		else if (students[nowSum].VC >= 2620.0f)
			students[nowSum].VC_score = 30;
		else if (students[nowSum].VC >= 2460.0f)
			students[nowSum].VC_score = 20;
		else if (students[nowSum].VC >= 2300.0f)
			students[nowSum].VC_score = 10;
		else
			students[nowSum].VC_score = 0;

		if (students[nowSum].jump >= 2.73f)
			students[nowSum].jump_score = 100;
		else if (students[nowSum].jump >= 2.63f)
			students[nowSum].jump_score = 90;
		else if (students[nowSum].jump >= 2.48f)
			students[nowSum].jump_score = 80;
		else if (students[nowSum].jump >= 2.28f)
			students[nowSum].jump_score = 70;
		else if (students[nowSum].jump >= 2.08f)
			students[nowSum].jump_score = 60;
		else if (students[nowSum].jump >= 2.03f)
			students[nowSum].jump_score = 50;
		else if (students[nowSum].jump >= 1.98f)
			students[nowSum].jump_score = 40;
		else if (students[nowSum].jump >= 1.93f)
			students[nowSum].jump_score = 30;
		else if (students[nowSum].jump >= 1.88f)
			students[nowSum].jump_score = 20;
		else if (students[nowSum].jump >= 1.83f)
			students[nowSum].jump_score = 10;
		else
			students[nowSum].jump_score = 0;

		if (students[nowSum].runShort <= 6.7f)
			students[nowSum].runShort_score = 100;
		else if (students[nowSum].runShort <= 6.9f)
			students[nowSum].runShort_score = 90;
		else if (students[nowSum].runShort <= 7.1f)
			students[nowSum].runShort_score = 80;
		else if (students[nowSum].runShort <= 8.1f)
			students[nowSum].runShort_score = 70;
		else if (students[nowSum].runShort <= 9.1f)
			students[nowSum].runShort_score = 60;
		else if (students[nowSum].runShort <= 9.3f)
			students[nowSum].runShort_score = 50;
		else if (students[nowSum].runShort <= 9.5f)
			students[nowSum].runShort_score = 40;
		else if (students[nowSum].runShort <= 9.7f)
			students[nowSum].runShort_score = 30;
		else if (students[nowSum].runShort <= 9.9f)
			students[nowSum].runShort_score = 20;
		else if (students[nowSum].runShort <= 10.1f)
			students[nowSum].runShort_score = 10;
		else
			students[nowSum].runShort_score = 0;

		if (students[nowSum].runLong <= 197.0f)
			students[nowSum].runLong_score = 100;
		else if (students[nowSum].runLong <= 207.0f)
			students[nowSum].runLong_score = 90;
		else if (students[nowSum].runLong <= 222.2f)
			students[nowSum].runLong_score = 80;
		else if (students[nowSum].runLong <= 247.0f)
			students[nowSum].runLong_score = 70;
		else if (students[nowSum].runLong <= 272.0f)
			students[nowSum].runLong_score = 60;
		else if (students[nowSum].runLong <= 292.0f)
			students[nowSum].runLong_score = 50;
		else if (students[nowSum].runLong <= 312.0f)
			students[nowSum].runLong_score = 40;
		else if (students[nowSum].runLong <= 332.07f)
			students[nowSum].runLong_score = 30;
		else if (students[nowSum].runLong <= 352.0f)
			students[nowSum].runLong_score = 20;
		else if (students[nowSum].runLong <= 372.0f)
			students[nowSum].runLong_score = 10;
		else
			students[nowSum].runLong_score = 0;

		if (students[nowSum].count >= 19)
			students[nowSum].count_score = 100;
		else if (students[nowSum].count >= 17)
			students[nowSum].count_score = 90;
		else if (students[nowSum].count >= 15)
			students[nowSum].count_score = 80;
		else if (students[nowSum].count >= 12)
			students[nowSum].count_score = 70;
		else if (students[nowSum].count >= 10)
			students[nowSum].count_score = 60;
		else if (students[nowSum].count >= 9)
			students[nowSum].count_score = 50;
		else if (students[nowSum].count >= 8)
			students[nowSum].count_score = 40;
		else if (students[nowSum].count >= 7)
			students[nowSum].count_score = 30;
		else if (students[nowSum].count >= 6)
			students[nowSum].count_score = 20;
		else if (students[nowSum].count >= 5)
			students[nowSum].count_score = 10;
		else
			students[nowSum].count_score = 0;
	}
	else
	{
	students[nowSum].BMI = students[nowSum].weight / students[nowSum].height / students[nowSum].height;
	if (students[nowSum].BMI > 17.1f && students[nowSum].BMI < 24.0f)
		students[nowSum].BMI_score = 100;
	else if (students[nowSum].BMI <= 17.1f || students[nowSum].BMI >= 24.0f && students[nowSum].BMI < 28.0f)
		students[nowSum].BMI_score = 80;
	else
		students[nowSum].BMI_score = 60;

	if (students[nowSum].VC >= 3400.0f)
		students[nowSum].VC_score = 100;
	else if (students[nowSum].VC >= 3300.0f)
		students[nowSum].VC_score = 90;
	else if (students[nowSum].VC >= 3000.0f)
		students[nowSum].VC_score = 80;
	else if (students[nowSum].VC >= 2500.0f)
		students[nowSum].VC_score = 70;
	else if (students[nowSum].VC >= 2000.0f)
		students[nowSum].VC_score = 60;
	else if (students[nowSum].VC >= 1960.0f)
		students[nowSum].VC_score = 50;
	else if (students[nowSum].VC >= 1920.0f)
		students[nowSum].VC_score = 40;
	else if (students[nowSum].VC >= 1880.0f)
		students[nowSum].VC_score = 30;
	else if (students[nowSum].VC >= 1840.0f)
		students[nowSum].VC_score = 20;
	else if (students[nowSum].VC >= 1800.0f)
		students[nowSum].VC_score = 10;
	else
		students[nowSum].VC_score = 0;

	if (students[nowSum].jump >= 2.07f)
		students[nowSum].jump_score = 100;
	else if (students[nowSum].jump >= 1.95f)
		students[nowSum].jump_score = 90;
	else if (students[nowSum].jump >= 1.81f)
		students[nowSum].jump_score = 80;
	else if (students[nowSum].jump >= 1.66f)
		students[nowSum].jump_score = 70;
	else if (students[nowSum].jump >= 1.51f)
		students[nowSum].jump_score = 60;
	else if (students[nowSum].jump >= 1.46f)
		students[nowSum].jump_score = 50;
	else if (students[nowSum].jump >= 1.41f)
		students[nowSum].jump_score = 40;
	else if (students[nowSum].jump >= 1.36f)
		students[nowSum].jump_score = 30;
	else if (students[nowSum].jump >= 1.31f)
		students[nowSum].jump_score = 20;
	else if (students[nowSum].jump >= 1.26f)
		students[nowSum].jump_score = 10;
	else
		students[nowSum].jump_score = 0;

	if (students[nowSum].runShort <= 7.5f)
		students[nowSum].runShort_score = 100;
	else if (students[nowSum].runShort <= 7.7f)
		students[nowSum].runShort_score = 90;
	else if (students[nowSum].runShort <= 8.3f)
		students[nowSum].runShort_score = 80;
	else if (students[nowSum].runShort <= 9.3f)
		students[nowSum].runShort_score = 70;
	else if (students[nowSum].runShort <= 10.3f)
		students[nowSum].runShort_score = 60;
	else if (students[nowSum].runShort <= 10.5f)
		students[nowSum].runShort_score = 50;
	else if (students[nowSum].runShort <= 10.7f)
		students[nowSum].runShort_score = 40;
	else if (students[nowSum].runShort <= 10.9f)
		students[nowSum].runShort_score = 30;
	else if (students[nowSum].runShort <= 11.1f)
		students[nowSum].runShort_score = 20;
	else if (students[nowSum].runShort <= 11.3f)
		students[nowSum].runShort_score = 10;
	else
		students[nowSum].runShort_score = 0;

	if (students[nowSum].runLong <= 197.0f)
		students[nowSum].runLong_score = 100;
	else if (students[nowSum].runLong <= 207.0f)
		students[nowSum].runLong_score = 90;
	else if (students[nowSum].runLong <= 222.2f)
		students[nowSum].runLong_score = 80;
	else if (students[nowSum].runLong <= 247.0f)
		students[nowSum].runLong_score = 70;
	else if (students[nowSum].runLong <= 272.0f)
		students[nowSum].runLong_score = 60;
	else if (students[nowSum].runLong <= 292.0f)
		students[nowSum].runLong_score = 50;
	else if (students[nowSum].runLong <= 312.0f)
		students[nowSum].runLong_score = 40;
	else if (students[nowSum].runLong <= 332.07f)
		students[nowSum].runLong_score = 30;
	else if (students[nowSum].runLong <= 352.0f)
		students[nowSum].runLong_score = 20;
	else if (students[nowSum].runLong <= 372.0f)
		students[nowSum].runLong_score = 10;
	else
		students[nowSum].runLong_score = 0;

	if (students[nowSum].count >= 56)
		students[nowSum].count_score = 100;
	else if (students[nowSum].count >= 52)
		students[nowSum].count_score = 90;
	else if (students[nowSum].count >= 46)
		students[nowSum].count_score = 80;
	else if (students[nowSum].count >= 36)
		students[nowSum].count_score = 70;
	else if (students[nowSum].count >= 26)
		students[nowSum].count_score = 60;
	else if (students[nowSum].count >= 24)
		students[nowSum].count_score = 50;
	else if (students[nowSum].count >= 22)
		students[nowSum].count_score = 40;
	else if (students[nowSum].count >= 20)
		students[nowSum].count_score = 30;
	else if (students[nowSum].count >= 18)
		students[nowSum].count_score = 20;
	else if (students[nowSum].count >= 16)
		students[nowSum].count_score = 10;
	else
		students[nowSum].count_score = 0;
	}

将其放在每一次录入完成后>>>
相应每一次修改数据也要对相应成绩进行修改,代码就不放了
成绩查询直接输出就行了

void FindScore()
{
	int choice1 = 1;
	int flag, flag1;
	char stuNum[20];
	while (1)
	{
		if (choice1 == 1)
		{
			choice1 = -1;
			printf("输入你要查询的学生学号:");
			while (1)//判断学号是否合法
			{
				flag = 1;

				scanf("%s", stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (stuNum[0] > 'Z' || stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (stuNum[i] > '9' || stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else //数据正确,完成输入
					break;
			}

			flag1 = 0;
			for (i = 0; i < nowSum; i++)//学生找查
				if (strcmp(stuNum, students[i].stuNum) != 0)
				{
					flag1 = 0;
				}
				else//找到直接跳出循环
				{
					flag1 = 1;
					nowSum_index = i;
					break;
				}
			if (flag1 == 0)
			{
				printf("查无此人,是否重新找查?(是:1,否:0)");
				scanf("%d", &choice1);
				while (getchar() != '\n');
				continue;
			}

			//找到后才会执行
			printf("BMI:%d\n", students[nowSum_index].BMI_score);
			printf("肺活量:%d\n", students[nowSum_index].VC_score);
			printf("跳远:%d\n", students[nowSum_index].jump_score);
			printf("长跑:%d\n", students[nowSum_index].runLong_score);
			printf("短跑:%d\n", students[nowSum_index].runShort_score);
			printf("引体向上/仰卧起坐:%d\n", students[nowSum_index].count_score);
			printf("查询完毕是否继续查询(是:1,否:0)");
			scanf("%d", &choice1);
			while (getchar() != '\n');
			continue;
		}

		else if (choice1 == 0)//取消修改
			break;
		else//选择错误
		{
			printf("选择错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}
	}
}

查询不合格科目

简单修改下上面的代码就行了

void FindUnpass()
{
	int choice1 = 1;
	int flag, flag1;
	char stuNum[20];
	while (1)
	{
		if (choice1 == 1)
		{
			choice1 = -1;
			printf("输入你要查询的学生学号:");
			while (1)//判断学号是否合法
			{
				flag = 1;

				scanf("%s", stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (stuNum[0] > 'Z' || stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (stuNum[i] > '9' || stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else //数据正确,完成输入
					break;
			}

			flag1 = 0;
			for (i = 0; i < nowSum; i++)//学生找查
				if (strcmp(stuNum, students[i].stuNum) != 0)
				{
					flag1 = 0;
				}
				else//找到直接跳出循环
				{
					flag1 = 1;
					nowSum_index = i;
					break;
				}
			if (flag1 == 0)
			{
				printf("查无此人,是否重新找查?(是:1,否:0)");

				scanf("%d", &choice1);
				printf("\n");
				while (getchar() != '\n');
				continue;
			}

			//找到后才会执行
			if (students[nowSum_index].VC_score < 60)
				printf("肺活量\t");
			if (students[nowSum_index].jump_score < 60)
				printf("跳远\t");
			if (students[nowSum_index].runLong_score < 60)
				printf("长跑\t");
			if (students[nowSum_index].runShort_score < 60)
				printf("短跑\t");
			if (students[nowSum_index].count_score < 60)
				printf("引体向上/仰卧起坐\t");			
			printf("\n");
			printf("查询完毕是否继续查询(是:1,否:0)");
			choice1 = -1;		
			scanf("%d", &choice1);
			printf("\n");
			while (getchar() != '\n');
			continue;
		}

		else if (choice1 == 0)//取消修改
			break;
		else//选择错误
		{
			printf("选择错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}
	}
}

通过率汇总

关于%的输出经过测试printf("%%");能输出一个%,OVER

void PassRate()
{
	int VC_sum = 0, jump_sum = 0, runLong_sum = 0, runShort_sum = 0, count_sum = 0;
	for (i = 0; i < nowSum; i++)
	{
		if (students[i].VC_score >= 60)
			VC_sum++;
		if (students[i].jump_score >= 60)
			jump_sum++;
		if (students[i].runLong_score >= 60)
			runLong_sum++;
		if (students[i].runShort_score >= 60)
			runShort_sum++;
		if (students[i].count_score >= 60)
			count_sum++;
	}
	if (nowSum == 0)
		printf("无学生信息!!!\n");
	else
	{
		printf("肺活量:%d%%\n", VC_sum * 100 / nowSum);
		printf("跳远:%d%%\n", jump_sum * 100 / nowSum);
		printf("长跑:%d%%\n", runLong_sum * 100 / nowSum);
		printf("短跑:%d%%\n", runShort_sum * 100 / nowSum);
		printf("引体向上/仰卧起坐:%d%%\n", count_sum * 100 / nowSum);
	}	
	printf("按回车返回");
	if (getchar() != '\n');	
}

main函数编写

进行事件循环

int main()
{
	void UI();
	void InputData();
	void ChangeData();
	void DeletData();
	void FindScore();
	void FindUnpass();
	void PassRate();

	while (1)
	{
		choice = -1;
		UI();
		switch (choice)
		{
			case 0:
				printf("感谢使用本系统,祝您生活愉快!");
				return 0;
			case 1:
				InputData();
				printf("\n");
				break;
			case 2:
				ChangeData();
				printf("\n");
				break;
			case 3:
				DeletData();
				printf("\n");
				break;
			case 4:
				FindScore();
				printf("\n");
				break;
			case 5:
				FindUnpass();
				printf("\n");
				break;
			case 6:
				PassRate();
				printf("\n");
				break;	
			default:
			printf("输入错误。。。\n");
			printf("\n");
	    }	
	}
}

数据存储到本地

我们接下来想要完成下面两件事
1、关闭程序时将数据保存到本地
2、每次打开程序都将本地的数据读入

void load()
{
	FILE* fp;
	fp = fopen("data.txt", "r");	
	while(!feof(fp))
	{
		fscanf(fp, "%s", students[nowSum].name);
		fscanf(fp, "%s", students[nowSum].stuNum);
		fscanf(fp, "%s", students[nowSum].department);
		fscanf(fp, "%d", &students[nowSum].sex);
		fscanf(fp, "%f", &students[nowSum].height);
		fscanf(fp, "%f", &students[nowSum].weight);
		fscanf(fp, "%f", &students[nowSum].BMI);
		fscanf(fp, "%f", &students[nowSum].VC);
		fscanf(fp, "%f", &students[nowSum].jump);
		fscanf(fp, "%f", &students[nowSum].runLong);
		fscanf(fp, "%f", &students[nowSum].runShort);
		fscanf(fp, "%d", &students[nowSum].count);
		fscanf(fp, "%d", &students[nowSum].BMI_score);
		fscanf(fp, "%d", &students[nowSum].VC_score);
		fscanf(fp, "%d", &students[nowSum].jump_score);
		fscanf(fp, "%d", &students[nowSum].runLong_score);
		fscanf(fp, "%d", &students[nowSum].runShort_score);
		fscanf(fp, "%d", &students[nowSum].count_score);
		nowSum++;
	}	
}

void save()
{
	FILE* fp;
	fp = fopen("data.txt", "w");
	fprintf(fp, "%d\n", nowSum);
	for (i = 0; i < nowSum; i++)
	{
		fprintf(fp, "%s\n", students[i].name);
		fprintf(fp, "%s\n", students[i].stuNum);
		fprintf(fp, "%s\n", students[i].department);
		fprintf(fp, "%d\n", students[i].sex);
		fprintf(fp, "%f\n", students[i].height);
		fprintf(fp, "%f\n", students[i].weight);
		fprintf(fp, "%f\n", students[i].BMI);
		fprintf(fp, "%f\n", students[i].VC);
		fprintf(fp, "%f\n", students[i].jump);
		fprintf(fp, "%f\n", students[i].runLong);
		fprintf(fp, "%f\n", students[i].runShort);
		fprintf(fp, "%d\n", students[i].count);
		fprintf(fp, "%d\n", students[i].BMI_score);
		fprintf(fp, "%d\n", students[i].VC_score);
		fprintf(fp, "%d\n", students[i].jump_score);
		fprintf(fp, "%d\n", students[i].runLong_score);
		fprintf(fp, "%d\n", students[i].runShort_score);
		fprintf(fp, "%d\n", students[i].count_score);
	}
}
//我们将数据保存在data.txt中

在进行测试时我发现,无论文件为空时feof()第一次也还是会返回1,
这就导致了当文件为空时,students[0]会读入空数据,
经过思考我想到了一种可行的办法:
在文件开头记录下学生总数来限制读取次数;
我们便只需在最初创建data.txt时在开头保存一个0就行了,
接下来对代码进行修改,代码就不放了。

完整代码

OK大功告成,下面是完整代码

#pragma warning(disable:4996)
#include<stdio.h>
#include<string.h>

struct Student
{
	char name[20];//姓名
	char stuNum[20];//学号
	char department[20];//院系
	int sex;//性别

	float height;//身高
	float weight;//体重
	float BMI; //体重指数
	float VC;//肺活量
	float jump;//跳远
	float runShort;//短跑
	float runLong;//长跑
	int count;//引体向上,仰卧起坐个数

	//记录成绩
	int BMI_score;
	int VC_score;
	int jump_score;
	int runShort_score;
	int runLong_score;
	int count_score;
};

int i, j;//用于循环
int choice;//记录功能选择
struct Student students[100];//最大学生量可以自定义
int nowSum = 0;//目前已存学生数
int nowSum_index;//用于检索

void UI()
{
	printf("\t ------------------------------------\n");
	printf("\t|        学生体测信息管理系统        |\n");
	printf("\t|          0.退出本系统              |\n");
	printf("\t|          1.输入学生数据            |\n");
	printf("\t|          2.修改学生数据            |\n");
	printf("\t|          3.删除学生数据            |\n");
	printf("\t|          4.查询学生成绩            |\n");
	printf("\t|          5.查询不合格科目          |\n");
	printf("\t|          6.查询体测合格率          |\n");
	printf("\t ------------------------------------\n");
	printf("请选择功能:");
	scanf("%d", &choice);
	while (getchar() != '\n');
}

void InputData()
{
	int choice1 = -1;
	int flag;//用于情况标记
	printf("是否开始录入新的学生数据?\n");
	printf("<1:开始录入,0:取消录入> :");
	scanf("%d", &choice1);
	while (getchar() != '\n');
	while (1)
	{
		if (choice1 == 1)//录入开始
		{
			choice1 = -1;
			printf("姓名:");//录入姓名
			scanf("%s", students[nowSum].name);
			while (getchar() != '\n');

			printf("院系:");//录入院系
			scanf("%s", students[nowSum].department);
			while (getchar() != '\n');

			printf("学号:");//录入学号
			while (1)
			{
				flag = 1;
				scanf("%s", students[nowSum].stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(students[nowSum].stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (students[nowSum].stuNum[0] > 'Z' || students[nowSum].stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (students[nowSum].stuNum[i] > '9' || students[nowSum].stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}	
				//判断学号是否输入重复
				if (flag != 0)
				{
					for(i = 0;i<nowSum;i++)
						if (strcmp(students[nowSum].stuNum, students[i].stuNum) == 0)
						{
							printf("学号重复,请重新输入:");
							flag = 0;
							break;
						}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else//数据正确,完成输入
					break;
			}

			printf("性别(男1,女2):");//录入性别
			while (1)
			{
				students[nowSum].sex = -1;
				scanf("%d", &students[nowSum].sex);
				while (getchar() != '\n');
				if (students[nowSum].sex != 1 && students[nowSum].sex != 2)
					printf("怎么能乱输呢,请重新输入:");
				else
					break;
			}
			
			printf("身高(m):");//录入身高
			while (1)
			{
				students[nowSum].height = -1.0f;
				scanf("%f", &students[nowSum].height);
				while (getchar() != '\n');
				if (students[nowSum].height > 2.5f  || students[nowSum].height < 1.0f)
					printf("你确定有这么高?请重新输入:");
				else
					break;
			}

			printf("体重(kg):");//录入体重
			while (1)
			{
				students[nowSum].weight = -1.0f;
				scanf("%f", &students[nowSum].weight);
				while (getchar() != '\n');
				if (students[nowSum].weight > 200.0f || students[nowSum].weight < 20.0f)
					printf("你确定有这么重?请重新输入:");
				else
					break;
			}

			printf("肺活量(ml):");//录入肺活量
			while (1)
			{
				students[nowSum].VC = -1.0f;
				scanf("%f", &students[nowSum].VC);
				while (getchar() != '\n');
				if (students[nowSum].VC > 10000.0f || students[nowSum].VC < 300.0f)
					printf("输错了吧?请重新输入:");
				else
					break;
			}

			printf("跳远(m):");//录入跳远距离
			while (1)
			{
				students[nowSum].jump = -1.0f;
				scanf("%f", &students[nowSum].jump);
				while (getchar() != '\n');
				if (students[nowSum].jump > 10.0f || students[nowSum].jump < 1.0f)
					printf("输错了吧?请重新输入:");
				else
					break;
			}

			printf("50m短跑(s):");//录入短跑时间
			while (1)
			{
				students[nowSum].runShort = -1.0f;
				scanf("%f", &students[nowSum].runShort);
				while (getchar() != '\n');
				if (students[nowSum].runShort > 50.0f || students[nowSum].runShort < 0.5f)
					printf("怎么能乱输呢?请重新输入:");
				else
					break;
			}

			printf("1000m/800m短跑(s):");//录入短跑时间
			while (1)
			{
				students[nowSum].runLong = -1.0f;
				scanf("%f", &students[nowSum].runLong);
				while (getchar() != '\n');
				if (students[nowSum].runLong > 800.0f || students[nowSum].runLong < 100.0f)
					printf("怎么能乱输呢?请重新输入:");
				else
					break;
			}

			printf("引体向上/仰卧起坐个数:");//录入引体向上/仰卧起坐个数
			while (1)
			{
				students[nowSum].count = -1;
				scanf("%d", &students[nowSum].count);
				while (getchar() != '\n');
				if (students[nowSum].count > 120 || students[nowSum].count < 0)
					printf("数据错误?请重新输入:");
				else
					break;
			}

			//进行成绩计算
			if (students[nowSum].sex == 1)
			{
				students[nowSum].BMI = students[nowSum].weight / students[nowSum].height / students[nowSum].height;
				if (students[nowSum].BMI > 17.8f && students[nowSum].BMI < 24.0f)
					students[nowSum].BMI_score = 100;
				else if (students[nowSum].BMI <= 17.8f || students[nowSum].BMI >= 24.0f && students[nowSum].BMI < 28.0f)
					students[nowSum].BMI_score = 80;
				else
					students[nowSum].BMI_score = 60;

				if (students[nowSum].VC >= 5040.0f)
					students[nowSum].VC_score = 100;
				else if (students[nowSum].VC >= 4800.0f)
					students[nowSum].VC_score = 90;
				else if (students[nowSum].VC >= 4300.0f)
					students[nowSum].VC_score = 80;
				else if (students[nowSum].VC >= 3700.0f)
					students[nowSum].VC_score = 70;
				else if (students[nowSum].VC >= 3100.0f)
					students[nowSum].VC_score = 60;
				else if (students[nowSum].VC >= 2940.0f)
					students[nowSum].VC_score = 50;
				else if (students[nowSum].VC >= 2780.0f)
					students[nowSum].VC_score = 40;
				else if (students[nowSum].VC >= 2620.0f)
					students[nowSum].VC_score = 30;
				else if (students[nowSum].VC >= 2460.0f)
					students[nowSum].VC_score = 20;
				else if (students[nowSum].VC >= 2300.0f)
					students[nowSum].VC_score = 10;
				else
					students[nowSum].VC_score = 0;

				if (students[nowSum].jump >= 2.73f)
					students[nowSum].jump_score = 100;
				else if (students[nowSum].jump >= 2.63f)
					students[nowSum].jump_score = 90;
				else if (students[nowSum].jump >= 2.48f)
					students[nowSum].jump_score = 80;
				else if (students[nowSum].jump >= 2.28f)
					students[nowSum].jump_score = 70;
				else if (students[nowSum].jump >= 2.08f)
					students[nowSum].jump_score = 60;
				else if (students[nowSum].jump >= 2.03f)
					students[nowSum].jump_score = 50;
				else if (students[nowSum].jump >= 1.98f)
					students[nowSum].jump_score = 40;
				else if (students[nowSum].jump >= 1.93f)
					students[nowSum].jump_score = 30;
				else if (students[nowSum].jump >= 1.88f)
					students[nowSum].jump_score = 20;
				else if (students[nowSum].jump >= 1.83f)
					students[nowSum].jump_score = 10;
				else
					students[nowSum].jump_score = 0;

				if (students[nowSum].runShort <= 6.7f)
					students[nowSum].runShort_score = 100;
				else if (students[nowSum].runShort <= 6.9f)
					students[nowSum].runShort_score = 90;
				else if (students[nowSum].runShort <= 7.1f)
					students[nowSum].runShort_score = 80;
				else if (students[nowSum].runShort <= 8.1f)
					students[nowSum].runShort_score = 70;
				else if (students[nowSum].runShort <= 9.1f)
					students[nowSum].runShort_score = 60;
				else if (students[nowSum].runShort <= 9.3f)
					students[nowSum].runShort_score = 50;
				else if (students[nowSum].runShort <= 9.5f)
					students[nowSum].runShort_score = 40;
				else if (students[nowSum].runShort <= 9.7f)
					students[nowSum].runShort_score = 30;
				else if (students[nowSum].runShort <= 9.9f)
					students[nowSum].runShort_score = 20;
				else if (students[nowSum].runShort <= 10.1f)
					students[nowSum].runShort_score = 10;
				else
					students[nowSum].runShort_score = 0;

				if (students[nowSum].runLong <= 197.0f)
					students[nowSum].runLong_score = 100;
				else if (students[nowSum].runLong <= 207.0f)
					students[nowSum].runLong_score = 90;
				else if (students[nowSum].runLong <= 222.2f)
					students[nowSum].runLong_score = 80;
				else if (students[nowSum].runLong <= 247.0f)
					students[nowSum].runLong_score = 70;
				else if (students[nowSum].runLong <= 272.0f)
					students[nowSum].runLong_score = 60;
				else if (students[nowSum].runLong <= 292.0f)
					students[nowSum].runLong_score = 50;
				else if (students[nowSum].runLong <= 312.0f)
					students[nowSum].runLong_score = 40;
				else if (students[nowSum].runLong <= 332.07f)
					students[nowSum].runLong_score = 30;
				else if (students[nowSum].runLong <= 352.0f)
					students[nowSum].runLong_score = 20;
				else if (students[nowSum].runLong <= 372.0f)
					students[nowSum].runLong_score = 10;
				else
					students[nowSum].runLong_score = 0;

				if (students[nowSum].count >= 19)
					students[nowSum].count_score = 100;
				else if (students[nowSum].count >= 17)
					students[nowSum].count_score = 90;
				else if (students[nowSum].count >= 15)
					students[nowSum].count_score = 80;
				else if (students[nowSum].count >= 12)
					students[nowSum].count_score = 70;
				else if (students[nowSum].count >= 10)
					students[nowSum].count_score = 60;
				else if (students[nowSum].count >= 9)
					students[nowSum].count_score = 50;
				else if (students[nowSum].count >= 8)
					students[nowSum].count_score = 40;
				else if (students[nowSum].count >= 7)
					students[nowSum].count_score = 30;
				else if (students[nowSum].count >= 6)
					students[nowSum].count_score = 20;
				else if (students[nowSum].count >= 5)
					students[nowSum].count_score = 10;
				else
					students[nowSum].count_score = 0;
			}
			else
			{
				students[nowSum].BMI = students[nowSum].weight / students[nowSum].height / students[nowSum].height;
				if (students[nowSum].BMI > 17.1f && students[nowSum].BMI < 24.0f)
					students[nowSum].BMI_score = 100;
				else if (students[nowSum].BMI <= 17.1f || students[nowSum].BMI >= 24.0f && students[nowSum].BMI < 28.0f)
					students[nowSum].BMI_score = 80;
				else
					students[nowSum].BMI_score = 60;

				if (students[nowSum].VC >= 3400.0f)
					students[nowSum].VC_score = 100;
				else if (students[nowSum].VC >= 3300.0f)
					students[nowSum].VC_score = 90;
				else if (students[nowSum].VC >= 3000.0f)
					students[nowSum].VC_score = 80;
				else if (students[nowSum].VC >= 2500.0f)
					students[nowSum].VC_score = 70;
				else if (students[nowSum].VC >= 2000.0f)
					students[nowSum].VC_score = 60;
				else if (students[nowSum].VC >= 1960.0f)
					students[nowSum].VC_score = 50;
				else if (students[nowSum].VC >= 1920.0f)
					students[nowSum].VC_score = 40;
				else if (students[nowSum].VC >= 1880.0f)
					students[nowSum].VC_score = 30;
				else if (students[nowSum].VC >= 1840.0f)
					students[nowSum].VC_score = 20;
				else if (students[nowSum].VC >= 1800.0f)
					students[nowSum].VC_score = 10;
				else
					students[nowSum].VC_score = 0;

				if (students[nowSum].jump >= 2.07f)
					students[nowSum].jump_score = 100;
				else if (students[nowSum].jump >= 1.95f)
					students[nowSum].jump_score = 90;
				else if (students[nowSum].jump >= 1.81f)
					students[nowSum].jump_score = 80;
				else if (students[nowSum].jump >= 1.66f)
					students[nowSum].jump_score = 70;
				else if (students[nowSum].jump >= 1.51f)
					students[nowSum].jump_score = 60;
				else if (students[nowSum].jump >= 1.46f)
					students[nowSum].jump_score = 50;
				else if (students[nowSum].jump >= 1.41f)
					students[nowSum].jump_score = 40;
				else if (students[nowSum].jump >= 1.36f)
					students[nowSum].jump_score = 30;
				else if (students[nowSum].jump >= 1.31f)
					students[nowSum].jump_score = 20;
				else if (students[nowSum].jump >= 1.26f)
					students[nowSum].jump_score = 10;
				else
					students[nowSum].jump_score = 0;

				if (students[nowSum].runShort <= 7.5f)
					students[nowSum].runShort_score = 100;
				else if (students[nowSum].runShort <= 7.7f)
					students[nowSum].runShort_score = 90;
				else if (students[nowSum].runShort <= 8.3f)
					students[nowSum].runShort_score = 80;
				else if (students[nowSum].runShort <= 9.3f)
					students[nowSum].runShort_score = 70;
				else if (students[nowSum].runShort <= 10.3f)
					students[nowSum].runShort_score = 60;
				else if (students[nowSum].runShort <= 10.5f)
					students[nowSum].runShort_score = 50;
				else if (students[nowSum].runShort <= 10.7f)
					students[nowSum].runShort_score = 40;
				else if (students[nowSum].runShort <= 10.9f)
					students[nowSum].runShort_score = 30;
				else if (students[nowSum].runShort <= 11.1f)
					students[nowSum].runShort_score = 20;
				else if (students[nowSum].runShort <= 11.3f)
					students[nowSum].runShort_score = 10;
				else
					students[nowSum].runShort_score = 0;

				if (students[nowSum].runLong <= 197.0f)
					students[nowSum].runLong_score = 100;
				else if (students[nowSum].runLong <= 207.0f)
					students[nowSum].runLong_score = 90;
				else if (students[nowSum].runLong <= 222.2f)
					students[nowSum].runLong_score = 80;
				else if (students[nowSum].runLong <= 247.0f)
					students[nowSum].runLong_score = 70;
				else if (students[nowSum].runLong <= 272.0f)
					students[nowSum].runLong_score = 60;
				else if (students[nowSum].runLong <= 292.0f)
					students[nowSum].runLong_score = 50;
				else if (students[nowSum].runLong <= 312.0f)
					students[nowSum].runLong_score = 40;
				else if (students[nowSum].runLong <= 332.07f)
					students[nowSum].runLong_score = 30;
				else if (students[nowSum].runLong <= 352.0f)
					students[nowSum].runLong_score = 20;
				else if (students[nowSum].runLong <= 372.0f)
					students[nowSum].runLong_score = 10;
				else
					students[nowSum].runLong_score = 0;

				if (students[nowSum].count >= 56)
					students[nowSum].count_score = 100;
				else if (students[nowSum].count >= 52)
					students[nowSum].count_score = 90;
				else if (students[nowSum].count >= 46)
					students[nowSum].count_score = 80;
				else if (students[nowSum].count >= 36)
					students[nowSum].count_score = 70;
				else if (students[nowSum].count >= 26)
					students[nowSum].count_score = 60;
				else if (students[nowSum].count >= 24)
					students[nowSum].count_score = 50;
				else if (students[nowSum].count >= 22)
					students[nowSum].count_score = 40;
				else if (students[nowSum].count >= 20)
					students[nowSum].count_score = 30;
				else if (students[nowSum].count >= 18)
					students[nowSum].count_score = 20;
				else if (students[nowSum].count >= 16)
					students[nowSum].count_score = 10;
				else
					students[nowSum].count_score = 0;
			}

			printf("录入完毕,是否录入下一位(是:1,否:0)");
			scanf("%d", &choice1);
			printf("\n");
			while (getchar() != '\n');
			nowSum++;
		}
		else if (choice1 == 0)//取消录入
			break;
		else//选择错误
		{
			printf("数据错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}			
	}	
}

void ChangeData()
{
	char stuNum[20];
	int flag;
	int choice1 =1;
	int flag1;
	int flag2;
	while (1)
	{
		if (choice1 == 1)
		{
			choice1 = -1;
			printf("输入你要修改的学生学号:");
			while (1)//判断学号是否合法
			{
				flag = 1;

				scanf("%s", stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (stuNum[0] > 'Z' || stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (stuNum[i] > '9' || stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else //数据正确,完成输入
					break;
			}

			flag1 = 0;
			for (i = 0; i < nowSum; i++)//学生找查
				if (strcmp(stuNum, students[i].stuNum) != 0)
				{
					flag1 = 0;
				}
				else//找到直接跳出循环
				{
					flag1 = 1;
					nowSum_index = i;						
					break;
				}
			if (flag1 == 0)
			{
				printf("查无此人,是否重新找查?(是:1,否:0)");
				scanf("%d", &choice1);
				printf("\n");
				while (getchar() != '\n');
				continue;
			}

			//找到后才会执行
			printf("选择你要修改的项:\n1.姓名  2.性别  3.院系  4.身高  5.体重\n ");
			printf("6.肺活量  7.跳远  8.短跑  9.长跑  10.引体向上or仰卧起坐\n ");
			flag = 1;
			while (1)
			{
				flag2 = -1;
				flag = 1;
				scanf("%d", &flag2);
				while (getchar() != '\n');
				switch (flag2)
				{
					
				case 1:
					printf("姓名:");//录入姓名
					scanf("%s", students[nowSum_index].name);
					while (getchar() != '\n');
					break;
				case 2:
					printf("性别(男1,女2):");//录入性别
					while (1)
					{
						students[nowSum_index].sex = -1;
						scanf("%d", &students[nowSum_index].sex);
						while (getchar() != '\n');
						if (students[nowSum_index].sex != 1 && students[nowSum_index].sex != 2)
							printf("怎么能乱输呢,请重新输入:");
						else
							break;
					}
					break;
				case 3:
					printf("院系:");//录入院系
					scanf("%s", students[nowSum_index].department);
					while (getchar() != '\n');
					break;
				case 4:
					printf("身高(m):");//录入身高
					while (1)
					{
						students[nowSum_index].height = -1.0f;
						scanf("%f", &students[nowSum_index].height);
						while (getchar() != '\n');
						if (students[nowSum_index].height > 2.5f || students[nowSum_index].height < 1.0f)
							printf("你确定有这么高?请重新输入:");
						else
							break;
					}
					break;
				case 5:
					printf("体重(kg):");//录入体重
					while (1)
					{
						students[nowSum_index].weight = -1.0f;
						scanf("%f", &students[nowSum_index].weight);
						while (getchar() != '\n');
						if (students[nowSum_index].weight > 200.0f || students[nowSum_index].weight < 20.0f)
							printf("你确定有这么重?请重新输入:");
						else
							break;
					}
					break;
				case 6:
					printf("肺活量(ml):");//录入肺活量
					while (1)
					{
						students[nowSum_index].VC = -1.0f;
						scanf("%f", &students[nowSum_index].VC);
						while (getchar() != '\n');
						if (students[nowSum_index].VC > 10000.0f || students[nowSum_index].VC < 300.0f)
							printf("输错了吧?请重新输入:");
						else
							break;
					}
					break;
				case 7:
					printf("跳远(m):");//录入跳远距离
					while (1)
					{
						students[nowSum_index].jump = -1.0f;
						scanf("%f", &students[nowSum_index].jump);
						while (getchar() != '\n');
						if (students[nowSum_index].jump > 10.0f || students[nowSum_index].jump < 1.0f)
							printf("输错了吧?请重新输入:");
						else
							break;
					}
					break;
				case 8:
					printf("50m短跑(s):");//录入短跑时间
					while (1)
					{
						students[nowSum_index].runShort = -1.0f;
						scanf("%f", &students[nowSum_index].runShort);
						while (getchar() != '\n');
						if (students[nowSum_index].runShort > 50.0f || students[nowSum_index].runShort < 0.5f)
							printf("怎么能乱输呢?请重新输入:");
						else
							break;
					}
					break;
				case 9:
					printf("1000m/800m短跑(s):");//录入短跑时间
					while (1)
					{
						students[nowSum_index].runLong = -1.0f;
						scanf("%f", &students[nowSum_index].runLong);
						while (getchar() != '\n');
						if (students[nowSum_index].runLong > 800.0f || students[nowSum_index].runLong < 100.0f)
							printf("怎么能乱输呢?请重新输入:");
						else
							break;
					}
					break;
				case 10:
					printf("引体向上/仰卧起坐个数:");//录入引体向上/仰卧起坐个数
					while (1)
					{
						students[nowSum_index].count = -1;
						scanf("%d", &students[nowSum_index].count);
						while (getchar() != '\n');
						if (students[nowSum_index].count > 120 || students[nowSum_index].count < 0)
							printf("数据错误?请重新输入:");
						else
							break;
					}
					break;
				default:
					printf("选择错误,请重新输入:");
					flag = 0;
				}
				if (flag == 0)
					continue;
				else
				{
					printf("修改完毕,是否继续修改本学生?(是:1,否:0)");
					while (1)
					{
						flag = -1;
						scanf("%d", &flag);
						while (getchar() != '\n');
						if (flag != 1 && flag != 0)
							printf("选择错误,重新选择:");
						else
							break;
					}						
				}
				if (flag == 1)
				{
					printf("选择你要修改的项:\n1.姓名  2.性别  3.院系  4.身高  5.体重\n ");
					printf("6.肺活量  7.跳远  8.短跑 9.长跑  10.引体向上or仰卧起走\n ");
					continue;
				}						
				else
					break;
			}									
			
			//进行成绩计算
			if (students[nowSum_index].sex == 1)
			{
				students[nowSum_index].BMI = students[nowSum_index].weight / students[nowSum_index].height / students[nowSum].height;
				if (students[nowSum_index].BMI > 17.8f && students[nowSum_index].BMI < 24.0f)
					students[nowSum_index].BMI_score = 100;
				else if (students[nowSum_index].BMI <= 17.8f || students[nowSum_index].BMI >= 24.0f && students[nowSum_index].BMI < 28.0f)
					students[nowSum_index].BMI_score = 80;
				else
					students[nowSum_index].BMI_score = 60;

				if (students[nowSum_index].VC >= 5040.0f)
					students[nowSum_index].VC_score = 100;
				else if (students[nowSum_index].VC >= 4800.0f)
					students[nowSum_index].VC_score = 90;
				else if (students[nowSum_index].VC >= 4300.0f)
					students[nowSum_index].VC_score = 80;
				else if (students[nowSum_index].VC >= 3700.0f)
					students[nowSum_index].VC_score = 70;
				else if (students[nowSum_index].VC >= 3100.0f)
					students[nowSum_index].VC_score = 60;
				else if (students[nowSum_index].VC >= 2940.0f)
					students[nowSum_index].VC_score = 50;
				else if (students[nowSum_index].VC >= 2780.0f)
					students[nowSum_index].VC_score = 40;
				else if (students[nowSum_index].VC >= 2620.0f)
					students[nowSum_index].VC_score = 30;
				else if (students[nowSum_index].VC >= 2460.0f)
					students[nowSum_index].VC_score = 20;
				else if (students[nowSum_index].VC >= 2300.0f)
					students[nowSum_index].VC_score = 10;
				else
					students[nowSum_index].VC_score = 0;

				if (students[nowSum_index].jump >= 2.73f)
					students[nowSum_index].jump_score = 100;
				else if (students[nowSum_index].jump >= 2.63f)
					students[nowSum_index].jump_score = 90;
				else if (students[nowSum_index].jump >= 2.48f)
					students[nowSum_index].jump_score = 80;
				else if (students[nowSum_index].jump >= 2.28f)
					students[nowSum_index].jump_score = 70;
				else if (students[nowSum_index].jump >= 2.08f)
					students[nowSum_index].jump_score = 60;
				else if (students[nowSum_index].jump >= 2.03f)
					students[nowSum_index].jump_score = 50;
				else if (students[nowSum_index].jump >= 1.98f)
					students[nowSum_index].jump_score = 40;
				else if (students[nowSum_index].jump >= 1.93f)
					students[nowSum_index].jump_score = 30;
				else if (students[nowSum_index].jump >= 1.88f)
					students[nowSum_index].jump_score = 20;
				else if (students[nowSum_index].jump >= 1.83f)
					students[nowSum_index].jump_score = 10;
				else
					students[nowSum_index].jump_score = 0;

				if (students[nowSum_index].runShort <= 6.7f)
					students[nowSum_index].runShort_score = 100;
				else if (students[nowSum_index].runShort <= 6.9f)
					students[nowSum_index].runShort_score = 90;
				else if (students[nowSum_index].runShort <= 7.1f)
					students[nowSum_index].runShort_score = 80;
				else if (students[nowSum_index].runShort <= 8.1f)
					students[nowSum_index].runShort_score = 70;
				else if (students[nowSum_index].runShort <= 9.1f)
					students[nowSum_index].runShort_score = 60;
				else if (students[nowSum_index].runShort <= 9.3f)
					students[nowSum_index].runShort_score = 50;
				else if (students[nowSum_index].runShort <= 9.5f)
					students[nowSum_index].runShort_score = 40;
				else if (students[nowSum_index].runShort <= 9.7f)
					students[nowSum_index].runShort_score = 30;
				else if (students[nowSum_index].runShort <= 9.9f)
					students[nowSum_index].runShort_score = 20;
				else if (students[nowSum_index].runShort <= 10.1f)
					students[nowSum_index].runShort_score = 10;
				else
					students[nowSum_index].runShort_score = 0;

				if (students[nowSum_index].runLong <= 197.0f)
					students[nowSum_index].runLong_score = 100;
				else if (students[nowSum_index].runLong <= 207.0f)
					students[nowSum_index].runLong_score = 90;
				else if (students[nowSum_index].runLong <= 222.2f)
					students[nowSum_index].runLong_score = 80;
				else if (students[nowSum_index].runLong <= 247.0f)
					students[nowSum_index].runLong_score = 70;
				else if (students[nowSum_index].runLong <= 272.0f)
					students[nowSum_index].runLong_score = 60;
				else if (students[nowSum_index].runLong <= 292.0f)
					students[nowSum_index].runLong_score = 50;
				else if (students[nowSum_index].runLong <= 312.0f)
					students[nowSum_index].runLong_score = 40;
				else if (students[nowSum_index].runLong <= 332.07f)
					students[nowSum_index].runLong_score = 30;
				else if (students[nowSum_index].runLong <= 352.0f)
					students[nowSum_index].runLong_score = 20;
				else if (students[nowSum_index].runLong <= 372.0f)
					students[nowSum_index].runLong_score = 10;
				else
					students[nowSum_index].runLong_score = 0;

				if (students[nowSum_index].count >= 19)
					students[nowSum_index].count_score = 100;
				else if (students[nowSum_index].count >= 17)
					students[nowSum_index].count_score = 90;
				else if (students[nowSum_index].count >= 15)
					students[nowSum_index].count_score = 80;
				else if (students[nowSum_index].count >= 12)
					students[nowSum_index].count_score = 70;
				else if (students[nowSum_index].count >= 10)
					students[nowSum_index].count_score = 60;
				else if (students[nowSum_index].count >= 9)
					students[nowSum_index].count_score = 50;
				else if (students[nowSum_index].count >= 8)
					students[nowSum_index].count_score = 40;
				else if (students[nowSum_index].count >= 7)
					students[nowSum_index].count_score = 30;
				else if (students[nowSum_index].count >= 6)
					students[nowSum_index].count_score = 20;
				else if (students[nowSum_index].count >= 5)
					students[nowSum_index].count_score = 10;
				else
					students[nowSum_index].count_score = 0;
			}
			else
			{
				students[nowSum_index].BMI = students[nowSum_index].weight / students[nowSum_index].height / students[nowSum_index].height;
				if (students[nowSum_index].BMI > 17.1f && students[nowSum_index].BMI < 24.0f)
					students[nowSum_index].BMI_score = 100;
				else if (students[nowSum_index].BMI <= 17.1f || students[nowSum_index].BMI >= 24.0f && students[nowSum_index].BMI < 28.0f)
					students[nowSum_index].BMI_score = 80;
				else
					students[nowSum_index].BMI_score = 60;

				if (students[nowSum_index].VC >= 3400.0f)
					students[nowSum_index].VC_score = 100;
				else if (students[nowSum_index].VC >= 3300.0f)
					students[nowSum_index].VC_score = 90;
				else if (students[nowSum_index].VC >= 3000.0f)
					students[nowSum_index].VC_score = 80;
				else if (students[nowSum_index].VC >= 2500.0f)
					students[nowSum_index].VC_score = 70;
				else if (students[nowSum_index].VC >= 2000.0f)
					students[nowSum_index].VC_score = 60;
				else if (students[nowSum_index].VC >= 1960.0f)
					students[nowSum_index].VC_score = 50;
				else if (students[nowSum_index].VC >= 1920.0f)
					students[nowSum_index].VC_score = 40;
				else if (students[nowSum_index].VC >= 1880.0f)
					students[nowSum_index].VC_score = 30;
				else if (students[nowSum_index].VC >= 1840.0f)
					students[nowSum_index].VC_score = 20;
				else if (students[nowSum_index].VC >= 1800.0f)
					students[nowSum_index].VC_score = 10;
				else
					students[nowSum_index].VC_score = 0;

				if (students[nowSum_index].jump >= 2.07f)
					students[nowSum_index].jump_score = 100;
				else if (students[nowSum_index].jump >= 1.95f)
					students[nowSum_index].jump_score = 90;
				else if (students[nowSum_index].jump >= 1.81f)
					students[nowSum_index].jump_score = 80;
				else if (students[nowSum_index].jump >= 1.66f)
					students[nowSum_index].jump_score = 70;
				else if (students[nowSum_index].jump >= 1.51f)
					students[nowSum_index].jump_score = 60;
				else if (students[nowSum_index].jump >= 1.46f)
					students[nowSum_index].jump_score = 50;
				else if (students[nowSum_index].jump >= 1.41f)
					students[nowSum_index].jump_score = 40;
				else if (students[nowSum_index].jump >= 1.36f)
					students[nowSum_index].jump_score = 30;
				else if (students[nowSum_index].jump >= 1.31f)
					students[nowSum_index].jump_score = 20;
				else if (students[nowSum_index].jump >= 1.26f)
					students[nowSum_index].jump_score = 10;
				else
					students[nowSum_index].jump_score = 0;

				if (students[nowSum_index].runShort <= 7.5f)
					students[nowSum_index].runShort_score = 100;
				else if (students[nowSum_index].runShort <= 7.7f)
					students[nowSum_index].runShort_score = 90;
				else if (students[nowSum_index].runShort <= 8.3f)
					students[nowSum_index].runShort_score = 80;
				else if (students[nowSum_index].runShort <= 9.3f)
					students[nowSum_index].runShort_score = 70;
				else if (students[nowSum_index].runShort <= 10.3f)
					students[nowSum_index].runShort_score = 60;
				else if (students[nowSum_index].runShort <= 10.5f)
					students[nowSum_index].runShort_score = 50;
				else if (students[nowSum_index].runShort <= 10.7f)
					students[nowSum_index].runShort_score = 40;
				else if (students[nowSum_index].runShort <= 10.9f)
					students[nowSum_index].runShort_score = 30;
				else if (students[nowSum_index].runShort <= 11.1f)
					students[nowSum_index].runShort_score = 20;
				else if (students[nowSum_index].runShort <= 11.3f)
					students[nowSum_index].runShort_score = 10;
				else
					students[nowSum_index].runShort_score = 0;

				if (students[nowSum_index].runLong <= 197.0f)
					students[nowSum_index].runLong_score = 100;
				else if (students[nowSum_index].runLong <= 207.0f)
					students[nowSum_index].runLong_score = 90;
				else if (students[nowSum_index].runLong <= 222.2f)
					students[nowSum_index].runLong_score = 80;
				else if (students[nowSum_index].runLong <= 247.0f)
					students[nowSum_index].runLong_score = 70;
				else if (students[nowSum_index].runLong <= 272.0f)
					students[nowSum_index].runLong_score = 60;
				else if (students[nowSum_index].runLong <= 292.0f)
					students[nowSum_index].runLong_score = 50;
				else if (students[nowSum_index].runLong <= 312.0f)
					students[nowSum_index].runLong_score = 40;
				else if (students[nowSum_index].runLong <= 332.07f)
					students[nowSum_index].runLong_score = 30;
				else if (students[nowSum_index].runLong <= 352.0f)
					students[nowSum_index].runLong_score = 20;
				else if (students[nowSum_index].runLong <= 372.0f)
					students[nowSum_index].runLong_score = 10;
				else
					students[nowSum_index].runLong_score = 0;

				if (students[nowSum_index].count >= 56)
					students[nowSum_index].count_score = 100;
				else if (students[nowSum_index].count >= 52)
					students[nowSum_index].count_score = 90;
				else if (students[nowSum_index].count >= 46)
					students[nowSum_index].count_score = 80;
				else if (students[nowSum_index].count >= 36)
					students[nowSum_index].count_score = 70;
				else if (students[nowSum_index].count >= 26)
					students[nowSum_index].count_score = 60;
				else if (students[nowSum_index].count >= 24)
					students[nowSum_index].count_score = 50;
				else if (students[nowSum_index].count >= 22)
					students[nowSum_index].count_score = 40;
				else if (students[nowSum_index].count >= 20)
					students[nowSum_index].count_score = 30;
				else if (students[nowSum_index].count >= 18)
					students[nowSum_index].count_score = 20;
				else if (students[nowSum_index].count >= 16)
					students[nowSum_index].count_score = 10;
				else
					students[nowSum_index].count_score = 0;
			}

			printf("是否修改其他学生?(是:1,否:0)");
			scanf("%d", &choice1);
			while (getchar() != '\n');
			continue;							
		}
		else if (choice1 == 0)//取消修改
			break;
		else//选择错误
		{
			printf("选择错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}
	}			
}

void DeletData()
{
	int choice1 =1;
	int flag,flag1;
	char stuNum[20];
	while (1)
	{
		if (choice1 == 1)
		{
			choice1 == -1;
			printf("输入你要删除的学生学号:");
			while (1)//判断学号是否合法
			{
				flag = 1;

				scanf("%s", stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (stuNum[0] > 'Z' || stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (stuNum[i] > '9' || stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else //数据正确,完成输入
					break;
			}

			flag1 = 0;
			for (i = 0; i < nowSum; i++)//学生找查
				if (strcmp(stuNum, students[i].stuNum) != 0)
				{
					flag1 = 0;
				}
				else//找到直接跳出循环
				{
					flag1 = 1;
					nowSum_index = i;
					break;
				}
			if (flag1 == 0)
			{
				printf("查无此人,是否重新找查?(是:1,否:0)");
				scanf("%d", &choice1);
				printf("\n");
				while (getchar() != '\n');
				continue;
			}

			//找到后才会执行
			printf("是否确认删除?(是:1,否:0)");
			while (1)
			{
				flag = -1;
				scanf("%d", &flag);
				while (getchar() != '\n');
				if (flag != 1 && flag != 0)
					printf("选择错误,重新选择:");
				else
					break;
			}
			if (flag == 0)
			{
				printf("是否重新选择学生删除(是:1,否:0)");
				scanf("%d", &choice1);
				printf("\n");
				while (getchar() != '\n');
				continue;
			}
			else
			{
				for (i = nowSum_index + 1; i < nowSum; i++)
					students[nowSum_index] = students[i];
				nowSum--;
				printf("删除完毕是否继续删除(是:1,否:0)");
				scanf("%d", &choice1);
				printf("\n");
				while (getchar() != '\n');
				continue;
			}			
		}

		else if (choice1 == 0)//取消修改
			break;
		else//选择错误
		{
			printf("选择错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}
	}
}

void FindScore()
{
	int choice1 = 1;
	int flag, flag1;
	char stuNum[20];
	while (1)
	{
		if (choice1 == 1)
		{
			choice1 = -1;
			printf("输入你要查询的学生学号:");
			while (1)//判断学号是否合法
			{
				flag = 1;

				scanf("%s", stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (stuNum[0] > 'Z' || stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (stuNum[i] > '9' || stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else //数据正确,完成输入
					break;
			}

			flag1 = 0;
			for (i = 0; i < nowSum; i++)//学生找查
				if (strcmp(stuNum, students[i].stuNum) != 0)
				{
					flag1 = 0;
				}
				else//找到直接跳出循环
				{
					flag1 = 1;
					nowSum_index = i;
					break;
				}
			if (flag1 == 0)
			{
				printf("查无此人,是否重新找查?(是:1,否:0)");
				scanf("%d", &choice1);
				while (getchar() != '\n');
				continue;
			}

			//找到后才会执行
			printf("BMI:%d\n", students[nowSum_index].BMI_score);
			printf("肺活量:%d\n", students[nowSum_index].VC_score);
			printf("跳远:%d\n", students[nowSum_index].jump_score);
			printf("长跑:%d\n", students[nowSum_index].runLong_score);
			printf("短跑:%d\n", students[nowSum_index].runShort_score);
			printf("引体向上/仰卧起坐:%d\n", students[nowSum_index].count_score);
			printf("查询完毕是否继续查询(是:1,否:0)");
			scanf("%d", &choice1);
			while (getchar() != '\n');
			continue;
		}

		else if (choice1 == 0)//取消修改
			break;
		else//选择错误
		{
			printf("选择错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}
	}
}

void FindUnpass()
{
	int isHave;
	int choice1 = 1;
	int flag, flag1;
	char stuNum[20];
	while (1)
	{
		if (choice1 == 1)
		{
			choice1 = -1;
			printf("输入你要查询的学生学号:");
			while (1)//判断学号是否合法
			{
				flag = 1;

				scanf("%s", stuNum);
				while (getchar() != '\n');
				//判断是否合法参考了我自己学校学号的规则,第一位为大写字母,之后八位为数字,一共九位,可以自己修改
				if (strlen(stuNum) != 9)
				{
					printf("数据错误,请重新输入:");
					flag = 0;
				}
				if (flag != 0)
				{
					if (stuNum[0] > 'Z' || stuNum[0] < 'A')
					{
						printf("数据错误,请重新输入:");
						flag = 0;
					}
					else for (i = 1; i < 9; i++)
					{
						if (stuNum[i] > '9' || stuNum[i] < '0')
						{
							printf("数据错误,请重新输入:");
							flag = 0;
							break;
						}
					}
				}
				if (flag == 0) //数据出错,跳出本次循环重新进行输入
					continue;
				else //数据正确,完成输入
					break;
			}

			flag1 = 0;
			for (i = 0; i < nowSum; i++)//学生找查
				if (strcmp(stuNum, students[i].stuNum) != 0)
				{
					flag1 = 0;
				}
				else//找到直接跳出循环
				{
					flag1 = 1;
					nowSum_index = i;
					break;
				}
			if (flag1 == 0)
			{				
				printf("查无此人,是否重新找查?(是:1,否:0)");
				scanf("%d", &choice1);
				printf("\n");
				while (getchar() != '\n');
				continue;
			}

			//找到后才会执行
			isHave = 0;
			if (students[nowSum_index].VC_score < 60)
			{
				printf("肺活量\t");
				isHave = 1;
			}				
			if (students[nowSum_index].jump_score < 60)
			{
				printf("跳远\t");
				isHave = 1;
			}				
			if (students[nowSum_index].runLong_score < 60)
			{
				printf("长跑\t");
				isHave = 1;
			}				
			if (students[nowSum_index].runShort_score < 60)
			{
				printf("短跑\t");
				isHave = 1;
			}				
			if (students[nowSum_index].count_score < 60)
			{
				printf("引体向上/仰卧起坐\t");
				isHave = 1;
			}
			if (isHave == 0)
				printf("无");
			printf("\n");
			printf("查询完毕是否继续查询(是:1,否:0)");
			
			scanf("%d", &choice1);
			while (getchar() != '\n');
			continue;
		}

		else if (choice1 == 0)//取消修改
			break;
		else//选择错误
		{
			printf("选择错误,请重新输入:");
			scanf("%d", &choice1);
			while (getchar() != '\n');
		}
	}
}

void PassRate()
{
	int VC_sum = 0, jump_sum = 0, runLong_sum = 0, runShort_sum = 0, count_sum = 0;
	for (i = 0; i < nowSum; i++)
	{
		if (students[i].VC_score >= 60)
			VC_sum++;
		if (students[i].jump_score >= 60)
			jump_sum++;
		if (students[i].runLong_score >= 60)
			runLong_sum++;
		if (students[i].runShort_score >= 60)
			runShort_sum++;
		if (students[i].count_score >= 60)
			count_sum++;
	}
	if (nowSum == 0)
		printf("无学生信息!!!\n");
	else
	{
		printf("肺活量:%d%%\n", VC_sum * 100 / nowSum);
		printf("跳远:%d%%\n", jump_sum * 100 / nowSum);
		printf("长跑:%d%%\n", runLong_sum * 100 / nowSum);
		printf("短跑:%d%%\n", runShort_sum * 100 / nowSum);
		printf("引体向上/仰卧起坐:%d%%\n", count_sum * 100 / nowSum);
	}	
	printf("按回车返回");
	if (getchar() != '\n');	
}

void load()
{
	int num;
	FILE* fp;
	fp = fopen("data.txt", "r");	
	fscanf(fp, "%d", &num);
	for(i= 0;i<num ; i++)
	{
		fscanf(fp, "%s", students[nowSum].name);
		fscanf(fp, "%s", students[nowSum].stuNum);
		fscanf(fp, "%s", students[nowSum].department);
		fscanf(fp, "%d", &students[nowSum].sex);
		fscanf(fp, "%f", &students[nowSum].height);
		fscanf(fp, "%f", &students[nowSum].weight);
		fscanf(fp, "%f", &students[nowSum].BMI);
		fscanf(fp, "%f", &students[nowSum].VC);
		fscanf(fp, "%f", &students[nowSum].jump);
		fscanf(fp, "%f", &students[nowSum].runLong);
		fscanf(fp, "%f", &students[nowSum].runShort);
		fscanf(fp, "%d", &students[nowSum].count);
		fscanf(fp, "%d", &students[nowSum].BMI_score);
		fscanf(fp, "%d", &students[nowSum].VC_score);
		fscanf(fp, "%d", &students[nowSum].jump_score);
		fscanf(fp, "%d", &students[nowSum].runLong_score);
		fscanf(fp, "%d", &students[nowSum].runShort_score);
		fscanf(fp, "%d", &students[nowSum].count_score);
		nowSum++;
	}	
}

void save()
{
	FILE* fp;
	fp = fopen("data.txt", "w");
	fprintf(fp, "%d\n", nowSum);
	for (i = 0; i < nowSum; i++)
	{
		fprintf(fp, "%s\n", students[i].name);
		fprintf(fp, "%s\n", students[i].stuNum);
		fprintf(fp, "%s\n", students[i].department);
		fprintf(fp, "%d\n", students[i].sex);
		fprintf(fp, "%f\n", students[i].height);
		fprintf(fp, "%f\n", students[i].weight);
		fprintf(fp, "%f\n", students[i].BMI);
		fprintf(fp, "%f\n", students[i].VC);
		fprintf(fp, "%f\n", students[i].jump);
		fprintf(fp, "%f\n", students[i].runLong);
		fprintf(fp, "%f\n", students[i].runShort);
		fprintf(fp, "%d\n", students[i].count);
		fprintf(fp, "%d\n", students[i].BMI_score);
		fprintf(fp, "%d\n", students[i].VC_score);
		fprintf(fp, "%d\n", students[i].jump_score);
		fprintf(fp, "%d\n", students[i].runLong_score);
		fprintf(fp, "%d\n", students[i].runShort_score);
		fprintf(fp, "%d\n", students[i].count_score);
	}
}

int main()
{
	void UI();
	void InputData();
	void ChangeData();
	void DeletData();
	void FindScore();
	void FindUnpass();
	void PassRate();
	void load();
	void save();
	
	load();
	while (1)
	{
		choice = -1;
		UI();
		switch (choice)
		{
			case 0:
				printf("感谢使用本系统,祝您生活愉快!");
				save();
				return 0;
			case 1:
				InputData();
				printf("\n");
				break;
			case 2:
				ChangeData();
				printf("\n");
				break;
			case 3:
				DeletData();
				printf("\n");
				break;
			case 4:
				FindScore();
				printf("\n");
				break;
			case 5:
				FindUnpass();
				printf("\n");
				break;
			case 6:
				PassRate();
				printf("\n");
				break;	
			default:
			printf("输入错误。。。\n");
			printf("\n");
	    }	
	}
	return 0;
}

至于代码为什么这么长,当然是有很多重复的代码了,
其实就是因为我菜,只会写屎山代码
想优化自己去优化吧!!!
代码写的脑子发懵........
别忘记了先在与代码相同的目录下创建文本哦。

posted @ 2021-03-15 23:00  ReyHan  阅读(1520)  评论(0)    收藏  举报