现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下:

现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下:
1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课。
2、完成成绩排序:按单科成绩排序、按平均分排序;
3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60-79分,80以上);
4、用结构体完成学生姓名和成绩的输入:
5、完成成绩查询:单科查询、平均分查询、按姓名查询、分段查询等;
6、完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数
7、完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金名单等;
求c语言编程 [email protected]
···

/*
现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下:
1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课
2、完成成绩排序:按单科成绩排序、按平均分排序
3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60-79分,80以上)
4、用结构体完成学生姓名和成绩的输入
5、完成成绩查询:单科查询、平均分查询、按姓名查询、分段查询等;
6、完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数
7、完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金名单等
*/
#include <stdio.h>
#include <string.h>
#define N 1
struct student //定义结构变量体
{
char name[10];
int english,math,computer;
float avg;
}std[N];

void input();
void sort();
void count();
void inquire();
void scholarship_inq();
void output();
int main()
{
int flag;
printf(" 学生成绩管理系统\n");

while(1)
{
if(std[0].name[0]!='\0') //检测是否存有数据
printf("1.信息录入(已输入数据)\n");
else printf("1.信息录入(未输入数据)\n");
printf("2.成绩排序\n");
printf("3.成绩统计\n");
printf("4.成绩查询\n");
printf("5.奖学金统计\n");
printf("6.成绩输出\n");
printf("7.退出\n");
printf("请选择:\n");
scanf("%d",&flag);
switch(flag)
{
case 0:
return 0;
break;
case 1:
input();
break;
case 2:
sort();
break;
case 3:
count();
break;
case 4:
inquire();
break;
case 5:
scholarship_inq();
break;
case 6:
output();
break;
case 7:
exit();
break;
default:
printf("输入错误,请重新输入!\n");
}
}
return 0;
}

/*1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课*/
void input()
{
int i;
for(i=0;i<N;i++)
{
printf("请输入第%d个学生的姓名:\n",i+1);
scanf("%s",std[i].name);
printf("请输入第%d个学生的三科成绩,空格分隔,如xx xx xx:\n",i+1);
scanf("%d%d%d",&std[i].english,&std[i].math,&std[i].computer);
std[i].avg=(std[i].english+std[i].math+std[i].computer)/3.0; //求平均值
}
}

/*2、完成成绩排序:按单科成绩排序、按平均分排序*/
void sort() //排序
{
int flag,i,j,key=0;
struct student t;
while(1)
{
d: printf("1.按单科成绩排序\n");
printf("2.按平均分排序\n");
printf("3.返回\n");
printf("请选择:\n");
scanf("%d",&flag);
switch(flag)
{
case 3:
return ;
case 1:
{
printf("请选择:1.english,2.math,3.computer,4.other:返回\n");
scanf("%d",&key);
if (1==key)
{
for (i=0;i<N-1;i++)
for (j=0;j<N-1;j++)
{
if (std[i].english>std[i+1].english)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}
for (i=0;i<N;i++)
{
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
printf("%s的math成绩为:%d\n",std[i].name,std[i].math);
printf("%s的computer成绩为:%d\n",std[i].name,std[i].computer);
}
printf("排序结束\n\n");
}
if (2==key)
{
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1;j++)
{
if(std[i].math>std[i+1].math)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}
for (i=0;i<N;i++)
{
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
printf("%s的math成绩为:%d\n",std[i].name,std[i].math);
printf("%s的computer成绩为:%d\n",std[i].name,std[i].computer);
}
printf("排序结束\n\n");
}
}
if (3==key)
{
for (i=0;i<N-1;i++)
for (j=0;j<N-1;j++)
{
if (std[i].computer>std[i+1].computer)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}
for(i=0;i<N;i++)
{
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
printf("%s的math成绩为:%d\n",std[i].name,std[i].math);
printf("%s的computer成绩为:%d\n",std[i].name,std[i].computer);
}
printf("排序结束\n\n");
}
else break;
if (4==key)
{
goto d;
}
break;
}
case 2:
{
{
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1;j++)
{
if(std[i].avg>std[i+1].avg)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}
}
}
for(i=0;i<N;i++)
{
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
printf("%s的math成绩为:%d\n",std[i].name,std[i].math);
printf("%s的computer成绩为:%d\n",std[i].name,std[i].computer);
printf("%s的平均成绩为:%f\n",std[i].name,std[i].avg);
}
printf("排序结束\n\n");
}
}
}
}

