您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關使用C語言怎么編寫一個學生成績管理系統,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
編程實現如下學生成績管理:
(1)錄入每個學生的學號和考試成績;
(2)計算課程的總分和平均分;
(3)按成績由高到低排出名次表;
(4)按學號由小到大排出成績表;
(5)按學號查詢學生排名及其考試成績;
(6)按優秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5個類別,統計每個類別的人數以及所占的百分比;
(7)輸出每個學生的學號、考試成績,以及課程總分和平均分。
輸入格式:
( 1 ) 錄入學生的人數:
要求輸入數據格式為:"%d"
提示信息為:“Input student number(n<30):\n”
( 2 )錄入每個學生的學號和考試成績:
要求輸入數據格式為:"%ld%f"
提示信息為:“Input student's ID and score:\n”
輸出格式:
1、菜單項的輸出顯示:
Management for Students' scores
1.Input 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
0.Exit
Please Input your choice:
2、計算課程的總分和平均分:
要求輸出總分與平均分格式為:“sum=%.0f,aver=%.2f\n”
3、按成績由高到低排出名次表:
要求輸出格式為:"%ld\t%.0f\n"
提示信息為:“Sort in descending order by score:\n”
4、按學號由小到大排出成績表:
要求輸出格式為:"%ld\t%.0f\n"
提示信息為:“Sort in ascending order by number:\n”
5、按學號查詢學生信息及其考試成績(輸出學號與成績):
如果未查到此學號的學生,提示信息為:“Not found!\n”;
如果查詢到該學生,要求輸出格式為:"%ld\t%.0f\n"
6、按優秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5個類別,統計每個類別的人數以及所占的百分比:
成績<60輸出提示格式為:"<60\t%d\t%.2f%%\n";
成績=100輸出格式為:"%d\t%d\t%.2f%%\n";
其他要求輸出百分比格式為:"%d-%d\t%d\t%.2f%%\n"
演示效果:
代碼:
#include<stdio.h> #include<stdlib.h> #include<conio.h> //宏定義最大學生人數 #define stu_max 30 /*進行函數的全局聲明*/ //獲取學生人數 int stu_num(); //顯示菜單獲取用戶輸入 char menu_tips(); //獲取學生學號,及本門考試成績 void stu_information(long num[],float score[],int n); //計算輸出課程的總分和平均分 void sum_aver(float score[],int n); //模塊功能:交換兩個長整型數據 void exchange_long(long *a,long *b); //模塊功能:交換兩個浮點型數據 void exchange_float(float *a,float *b); //按成績由高到低輸出名次表 void output_score(long num[],float score[],int n); //按學號從小到大排出成績表 void output_num(long num[],float score[],int n); //查詢輸出學生信息及考試成績: void query(long num[],float score[],int n); //分數劃界處理并輸出 void score_pro(float score[],int n); //直接輸出對應列表 void output(long num[],float score[],int n); //暫停清屏 void clean(); int main() { int n,i; long num[stu_max]; float score[stu_max]; n=stu_num(); while(1) { i=menu_tips(); switch(i) { case '1':printf("1"),stu_information(num,score,n),system("cls");break; case '2':printf("2"),sum_aver(score,n),clean();break; case '3':printf("3"),output_score(num,score,n),clean();break; case '4':printf("4"),output_num(num,score,n),clean();break; case '5':printf("5"),query(num,score,n),clean();break; case '6':printf("6"),score_pro(score,n),clean();break; case '7':printf("7"),output(num,score,n),clean();break; case '0':printf("0"),exit(0);break; default:printf("Input error!\n"),clean(); } } } /*以下為函數功能模塊*/ //獲取學生人數 int stu_num() { int n; printf("Input student number(n<30):\n"); scanf("%d",&n); system("cls"); return n; } //顯示菜單獲取用戶輸入 char menu_tips() { printf(" -----------------------------------------------------------\n"); printf("| Management for Students' scores |\n"); printf(" -----------------------------------------------------------\n"); printf("| 1.Input record |\n"); printf("| 2.Calculate total and average score of course |\n"); printf("| 3.Sort in descending order by score |\n"); printf("| 4.Sort in ascending order by numbe |\n"); printf("| 5.Search by number |\n"); printf("| 6.Statistic analysis |\n"); printf("| 7.List record |\n"); printf("| 0.Exit |\n"); printf(" -----------------------------------------------------------\n"); printf("\nPlease Input your choice:\n"); char i; i=getch(); return i; } //獲取學生學號,及本門考試成績 void stu_information(long num[],float score[],int n) { int i; printf("\nInput student's ID and score:\n"); for(i=0;i<n;i++) scanf("%ld%f",&num[i],&score[i]); } //計算輸出課程的總分和平均分 void sum_aver(float score[],int n) { int i; float sum,aver; for(i=0,sum=0;i<n;i++) sum+=score[i]; aver=sum/n; printf("\nsum=%.0f,aver=%.2f\n",sum,aver); } //模塊功能:交換兩個長整型數據 void exchange_long(long *a,long *b) { long t; t=*a; *a=*b; *b=t; } //模塊功能:交換兩個浮點型數據 void exchange_float(float *a,float *b) { float t; t=*a; *a=*b; *b=t; } //按成績由高到低輸出名次表 void output_score(long num[],float score[],int n) { int i,j; for(j=n-1;j>0;j--) { for(i=0;i<j;i++) if(score[i]<score[i+1]) { exchange_float(&score[i],&score[i+1]); exchange_long(&num[i],&num[i+1]); } } printf("\nSort in descending order by score:"); output(num,score,n); } //按學號從小到大排出成績表 void output_num(long num[],float score[],int n) { int i,j; for(j=n-1;j>0;j--) { for(i=0;i<j;i++) if(num[i]>num[i+1]) { exchange_float(&score[i],&score[i+1]); exchange_long(&num[i],&num[i+1]); } } output(num,score,n); } //查詢輸出學生信息及考試成績: void query(long num[],float score[],int n) { printf("\nEnter the ID to query:\n"); long temp; scanf("%ld",&temp); int i; for(i=0;i<n;i++) { if(num[i]==temp) { printf("%ld\t%.0f\n",num[i],score[i]); return; } } printf("\nNot found!\n"); } //分數劃界處理并輸出 void score_pro(float score[],int n) { int t[6]={0,0,0,0,0,0}; /*前五個分別對應優秀、良好、中等、及格、不及格五個類別 第六位存儲100分的人數*/ int i,m; for(i=0;i<n;i++) { if(score[i]>=90&&score[i]<100) t[0]++; if(score[i]>=80&&score[i]<=89) t[1]++; if(score[i]>=70&&score[i]<=79) t[2]++; if(score[i]>=60&&score[i]<=69) t[3]++; if(score[i]>=0 &&score[i]<=59) t[4]++; if(score[i]==100) t[5]++; } //遍歷t數組,輸出對應的數據 for(i=0,m=9;i<6;i++) { if(i==4) printf("<60\t%d\t%.2f%%\n",t[4],(float)t[4]/n*100); if(i==5) printf("%d\t%d\t%.2f%%\n",100,t[5],(float)t[5]/n*100); if(i!=4&&i!=5) { if(i==0) printf("\n"); printf("%d-%d\t%d\t%.2f%%\n",m*10,m*10+9,t[i],(float)t[i]/n*100); m--; } } } //直接輸出對應列表 void output(long num[],float score[],int n) { int i; for(i=0;i<n;i++) { if(i==0) printf("\n"); printf("%ld\t%.0f\n",num[i],score[i]); } } //暫停清屏 void clean() { system("pause"); system("cls"); }
以上就是使用C語言怎么編寫一個學生成績管理系統,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。