学生成绩管理系统源代码.docx_第1页
学生成绩管理系统源代码.docx_第2页
学生成绩管理系统源代码.docx_第3页
学生成绩管理系统源代码.docx_第4页
学生成绩管理系统源代码.docx_第5页
免费预览已结束,剩余43页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序代码:#include#include#include#define SIZE 3 /*定义常量SIZE便于以后的修改*/struct student /*定义一个结构体数组存放学生的信息*/ int number; /*学号*/ char name20;/*名字*/ char xueyuan20;/*学院*/ int cla;/*班级*/ int score3;/*分数*/ int sum;/*总分*/ int average;/*平均分*/stuSIZE; void menu();/*调用菜单函数*/void write();/*读入信息*/void save(int x);/*保存stud.dat文件函数*/void SaveOneStudent(int i);/*保存一个学生信息*/void SaveAllStudent(int n);/*保存全部学生信息*/void inturn (struct student c);/*用于对学生的信息按学号排序的函数*/void save2();/*将排序后的信息存入student.dat文件中*/int AddStudent(int n);/*增加学生信息*/void InputOnestudent(int i);/*输入一个同学信息*/int DelStudent(int n);/*删除学生信息*/void ModifyStudent(int n);/*修改学生信息*/void OutputOneStudent(int i);/*查询一个学生信息*/void SearchMenu(int n);/*查询学生信息操作*/void SearchNumber(int n);/*按学号查询学生信息*/void SearchName(int n);/*按姓名查询学生信息*/void SearchXueyuan(int n);/*按所在学院查询学生信息*/void SearchCla(int n);/*按所在班级查询学生信息*/void tongji();/*学生信息统计操作*/void tongji2();/*统计不及格率操作*/void zfsc();/*总分排序操作*/void avecz();/*按平均分统计人数操作*/void avecz();/*按平均分统计人数操作*/void search();/*查找最高成绩操作*/void tongji2();/*统计不及格率操作*/void read();/*读取student.dat文件文件中学生的信息*/ /*主函数*/void main() int n=SIZE; int choice;/*用户选择变量*/ printf(*n); printf(* *n); printf(* Hwadee &学生成绩文件管理& Hwadee *n); printf(* *n); printf(*nnn); printf(*欢迎使用*); while (1) menu();/*调用菜单函数形成操作界面*/ printf(请选择:); scanf(%d, &choice); if ( choice=0 ) printf(tttt谢谢使用!); break; switch(choice) /*多重选择实现功能不同的功能*/ case 1: write(); inturn(stu); save(SIZE); break; case 2: AddStudent(n); break; case 3: DelStudent(n); break; case 4: ModifyStudent(n); break; case 5: SearchMenu(n); break; case 6: tongji(); break; case 0: printf(n谢谢使用!再见!n); default: printf(n按键错误!请重新选择!n); /*结束switch*/ /*结束while*/ 部分程序清单/*菜单函数*/void menu() printf(*请输入所需操作*n);/*选择功能菜单*/ printf(*n); printf(1.学生成绩写入及排序n); printf(2.增加学生信息n); printf(3.删除学生信息n); printf(4.修改学生信息n); printf(5.查询学生信息n); printf(6.学生成绩统计操作n); printf(0.退出系统n); printf(*n); /*写入函数*/void write() int i;/*计数变量*/ for(i=0;iSIZE;i+) printf(学号:); scanf(%d,&stui.number); printf(姓名:); scanf(%s,&stui.number); printf(学院:); scanf(%s,&stui.xueyuan); printf(班级:); scanf(%d,&stui.cla); printf(高数:); scanf(%d,&stui.score0); printf(英语:); scanf(%d,&stui.score1); printf(C语言:); scanf(%d,&stui.score2); stui.sum=(stui.score0+stui.score1+stui.score2);/*计算总成绩*/ printf(总成绩:%d,stui.sum); stui.average=(stui.score0+stui.score1+stui.score2)/3;/*计算平均成绩*/ printf(平均成绩:%dn,stui.average); /*排序函数*/void inturn(struct student m) int i,j;/*计数变量*/ struct student temp;/*中间变量 类型为结构体*/ for(i=0;iSIZE-1;i+) /*运用冒泡排序对结构体数组进行排序*/ for (j=i+1;jmj.number) temp=mi; mi=mj; mj=temp; printf(n排序后的学生信息:nn); for (i=0;iSIZE;i+) printf(学号%dt姓名%st学院%st班级%dt高数%dt英语%dtC语言%dt总成绩%dt平均成绩%dnn,i+1,stui.number,,stui.xueyuan,stui.cla,stui.score0,stui.score1,stui.score2,stui.sum,stui.average); /*输出排序后的学生信息*/ /*写入文件*/void save(int x) FILE *fp;/*定义文件指针用于向文件读入数据*/ int i; if(fp=fopen(student.dat,rb+)=NULL)/*以二进制读,写方式打开文件*/ printf(cannot open filen); exit(1); for(i=0;iSIZE;i+) if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(file write errorn); fclose(fp); printf(n信息保存成功!恭喜!n); /*保存一个学生信息*/void SaveOneStudent(int i) FILE *fp; if(fp=fopen(student.dat,rb+)=NULL)/*以二进制读,写方式打开文件*/ printf(文件打开失败!n); exit(1); fseek(fp,i,0);/*文件指针定位到第i个学生*/ fwrite(&stui,sizeof(struct student),1,fp);/*将第i个学生信息写入文件*/ fclose(fp); /*保存全部学生信息*/void SaveAllStudent(int n)/*保存全部学生信息*/ FILE *fp; if(fp=fopen(student.dat,wb)=NULL)/*以二进制写方式打开文件*/ printf(文件打开失败!n); exit(1); fwrite(stu,sizeof(struct student),n,fp);/*将数组stu中全部学生信息写入文件*/ fclose(fp); /*将排序后的学生信息读入到另外的文件中*/void save2() FILE *fp; int i; if(fp=fopen(stud.dat,rb+)=NULL)/*以二进制读,写方式打开文件*/ printf(文件打开失败!n); exit(1); for (i=0;iSIZE;i+) if (fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(file write errorn); fclose(fp);/*读取完毕关闭文件*/ /*增加学生信息*/int AddStudent(int n) char c=y; FILE *fp; if(fp=fopen(student.dat,ab)=NULL)/*以二进制追加方式打开文件*/ printf(文件打开失败!n); exit(1); while(c=y) printf(n请输入要增加的同学的信息:); InputOnestudent(n);/*调用函数输入第n个学生信息*/ fwrite(&stun,sizeof(struct student),1,fp);/*将第n个学生信息保存至文件*/ n+;/*学生数量增加1*/ printf(n继续输入其他同学信息吗?n); printf(确定进行删除请按y;不进行删除请按nn); c=getchar(); getchar(); /*结束while*/ printf(n按任意键继续!n); getchar(); fclose(fp); return(n); /*输入一个同学信息*/void InputOnestudent(int i) printf(学号t姓名t学院t班级t高数t英语tC语言n); scanf(%dt%st%st%dt%dt%dt%dtn,&stui.number,,stui.xueyuan,&stui.cla,&stui.score0,&stui.score1,&stui.score2); stui.sum=(stui.score0+stui.score1+stui.score2);/*计算总成绩*/ stui.average=(stui.score0+stui.score1+stui.score2)/3;/*计算平均成绩*/ /*删除学生信息*/int DelStudent(int n) int i,k=-1,x; char c1=y,c2; while(c1=y) c2=n; printf(n请输入要删除的同学的学号:); scanf(%d,&x); for(i=0;in;i+) if(x=stui.number) k=i;/*找到要删除的同学学号,并用k记下其下标*/ break; if(k0)/*k0表示在数组中没有找到输入学号对应的学生*/ printf(n输入学号有误,请重新输入!); else printf(n该同学信息如下:n); InputOnestudent(k); printf(n确定删除?n); printf(确定进行删除请按y;不进行删除请按nn); c2=getchar(); getchar(); if(c2=y)/*c2为y,表示确定进行删除操作*/ for(i=k;in;i+) stui=stui+1;/*删除第k个学生信息*/ n-;/*学生人数减1*/ printf(删除成功!恭喜!n); else printf(n取消删除!n); printf(n继续删除操作吗?); printf(n继续删除请按y;不进行删除请按nn); c1=getchar(); getchar(); /*结束while*/ save(n); printf(n按任意键继续!n); getchar(); return(n); /*修改学生信息*/void ModifyStudent(int n) struct student temp; int k=-1,x,i; char c1=y,c2; while(c1=y) c2=y; printf(n请输入要修改的同学的学号:); scanf(%d,&x); for(i=0;in;i+) if(x=stui.number) k=i;/*找到要修改的同学学号,并用k记下其下标*/ break; if(k0)/*k0表示在数组中没有找到输入学号对应的学生*/ printf(n输入学号有误,请重新输入!); else printf(请输入要修改学生修改后的的信息n); printf(学号t姓名t学院t班级t高数t英语tC语言tn); scanf(%dt%st%st%dt%dt%dt%dtn,&temp.number,,temp.xueyuan,&temp.cla,&temp.score0,&temp.score1,&temp.score2); temp.sum=(temp.score0+temp.score1+temp.score2);/*计算总成绩*/ temp.average=(temp.score0+temp.score1+temp.score2)/3;/*计算平均成绩*/ stuk=temp;/*修改该学生信息*/ printf(n修改成功!恭喜!n); break; SaveAllStudent(k);/*保存修改后的学生信息*/ printf(n继续修改操作吗?); printf(n继续修改请按y;不进行修改请按nn); c1=getchar(); getchar(); /*结束while*/ printf(n按任意键继续!n); getchar(); /*查询一个学生信息*/void OutputOneStudent(int i) printf(学号:%d 姓名:%s 学院:%s 班级:%dn,stui.number,,stui.xueyuan,stui.cla); printf(高数:%d 英语:%d C语言:%d 总分:%d 平均分:%dn,stui.score0,stui.score1,stui.score2,stui.sum,stui.average); /*查询学生信息操作*/void SearchMenu(int n) int selet; while(1) printf(*n); printf(* 欢迎进入查询系统 *n); printf(*n); printf(n); printf(* 请输入所需操作 *n);/*选择功能菜单*/ printf(*n); printf(1.按学号查询n); printf(2.按姓名查询n); printf(3.按学院查询n); printf(4.按班级查询n); printf(0.返回主菜单n); printf(*n); printf(请输入操作选项:); scanf(%d,&selet); getchar(); switch(selet) case 1: SearchNumber(n); break; case 2: SearchName(n); break; case 3: SearchXueyuan(n); break; case 4: SearchCla(n); break; case 0: return; default: printf(输入错误!请重新输入!n); /*结束while*/ /*按姓名查询学生信息*/void SearchName(int n) int i,j,k; char xname20,c=y; while(c=y) k=-1; printf(n请输入学生姓名:); gets(xname); for(i=0,j=1;in;i+)/*精确查询*/ if(strcmp(,xname)=0) k=i;/*找到要查询的同学姓名,并用k记下其下标*/ printf(学生%d的信息:n,j+); OutputOneStudent(k); printf(n按任意键继续!n); getchar(); if(k=-1)/*k表示没有精确查询结果*/ printf(n模糊查询结果如下:n); for(i=0,j=1;in;i+) if(strstr(,xname)!=NULL)/*模糊查询*/ k=1; printf(学生%d的信息:n,j+); OutputOneStudent(k); printf(n按任意键继续!n); getchar(); if(j=1) printf(n抱歉!没有该学生信息!n); printf(继续查询其他学生信息吗?); printf(n继续修改请按y;不进行修改请按nn); c=getchar(); getchar(); /*结束while*/ printf(n按任意键继续!n); getchar(); /*按学号查询学生信息*/void SearchNumber(int n) int i,j,k,x; char c=y; while(c=y) k=-1; printf(n请输入学生学号:); scanf(%d,&x); for(i=0,j=1;in;i+) if(stui.number=x) k=i;/*找到要查询的同学学号,并用k记下其下标*/ printf(学生%d的信息:n,j+); OutputOneStudent(k); printf(n按任意键继续!n); getchar(); printf(继续查询其他学生信息吗?); printf(n继续修改请按y;不进行修改请按nn); c=getchar(); getchar(); /*结束while*/ printf(n按任意键继续!n); getchar(); /*按所在学院查询学生信息*/void SearchXueyuan(int n) int i,j,k; char xxueyuan20,c=y; while(c=y) k=-1; printf(n请输入学生所在学院:); gets(xxueyuan); for(i=0,j=1;in;i+) if(strcmp(stui.xueyuan,xxueyuan)=0) k=i;/*找到要查询的同学所在学院,并用k记下其下标*/ printf(学生%d的信息:n,j+); OutputOneStudent(k); printf(n按任意键继续!n); getchar(); printf(继续查询其他学生信息吗?); printf(n继续修改请按y;不进行修改请按nn); c=getchar(); getchar(); /*结束while*/ printf(n按任意键继续!n); getchar(); /*按所在班级查询学生信息*/void SearchCla(int n) int i,j,k,x; char c=y; while(c=y) k=-1; printf(n请输入学生所在班级:); scanf(%d,&x); for(i=0,j=1;i0&x6) switch(x) case 1: zfsc();break;/*选择按总分排序操作*/ case 2: avecz();break;/*选择按平均分统计人数操作*/ case 3: search();break;/*选择按查找最高成绩操作*/ case 4: tongji();break;/*选择按统计部及格率操作*/ case 0: printf(谢谢使用!再见!n); return;/*选择退出操作*/ default

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论