/*3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60-79分,80以上)*/
void count()
{
int flag,i,sum1=0,sum2=0,sum3=0,key;
while(1)
{
s: printf("1.按单科分段统计人数\n");
printf("2.按平均分分段统计\n");
printf("3.返回\n");
printf("请输入:\n");
scanf("%d",&flag);
switch (flag)
{
case 3:
return;
case 1:
{
printf("请选择:1.english,2.math,3.computer,4.other:返回\n");
scanf("%d",&key);
if (1==key)
{
sum1=0,sum2=0,sum3=0;
for (i=0;i<N;i++)
{
if (std[i].english<60)
sum1++;
else if ((std[i].english>=60) && (std[i].english<80))
sum2++;
else if (std[i].english>=80)
sum3++;
}
printf("english科目统计结果:60分以下%d人,60-79分%d人,80以上%d人\n",sum1,sum2,sum3);
for (i=0;i<N;i++)
{
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
}
}
if (2==key)
{
sum1=0,sum2=0,sum3=0;
for(i=0;i<N;i++)
{
if (std[i].math<60)
sum1++;
else if ((std[i].math>=60) && (std[i].math<80))
sum2++;
else if(std[i].math>=80 )
sum3++;
}
printf("math科目统计结果:60分以下%d人,60-79分%d人,80以上%d人\n",sum1,sum2,sum3);
}
if (3==key)
{
sum1=0,sum2=0,sum3=0;
for(i=0;i<N;i++)
{
if (std[i].computer<60)
sum1++;
else if ((std[i].computer>=60) && (std[i].computer<80))
sum2++;
else if (std[i].computer>=80)
sum3++;
}
printf("computer科目统计结果:60分以下%d人,60-79分%d人,80以上%d人\n",sum1,sum2,sum3);
}
else break;
if (4==key)
goto s;
break;
}
case 2:
{ sum1=0,sum2=0,sum3=0;
for(i=0;i<N;i++)
{
if (std[i].avg<60)
sum1++;
else if ((std[i].avg>=60) && (std[i].avg<80))
sum2++;
else if (std[i].avg>=80 )
sum3++;
}
printf("平均分统计结果:60分以下%d人,60-79分%d人,80以上%d人\n",sum1,sum2,sum3);
}
}
}

}

/*完成成绩查询:单科查询、平均分查询、按姓名查询、分段查询等;*/
void inquire()
{
int flag,i,key;
char str[10];
while(1)
{
f: printf("1.单科查询\n");
printf("2.平均分查询\n");
printf("3.按姓名查询\n");
printf("4.分段查询\n");
printf("5.返回\n");
printf("请选择:\n");
scanf("%d",&flag);
switch(flag)
{
case 5:
return;
break;
case 1 :
{
printf("请选择:1.english,2.math,3.computer,4.other:返回\n");
scanf("%d",&key);
if (1==key)
for(i=0;i<N;i++)
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
if (2==key)
for(i=0;i<N;i++)
printf("%s的math成绩为:%d\n",std[i].name,std[i].math);
if (3==key)
for(i=0;i<N;i++)
printf("%s的computer成绩为:%d\n",std[i].name,std[i].computer);
if (4==key)
goto f;
break;
}
case 2 :
{
for(i=0;i<N;i++)
printf("%s的平均分成绩为:%f\n",std[i].name,std[i].avg);
break;
}
case 3 :
{
printf("要查询的姓名\n");
scanf("%s",str);
for (i=0;i<N;i++)
if (strcmp(std[i].name,str)==0)
{
printf("%s的english,math,computer的成绩分别为%d,%d,%d\n",std[i].name,std[i].english,std[i].math,std[i].computer);
break;
}
printf("没有找到这个名字,请重新选择\n");
break;
}
case 4 :
{
printf("输入查询分段,1:<60分以下,2:60-79分,3:80以上,other:返回\n");
scanf("%d",&key);
if (1==key)
for(i=0;i<N;i++)
{
if(std[i].english<60)
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
if(std[i].math<60)
printf("%s的math成绩为:%d\n",std[i].name,std[i].math);
if(std[i].computer<60)
printf("%s的computer成绩为:%d\n",std[i].name,std[i].computer);
}
if (2==key)
for(i=0;i<N;i++)
{
if(std[i].english>=60 && std[i].english<80)
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
if(std[i].math>=60 && std[i].math<80)
printf("%s的math成绩为:%d\n",std[i].name,std[i].math);
if(std[i].computer>=60 && std[i].computer<80)
printf("%s的computer成绩为:%d\n",std[i].name,std[i].computer);
}
if(3==key)
for(i=0;i<N;i++)
{
if(std[i].english>80)
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
if(std[i].math>80)
printf("%s的math成绩为:%d\n",std[i].name,std[i].math);
if(std[i].computer>80)
printf("%s的computer成绩为:%d\n",std[i].name,std[i].computer);
}
if (4==key)
goto f;
}
}
}
}

