C語言小程序-學生成績統計系統
參考了
另一位博主的代碼(https://blog.csdn.net/qq_36503589/article/details/53106983)
我後來寫的成績排序版本鏈接:https://blog.csdn.net/qq_43617268/article/details/103491760
- 功能介紹:本程序可以輸入50人以內的成績,包括英語,C語言,高數,體育成績。
- 可以計算並輸出學生的平均分,學科的平均分。
- 可以循環查詢並修改學生成績。
#include<stdio.h>
#include<string.h>
struct grade_list{ //定義結構體
char name[10]; //姓名
float c_len; //C語言成績
float math; //高數
float eng; //英語
float PE; //體育
};
void in_put(struct grade_list grades[], int n); //聲明輸入函數
void average(struct grade_list grades[], int n); //聲明平均值函數
void average_subject(struct grade_list grades[], int n);//聲明課程平均值函數
void find(struct grade_list grades[], int n); //聲明查詢函數
void change(struct grade_list grades[], int n); //聲明修改成績函數
int main()
{
struct grade_list grades[50];
int choices,i,n;
printf("成績統計系統正在啓動...\n");
printf("程序正在運行...\n");
do{
rerun:
printf("\n");
printf("\t************************************\n");
printf("\t* =========================== *\n");
printf("\t* 學生成績統計系統 *\n");
printf("\t* =========================== *\n");
printf("\t* *\n");
printf("\t* 輸入學生成績---------1 *\n");
printf("\t* 查看學生平均成績-----2 *\n");
printf("\t* 查看課程平均值-------3 *\n");
printf("\t* 查找學生成績---------4 *\n");
printf("\t* 修改學生成績---------5 *\n");
printf("\t* 退出系統-------------0 *\n");
printf("\t* *\n");
printf("\t************************************\n");
printf("\t請選擇功能:");
scanf("%d", &choices);
switch(choices)
{
case 1:
printf("執行成績輸入程序...\n\n");
printf("\t請輸入學生人數(1~50):");
scanf("%d",&n);
in_put(grades,n);
break;
case 2:
printf("執行學生平均成績計算程序...\n\n");
average(grades,n);
break;
case 3:
printf("執行學科平均成績計算程序...\n\n");
average_subject(grades,n);
break;
case 4:
printf("執行成績查詢程序...\n\n");
find(grades, n);
break;
case 5:
printf("執行成績修改程序...\n\n");
change(grades, n);
break;
case 0:
printf("\t||系統已關閉,感謝您的使用!||");
break;
default :
printf("\t非法輸入!!!");
goto rerun;
}
}while(choices>0&&choices<6);
return 0;
}
void in_put(struct grade_list grades[], int n) //定義輸入函數
{
int i;
for(i=0;i<n;i++)
{
printf("\t請輸入第%d名同學的姓名:", i+1);
scanf("%s", grades[i].name);
printf("\t請輸入第%d名同學的C語言成績:", i+1);
scanf("%f", &grades[i].c_len);
printf("\t請輸入第%d名同學的高數成績:", i+1);
scanf("%f", &grades[i].math);
printf("\t請輸入第%d名同學的英語成績:", i+1);
scanf("%f", &grades[i].eng);
printf("\t請輸入第%d名同學的體育成績:", i+1);
scanf("%f", &grades[i].PE);
}
printf("\t*成績錄入成功*\n");
}
void average(struct grade_list grades[], int n) //定義計算學生平均值
{
int i;
float result;
for(i=0;i<n;i++)
{
result=(grades[i].c_len+grades[i].math+grades[i].eng
+grades[i].PE)/4;
printf("\t%s的平均成績爲%.2f\n",grades[i].name, result);
}
}
void average_subject(struct grade_list grades[], int n) //定義計算學科平均分
{
printf("\tC語言\t高數\t英語\t體育\n");
int i;
float result=0.0;
for(i=0;i<n;i++)
{
result+=grades[i].c_len;
}
printf("\t%.2f", result/n);
result=0;
for(i=0;i<n;i++)
{
result+=grades[i].math;
}
printf("\t%.2f", result/n);
result=0;
for(i=0;i<n;i++)
{
result+=grades[i].eng;
}
printf("\t%.2f", result/n);
result=0;
for(i=0;i<n;i++)
{
result+=grades[i].PE;
}
printf("\t%.2f\n", result/n);
}
void find(struct grade_list grades[], int n) //定義循環成績查詢函數
{
int i,trigger;
char in_name[10];
do{
printf("\t請輸入要查詢的學生姓名:");
scanf("%s", in_name);
int chack=0;
for(i=0;i<n;i++)
{
if(strcmp(in_name,grades[i].name)==0)
{
printf("\t%s的成績爲:\n\n",grades[i].name);
printf("\tC語言\t高數\t英語\t體育\n");
printf("\t%.2f\t%.2f\t%.2f\t%.2f\n\n", grades[i].c_len,grades[i].math,grades[i].eng,grades[i].PE);
chack=1;
}
}
if(chack==0) printf("\t*查無此人*\n\n");
printf("\t繼續查詢請輸入1,否則輸入0返回功能選擇界面:");
scanf("%d", &trigger);
}while(trigger==1);
}
void change(struct grade_list grades[], int n) //定義成績修改函數
{
int i,trigger;
char ch_name[10];
do{
int chack=0;
printf("\t請輸入要修改成績的學生姓名:");
scanf("%s", ch_name);
for(i=0;i<n;i++)
{
if(strcmp(ch_name,grades[i].name)==0)
{
printf("\t請輸入該同學修改後的成績:\n\tC語言:");
scanf("%f", &grades[i].c_len);
printf("\t高數:");
scanf("%f", &grades[i].math);
printf("\t英語:");
scanf("%f", &grades[i].eng);
printf("\t體育:");
scanf("%f", &grades[i].PE);
chack=1;
printf("\t*修改成功*\n");
}
}
if(chack==0) printf("\t*查無此人*\n\n");
printf("\t繼續修改請輸入1,否則輸入0返回功能選擇界面:");
scanf("%d", &trigger);
}while(trigger==1);
}