#define MAXVALUE 9999
struct StuGrade
{
int num;
char name[20];
char sex[10];
float tzzs;
int fhl;
int yt;
int yw;
float sum;
char dj[20];
} stu[N];
void FileRead(int*);
float GetGrade(StuGrade one);
int IsExist(int*, int num);
void Input(int*);
void Search(int);
int Update(int *);
void Delete(int*);
void Tongji(int);
void Show(int);
void Sort(int);
void SortFun(int, int type);
void Save(int);
void ShowAll(int);
int main()
{
int i = 0, a, b, count = 0;
b = 2021;
printf("密码:\n");
scanf("%d", &a);
FileRead(&count);
if (a != b)
printf("密码错误!!");
else
{
system("cls");
for (; ; )
{
system("cls");
printf("\n **************************************************************************\n");
printf(" 欢迎进入体测成绩判定系统\n");
printf(" **************************************************************************\n");
printf(" * \t 菜单 *\n");
printf(" * 1.输入学生成绩;\t 2.查询成绩;\t 3.修改学生成绩; *\n");
printf(" * 4.删除学生信息;\t 5.统计人数;\t 6.排序显示; *\n");
printf(" * 7.退出系统(文件保存)\t\t8.显示所有学生信息 *\n");
printf(" **************************************************************************\n");
printf("请输入选项:\n");
scanf("%d", &i);
switch (i)
{
case 1:
printf("你选择了菜单1\n");
Input(&count);
break;
case 2:
printf("你选择了菜单2\n");
Search(count);
break;
case 3:
printf("你选择了菜单3\n");
Update(&count);
break;
case 4:
printf("你选择了菜单4\n");
Delete(&count);
break;
case 5:
printf("你选择了菜单5\n");
Tongji(count);
break;
case 6:
printf("你选择了菜单6\n");
Sort(count);
break;
case 7:
printf("你选择了菜单7\n");
Save(count); break;
case 8:
printf("你选择了菜单8\n");
ShowAll(count);
default:
printf("选择错误!请重选");
break;
}
if (i == 7)break;
}
}
return 0;
}
//读取文件
void FileRead(int*count) {
FILE* fp = fopen("data.txt", "rb+");
if (fp == NULL) {
printf("文件不存在!"); return;
}
int tmp;
float res = 0;
while (~fscanf(fp, "%d%s%s%f%d%d", &stu[*count].num, stu[*count].name, stu[*count].sex, &stu[*count].tzzs, &stu[*count].fhl, &tmp))
{
if (strcmp(stu[*count].sex, "男") == 0)
stu[*count].yt = tmp;
if (strcmp(stu[*count].sex, "女") == 0)
stu[*count].yw = tmp;
res = GetGrade(stu[*count]);
stu[*count].sum = res;
if (res <= 100 && res >= 95)
strcpy(stu[*count].dj, "excellent");
else if (res >= 80 && res < 95)
strcpy(stu[*count].dj, "good");
else if (res < 80 && res >= 60)
strcpy(stu[*count].dj, "pass");
else
strcpy(stu[*count].dj, "fail");
*count = *count + 1;
}
fclose(fp);
}
//计算成绩
float GetGrade(StuGrade one)
{
else if (strcmp(one.sex, "女") == 0)
{
//肺活量女
if (one.fhl >= 3400)
f = 100;
else if (one.fhl < 3400 && one.fhl >= 3001)
f = 80;
else if (one.fhl < 3001 && one.fhl >= 2051)
f = 60;
else if (one.fhl < 2051 && one.fhl >= 0)
f = 30;
//仰卧起坐女
if (one.yw >= 56)
g = 100;
else if (one.yw < 56 && one.yw >= 53)
g = 80;
else if (one.yw < 53 && one.yw >= 25)
g = 60;
else if (one.yw < 25 && one.yw >= 0)
g = 30;
}
//计算成绩
sum=e * 0.25 + f * 0.35 + g * 0.40;
return sum;
}
//判断学号存在
int IsExist(int*count, int num)
{
int c;
for (c = 0; c < *count; c++)
{
if (num == stu[c].num)
{
return c;
}
}
return -1;
}
//录入函数
void Input(int* count)
{
int num;
int a, c, d, e, f, g;
int now=*count;
printf("请输入选择输入的人数:");
scanf("%d", &a);
if (a > 0)
{
*count = *count + a;
for (d= now; d <*count ; d++)
{
printf("请输入第%d个学生信息\n", d + 1);
printf("请输入学号:");
scanf("%d", &num);
if (IsExist(count, num)!=-1)
{
printf("已有该生信息,请重新输入学号:");
d--; continue;
}
stu[d].num = num;
printf("请输入姓名:");
scanf("%s", stu[d].name);
printf("请输入性别:");
scanf("%s", stu[d].sex);
printf("请输入体重指数:");
scanf("%f", &stu[d].tzzs);
printf("请输入肺活量:");
scanf("%d", &stu[d].fhl);
if (strcmp(stu[d].sex, "男") == 0)
{
printf("请输入引体向上:");
scanf("%d", &stu[d].yt);
stu[d].yw = 0;
if (stu[d].tzzs >= 17.9 && stu[d].tzzs <= 23.9)
e = 100;
else if ((stu[d].tzzs < 17.9 && stu[d].tzzs>0) || (stu[d].tzzs < 28.0 && stu[d].tzzs>23.9))
e = 80;
else if (stu[d].tzzs >= 28.0)
e = 60;
else
{
printf("\n您输入的数据有误,请修改体重指数:");
scanf("%f", &stu[d].tzzs);
}
if (stu[d].fhl >= 4800)
f = 100;
else if (stu[d].fhl < 4800 && stu[d].fhl >= 4181)
f = 80;
else if (stu[d].fhl < 4181 && stu[d].fhl >= 3101)
f = 60;
else if (stu[d].fhl < 3101 && stu[d].fhl >= 0)
f = 30;
else
{
printf("\n您输入的数据有误,请修改肺活量:");
scanf("%d", &stu[d].fhl);
}
if (stu[d].yt >= 19)
g = 100;
else if (stu[d].yt < 19 && stu[d].yt >= 16)
g = 80;
else if (stu[d].yt < 16 && stu[d].yt >= 10)
g = 60;
else if (stu[d].yt < 10 && stu[d].yt >= 0)
g = 30;
else
{
printf("\n您输入的数据有误,请修改引体:");
scanf("%d", &stu[d].yt);
}
}
else
{
printf("请输入仰卧起坐:");
scanf("%d", &stu[d].yw);
stu[d].yt = 0;
if (stu[d].tzzs >= 17.2 && stu[d].tzzs <= 23.9)
e = 100;
else if ((stu[d].tzzs < 17.1 && stu[d].tzzs>0) || (stu[d].tzzs < 28.0 && stu[d].tzzs>23.9))
e = 80;
else if (stu[d].tzzs >= 28.0)
e = 60;
else
{
printf("您输入的数据有误,请修改体重指数:");
scanf("%f", &stu[d].tzzs);
}
if (stu[d].fhl >= 3400)
f = 100;
else if (stu[d].fhl < 3400 && stu[d].fhl >= 3001)
f = 80;
else if (stu[d].fhl < 3001 && stu[d].fhl >= 2051)
f = 60;
else if (stu[d].fhl < 2051 && stu[d].fhl >= 0)
f = 30;
else
{
printf("您输入的数据有误,请修改肺活量:");
scanf("%d", &stu[d].fhl);
}
if (stu[d].yw >= 56)
g = 100;
else if (stu[d].yw < 56 && stu[d].yw >= 53)
g = 80;
else if (stu[d].yw < 53 && stu[d].yw >= 25)
g = 60;
else if (stu[d].yw < 25 && stu[d].yw >= 0)
g = 30;
else
{
printf("您输入的数据有误,请修改:");
scanf("%d", &stu[d].yw);
}
}
stu[d].sum = e * 0.25 + f * 0.35 + g * 0.40;
if (stu[d].sum <= 100 && stu[d].sum >= 95)
strcpy(stu[d].dj, "excellent");
else if (stu[d].sum >= 80 && stu[d].sum < 95)
文章借鉴于此纷传