高悬赏!!!!C语言课程设计 学生成绩管理系统《急!!!!!!》求高手帮忙!!

学生成绩管理系统 要求~~~~
学生成绩管理系统有3个数据文件(二进制文件):
STUDENT.DAT 存储学生基础数据, 有学号,姓名,班名
COURSE.DAT 存储课程基础数据, 有课号,课名
GRADE.DAT 存储学生成绩数据, 有学号,课号,成绩

其中:学号,课号 用long 类型
成绩,年龄 int
其他:字符串

1)具备对学生基础数据的维护功能(添加、删除、修改)
2)具备对课程基础数据的维护功能(添加、删除、修改)
3)具备对学生成绩数据的维护功能(添加、删除、修改)
4) 具备对成绩的查询功能(按学号、姓名、或课程名查询成绩,排序等 )
5) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)
6) 采用菜单界面

系统主菜单:

学生成绩管理系统主菜单
1:学生基础数据维护
2:课程基础数据维护
3:学生成绩数据维护
4:成绩查询
5:成绩统计
0: 退出系统
请输入数字选择:

学生基础数据维护菜单
1:学生数据添加
2:学生数据修改
3:学生数据删除
0:返回上级菜单
请输入数字选择:

课程基础数据维护菜单
1:课程数据添加
2:课程数据修改
3:课程数据删除
0:返回上级菜单
请输入数字选择:

成绩数据维护菜单
1:成绩数据添加
2:成绩数据修改
3:成绩数据删除
0:返回上级菜单
请输入数字选择:

成绩查询菜单
1:按学号查询成绩
2:按姓名查询成绩
3:按课名查询成绩
4:按班名+课名查询成绩
0:返回上级菜单
请输入数字选择:

成绩统计菜单
1:按课名统计最高分,最低分,平均分,及格率
2:按班名统计最高分,最低分,平均分,及格率
3:按班名+课名统计优、良、中、及、不及格人数
4:统计各班级平均成绩
0:返回上级菜单
请输入数字选择:
要把~~谢了

第1个回答  2010-12-24
#include "stdio.h"
#define N 10
struct student
{char num[10];
char name[20];
float score[3];
float sum;
float aver;
}stu[N];
void main()
{
void count(struct student stu[]);
void sort(struct student stu[]);
void find(struct student stu[]);
int i;
float temp;
for(i=0;i<N;i++)
{printf("enter data of the%dth student:\n",i+1);
printf("number: ");
gets(stu[i].num);
printf("name: ");
gets(stu[i].name);
printf("score1: ");
scanf("%f",&temp);
stu[i].score[0]=temp;
printf("score2: ");
scanf("%f",&temp);
stu[i].score[1]=temp;
printf("score3: ");
scanf("%f",&temp);
getchar();
stu[i].score[2]=temp;
}
count(stu);
printf("\n");
sort(stu);
printf("\n");
find(stu);
}

void count(struct student stu[])
{float sum,aver;
int i,j;
for(i=0;i<N;i++)
{sum=0;
for(j=0;j<3;j++)
sum+=stu[i].score[j];
aver=sum/3.0;
stu[i].sum=sum;
stu[i].aver=aver;
}
printf("number name sum average \n");
for(i=0;i<N;i++)
printf("%-8s%-10s%-9.2f%-9.2f\n",stu[i].num,stu[i].name,stu[i].sum,stu[i].aver);
}

void sort(struct student stu[])
{int i,j,k;
struct student temp;
for(i=0;i<N;i++)
{k=i;
for(j=i+1;j<N;j++)
if(stu[k].sum<stu[j].sum)k=j;
if(k!=i)
{temp=stu[i];
stu[i]=stu[k];
stu[k]=temp;}
}
printf("number name score1 score2 score3 sum average \n");
for(i=0;i<N;i++)
printf("%-8s%-10s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].aver);
}

void find(struct student stu[])
{int i,j,sum,flag=0;
printf("the student of two scores<60:\n");
for(i=0;i<N;i++)
{
sum=0;
for(j=0;j<3;j++)
if(stu[i].score[j]<60)sum++;
if(sum>=2)
{flag=1;
printf("%-8s%-10s\n",stu[i].num,stu[i].name);
}
}
if(flag==0)
printf(" not exist!\n");
}
第2个回答  推荐于2020-12-07
可以借助Baidu Hi示意我们
有机会可能完成你所面临的任务
具体的要求也可能示意我们
高悬赏!!!!C语言**** 学生成绩管理**《急!!...
ES:\\912645955D840C169388A7EFF9F58CCD
第3个回答  2010-12-23
我有只是不是按菜单排的。。功能差不多,要么?
第4个回答  2010-12-23
你题目也太长了,相当于是做一个项目了,怎么可能在短时间做成本回答被网友采纳
相似回答