1、结构体实现学生成绩管理系统文件名称:基于结构体数组 .cpp文件标识:摘 要:结构体数组实现学生成绩管理系统要求:多么成绩的录入,查询某个学生(姓名,学号)的成绩,计算某学生平均分, 某门成绩平均分的排名,退出。I*J头文彳牛 *I#i nclude #in clude #in clude I*常量 *I#defi ne MENU_NUM 7#define N 3#defi ne MAX 100II记录的最大数量I*结士构体 *Istruct stude ntcharno10;I*学号由10个字符组成charn ame15;I*学生姓名*IfloatscoreN;I*各门课成绩*Ifloats
2、um ;I*总分*Ifloataverage ;I*平均分*I*1;*/I* int count ;struct stude nt studMAX;全局变量II记录学生总人数II记录学生信息I* void in put();void output();void Prin tMe nu();void computer();void fin d();void sort();函数声明 *III输入学生信息II输出学生信息II显示菜单II计算学生成绩II根据学号或姓名查询成绩II成绩排名int cmp(const void * a , const void * b ); II 排序规贝Uvoid ma
3、i n()int choose ;count = 0;while(1)Prin tMe nu();scan f(%d, &choose);switch(choose)case 1 :in put(); /输入成绩break ;case 2 :fin d(); /查询成绩break ;case 3 :computer。; /统计成绩break ;case 4 :按名次输出成绩调用库函数中的排序/ sort(); /按成绩排序,qsort(stud,count,sizeof(struct student),cmp);方法output();break ;case 5 :exit(0);prin tf
4、(nn);int cmp(c onst void * a , const void * b )struct stude nt *aa = (struct stude nt *)a ;struct stude nt *bb = (struct stude nt *)b ;if( aa-sum != bb-sum )retur n aa-sum sum ? 1 : -1;elseif(aa-score0 != bb-score0)retur n aa-score0 score0 ? 1 : -1; if(aa-score1 != bb-score1)retur n aa-score1 score1
5、 ? 1 : -1; if(aa-score2 != bb-score2)return aa-score2 score2 ? 1 : -1; return 0 ;/*函 数名:PrintMenu*描 述:显示操作菜单*入口参数:无*出口参数:无*void Prin tMe nu()printf( n);prin tf(|学生成绩管理系统|n);prin tf(|1.成绩录入|n);prin tf(|2.成绩查询(学号或姓名)|n);prin tf(|3.成绩统计(平均成绩)|n);prin tf(|4.成绩排名|n);prin tf(|5.任意键退出|n);printf( );prin tf(
6、n);prin tf(n);printf(请输入您要进行的操作:);*函数名:in put*描 述:输入学生信息*入口参数:无*出口参数:无*void in put()int n,i;float temp ;printf(请输入要录入的学生的人数: ”);scan f(%d,&n);for(i=0;i n;i+)printf(输入第 %d个学生信息n,i+1);printf(学号:);scan f(%s,studcou nt+i. no);printf(姓名:);sca nf(%s,studco un t+i .n ame);printf(成绩 1:);scan f(%f, &studcou
7、nt+i.score0);printf(成绩 2:);scan f(%f, &studcou nt+i.score1);printf(成绩 3:);scan f(%f, &studcou nt+i.score2);count += n ;*函数名:find*描 述:根据学号或姓名查询成绩*入口参数:无*出口参数:无*/void fin d()int i ;char ch15;printf(请输入学号或姓名:”);scan f(%s,ch);printf( n);printf(| 学号| 姓名 成绩1成绩2成绩3|总分|平均分|n);for(i=0;ico un t;i+)if( !strcmp
8、(ch,studi. no) | !strcmp(ch,studi. name)prin tf(|%10s|%12s|%5.1f|%5.1f|%5.1f|%5.1f|%6.1f|n,studi. no ,studi. name,studi.score0,studi.score1,studi.score2,studi.sum,studi.av erage);printf(” n);return ;printf(没有找到该学生的信息!n);printf( n);*函 数名:computer*描 述:计算学生总成绩和平均成绩*入口参数:无*出口参数:无*/void computer。int i ;f
9、or(i = 0 ; i count ; i + )studi.sum = studi.score0 +studi.score1 +studi.score2; studi.average = (studi.score0 +studi.score1 +studi.score2)/N;output();/*函 数名:output*描 述:输出学生所有信息*入口参数:无*出口参数:无*/void output()int i ;printf(” n);printf(| 学号| 姓名 成绩1咸绩2成绩3|总分|平均分|n);for(i = 0 ; i count ; i + )prin tf(|%10s
10、|%12s|%5.1f|%5.1f|%5.1f|%5.1f|%6.1f|n,studi. no ,studi. name,studi.score0,studi.score1,studi.score2,studi.sum,studi.av erage);printf( n);*函数名:sort*描 述:排序*入口参数:无*出口参数:无*/void sort()int i,j,k;struct stude nt temp ;for(i = 0 ; i coun t-1 ; i +)studi.sum = studi.score0 + studi.score1 + studi.score2; studi.average = (studi.score0 + studi.score1 + studi.score2)/3; k = i ;for(j = i + 1 ; j count ; j +)if(studk.sum studj.sum)k = j ;if(k != i)temp = studi;studi = studk;studk = temp;printf( 学生成绩排名 n);printf( 按名次 n);output();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1