/*完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数*/
void scholarship_inq()
{
int i,sum1=0,sum2=0;
for (i=0;i<N;i++)
{
if (std[i].english>=90 && std[i].math>=90 && std[i].computer>=90)
sum1++;
if (std[i].english>=80 && std[i].english<90)
if(std[i].math>=80 && std[i].math<90)
if (std[i].computer>=80 && std[i].computer<90)
sum2++;
}
printf("获得一等奖学金人数是:%d,获得二等奖学金人数是:%d,奖学金总数是:%d\n",sum1,sum2,sum1+sum2);
}

/*完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金名单等*/
void output()
{
int flag,i,j,key;
struct student t;
char str[10];
while(1)
{
L: printf("1.按单科输出\n");
printf("2.输出所有成绩\n");
printf("3.按平均分由高到低输出\n");
printf("4.输出奖学金名单\n");
printf("5.返回\n");
printf("请输入:\n");
scanf("%d",&flag);
switch(flag)
{
case 5:
return ;
case 1:
{
printf("请选择:1.english,2.math,3.computer,4.other:返回\n");
scanf("%d",&key);
if (1==key)
for(i=0;i<N;i++)
printf("%s的english成绩为:%d\n",std[i].name,std[i].english);
if (2==key)
for(i=0;i<N;i++)
printf("%s的math成绩为:%d\n",std[i].name,std[i].math);
if (3==key)
for(i=0;i<N;i++)
printf("%s的computer成绩为:%d\n",std[i].name,std[i].computer);
if (4==key)
goto L;
break;
}
case 2:
{
for (i=0;i<N;i++)
printf("%s的english,math,compouter成绩分别为:%d,%d,%d\n",std[i].name,std[i].english,std[i].math,std[i].computer);
break;
}
case 3:
{
for (i=0;i<N-1;i++)
for (j=0;j<N-1;j++)
{
if (std[i].avg>std[i+1].avg)
{
t=std[i];std[i]=std[i+1];std[i+1]=t;
}
}

for(i=0;i<N;i++)
{
printf("%f\n",std[i].name,std[i].avg);
break;
}
}
case 4:
{
printf("获得奖学金的有:\n");
for(i=0;i<N;i++)
{
if (std[i].english>=80 && std[i].math>=80 && std[i].computer>=80) //统计奖学金人数
printf("%s\t",std[i].name);
break;
}
}
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-01
直接去网上搜吧,学生成绩管理系统有很多的,或者直接花钱买一份也可以,就几十块钱
第2个回答  2011-11-29
所有的管理系统,都是数据库的游戏。就是对数据库的操作。
先好好了解数据库方面的知识。
第3个回答  2011-12-06
有点不懂,我也求答案[email protected]
相似回答