学生体测信息管理系统
废话不多说,我们直接进入正题。
(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;
}
至于代码为什么这么长,当然是有很多重复的代码了,
其实就是因为我菜,只会写屎山代码
想优化自己去优化吧!!!
代码写的脑子发懵........
别忘记了先在与代码相同的目录下创建文本哦。

浙公网安备 33010602011771号