学生成绩管理系统v50.doc

上传人:scccc 文档编号:13365941 上传时间:2021-12-23 格式:DOC 页数:8 大小:73KB
返回 下载 相关 举报
学生成绩管理系统v50.doc_第1页
第1页 / 共8页
学生成绩管理系统v50.doc_第2页
第2页 / 共8页
学生成绩管理系统v50.doc_第3页
第3页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《学生成绩管理系统v50.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统v50.doc(8页珍藏版)》请在三一文库上搜索。

1、#include<stdio.h>#include<string.h>#include<stdlib.h> #define N 50/ 最大人数#define G 150/ 字符串个数typedef struct studentlong studentID;char studentName10;int score6;/6 门课程的成绩STUDENT;void Inputscore(STUDENT str,int n,int m);/*n为学生人数, m 为科目的数目 ,输入的功能 */void Printscore(STUDENT str,float ave

2、r,int n,int m);/输出void Everystuscore(STUDENT str,int n,int m);/*计算每个学生的总分和平均分 */成绩由高到低进行排序成绩由低到高进行排序 按学号由小到大进行排序 按姓名的字典顺序排出成绩表void Everycouscore(STUDENT str,int n,int m);/计算每门课程的总分和平均分void datasort1(STUDENT str,int n,int m);/ void datasort2(STUDENT str,int n,int m);/ void datasort3(STUDENT str,int n

3、,int m);/ void datasort4(STUDENT str,int n,int m);/void SearchNum(STUDENT str,int n,int m,long y);/按学号查询学生排名和考试成绩void SearchName(STUDENT str,int n,int m,char y);/ 按姓名查询学生排名和考试成绩 void Analysis(STUDENT str,int n,int m);/ 分析类别void Printscore(STUDENT str,int n,int m);/输出void menu();int main()char f10;in

