学生成绩管理系统 c语言程序.doc
C语言大作业 班级:10物理 学号: 姓名:郑海 2013年6月20日#include <stdio.h>#include <stdlib.h>#define N 4 /学生数为5struct student /建立结构类型struct studentint num; /学号char name20; /姓名float score3; /3门课程float sum;float aver; /平均成绩stuN;int choose;/*函数的声明*/void input();void find();void count();void sort();void chzh();void tongji();void zuigd();void input()/*输入信息函数的定义*/int i,j;float temp;for(i=0;i<N;i+)printf("输入第%d个学生信息:n",i+1);printf("学号<10>: ");scanf("%d",&j);stui.num=j;printf("名字: ");scanf("%s",stui.name);printf("语文成绩: ");scanf("%f",&temp);stui.score0=temp;printf("数学成绩: ");scanf("%f",&temp);stui.score1=temp;printf("英语成绩: ");scanf("%f",&temp);getchar();stui.score2=temp;/*计算个人平均分函数的定义*/void count()float sum,aver;int i,j;for(i=0;i<N;i+)sum=0;for(j=0;j<3;j+)sum+=stui.scorej;aver=sum/3.0;stui.sum=sum;stui.aver=aver;printf(" 学生的总成绩及平均分 n");printf("学号 姓名 总成绩 平均分 n");for(i=0;i<N;i+)printf("%-8d%-10s%-9.2f%-9.2fn",stui.num,stui.name,stui.sum,stui.aver);tongji();zuigd();/*按平均分排序*/void sort()int i,j,k;float sum,aver;struct student temp;for(i=0;i<N;i+)sum=0;for(j=0;j<3;j+)sum+=stui.scorej;aver=sum/3.0;stui.sum=sum;stui.aver=aver;k=i;for(j=i+1;j<N;j+)if(stuk.sum<stuj.sum)k=j;if(k!=i)temp=stui;stui=stuk;stuk=temp;printf(" 学生成绩排名( 按名次 ) n");printf(" 学号 姓名 语文 数学 英语 总分 平均分 n");for(i=0;i<N;i+)printf(" %-8d %-10s%-8.2f%-8.2f%-8.2f%-8.2f%-8.2fn",stui.num,stui.name,stui.score0,stui.score1,stui.score2,stui.sum,stui.aver);/*根据学号查找函数的定义*/void find()int i,h;printf("请输入需要查找的学生的学号(如 ):");scanf("%d",&h);for(i=0;i<N;i+)if(stui.num=h)printf("名字: %sn 三科成绩依次是n语文: %-5.2fn数学: %-5.2fn英语: %-5.2fn总分: %-5.2fn平均分: %-5.2fn",stui.name,stui.score0,stui.score1,stui.score2,stui.sum,stui.aver);break; if(stu0.num!=h && stu1.num!=h && stu2.num!=h)printf("n-没有这个学生-n");/*根据姓名查找函数的定义*/void chzh()int i,j=0;int a10;printf("请输入需要查找的学生的姓名(如 张三):");scanf("%s",a);for(i=0;i<N;i+)if(strcmp(a,stui.name)=0)j=1;printf("姓名: %sn 三科成绩依次是n语文: %-5.2fn数学: %-5.2fn英语: %-5.2fn总分: %-5.2fn平均分: %-5.2fn",stui.name,stui.score0,stui.score1,stui.score2,stui.sum,stui.aver);break; if(j=0)/if(stu0.name!=a && stu1.name!=a && stu2.name!=a)printf("n-没有这个学生-n");/*函数的定义*/*菜单函数的定义*/void main() printf(" 学生成绩管理系统 n"); printf("物理系郑海编制n"); printf(" 成绩录入 1n"); printf(" 成绩统计(平均成绩) 2n"); printf(" 成绩排名 3n");printf(" 成绩查找 4n");printf(" 按姓名查找 5n"); printf(" 任意键退出 6n"); printf("n"); printf("n"); printf(" 欢迎使用请输入1: n"); scanf("%d",&choose); while(choose=1|choose=2|choose=3|choose=4|choose=5) switch(choose) case 1:input(); break; case 2:count(); break; case 3:sort(); break;case 4:find();break;case 5:chzh();break; printf(" n"); printf("n"); printf("n");printf("n"); printf("请输入您要进行的操作(26):n"); scanf("%d",&choose); /*统计*/void zuigd()int i;float max1,max2,max3,min1,min2,min3;max1=min1=stu0.score0;for(i=1;i<N;i+)if(stui.score0>max1)max1=stui.score0;else if(stui.score0<min1)min1=stui.score0;max2=min2=stu0.score1;for(i=1;i<N;i+)if(stui.score1>max2)max2=stui.score1;else if(stui.score1<min2)min2=stui.score1;max3=min3=stu0.score2;for(i=1;i<N;i+)if(stui.score2>max3)max3=stui.score2;else if(stui.score2<min3)min3=stui.score2;printf("单科最高分: %4.2ft%4.2ft%4.2fn",max1,max2,max3);printf("单科最低分: %4.2ft%4.2ft%4.2fn",min1,min2,min3);void tongji()int i;float pj1,pj2,pj3;pj1=stu0.score0;for(i=1;i<N;i+)pj1+=stui.score0;pj1=pj1/N;pj2=stu0.score1;for(i=1;i<N;i+)pj2+=stui.score1;pj2=pj2/N;pj3=stu0.score2;for(i=1;i<N;i+)pj3+=stui.score2;pj3=pj3/N;printf("tt语文t数学t英语n");printf("单科平均分t%4.2ft%4.2ft%4.2ftn",pj1,pj2,pj3);