1、学生档案管理系统(C语言) 作者: 日期:2 个人收集整理 勿做商业用途目 录摘 要II第1章 绪论 1 第2章 系统总体框架与功能分析- 2 -2.1总体框架 4 -2。2功能分析 4 第3章 模块设计与分析 4 -第4章 类的设计与分析 4 4。1 STUDENT类图- 4 4.1 STUDENT类说明表- 4 第5章 功能测试- 4 第6章 总结- 4 参考文献- 14 附 录- 15 C语言设计班级档案管理摘 要本文介绍了利用C语言1对班级档案管理5进行设计的过程,从系统总体框架,功能分析,模块设计与分析,类的设计与分析2,功能测试等环节通过Microsoft Visual C+ 6。
2、03对班级档案管理进行详细的设计,并介绍了班级档案管理如何运用,本次设计是基于C语言的程序设计,利用了C语言的强大功能,设计出的程序运行良好,可以在班级档案管理,学生成绩管理等方面进行良好的运用.关键词:C语言,班级档案管理系统,Microsoft Visual C+ 6。0第1章 绪论班级档案管理系统有六十一种功能,把这11个功能做成11个子函数。在主函当数中设计一个菜单对这11个子数进行管理.来实现对整个系统的操作。根据课题的要求,每个数据的结构应当包括:学号(char)、姓名(char)、性别(char)、年龄(int)、备注(char)。对一个有N个学生的班级,通过该系统实现对该班级学
3、生的基本信息进行录入、显示、修改、删除、保存等操作的管理.最后为了以后按照处理后的顺序保存到文件中.第2章 系统总体框架与功能分析2.1总体框架主菜单输入学生资料模块输出学生资料模块按学生姓名进行排列模块添加学生资料模块按姓名查找,删除该学生资料模块查找并显示学生资料模块按姓名查找,修改学生资料模块从文件中读入数据模块储存学生资料并退出系统模块 图2.1系统的总体框架示意图2。2功能分析“学生成绩管理系统”包括九个模块:输入学生资料,输出学生资料,学生姓名按顺序排列,添加学生资料,按姓名查找,删除该学生资料,查找并显示学生资料,按姓名查找,修改该学生资料,从文件中读入数据,储存学生资料并退出系
4、统。每个模块既相互联系又相互独立.本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。本系统能对成绩进行输入和输出;能按姓名对学生进行排序,并显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统所进行的操作进行保存,以及时更新系统中的数据。第3章 模块设计与分析3。1输入学生资料模块:主要功能用来对学生的成绩进行收集和输入。在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级,学号,姓名。在准确输
5、入学生资料后,就可以对该学生的各科成绩进行录入。该学生各科成绩输入成功后,系统会提示是否继续进行操作,如果想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单。3。2输出学生资料模块:主要功能用来对学生的成绩进行输出。在系统已经录入了学生资料成绩的前提下,使用该功能可以显示所有学生的信息,资料等等.具体包括学生的班级,学号,姓名和各科成绩。在查看学生的资料,成绩各方面的信息后,按任意键就可以返回到主菜单。3。3 按学生姓名进行排列模块主要功能是用来对学生的资料按姓名进行排序。在系统保存学生资料,成绩的前提下,使用此功能可以对学生的资料按姓名进行排序,这样就
6、方便查找姓氏相同或是相近的同学的资料。3.4添加学生资料模块主要功能是用来添加学生资料,成绩。如果系统有保存学生资料的情况下,想录入学生成绩的话,就不用添加学生资料这模块。如果系统没有保存该学生信息的话,就要使用此模块,在成功添加学生资料后,就可以对该学生进行其他的操作。3。5按姓名查找,删除该学生资料模块主要功能是用来删除学生资料。在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名,系统查找该学生资料后,就可以删除了.由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化3。6查找并显示学生资料模块主要功能是用来查找学生资料。在系统保存了某学生资料
7、的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料和各科成绩等信息3。7按姓名查找,修改学生资料模块主要功能是用来修改学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,系统就会显示该学生资料和各科成绩等信息,这样就可以修改该学生的资料,成绩等信息.3。8从文件中读入数据模块主要功能是用来从文件中读入学生数据。由于一些资料可以用Word文档或Excel表格输入,故在此模块中增加了导入数据的功能。这样就方便很多,不用把学生资料一个一个添加,节省了很多时间精力.3。9储存学生资料并退出系统模块主要功能是用来储存学生资料。在对系统进行一系列操作
8、,比如添加、删除、修改学生资料后,对系统的最新操作进行保存,及时更新系统,方便下一次的操作。第4章 类的设计与分析4.1Student类图studentnumclanamebyyljsjzcsjkjsjyy 图4.1 Student类图typedef classpublic: char num10; char cla10; char name20; char byyl10; char jsjzc20; char sjk10; char jsjyy20;char jsdl20;Student;4.2 Student类说明表名称属性说明num数据成员说明学生学号cla数据成员说明学生班级name数
9、据成员说明学生名字byyl数据成员说明学生数据结构成绩jsjzc数据成员说明学生离散数学成绩sjk数据成员说明学生大学物理成绩jsjyy数据成员说明学生大学英语成绩Jssl数据成员说明学生模拟电路成绩第5章 功能测试5。1学生成绩管理系统主菜单页面图5。1学生成绩管理系统主菜单页面图5。2输入学生资料模块图5.2输入学生资料模块图5.3输出学生资料模块图5。3输出学生资料模块图5.4按学生姓名进行排列模块图5。4按学生姓名进行排列模块图5.5添加学生资料模块图5.5添加学生资料模块图5。6按姓名查找,删除该学生资料模块图5.6按姓名查找,删除该学生资料模块图5.7查找并显示学生资料图5.7查找
10、并显示学生资料图5。8按姓名查找,修改学生资料模块图5.8按姓名查找,修改学生资料模块图5。9从文件中读入数据模块图5。9从文件中读入数据模块图5.10储存学生资料并退出系统模块图5.10储存学生资料并退出系统模块图第6章 总结编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就
11、感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,
12、以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!参考文献1 苏贾宗璞,许合利,C语言程序设计,人民邮电出版社2 苏小红等,C语言大学实用教程学习指导,电子工业出版社,2007年4月3 数据结构(c语言版)例题详解与课程设计指导第二版袁志祥、秦锋主编,中国科学技术大学出版社出版附 录源程序清
13、单 includeiostream#includeincludectype。h#includeincludestring.h#includeiostreamincludeusing namespace std;typedef classpublic: char num10; char cla10; char name20; char byyl10; char jsjzc20; char sjk10; char jsjyy20; char jsdl20;Student;Student stu80;int menu() char c; for(;c0|c8;) system(cls”); cout
14、 欢迎使用学生成绩管理系统!!”endl; coutendl; cout”* 学生成绩管理系统 * ”endl; coutsetw(32)” ”1。输入学生资料”endl; coutsetw(32) 2。输出学生资料”endl; coutsetw(32) ”3.按学生姓名进行排列”endl; coutsetw(32) ”4.添加学生资料endl; coutsetw(32)” ”5。按姓名查找,删除该学生资料”endl; coutsetw(32) ”6。查找并显示学生资料endl; coutsetw(32) ”7。按姓名查找,修改该学生资料endl; coutsetw(32) ”8.从文件中读入
15、数据endl; coutsetw(32) ”0。储存并退出系统”endl; coutsetfill(=)setw(48)=endl; coutsetw(15)” ; cout”请选择(0-8):; c=getchar(); return(c0);int Input(Student stud,int n) /输入数据。 int i=0; char sign,x10; for(;sign != n sign != N;) coutsetw(15)” ”班级:”; cinstudn+i.cla; coutsetw(15)” studn+i。num; coutsetw(15) studn+i。name
16、; coutsetw(15)” ”数据结构:; cinstudn+i.byyl; coutsetw(15)studn+i。jsjzc; coutsetw(15) 大学物理:”; cinstudn+i.sjk; coutsetw(15) ”studn+i.jsjyy; coutsetw(15)” studn+i.jsdl; gets(x); coutsetw(10)&sign; i+; return(n+i); void Display(Student stud, int n) /输出数据。 int i; coutsetw(15)” setfill()setw(65)”endl; coutset
17、w(15)” ”班级 学号 姓名 数据结构 离散数学 大学物理 大学英语 模拟电路”endl; coutsetw(15)” ”; coutsetfill(-)setw(65)-1 & i10=0) coutsetw(15)” setfill(-)setw(35)”endl; coutsetw(15)” ”; system(pause”); coutsetw(15) ”setfill()setw(35)”-”endl; coutsetw(15) ; system(pause);void Sort(Student stud,int n) /按名字排序。 int i,j; char t20; for
18、(i=0;in1;i+) for(j=0;j0) strcpy(t,studj+1。cla); strcpy(studj+1.cla,studj。cla);strcpy(studj.cla,t); strcpy(t,studj+1.num); strcpy(studj+1.num,studj。num); strcpy(studj。num,t); strcpy(t,studj+1。name); strcpy(studj+1。name,studj.name); strcpy(studj.name,t); strcpy(t,studj+1.byyl); strcpy(studj+1.name,stu
19、dj。byyl); strcpy(studj。byyl,t); strcpy(t,studj+1。jsjzc); strcpy(studj+1.name,studj。jsjzc); strcpy(studj.jsjzc,t); strcpy(t,studj+1.sjk); strcpy(studj+1。name,studj。sjk); strcpy(studj.sjk,t); strcpy(t,studj+1.jsjyy); strcpy(studj+1.name,studj.jsjyy); strcpy(studj。jsjyy,t); strcpy(t,studj+1.jsdl); strc
20、py(studj+1.name,studj。jsdl); strcpy(studj。jsdl,t); coutsetw(15) ”排序成功!endl;int Insert(Student stud,int n) /插入一条学生信息。 char x10; coutsetw(15) ”studn。cla; coutsetw(15)” studn.num; coutsetw(15) 姓名:”; cinstudn.name; coutsetw(15) studn。byyl; coutsetw(15)” ”studn。jsjzc; coutsetw(15) ”大学物理:; cinstudn。sjk; c
21、outsetw(15)” ”大学英语:”; cinstudn.jsjyy; coutsetw(15)studn。jsdl; gets(x); n+; coutsetw(15)” ”插入成功!”s; while(strcmp(studi。name,s)!=0&in) i+; /查找判断/ if(i=n) printf(”ttt没有发现该学生资料!n); /*返回失败信息*/ return(n); for(j=i;jn-1;j+) /删除操作*/ strcpy(studj.num,studj+1。num); strcpy(studj.name,studj+1。name); strcpy(studj
22、.cla,studj+1。cla); strcpy(studj.byyl,studj+1.byyl); strcpy(studj。jsjzc,studj+1。jsjzc); strcpy(studj.sjk,studj+1.sjk); strcpy(studj.jsjyy,studj+1。jsjyy); strcpy(studj。jsdl,studj+1。jsdl); coutsetw(15)” 当前信息已删除成功!”endl; /返回成功信息*/ return(n1); void Query(Student stud,int n) /按名字查找信息 char s20; int i=0; co
23、utsetw(15)s; while(strcmp(studi.name,s)!=0in) i+; /*查找判断*/ if(i=n) printf(”ttt没有发现该学生资料!n); /输入失败信息*/ return; coutsetw(15) 学号:”studi.numendl; coutsetw(15)” 数据结构:studi.byylendl; coutsetw(15)” ”离散数学:studi。jsjzcendl; coutsetw(15)” ”大学物理:”studi。sjkendl; coutsetw(15)” ”大学英语:”studi。jsjyyendl; coutsetw(15)
24、” ”模拟电路:”studi.jsdlendl;int Xiugai(Student stud,int n) /修改信息. n=Delete(stud,n); coutsetw(15)” ”输入你要修改的学生资料”endl; n=Insert(stud,n); coutsetw(15)” ”修改完成endl; return(n);int AddfromText(Student stud, int n) /从文件中读入数据. int i=0,num; FILE fp; char filename20; coutsetw(15) filename; if(fp=fopen(filename,”rb
25、”))=NULL) coutsetw(15)” ”无法打开文件”endl; coutsetw(15) ”; system(pause); return(n); fscanf(fp,”%d”,num); for(;inum;) fscanf(fp,”%s%ss%s%ss%s”,studn+i。cla,studn+i.num,studn+i。name,studn+i.byyl,studn+i.jsjzc,studn+i.sjk,studn+i。jsjyy,studn+i.jsdl); i+; n+=num; fclose(fp); coutsetw(15) ”读入成功!endl; coutsetw
26、(15)” ”; system(”pause); return(n); void WritetoText(Student stud,int n) /将所有记录写入文件. int i=0; FILE fp; char filename20; coutsetw(15) ”将资料输入文件endl; coutsetw(15)” ”输入文件名:”; cinfilename; if(fp=fopen(filename,w)=NULL) coutsetw(15)” ”无法打开文件endl; system(”pause); return; fprintf(fp,”dn,n); for(;in;) fprint
27、f(fp,”%-6s5s-5s%-5s%5s%5s%-5sn,studi。cla,studi。num,studi。name,studi.byyl,studi.jsjzc,studi.sjk,studi。jsjyy); i+; fclose(fp); coutsetw(15)” ”输入成功!endl; int b; coutsetw(15) ”请确定是否退出系统:”endl; coutsetw(15)” ”0.退出系统endl; coutsetw(15) 1.返回”b; if(b=0) coutsetw(15) 谢谢使用!”endl; coutsetw(15) ; system(pause);
28、exit(0); void main() /主函数调用。 int n=0; for(;) switch(menu() case 1: coutsetw(15) 输入学生资料endl; n=Input(stu,n); break; case 2: coutsetw(15)” ”输出所有学生资料”endl; Display(stu,n); break; case 3: coutsetw(15)” ”按姓名排序endl; Sort(stu,n); coutsetw(15) ; system(”pause”); break; case 4: coutsetw(15) ”插入学生资料”endl; n=I
29、nsert(stu,n); coutsetw(15)” ; system(”pause); break; case 5: coutsetw(15) 删除学生资料endl; coutsetw(15)” ”输入他(她)的姓名:; n=Delete(stu,n); coutsetw(15) ; system(pause”); break; case 6: coutsetw(15)” ”查找学生endl; Query(stu,n); coutsetw(15) ”; system(pause”); break; case 7: coutsetw(15) ”修改学生资料”endl; coutsetw(15
30、) 输入你要修改的学生的姓名:”; n=Xiugai(stu,n); system(pause); break; case 8: coutsetw(15)” ”从文件中读入数据”endl; n=AddfromText(stu,n); break; case 0: coutsetw(15) ”将所有资料写入文件”endl; WritetoText(stu,n); coutsetw(15)” ; system(pause); break; includeiostreamincludestdio.h#includectype。h#include#includeiomanipusing namespa
31、ce std;typedef classpublic: char num10; char cla10; char name20; char byyl10; char jsjzc20; char sjk10; char jsjyy20; char jsdl20;Student;Student stu80;int menu() char c; for(;c0|c8;) system(”cls); cout 欢迎使用驾校学员管理系统!endl; coutendl; cout”* 驾校学员管理系统 * ”endl; coutsetw(32) ”1。输入学员资料”endl; coutsetw(32) ”
32、2。输出学员资料endl; coutsetw(32)” ”3。按学员姓名进行排列”endl; coutsetw(32) ”4。添加学员资料”endl; coutsetw(32) ”5.按姓名查找,删除该学员资料endl; coutsetw(32)” 6。查找并显示学员资料endl; coutsetw(32)” ”7.按姓名查找,修改该学员资料”endl; coutsetw(32) ”8。从文件中读入数据”endl; coutsetw(32)” ”0.储存并退出系统endl; coutsetfill(=)setw(48)”=”endl; coutsetw(15) ”; cout”请选择(08):
33、”; c=getchar(); return(c0);int Input(Student stud,int n) /输入数据. int i=0; char sign,x10; for(;sign != n & sign != N;) coutsetw(15)studn+i。cla; coutsetw(15) ”studn+i。num; coutsetw(15) ”studn+i。name; coutsetw(15)studn+i.byyl; coutsetw(15) ”studn+i。jsjzc; coutsetw(15) ”studn+i。sjk; coutsetw(15)” ”长途:; c
34、instudn+i。jsjyy; coutsetw(15)” ”studn+i.jsdl; gets(x); coutsetw(10)” ”; cout还有要输入的信息吗?(y/n); cinsign; i+; return(n+i); void Display(Student stud, int n) /输出数据。 int i; coutsetw(15)” ”setfill(-)setw(65)-”endl; coutsetw(15) ”班级 学员号 姓名 文科 倒桩 九选三 长途 路面”endl; coutsetw(15)” ”; coutsetfill()setw(65)”endl; for(i=1;in+1;i+) printf(”tt-9s9s%9s9s9s%-9s9sn,studi1.cla,studi1。num,studi1.name,studi1.byyl,studi1。jsjzc,studi1.sjk,studi1.jsjyy); if(i1 i10=0) coutsetw(15) setfill(-)setw(35)-endl;