4、t choice,n,x,pos,m;long z;STUDENT strN;float a = 0, b = 0, c = 0, d = 0, e = 0;/ 表示学生的成绩等级高低 do printf(" 请输入学生人数: ");scanf("%d", &n);while(n<0);printf(" 请输入共有几门课程 (最多不超过 6 门): "); scanf("%d",&m);while(m<0|m>6)/ 非法字符异常处理 while(getchar()!='n

5、');printf(" 你输入的课程多于 6 门或者输入非法字符,请重新输入: "); scanf("%d",&m);Inputscore(str, n, m);/ 读入分数名字和学号do menu();/ 输出菜单 scanf("%d", &choice);switch (choice) case 1:Everycouscore( str, n, m);/ 求每个课程的平均分和总分break;case 2:Everystuscore( str, n, m);/ 求学生的平均分和总分 break;case 3:

6、datasort1(str, n, m); break;case 4:datasort2(str, n, m); break;case 5:datasort3(str, n, m); break;case 6:datasort4(str, n, m); break;case 7:printf(" 请输入你要查询的学生的学号: "); scanf("%ld",&z);SearchNum(str,n,m,z);/ 按学号查询学生排名和考试成绩 break;case 8:printf(" 请输入你要查询学生的姓名: "); scan

7、f("%s",f);SearchName(str, n, m, f); break;case 9:Analysis(str, n, m);/ 分析类别 break;case 10:Printscore(str, n, m);/ 输出 break;case 0:break;default:printf(" 你输入的数有误,请重新输入正确的数 n");/ 处理非法字符 getchar();getchar();while (choice != 0);void menu()/ 输出菜单printf("*学生成绩系统*n");printf(&q

8、uot;1.Caculate totel and average score of every coursen");printf("2.Caculate totel and average score of every studentn"); printf("3.Sort in descending order by total score of every studentn"); printf("4.Sort in ascending order by total score of every studentn"); pr

9、intf("5.Sort in ascending order by numbern");printf("6.Sort in ascending order by namen"); printf("7.Search by numbern");printf("8.Search by namen");printf("9.Statistic analysis for every coursen"); printf("10.List recordn");printf("0.

10、Exitn");printf("*n");printf("Please enter your choice:");void Inputscore(STUDENT str,int n,int m)/n 为学生人数, m 为科目的数目 int i,j;for(i=0;i<n;i+)printf(" 请输入学生学号,姓名和各科成绩:(以空格作为间隔 )");scanf("%ld%*c%s",&stri.studentID,stri.studentName); for(j=0;j<m;j+)

11、scanf("%d",&stri.scorej);void Everystuscore(STUDENT str,int n,int m)/*计算每个学生的总分和平均分 */int i,j,sum6;float aver6;for ( i = 0; i < n; i+)sumi=0;for ( j= 0; j < m; j+)sumi=sumi+stri.scorej;averi=(float)sumi/m;for(i=0;i<n;i+)printf(" 学号为 %ldt 姓名为 %s 的总分为 =%d ,平均分 =%2.1fn"

12、,stri.studentID,stri.studentName,sumi,averi);void Everycouscore(STUDENT str,int n,int m)/计算每门课程的总分和平均分int i,j;int sum6;float aver6;for(j=0;j<m;j+) sumj=0; for(i=0;i<n;i+) sumj=sumj+stri.scorej; averj=(float)sumj/n;for(i=0;i<m;i+)printf(" 科目 %d 的总分 =%d, 课程的平均分 =%2.1fn",i+1,sumi,ave

13、ri);void datasort1(STUDENT str,int n,int m)/成绩由高到低进行排序int i, j,sumN;STUDENT temp1;int temp2;for ( i = 0; i < n; i+)sumi=0;for ( j= 0; j < m; j+) sumi=sumi+stri.scorej;for (i = 0;i<n - 1;i+)for (j = i + 1;j<n;j+)if (sumj>sumi)temp1 = strj;temp2 = sumj;strj=stri;sumj = sumi;stri = temp1

14、;sumi = temp2;for(i=0;i<n;i+)printf(" 学号 :%ldt 姓名 :%st 总分 :%dn",stri.studentID,stri.studentName,sumi);void datasort2(STUDENT str,int n,int m)/成绩由低到高进行排序int i, j,sumN;STUDENT temp1;int temp2;for ( i = 0; i < n; i+)sumi=0;for ( j= 0; j < m; j+)sumi=sumi+stri.scorej;for (i = 0;i<n

15、 - 1;i+)for (j = i + 1;j<n;j+)if (sumj<sumi) temp1 = strj; temp2 = sumj; strj=stri; sumj = sumi; stri = temp1; sumi = temp2; for(i=0;i<n;i+)printf(" 学号 :%ldt 姓名 :%st 总分 :%dn",stri.studentID,stri.studentName,sumi); void datasort3(STUDENT str,int n,int m)/ 按学号由小到大进行排序int i, j;STUDEN

16、T temp1;int temp2;for (i = 0;i<n - 1;i+)for (j = i + 1;j<n;j+)if (strj.studentID<stri.studentID) temp1 = strj; strj=stri; stri = temp1;for(i=0;i<n;i+)printf(" 学号 :%ldt 姓名 :%stn",stri.studentID,stri.studentName);for(j=0;j<m;j+)printf(" 科目 %d 的分数 =%dn",j+1,stri.score

17、j);void datasort4(STUDENT str,int n,int m)/按姓名的字典顺序排出成绩表int i, j;STUDENT temp1;int temp2;for (i = 0;i<n - 1;i+)for (j = i + 1;j<n;j+)if (strcmp(strj.studentName,stri.studentName)<0) temp1 = strj; strj=stri; stri = temp1; for(i=0;i<n;i+)printf(" 学号 :%ldt 姓名 :%stn",stri.studentID

18、,stri.studentName);for(j=0;j<m;j+)printf(" 科目 %d 的分数 =%dn",j+1,stri.scorej);void SearchNum(STUDENT str,int n,int m,long y)/按学号查询学生排名和考试成绩int i,j,rank=1,find=0,sumN,pos;for ( i = 0; i < n; i+)sumi=0;for ( j= 0; j < m; j+)sumi=sumi+stri.scorej;for (i = 0; i < n; i+)if(stri.studen

19、tID=y)find=1; pos=i; break;if (find=0)printf(" 没有找到!你输入的学号不正确! n");elsefor ( i = 0; i < n; i+)if (sumi > sumpos)rank+;printf(" 学号 :%ldt 姓名 :%stn",strpos.studentID,strpos.studentName); for(j=0;j<m;j+)printf(" 科目 %d 的分数 =%dn",j+1,strpos.scorej);printf(" 总分为

20、%d ,排名为 %dn",sumpos,rank);void SearchName(STUDENT str,int n,int m,char y)/按姓名查询学生排名和考试成绩int i,j,rank=1,find=0,sumN,pos;for ( i = 0; i < n; i+)sumi=0;for ( j= 0; j < m; j+)sumi=sumi+stri.scorej;for (i = 0; i < n; i+)if(strcmp(stri.studentName,y)=0) find=1;pos=i;break;if (find=0) printf(

21、" 没有找到!你输入的姓名不正确! n");elsefor ( i = 0; i < n; i+)if (sumi > sumpos) rank+;printf(" 学号 :%ldt 姓名 :%stn",strpos.studentID,strpos.studentName); for(j=0;j<m;j+)printf(" 科目 %d 的分数 =%dn",j+1,strpos.scorej);printf(" 总分为 %d ,排名为 %dn",sumpos,rank);void Analysis

22、(STUDENT str,int n,int m)/ 分析类别int a=0,b=0,c=0,d=0,e=0,i,j;float A,B,C,D,E;for(j=0;j<m;j+) a=0,b=0,c=0,d=0,e=0;for(i=0;i<n;i+)if(stri.scorej>=90)a+;else if(stri.scorej>=80)b+ ;else if(stri.scorej>=70)c+;else if(stri.scorej>=60)d+;elsee+;A=(float)a/n)*100;B=(float)b/n)*100;C=(float)

23、c/n)*100;D=(float)d/n)*100;E=(float)e/n)*100; printf(" 科目 %dn",j+1);%2.1f%n",a,A);%2.1f%n",b,B);%2.1f%n",c,C);%2.1f%n",d,D);printf(" 优秀人数有 %d 个,所占比例为 printf(" 良好人数有 %d 个,所占比例为 printf(" 中等人数有 %d 个,所占比例为 printf(" 和格人数有 %d 个,所占比例为printf(" 不和格人数有 %d

24、 个,所占比例为 %2.1f%n",e,E);void Printscore(STUDENT str,int n,int m)/输出int i,j,sum6;float aver6;for ( i = 0; i < n; i+) sumi=0;for ( j= 0; j < m; j+)sumi=sumi+stri.scorej;averi=(float)sumi/m;for(i=0;i<n;i+)printf(" 学号为 %ldt 姓名为 %sn",stri.studentID,stri.studentName); for(j=0;j<m;j+)printf(" 各科考试分数分别为 %dn",stri.scorej);printf(" 总分为 %d, 平均分为 %2.1fn",sumi,averi);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1