利用C语言结构体实现学生成绩录入系统
##功能介绍
密码功能嵌入于主函数中,初始密码为:123456(可根据需要修改)
输入1可以调用add函数对学生的基本信息以及成绩进行输入
输入2则调用print函数打印学生成绩单
输入3可以根据学号匹配学生并对其成绩进行修改
输入4可以对当前所有学生的总成绩进行排序
输入5则可以计算当前学生平均分
输入6可以打印出成绩单中所有存在不及格科目的学生
输入7可以根据学号查找学生成绩
输入8则为退出系统
源码如下:
#include<stdio.h>#include<string.h>#include<stdlib.h> void print(); char ID[57][13]; //学号为字符串char name[57][8];//姓名为字符串 char sexual[57][3]; //性别为字符型 char Class[57][25]; //班级为字符型char age[57][3]; //年龄为字符型float average[57]; //平均成绩为实型 float cscore[57];//大学语文float mscore[57];//高等数学 float escore[57];//英语成绩char temp[13];//临时数组int i=0;void add(){printf("Score entry\n");//成绩录入printf("Please enter student ID:");scanf("%s",&ID[i]);//输入学号 getchar();//消除回车 printf("Please enter name:");scanf("%s",&name[i]);//输入姓名 getchar();//消除回车 printf("Please enter class:");scanf("%s",&Class[i]);//输入班级 getchar();//消除回车 printf("Please enter sexual:");scanf("%s",&sexual[i]);//输入性别 getchar();//消除回车 printf("Please enter age:");scanf("%s",&age[i]);//输入年龄 getchar();//消除回车 printf("Please enter College Chinese score:");scanf("%f",&cscore[i]);//输入大学语文成绩 getchar();//消除回车printf("Please enter Advanced mathematics score:");scanf("%f",&mscore[i]);//输入高等数学成绩 getchar();//消除回车printf("Please enter College English score:");scanf("%f",&escore[i]);//输入英语成绩 getchar();//消除回车average[i]=(cscore[i]+mscore[i]+escore[i])/3;i++;print();}void print() {int j=0;printf("ID\t\tName\tClass\t\tGender\tAge\tChinse\tMath\tEnglish\t\tAverage\n");for(;j<i;j++){//printf("%s",ID[j]);printf("%s\t%s\t%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t\t%.2f\n",ID[j],name[j],Class[j],sexual[j],age[j],cscore[j],mscore[j],escore[j],average[j]);}}void Modify(){int j=0;printf("Please enter student ID:");scanf("%s",&temp);getchar();for(;j<i;j++){if(strcmp(temp,ID[j])==0){break;}}if(j==i){printf("Enter error!\n");}else{printf("Please enter College Chinese score:");scanf("%f",&cscore[j]);//输入大学语文成绩 getchar();//消除回车printf("Please enter Advanced mathematics score:");scanf("%f",&mscore[j]);//输入高等数学成绩 getchar();//消除回车printf("Please enter College English score:");scanf("%f",&escore[j]);//输入英语成绩 getchar();//消除回车average[j]=(cscore[j]+mscore[j]+escore[j])/3;print();}}void rank(){int j,k;for(j=0;j<i;j++)//冒泡排序 {for(k=0;k<i-1;k++){if(strcmp(ID[k],ID[k+1])>0){strcpy(ID[i+1],ID[k]);//交换学号 strcpy(ID[k],ID[k+1]);strcpy(ID[k+1],ID[i+1]);strcpy(name[i+1],name[k]);//交换姓名 strcpy(name[k],name[k+1]);strcpy(name[k+1],name[i+1]);strcpy(Class[i+1],Class[k]);//交换班级 strcpy(Class[k],Class[k+1]);strcpy(Class[k+1],Class[i+1]);strcpy(sexual[i+1],sexual[k]);//交换性别 strcpy(sexual[k],sexual[k+1]);strcpy(sexual[k+1],sexual[i+1]);strcpy(age[i+1],age[k]);//交换年龄 strcpy(age[k],age[k+1]);strcpy(age[k+1],age[i+1]);cscore[i+1]=cscore[k];//交换语文成绩 cscore[k]=cscore[k+1];cscore[k+1]=cscore[i+1];mscore[i+1]=mscore[k];//交换数学成绩 mscore[k]=mscore[k+1];mscore[k+1]=mscore[i+1];escore[i+1]=escore[k];//交换英语成绩 escore[k]=escore[k+1];escore[k+1]=escore[i+1];average[i+1]=average[k];//交换平均分average[k]=average[k+1];average[k+1]=average[i+1];} }}print();}void Average(){int j;float temp;for(j=0;j<i;++j){temp=temp+average[j];}temp=temp/i;printf("Average score: %.2f\n",temp);}void Failed(){int j,k;int temp;k=0;int failed[30];for(j=0;j<i;++j){if(cscore[j]<60||mscore[j]<60||escore[j]<60){failed[k]=j;++k;}}printf("ID\t\tName\tClass\t\tGender\tAge\tChinse\tMath\tEnglish\t\tAverage\n");for(j=0;j<k;j++){temp=failed[j];printf("%s\t%s\t%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t\t%.2f\n",ID[temp],name[temp],Class[temp],sexual[temp],age[temp],cscore[temp],mscore[temp],escore[temp],average[temp]);}}void search(){int j=0;printf("Please enter student ID:");scanf("%s",&temp);getchar();for(;j<i;j++){if(strcmp(temp,ID[j])==0){break;}}if(j==i){printf("Enter error!\n");}else{printf("%s\t%s\t%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t\t%.2f\n",ID[j],name[j],Class[j],sexual[j],age[j],cscore[j],mscore[j],escore[j],average[j]);}}int main() //定义函数 {int ch,count;char password[7];char key[6]={'1','2','3','4','5','6'};count=0;while(ch!=8){while(1){printf("Please enter password:");scanf("%s",&password);getchar();if(count>2){break;}if(strcmp(password,key)==0){printf("**************************************************\n");printf("Performance Management System.\n"); //成绩管理系统printf("1、Score entry\n");//成绩录入 printf("2、Print transcrip\n");//打印成绩单 printf("3、Modify grades\n");//修改成绩 printf("4、Grade ranking\n");//排序 printf("5、Average score\n");//平均分 printf("6、Failed student\n");//不及格学生 printf("7、Search\n");//不及格学生 printf("8、Quit\n");printf("**************************************************\n");printf("Welcome to use the product inquiry system!\n");break; }else if(strcmp(password,key)!=0) {printf("Error!\n");count++;}}if(count>2){printf("Illegal login!\n");break;}printf("Please enter a number:");scanf("%d",&ch);getchar(); switch(ch) {case 1:add();break;//调用add函数添加学生成绩 case 2:print();break;//调用print函数打印成绩单 case 3:Modify();break;//修改成绩 case 4:rank();break;//排序 case 5:Average();break;//平均分 case 6:Failed();break;//不及格学生case 7:search();break; //查找学生 case 8:printf("Thanks for using! \n");break;default:printf("Enter error!\n");continue;}}return 0;}
### 注意事项:源码仅供参考!!!请不要照搬,对学习没有帮助!