成绩信息管理系统
1、对于已经给定的文档,导入成绩信息。学生信息包括:学号、姓名、高等数学成绩、大学物理成绩、英语成绩、语文成绩、总成绩等;
2、系统以菜单方式工作;
3、实现通过学号快速的查询出学生成绩。;
4、基本算法运用模块(查询,统计,排序等);
5、实现对各科成绩的数据分析(优秀人数,挂科率等等)。
6、浏览所有学生的成绩信息
#include
#include
struct student
{ int num;
char name[10];
int score1;
int score2;
int score3;
int score4;
}stu[100];
int main()
{ int m,b; //m为功能代码,b为要查询学生的学号。
void filein(); //声明读入数据函数
void personmassage();//声明个人资料函数
void found(int x); //声明查询函数
void max_value(); //声明最高成绩函数
void percentage1();//声明语文百分比函数
void percentage2();//声明高数百分比函数
void percentage3();//声明英语百分比函数
void percentage4();//声明大物百分比函数
void found2();//声明浏览函数
filein(); //将stuin.txt中的信息读入数组
printf("***********************************************************\n");
printf("****************** 功 能 主 菜 单 *************************\n");
printf("**1程序制作人信息 **\n");
printf("**2根据学号查询某学生信息 **\n");
printf("**3显示总成绩最高的学生的学号,姓名和成绩。 **\n");
printf("**4查询各科优秀及格率等相关情况: **\n");
printf("**5浏览所有学生成绩 **\n");
printf("***********************************************************\n");
printf("请请输入你的选择(1~5):\n");
scanf("%d",&m);
while(m>0&&m<=6)
{switch(m)
{case 1:personmassage();break;
case 2:printf("请输入要查找学生的学号:\n");
scanf("%d",&b);
found(b);break;
case 3:max_value();break;
case 4:
printf("\n");
int a;
printf(" 查询语文情况请输入1\n 查询高数情况请输入2\n 查询英语情况请输入3\n 查看大物情况请输入4\n");
printf("您希望查询的科目为");
scanf("%d",&a);
switch(a)
{case 1:percentage1();break;
case 2:percentage2();break;
case 3:percentage3();break;
case 4:percentage3();break;}
break;
case 5:found2();break;
}
scanf("%d",&m);
}
return 0;
}
void filein()//将stuin.txt中的信息读入数组
{int i;
FILE *fp1;
fp1=fopen("stuin.txt","r");
for(i=0;i<100;i++)
fscanf(fp1,"%d %s %d %d %d %d",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].score4);
fclose(fp1);
}
void personmassage()
{
printf("\t*******************************\n\n");
printf("\t*学校:河 南 科 技 大 学 *\n\n");
printf("\t*专业班级:电信***** *\n\n");
printf("\t*学号:11111111111 *\n\n");
printf("\t*******************************\n\n");
}
void found(int x)//根据学号查询成绩
{ FILE *fp2;
int i;
printf("要查询的学生学号为%d\n\n",x);
for(i=0;i<100;i++)
if(x==stu[i].num)
{printf("学号:%d\n姓名:%s\n语文分数:%d\n高数分数:%d\n英语分数:%d\n大物分数:%d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4);
fp2=fopen("stui.txt","a");
fprintf(fp2,"学号:%d\n姓名:%s\n语文分数:%d\n高数分数:%d\n英语分数:%d\n大物分数:%d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4);}
fclose(fp2);
}
void max_value()//输出总成绩最高者的信息
{int i,max;
FILE *fp3;
max=stu[0].score1+stu[0].score2+stu[0].score3+stu[0].score4;
for(i=1;i<100;i++)
if(max<(stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4)) max=stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4;
printf("此班最高分是:%d\n",max);
for(i=0;i<100;i++)
if((stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4) ==max)
{printf("最高分学生的学号,姓名,成绩分别为\n");
fp3=fopen("stui.txt","a");
fprintf(fp3,"最高分学生的学号,姓名,成绩分别为\n");
printf("%d,%s,%d,%d,%d,%d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4);
fprintf(fp3,"%d,%s,%d,%d,%d,%d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4);
}
fclose(fp3);
}
void percentage1()//查询语文优秀及格率等相关情况
{int i,excel=0,pass=0,fail=0;
FILE *fp4;
float b0,b1,b2;
for(i=0;i<50;i++)
{
if(stu[i].score1 >=90)
++excel;
else if(stu[i].score1 >=60)
++pass;
else
++fail;
}
b0=excel/50.0;
b1=(pass+excel)/50.0;
b2=fail/50.0;
printf("该科优秀学生人数为:%d优秀率为%6.2f\n该科及格人数为:%d及格率为%6.2f\n该科不及格人数:%d不及格率为%6.2f\n",excel,b0,pass+excel,b1,fail,b2);
fp4=fopen("stui.txt","a");
fprintf(fp4,"该科优秀学生人数为:%d优秀率为%6.2f\n该科及格人数为:%d及格率为%6.2f\n该科不及格人数:%d不及格率为%6.2f\n",excel,b0,pass+excel,b1,fail,b2);
fclose(fp4);}
void percentage2()//查询高数优秀及格率等相关情况
{int i,excel=0,pass=0,fail=0;
FILE *fp4;
float b0,b1,b2;
for(i=0;i<50;i++)
{
if(stu[i].score2 >=90)
++excel;
else if(stu[i].score2 >=60)
++pass;
else
++fail;
}
b0=excel/50.0;
b1=(pass+excel)/50.0;
b2=fail/50.0;
printf("该科优秀学生人数为:%d优秀率为%6.2f\n该科及格人数为:%d及格率为%6.2f\n该科不及格人数:%d不及格率为%6.2f\n",excel,b0,pass+excel,b1,fail,b2);
fp4=fopen("stui.txt","a");
fprintf(fp4,"该科优秀学生人数为:%d优秀率为%6.2f\n该科及格人数为:%d及格率为%6.2f\n该科不及格人数:%d不及格率为%6.2f\n",excel,b0,pass+excel,b1,fail,b2);
fclose(fp4);}
void percentage3()//查询英语优秀及格率等相关情况
{int i,excel=0,pass=0,fail=0;
FILE *fp4;
float b0,b1,b2;
for(i=0;i<50;i++)
{
if(stu[i].score3 >=90)
++excel;
else if(stu[i].score3 >=60)
++pass;
else
++fail;
}
b0=excel/50.0;
b1=(pass+excel)/50.0;
b2=fail/50.0;
printf("该科优秀学生人数为:%d优秀率为%6.2f\n该科及格人数为:%d及格率为%6.2f\n该科不及格人数:%d不及格率为%6.2f\n",excel,b0,pass+excel,b1,fail,b2);
fp4=fopen("stui.txt","a");
fprintf(fp4,"该科优秀学生人数为:%d优秀率为%6.2f\n该科及格人数为:%d及格率为%6.2f\n该科不及格人数:%d不及格率为%6.2f\n",excel,b0,pass+excel,b1,fail,b2);
fclose(fp4);}
void percentage4()//查询大物优秀及格率等相关情况
{int i,excel=0,pass=0,fail=0;
FILE *fp4;
float b0,b1,b2;
for(i=0;i<50;i++)
{
if(stu[i].score4 >=90)
++excel;
else if(stu[i].score4 >=60)
++pass;
else
++fail;
}
b0=excel/50.0;
b1=(pass+excel)/50.0;
b2=fail/50.0;
printf("该科优秀学生人数为:%d优秀率为%6.2f\n该科及格人数为:%d及格率为%6.2f\n该科不及格人数:%d不及格率为%6.2f\n",excel,b0,pass+excel,b1,fail,b2);
fp4=fopen("stui.txt","a");
fprintf(fp4,"该科优秀学生人数为:%d优秀率为%6.2f\n该科及格人数为:%d及格率为%6.2f\n该科不及格人数:%d不及格率为%6.2f\n",excel,b0,pass+excel,b1,fail,b2);
fclose(fp4);}
void found2()//shuchuchengji
{ FILE *fp5;
int i;
for(i=0;i<50;i++)
{printf("学号:%d\n姓名:%s\n语文分数:%d\n高数分数:%d\n英语分数:%d\n大物分数:%d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4);
fp5=fopen("stui.txt","a");
fprintf(fp5,"学号:%d\n姓名:%s\n语文分数:%d\n高数分数:%d\n英语分数:%d\n大物分数:%d\n",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4);}
fclose(fp5);}
[点击下载](https://guominqing.lanzous.com/id8bkzc)
1、压缩包中的stuin.txt文件是给定的学生成绩文件。
2、当exe文件生成之后,要手动的把它跟这个stuin.txt文件放在同一个文件夹下,不然程序没办法运行。
3、给定的程序还有许多值得扩展的地方,比如插入一个选择程序,用学号和学生姓名这两种办法去查某一个学生的成绩。还有全部学生成绩的显示。可以插入一些c语言的格式转换字符,使整个成绩的显示更加的美观。这个程序的扩展性很强的,有能力的同学可以给他多加点功能。我当时就是应付课设的。。。。