1、c语言学生成绩管理系统源代码#include#include#includetypedef struct stu char sz_Name20; char sz_ID11; char sz_Class10; float r_Score3;student;#define STU_MAXSIZE 60int i_stuSize;student stuSTU_MAXSIZE;/*=显示主菜单=*/void Dis_Main_Menu() printf(n 学生成绩管理系统 n); printf(-n); printf(1:新录入书生成绩 n); printf(2:修改学生成绩 n); printf(
2、3:学生成绩查寻 n); printf(4:平均成绩和排序 n); printf(5:显示班级成绩单 n); printf(6:追加学生成绩 n); printf(0:推出 n); printf(-n);/*=录入学生成绩=*/void Input_Stu_Information(student stu) int i; printf(请依次输入学生成绩信息(姓名 学号 班级 数学 语文 化学):n); for(i=0;ii_stuSize;i+) printf(Student %d:,i+1); scanf(%s%s%s,stui.sz_Name,stui.sz_ID,stui.sz_Clas
3、s); scanf(%f%f%f,&stui.r_Score0,&stui.r_Score1,&stui.r_Score2); /*=将信息存入scorefile.dat文件=*/void Save_File(student stu) FILE *fp; int i; if(fp=fopen(c:scorefile.dat,wb)=NULL) printf(Save_File函数打开文件c:scorefile.dat!失败,按任意键退出!n); exit(1); for(i=0;ii_stuSize;i+) if(fwrite(&stui,sizeof(student),1,fp)!=1) p
4、rintf(Writer file error!n); exit(1); fclose(fp);/*=主菜单第一项:新录入成绩=*/int Input_Data() printf(n请输入学生实际人数:); scanf(%d,&i_stuSize); Input_Stu_Information(stu); Save_File(stu); return(i_stuSize);/*=学生成绩查询菜单=*/void Dis_Search_Menu() printf(n学生成绩查询 n); printf(n-n); printf(n 1:按学号查询 n); printf(n 2:按科目查询 n); p
5、rintf(n 0:退出 n); printf(n-n);/*=按学号查询=*/int Search_ID(char sz_ID11) int i; for(i=0;ii_stuSize;i+) if(!strcmp(sz_ID,stui.sz_ID) printf(姓名t学号t班级t数学tt语文tt化学n); printf(-n); printf(%St%st%s,stui.sz_Name,stui.sz_ID,stui.sz_Class); printf(t%-8.1ft%-8.1ft%-8.1fn,stui.r_Score0,stui.r_Score1, stui.r_Score2);
6、break; if(i=i_stuSize)printf(学号输入有误!没有该学生!n); return(i);/*=按科目查询=*/void Search_Course(int course) int i; switch(course) case 1:printf(n姓名t学号t班级t数学n);break; case 2:printf(n姓名t学号t班级t语文n);break; case 3:printf(n姓名t学号t班级t化学n);break; default:printf(n课程号错误!n);return; printf(-n); for(i=0;ii_stuSize;i+) prin
7、tf(%st%st%s,stui.sz_Name,stui.sz_ID,stui.sz_Class); printf(t%-8.1fn,stui.r_Scorecourse-1); printf(-n);/*=主页第二项:修改学生成绩=*/void Modify_Data() int i=0; char s_ID11; FILE *fp; if(fp=fopen(c:scorefile.dat,wb)=NULL) printf(Modify_Data函数打开文件c:scorefile.dat!失败,按任意键退出!); return; printf(请输入要修改的学生学号:); scanf(%s
8、,s_ID); i=Search_ID(s_ID); printf(请按【数学 语文 化学】顺序输入成绩:); scanf(%f%f%f,&stui.r_Score0,&stui.r_Score1,&stui.r_Score2); fwrite(&stui,sizeof(student),i_stuSize,fp); fclose(fp);/*=主菜单第三项:学生成绩查询=*/void Search_Data() int Select,flag=1; int course; char s_id11; while(flag) Dis_Search_Menu(); printf(请输入所选查询功能
9、号:); scanf(%d,&Select); switch(Select) case 1:printf(请输入查询学号:); scanf(%s,s_id); Search_ID(s_id); break; case 2:printf(请输入查询科目号:1 数学,2语文 3化学n); scanf(%d,&course); Search_Course(course); break; default :printf(输入有错误,重新选择!n); break; if(Select=0) flag=0; else flag=1; /*=成绩排序=*/void Sort(float averageSTU
10、_MAXSIZE) int i,j,k; student stemp; float ave; for(i=0;ii_stuSize-1;i+) k=i; for(j=i;ji_stuSize;j+) if(averagejaveragek)k=j; if(k!=i) stemp=stui; stui=stuk; stuk=stemp; ave=averagei; averagei=averagek; averagek=ave; /*=主菜单第四项:计算平均成绩和排序=*/void Average_Sort() int i; float sum,averageSTU_MAXSIZE; for(i
11、=0;ii_stuSize;i+) sum=stui.r_Score0+stui.r_Score1+stui.r_Score2; averagei=sum/3; Sort(average); printf(nttt按平均成绩升序先是成绩n); printf(ttt=n); printf(姓名t学号t班级t数学tt语文tt化学tt平均成绩n); printf(-n); for(i=0;ii_stuSize;i+) printf(%st%st%s,stui.sz_Name,stui.sz_ID,stui.sz_Class); printf(t%-8.1ft%-8.1ft%-8.1f,stui.r_
12、Score0,stui.r_Score1,stui.r_Score2); printf(t%-8.1fn,averagei); printf(-n);/*=主菜单第五项:显示班级成绩单=*/void Display_Data() char sz_Class10; int i=0; printf(情输入班级名称:); scanf(%s,sz_Class); printf(nttt%s班成绩单n,sz_Class); printf(ttt=n); printf(姓名t学号t数学tt语文tt化学n); printf(-n); for(;ii_stuSize;i+) if(!strcmp(sz_Cla
13、ss,stui.sz_Class) printf(%st%s,stui.sz_Name,stui.sz_ID); printf(t%-8.1ft%-8.1ft%-8.1fn,stui.r_Score0,stui.r_Score1,stui.r_Score2); printf(-n);/*=主菜单第六项:追加学生成绩=*/void Insert_Data() student st; FILE *fp; printf(轻按下列顺序输入要插入学生的成绩(姓名 学号 班级 数学 语文 化学):n); scanf(%s%s%s,st.sz_Name,st.sz_ID,st.sz_Class); scan
14、f(%f%f%f,&st.r_Score0,&st.r_Score1,&st.r_Score2); if(fp=fopen(c:scorefile.dat,ab)=NULL) printf(Insert_stu函数打开文件scorefile.dat!失败,按任意键退出!); return; fwrite(&st,sizeof(student),1,fp); fclose(fp);/*=初始化数组函数=*/int Init_Arr() FILE *fp; int i=0; if(fp=fopen(c:scorefile.dat,rb)=NULL) printf(Init_Arr函数打开文件c:s
15、corefile.dat!失败,按任意键退出!); return(0); while(!feof(fp) fread(&stui,sizeof(student),1,fp); i+; i_stuSize=i-1; fclose(fp); return(1);/*=主程序=*/void main() int iSelectNum,flag=1; while(flag) Dis_Main_Menu(); printf(情输入所选功能号0-6:); scanf(%d,&iSelectNum); switch(iSelectNum) case 1:Input_Data(); break; case 2: if(Init_Arr()Modify_Data(); break; case 3: if(Init_Arr() Search_Data(); break; case 4: if(Init_Arr() Average_Sort(); break; case 5: if(Init_Arr() Display_Data(); break; case 6: if(Init_Arr() Insert_Data(); break; default:printf(输入有误,重新输入!n); break; if(iSelectNum=0) flag=0; else flag=1;