1. 程式人生 > >簡單學生成績管理系統

簡單學生成績管理系統

綜合 return 幫助 scan ice 更改 choice strcmp switch

由於筆者能力所限所以只是簡易程序,供初學者學習:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define n 100//此處自己更改
void face(void);
void choice(int m,char name[][20],double math[],double english[],double Clanguage[]);
void input(char name[][20],double math[],double english[],double Clanguage[]);
void ouput(char name[][20],double math[],double english[],double Clanguage[]); void sort_ouput(char name[][20],double math[],double english[],double Clanguage[]); void find_my(char name[][20],double math[],double english[],double Clanguage[]); void jige(char name[][20],double math[],double english[],double
Clanguage[]); void averange(char name[][20],double math[],double english[],double Clanguage[]); int main() { char name[n][20]; double math[n],english[n],Clanguage[n]; face(); int m; while(1){ scanf("%d",&m); if(m==0) break; else choice(m,name,math,english,Clanguage); }
return 0; } void face() { printf("歡迎光臨學生成績管理系統,很高興能為你服務\n"); puts("*************************************************"); puts("The menu is as follows:"); puts("學生姓名與各科成績的輸入,請輸入1來獲得幫助"); puts("學生姓名與各科成績的輸出,請輸入2來獲得幫助"); puts("按學生總成績從低到高排序並輸出,請輸入3來獲得幫助"); puts("按學生姓名來查找學生成績,請輸入4來獲得幫助"); puts("輸出及格的學生姓名和成績,請輸入5來獲得幫助"); puts("計算學生平均成績並且輸出,請輸入6來獲得幫助"); printf("說明:成績以百分制,及格分數為\n每科分數都達到六十分來計算\n"); printf("輸入輸出格式為:Name Math English Clanguage\n"); puts("請輸入0來關閉學生成績管理系統 $*(0@0)*$ thank you"); } void choice(int m,char name[][20],double math[],double english[],double Clanguage[]) { switch(m) { case 1:input(name,math,english,Clanguage);break; case 2:ouput(name,math,english,Clanguage);break; case 3:sort_ouput(name,math,english,Clanguage);break; case 4:find_my(name,math,english,Clanguage);break; case 5:jige(name,math,english,Clanguage);break; case 6:averange(name,math,english,Clanguage);break; } } void input(char name[n][20],double math[],double english[],double Clanguage[]) { int i; for(i=0;i<n;i++){ scanf("%s %lf %lf %lf",&name[i],&math[i],&english[i],&Clanguage[i]); } } void ouput(char name[n][20],double math[],double english[],double Clanguage[]) { int i; printf("學生成績如下:\n"); for(i=0;i<n;i++){ printf("%s %.2lf %.2lf %.2lf\n",name[i],math[i],english[i],Clanguage[i]); } } void sort_ouput(char name[n][20],double math[],double english[],double Clanguage[]) { double max[n]; int i; printf("學生成績排名如下:\n"); for(i=0;i<n;i++){ max[i]=math[i]+english[i]+Clanguage[i]; } int j,k; double t; char change[20]; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(max[j]<max[k]) k=j; } if(k!=i) { t=max[i]; strcpy(change,name[i]); max[i]=max[k]; strcpy(name[i],name[k]); max[k]=t; strcpy(name[k],change); } } for(i=0;i<n;i++){ printf("%s %.2f\n",name[i],max[i]); } } void find_my(char name[][20],double math[],double english[],double Clanguage[]) { char names[20]; printf("請輸入你要查找的人的名字:"); int flag=0; scanf("%s",names); for(int i=0;i<n;i++){ if(strcmp(names,name[i])==0){ printf("他的成績:Math %.2lf English %.2lf Clanguage %.2lf",math[i],english[i],Clanguage[i]); flag=1; } } if(flag==0) printf("查無此人,確保正確後輸入!\n"); } void jige(char name[][20],double math[],double english[],double Clanguage[]) { printf("及格學生如下:\n"); int flag=0; int i; for(i=0;i<n;i++) { if(math[i]>=60) flag+=1; if(english[i]>=60) flag+=1; if(Clanguage[i]>=60) flag+=1; if(flag==3) printf("%s Math%.2lf English%.2lf Clanguage%.2lf",name[i],math[i],english[i],Clanguage[i]); else flag=0; } } void averange(char name[][20],double math[],double english[],double Clanguage[]) { printf("學生平均成績:\n"); double aver=0; int i=0; double m=0,e=0,c=0; for(i=0;i<n;i++) { aver+=math[i]+english[i]+Clanguage[i]; m+=math[i]; e+=english[i]; c+=Clanguage[i]; } printf("個體綜合平均:%.4f\n",aver/n); printf("Math平均:%.4f\n",m/n); printf("English平均:%.4f\n",e/n); printf("Clanguage平均:%.4f\n",c/n); }

簡單學生成績管理系統