C语言学生成绩管理系统

1.学生成绩管理系统V1.0

某班有最多不超过40人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:

(1)录入每个学生的学号和考试成绩;

(2)计算课程的总分和平均分;

(3)按成绩由高到低排出名次表;

(4)按学号由小到大排出成绩表;

(5)按学号查询学生排名及其考试成绩;

(6)按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,统计每个类别的人数以及所占的百分比;

(7)输出每个学生的学号、考试成绩,课程总分和平均分。

2.学生成绩管理系统V1.1

在学生成绩管理系统V1.0的基础上,要求程序运行后先显示如下菜单,并提示用户输入选项:

(1)Append record

(2)Calculate total and average score of course

(3)Sort in descending order by score

(4)Sort in ascending order by number

(5)Search by number

(6)Statistic analysis

(7)List record

(8)Exit

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #define N 40
  4 void ReadScore(int score[],long num[],int n); /*输入成绩*/
  5 void ScoreSum(int score[],int n); /*计算总分*/
  6 void ScoreAverage(int score[],int n); /*计算平均分*/
  7 void DataSort(int score[],long num[],int n); /*按成绩由高到低排名*/
  8 void PrintDataSort(int score[],long num[],int n);/*按成绩由高到低输出*/
  9 void NumSort(int score[],long num[],int n);/*按学号由小到大排名*/
 10 void PrintNumSort(int score[],long num[],int n);/*按学号由小到大输出*/
 11 void Search(int score[],long num[],int n); /*按学号查询排名及考试成绩*/
 12 void Analysis(int score[],int n); /*统计类别人数及百分比*/
 13 void List(int score[],long num[],int n); /*输出每个学生的学号、考试成绩,课程总分和平均分*/
 14 
 15 int main(void) {
 16     int score[N],n,m;
 17     long num[N];
 18     do {
 19         printf("1.Append record\n");
 20         printf("2.Calculate total and average score of course\n");
 21         printf("3.Sort in descending order by score\n");
 22         printf("4.Sort in ascending order by number\n");
 23         printf("5.Search by number\n");
 24         printf("6.Statistic analysis\n");
 25         printf("7.List record\n");
 26         printf("8.Exit\n");
 27         printf("Input serial number:");
 28         scanf("%d",&m);
 29         switch (m) {
 30             case 1: {
 31                 printf("Input n:");
 32                 scanf("%d",&n);
 33                 ReadScore(score,num,n);
 34                 break;
 35             }
 36             case 2: {
 37                 ScoreSum(score,n);
 38                 ScoreAverage(score,n);
 39                 break;
 40             }
 41             case 3: {
 42                 DataSort(score,num,n);
 43                 PrintDataSort(score,num,n);
 44                 break;
 45             }
 46             case 4: {
 47                 NumSort(score,num,n);
 48                 PrintNumSort(score,num,n);
 49                 break;
 50             }
 51             case 5: {
 52                 Search(score,num,n);
 53                 break;
 54             }
 55             case 6: {
 56                 Analysis(score,n);
 57                 break;
 58             }
 59             case 7: {
 60                 List(score,num,n);
 61                 break;
 62             }
 63             case 8:{
 64                 printf("Exit");
 65                 break;
 66             } 
 67             default:
 68                 printf("Please enter it again.");
 69         }
 70         printf("\n");
 71     } while(m!=8);
 72     return 0;
 73 }
 74 
 75 void ReadScore(int score[],long num[],int n) {
 76     int i;
 77     for(i=0; i<n; i++) {
 78         printf("Input ID and score:");
 79         scanf("%ld%d",&num[i],&score[i]);
 80     }
 81 }
 82 
 83 void ScoreSum(int score[],int n) {
 84     int i,sum=0;
 85     for(i=0; i<n; i++) {
 86         sum+=score[i];
 87     }
 88     printf("sum score is %d\n",sum);
 89 }
 90 
 91 void ScoreAverage(int score[],int n) {
 92     int i,sum=0;
 93     for(i=0; i<n; i++) {
 94         sum+=score[i];
 95     }
 96     printf("average score is %.2f\n",(float)sum/n);
 97 }
 98 
 99 void DataSort(int score[],long num[],int n) {
100     int i,j,temp,k;
101     for(i=0; i<n-1; i++) {
102         for(j=i+1; j<n; j++) {
103             if(score[j]>score[i]) {
104                 temp=score[j];
105                 score[j]=score[i];
106                 score[i]=temp;
107                 k=num[j];
108                 num[j]=num[i];
109                 num[i]=k;
110             }
111         }
112     }
113 }
114 
115 void PrintDataSort(int score[],long num[],int n) {
116     int i;
117     for(i=0; i<n; i++) {
118         printf("%10ld%4d\n",num[i],score[i]);
119     }
120     printf("\n");
121 }
122 
123 void NumSort(int score[],long num[],int n) {
124     int i,j,temp,k;
125     for(i=0; i<n-1; i++) {
126         for(j=i+1; j<n; j++) {
127             if(num[j]<num[i]) {
128                 temp=score[j];
129                 score[j]=score[i];
130                 score[i]=temp;
131                 k=num[j];
132                 num[j]=num[i];
133                 num[i]=k;
134             }
135         }
136     }
137 }
138 
139 void PrintNumSort(int score[],long num[],int n) {
140     int i;
141     for(i=0; i<n; i++) {
142         printf("%10ld%4d\n",num[i],score[i]);
143     }
144     printf("\n");
145 }
146 
147 void Search(int score[],long num[],int n) {
148     int i,m=-1,count=1;
149     long t;
150     printf("Input ID:");
151     scanf("%ld",&t);
152     do{
153         m++;
154     }while(t!=num[m]);
155     for(i=0; i<n; i++) {
156         if(score[i]>score[m])
157             count+=1;
158     }
159     printf("score is %d,rank is %d\n",score[m],count);
160 }
161 
162 void Analysis(int score[],int n) {
163     int i;
164     int a=0,b=0,c=0,d=0,e=0;
165     for(i=0; i<n; i++) {
166         if(score[i]>=90)
167             a+=1;
168         else if(score[i]>=80&&score[i]<90)
169             b+=1;
170         else if(score[i]>=70&&score[i]<80)
171             c+=1;
172         else if(score[i]>=60&&score[i]<70)
173             d+=1;
174         else
175             e+=1;
176     }
177     printf("Excellent is %d,占 %.2f%%\n",a,(float)a*100/n);
178     printf("Good is %d,占 %.2f%%\n",b,(float)b*100/n);
179     printf("Medium is %d,占 %.2f%%\n",c,(float)c*100/n);
180     printf("Pass is %d,占 %.2f%%\n",d,(float)d*100/n);
181     printf("Failure is %d,占 %.2f%%\n",e,(float)e*100/n);
182 }
183 
184 void List(int score[],long num[],int n) {
185     int i,sum=0;
186     for(i=0; i<n; i++) {
187         printf("%ld score is %d\n",num[i],score[i]);
188         sum+=score[i];
189     }
190     printf("Sum score is %d\n",sum);
191     printf("Average score is %.2f\n",(float)sum/n);
192 }

 

posted @ 2021-05-13 20:17  油菜园12号  阅读(940)  评论(0编辑  收藏  举报