#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3 //宏定义N个学生
#define M 3
struct student
{
int num;
char name[20];
float score[3];
float ave;
}stu[N];
struct emp
{ int num;
char name[20];
float score[3];
float ave;
}em_case[20];
void finput();
void fsearch();
void fchange();
void foutput();
void faver();
void high();
void divide();
int main()
{
int a=0;
while(a>=0&&a<7)
{
printf("**********************************************************\n");
printf("* 欢迎使用高校学生成绩管理系统V1.0 *\n");
printf("* 请选择功能 *\n");
printf("**********************************************************\n");
printf("* 1.录入学生成绩计算学生总平均分 *\n");
printf("* 2.查找学生成绩 *\n");
printf("* 3.修改学生成绩 *\n");
printf("* 4.计算学生每门课平均分最高分最低分 *\n");
printf("* 5.根据学生总平均分从高到低排序 *\n");
printf("* 6.划分学生成绩等级 *\n");
printf("* 0.退出系统 *\n");
printf("**********************************************************\n");
printf("请输入所选功能前的序号:");
scanf_s("%d", &a); //输入所选功能前的序号
printf("\n");
switch (a)
{
case 1:
finput();
break;
case 2:
fsearch();
break;
case 3:
fchange();
break;
case 4:
faver();
break;
case 5:
high();
break;
case 6:
divide();
break;
case 0:
break;
default:break;
}
}
return 0;
}
void foutput()
{
FILE *fp;
int i;
if((fp=fopen("student","w"))==NULL)
{printf("can not open file.");
return;
}
for(i=0;i<N;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
{
printf("error\n");
return;
}
fclose(fp);
}
void finput()
{
int i;
float sum[N];
FILE *fp;
printf("请输入学生学号、姓名及高数、C语言、数据结构的成绩\n");
for (i = 0; i < N; i++)
{
scanf_s("%s %d %d %d %d",stu[i].name,20,stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
sum[i]=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].ave=sum[i]/3;
}
foutput();
fp=fopen("student","rb");
printf("\n name NO. 高数 C语言 数据结构 平均分\n");
for (i = 0; i < N; i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("%s %d %d %d %d %8.2f",stu[i].name,20,stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);
}
fclose(fp);
}
void fsearch()
{
FILE *fp,*fp1;
int i=0,num=0;
printf("请输入学生学号:\n");
scanf_s("%d", &stu[i].num);
for (i = 0; i < N; i++)
{
if (stu[i].num == num)
{ printf("\n name NO. 高数 C语言 数据结构 平均分\n");
printf("%s %d %d %d %d %8.2f",stu[i].name,20,stu[i].num,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);
}
}
if((fp=fopen("student","r"))==NULL)
{printf("can not open file.");
exit(0);
}
for(i=0;i<N;i++)
if(fwrite(&em_case[i],sizeof(struct emp),1,fp)!=1)
printf("error\n");
fclose(fp);
}
void fchange()
{
FILE *fp;
int i,num;
printf("请输入要修改的学生学号: ");
scanf("%d",&num);
printf("\n");
for(i=0; i<=N; i++)
if(stu[i].num==num)
{
printf("请输入学生的姓名:\n");
scanf_s("%d", stu[i].name);
printf("请输入学生的学号:\n");
scanf_s("%d", &stu[i].num);
printf("请输入学生的高数成绩\n");
scanf_s("%d", &stu[i].score[0]);
printf("请输入学生的C语言成绩\n");
scanf_s("%d", &stu[i].score[1]);
printf("请输入学生的数据结构成绩\n");
scanf_s("%d", &stu[i].score[2]);
}
if((fp=fopen("student","w"))==NULL)
{
printf("The file can not open\n");
return;
}
for(i=0;i<N;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
{
printf("file write error\n");
return;
}
fclose(fp);
}
void faver()
{
int i,j,max=stu[0].score[i],min=stu[0].score[i];
float sum[M];
float ave1[3];
float t[3],s[3];
for(i=0;i<N;i++)
{
sum[i]=stu[0].score[i]+stu[1].score[i]+stu[2].score[i];
ave1[i]=sum[i]/3;
}
printf("各科的平均分分别为:%8.2f \n",ave1[i]);
printf("\n");
for(i=0;i<N;i++)
{
max=stu[0].score[i];
for (j=0;j<3;j++)
{
if (max < stu[j].score[i])
{
max = stu[j].score[i];
t[i]=max;
}
}printf("各科最高分分别为:%d \n",t[i]);
}
printf("\n");
for(i=0;i<N;i++)
{
min=stu[0].score[i];
for (j=0;j<3;j++)
{
if (min > stu[j].score[i])
{
min = stu[j].score[i];
s[i]=min;
}
}printf("各科最低分分别为:%d \n",s[i]);
}
}
void high()
{
int i,j,t;
for (j = 0; j < 3; j++)
{
for (i = 0; i < 2- j; i++)
if (stu[i].ave < stu[i + 1].ave)
{
t = stu[i].ave; stu[i].ave = stu[i + 1].ave; stu[i + 1].ave = t;
}
}
printf("根据平均分从高到低排序后:%d %.2f\n", stu[i].num, stu[i].ave);
printf("\n");
}
void divide()
{
int i,num;
printf("请输入要划分等级的学生学号: ");
scanf("%d",&num);
printf("\n");
for(i=0; i<=N; i++)
if(stu[i].num==num)
scanf_s("%8.2f\n",stu[i].ave);
for(i=0;i<N;i++)
{
if(stu[i].ave>=90)
printf("优\n");
else if(stu[i].ave>=80&&stu[i].ave<90)
printf("良\n");
else if(stu[i].ave>=60&&stu[i].ave<80)
printf("中\n");
else
printf("差\n");
}
}