




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武武汉汉长长江江 工工商商学学院院计计算算机机技技术术 系系项项目目名名称称: 教教师师学学生生 管管理理系系统统 学学生生姓姓名名: 学学 号号: 班班 级级: 指指导导教教师师: 2 20 01 11 1 年年 1 12 2 月月 2 29 9 日日目 录1 实验目的和意义.11.1 目的.11.2 意义.22 系统功能描述及设计.22.1 功能模块图.32.2 模块功能介绍.33 系统存储结构设计与描述.33.1.基类结构.33.2.学生类结构.43.3.教师类结构.43.4 存储和读取函数.54 系统功能实现及算法描述.54.1 信息的录入.54.2 信息的添加.64.3 信息的删除.
2、74.4 信息的排序.85 系统性能测试.95.1 教师或学生信息录入功能.95.2 教师或学生信息添加功能.105.3 教师或学生信息删除功能.105.4 教师或学生信息排序功能.105.5 教师或学生信息输出功能.116 设计小结.12致谢.13源代码清单.15面向对象程序设计课程设计报告- 1 -1 1 实验目的和意义实验目的和意义1.11.1 目的目的本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容。进行课程设计目的在于加深对程序设计基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计能力。具体目的如下:(1)使学生更深入
3、地理解和掌握该课程中的有关基本概念,程序设计思想和方法。(2)培养学生综合运用所学知识独立完成课程设计的能力。(3)培养学生勇于探索、严谨推理、实事求是、有错必改、用实践来检验理论,全方位考虑问题等科学技术人员应具备的素质。1.21.2 意义意义随着学校规模迅速扩大,学生管理工作信息量急剧增加,信息变化幅度大,依靠传统的手工管理手段显然已不能适应新时期高校大学生的管理工作,无法完成大量的信息分析和处理。同时,提高学校对人员管理的高效性。面向对象程序设计课程设计报告- 2 -2 2 系统功能描述及设计系统功能描述及设计2.12.1 功能模块图功能模块图本课程设计要求的几个功能在程序里面都能实现,
4、有学生信息的输入、浏览、排序、统计、修改、删除、查询、输出等。程序总体结构如图(2-1)所示。教师学生信息管理系统教师学生信息录入教师学生信息添加教师学生信息删除教师学生信息排序教师学生信息输出图 2-1 系统功能模块学生信息输入负责将学生的信息存储到对应的文本文件中,对学生的信息排序就包括按学号排序和按计算机成绩排序及英语成绩排序等。统计也包括对计算机成绩的统计和对数学英语成绩的统计。删除就负责对学生信息的删除。查询就可实现对姓名的查询和对学好的查询。2.22.2 模块功能介绍模块功能介绍1. 学生教师信息录入功能,输入选项一进入该功能,根据系统提示输入相应的选项, 进入子菜单,然后选择是录
5、入学生信息还是教师信息;2. 学生教师信息添加功能,输入选项一进入该功能,根据系统提示输入相应的选项, 进入子菜单,然后选择是添加学生信息还是教师信息;3. 学生教师信息删除功能,输入选项一进入该功能,根据系统提示输入相应的选项, 进入子菜单,然后选择是删除学生信息还是教师信息;4. 学生教师信息排序功能,输入选项一进入该功能,根据系统提示输入相应的选项, 进入子菜单,然后选择是排序学生信息还是教师信息;5. 学生教师信息输出功能,输入选项一进入该功能,根据系统提示输入相应的选项, 进入子菜单,然后选择是输出学生信息还是教师信息;面向对象程序设计课程设计报告- 3 -3 3 系统存储结构设计与
6、描述系统存储结构设计与描述.基类结构基类结构首先定义一个基类,此基类的名字为 people,基类中包含数据成员有学号(工号) ,姓名,系别(部门) ,性别,以及一个子对象年龄。具体带么如下。class peoplepublic:people()length=0;virtual void add()=0;virtual void add_one()=0;virtual void del()=0;virtual void print()=0;virtual void print_one(kind temp,int n);virtual void sort()=0;virtual vo
7、id save()=0;virtual int load()=0;virtual void prefix(char *item);protected:int length;kind datamax;.学生类结构学生类结构学生类结构是由基类公共继承过来,所以基类中的 protected 数据成员就成了学生类中的保护成员,类中还有两个重载函数,还有存储和读文件函数,这样可以方便数据保存和读取;class student :virtual public peoplepublic:virtual void add();virtual void add_one();virtual void
8、 del();virtual void print();virtual void sort();virtual void save();virtual int load();.教师类结构教师类结构教师类结构是由 people 继承过来的,教师类中也同样包含 people 类中的所有数据成员。在教师类中还定义了两个重载函数用来对教师类进行输出和输入的。另外除了存储函数还有其他成员函数,分别实现各个功能;面向对象程序设计课程设计报告- 4 -class teacher:public peoplepublic:virtual void add();virtual void add_on
9、e();virtual void del();virtual void print();virtual void sort();virtual void save();virtual int load();3.43.4 存储和读取函数存储和读取函数 存储函数在录入,添加,删除后会把数据保存到文件里。void student:save()outfile.open(f:students_information.txt,ios:out|ios:binary);if(!outfile)cout未找到!;abort();for(int i=0;iamount1;i+)outfile.write(char
10、 *)&datai,sizeof(datai);outfile.close();读取函数,会在程序运行时把文件中的数据读取到内存中。void student:load()infile.open(f:students_information.txt,ios:in|ios:binary);if(!infile)coutdatalength;srand(unsigned)time(null);datalength.id=rand()%999+2010000;outfile.write(char*)&datalength,sizeof(datalength); cout添加成功!;length+;am
11、ount+;outfile.close();4.34.3 信息的删除信息的删除程序打印菜单,选择 1、2 功能进行信息删除功能,用户会根据菜单选择,然后删除信息。流程图如图 2-2。面向对象程序设计课程设计报告- 7 -开始1.按姓名删除2.按学号删除输入姓名根据姓名查找是否删除已成功删除输入学号根据学号查找是否删除已成功删除返回主菜单12未找到找到yn未找到找到ny图 4-2 删除模块删除模块调用后,用户可以采用两种方法进行删除,删除完后,返回主菜单。4.44.4 信息的排序信息的排序 进入信息排序子菜单后,会提示用户两个方向进行排序汇总,一是按部门或系部,二是按年龄排序,执行完后会将刚刚汇
12、总完的数据输出。流程图如图 2-3.面向对象程序设计课程设计报告- 8 -开始1 按部门排序2.按年龄排序用冒泡法对部门排序,不同就交换输出排序后的数据用冒泡法对年龄排序,大于就交换输出排序后的数据返回主菜单12图 4-3 排序汇总模块排序模块不改变文件里原有的顺序,部分代码如下:for(i=0;iamount;i+)for(j=0;j(istream& input,kind &p) ;friend ostream& operator(ostream& output,kind &p);class peoplepublic:people()virtual void add()=0;virtual
13、 void add_one()=0;virtual void del()=0;面向对象程序设计课程设计报告16virtual void print()=0;virtual void print_one(kind temp,int n);virtual void sort()=0;virtual void save()=0;virtual void load()=0;virtual void prefix(char *item);protected:kind datamax;class student :virtual public peoplepublic:virtual void add()
14、;virtual void add_one();virtual void del();virtual void print();virtual void sort();virtual void save();virtual void load();class teacher:public peoplepublic:virtual void add();virtual void add_one();virtual void del();virtual void print();virtual void sort();virtual void save();virtual void load();
15、student stu; teacher te;people *ps=&stu;people *pt=&te;void cover() char line=;char bar=.;int i,j,k=0,x=0,y=0; for(i=1;i=strlen(line)/2;)system(cls);for(j=0;j9;j+) /改变行坐标面向对象程序设计课程设计报告17coutendl;for(j=0;j(75-strlen(line)/2;j+) /改变列坐标cout ;for(j=1;j=i;j+) /进度显示器couti;x-)cout;if(k=4)i+;coutendl; for(j
16、=0;j(75-strlen(line)/2;j+) /行坐标定位cout ;coutline; /输出线条coutendl;for(j=0;j(65-strlen(bar)/2;j+)cout ;cout(i-1)*10% loading;cout.write(bar,k);coutendl;for(j=0;j10;j+)coutendl;for(j=0;j24;j+)cout ;cout学校人员管理系统:王畅游endl;for(j=0;j24;j+)cout ;for(j=0;j=12;j+)cout;coutendl;for(j=0;j4)k=0;void people:prefix(c
17、har *item)/-操作提示函数-int i; system(cls);coutnnttt 当前操作:itemendl;couttt ;for(i=0;i15;i+)cout;coutendl;面向对象程序设计课程设计报告18void errormess()coutnttt 对不起,没有相关菜单项,按任意键继续.endl;getch();void student:save()outfile.open(f:students_information.txt,ios:out|ios:binary);if(!outfile)cout未找到!;abort();for(int i=0;iamount1
18、;i+)outfile.write(char *)&datai,sizeof(datai);outfile.close();void student:load()infile.open(f:students_information.txt,ios:in|ios:binary);if(!infile)cout未找到!;abort();int i=0;while(!infile.eof()infile.read(char *)&dataamount1+,sizeof(datai);amount1-;infile.close();void teacher:save()outfile.open(f:t
19、eachers_information.txt,ios:out|ios:binary);if(!outfile)cout未找到!;abort();面向对象程序设计课程设计报告19for(int i=0;iamount2;i+)outfile.write(char *)&datai,sizeof(datai);outfile.close();void teacher:load()infile.open(f:teachers_information.txt,ios:in|ios:binary);if(!infile)cout未找到!;abort();int i=0;while(!infile.eo
20、f()infile.read(char *)&dataamount2+,sizeof(datai);amount2-;system(pause);infile.close();void student:add()prefix(学生信息录入);char m;int i=0;srand(unsigned)time(null);while(1)datai.id=rand()%999+2010000;coutdatai;i+;if(i=max)cout已达到人员上限!endl;break;cout已经成功添加!endl;cout继续 y/nm;if(m=n|m=n)break;面向对象程序设计课程设计
21、报告20elsecontinue;amount1=i+amount1;save();void student:print()prefix(学生信息输出);int i,m;cout*学生信息*endl; cout姓名tt性别tt学号tt系部tt出生日期endl;for(i=0;iamount1;i+) coutdataiendl;coutendl;void student:add_one()int i;i=amount1;prefix(学生添加);if(amount1=max)cout学生数已到上限!;return;cout请输入要添加的学生信息:datai;srand(unsigned)tim
22、e(null);datai.id=rand()%999+2010000;outfile.write(char*)&datai,sizeof(datai); cout添加成功!;amount1+;outfile.close(); void student:del()prefix(学生信息删除);int i,id,k,j,n;char name20,m;cout*查找*endl;cout1.按姓名查找 2.按学号查找endl;cout请选择:n;switch(n)case 1:cout请输入姓名:endl;cin.getline(name,20,#);for(i=0;iamount1;i+)if(
23、strcmp(,name)=0)k=i;break;cout=amount1)k=-1;cout未找到!;break;case 2:cout请输入学号:id;for(i=0;iamount1;i+)if(id=datai.id)k=1;break;cout=amount1)k=-1;cout未找到!;break;default:break;if(k=-1)cout未能查到,无法删除!endl;elsecout是否删除 y/nm;if(m=y|m=y)for(j=k;jamount1;j+) dataj=dataj+1; amount1-;cout删除成功;system(pa
24、use);elsecout未删除!;system(pause);save();void student:sort()prefix(学生信息排序);int m,i,j,k;kind temp,tem100;for(i=0;iamount1;i+)temi=datai;while(1)cout*总分排序*endl;cout1.按部门排序 2.按年龄排序endl;cout3.返回主菜单 endl;coutm;switch(m)case 1:for(i=0;iamount1;i+)for(j=0;jamount1-1-i;j+)if(strcmp(temj.depart,temj+1.depart)=
25、1)temp=temj;temj=temj+1;temj+1=temp;prefix(学生信息输入);print_one(tem,amount1);面向对象程序设计课程设计报告23break;case 2:for(i=0;iamount1;i+)for(j=0;jamount1-1-i;j+)if(temj.agetemj+1.age)temp=temj;temj=temj+1;temj+1=temp;prefix(学生信息输入);print_one(tem,amount1);break;case 3:return;default:cout输入有误,请重新输入 !;void people:pr
26、int_one(kind temp,int n)int i,m;printf(学生姓名 );printf(性别 );printf(年龄 );printf(学号t );printf(出生日期 );printf(工作部门或系别 );printf(n);for(i=0;in;i+)printf(%-13st,);printf(%-4s,tempi.sex);printf(%-4d ,tempi.age);printf(%-18d,tempi.id);printf(%-4.2d t,tempi.time.year);cout.;printf(%-4.2d t,tempi.time.
27、month);cout.;printf(%-4.2d t,tempi.time.day);printf(%-13st,tempi.depart);printf(n);system(pause);面向对象程序设计课程设计报告24void teacher:add()int i=0;prefix(教师信息录入);char m;srand(unsigned)time(null);while(1)datai.id=rand()%999+2004000;cout*请输入教师的信息*;coutdatai;i+;if(i=max)cout已达到人员上限!endl;break;cout已经成功添加!endl;c
28、out继续 y/nm;if(m=n|m=n)break;elsecontinue;amount2=i+amount2;save();void teacher:add_one()int i=amount2;prefix(教师信息添加);if(i=max)cout教师数量数已到上限!;return;cout请输入要添加的学生信息:datai;srand(unsigned)time(null);面向对象程序设计课程设计报告25datai.id=rand()%999+2010000;outfile.write(char*)&datai,sizeof(datai); amount2+;outfile.c
29、lose(); void teacher:del()prefix(教师信息删除);int i,id,k,j,n;char name20,m;cout*查找*endl;cout1.按姓名查找 2.按工号查找endl;cout请选择:n;switch(n)case 1:cout请输入姓名:endl;cin.getline(name,20,#);for(i=0;iamount2;i+)if(strcmp(,name)=0)k=i;break;cout=amount2)k=-1;cout未找到!;break;case 2:cout请输入工号:id;for(i=0;iamount2;
30、i+)if(id=datai.id)k=1;break;cout=amount2)面向对象程序设计课程设计报告26k=-1;cout未找到!;break;default:break;if(k=-1)cout未能查到,无法删除!endl;elsecout是否删除 y/nm;if(m=y|m=y)for(j=k;jamount2;j+) dataj=dataj+1;amount2-;cout删除成功;system(pause);elsecout未删除!;system(pause);save();void teacher:print()prefix(教师信息输入);int i;cout*教师信息*e
31、ndl; cout姓名tt性别tt学号tt部门tt出生日期endl;for(i=0;iamount2;i+) coutdataiendl;cout(istream& input,kind &p) int y,m,d; cout请输入姓名(以#结尾):endl; 面向对象程序设计课程设计报告27input.getline(,20,#); cout请输入性别(男或女):p.sex;cout工作部门或系别:p.depart;cout请输入年龄p.age;cout请输入出生日期:ymd; p.time.year=(y=1900&y=1&m=1&d=31)?d:1; return input
32、; void teacher:sort()prefix(教师信息排序);int m,i,j;kind temp,tem100;for(i=0;iamount2;i+)temi=datai;while(1)cout*总分排序*endl;cout1.按部门排序 2.按年龄排序endl;cout3.返回主菜单 endl;coutm;switch(m)case 1:for(i=0;iamount2;i+)for(j=0;jamount2-1-i;j+)if(strcmp(temj.depart,temj+1.depart)=1)temp=temj;temj=temj+1;temj+1=temp;pre
33、fix(教师信息输入);print_one(tem,amount2);break;case 2:for(i=0;iamount2;i+)面向对象程序设计课程设计报告28for(j=0;jamount2-1-i;j+)if(temj.agetemj+1.age)temp=temj;temj=temj+1;temj+1=temp;prefix(教师信息输入);print_one(tem,amount2);break;case 3:return;default:cout输入有误,请重新输入 !;ostream& operator(ostream& output,kind& p) outputp.na
34、mettp.sexttp.idttp.departtt; outputp.time.year p.time.month p.time.dayendl; return output; int modelmenu(char *s,int itemcount)int i;int answer;system(cls);coutnn;couttttendl;coutttts0endl;couttttendl;coutttt endl;couttttendl;for(i=1;iitemcount;i+)couttttsiendl;if(i+1!=itemcount)couttttendl;coutttte
35、ndl;couttttendl; coutanswer;return answer;面向对象程序设计课程设计报告29void mainmenu()/-主菜单函数-char *menuitem= 学校人员管理系统菜单 ,1. 教师与学生信息录入 ,2. 教师与学生信息添加 ,3. 教师与学生信息删除 ,4. 教师与学生信息排序 ,5. 教师与学生信息输出 ,6. 退出程序 ;int m;while(1)m=modelmenu(menuitem,7);switch(m)case 1:sub1menu();break;case 2:sub2menu();break;case 3:sub3menu();break;case 4:sub4menu();break;case 5:sub5menu();break;case 6:exit(0);void sub2menu()char *menuitem= 教师与学生信息添加 , 1. 教师信息添加 , 2. 学生信息添加 , 3. 返回主菜单 ;while(1)switch(mo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 就业趋势预测与应对考核试卷
- 机床行业智能制造与数字化转型策略分析考核试卷
- 幕墙设计与建筑节能减排考核试卷
- 光学成像自动打样机考核试卷
- D打印技术在工业自动化领域的应用考核试卷
- 冷藏车运输企业运营管理优化考核试卷
- 劳务分包员工合同范本
- 买卖钢材的合同范本
- 毛巾购买合同范本
- 农资货运运输合同范本
- 植物组织培养(园林植物教研组)-说课稿
- 高三二轮专题复习化学课件-分布系数(分数)图像
- 支委委员辞去职务申请书
- 变更更正户口项目申请表
- 【桥梁工程的发展趋势与思考5300字】
- 云南省蒙自市长桥海水库扩建工程环评报告
- 质量手册(依据ISO9001:2023年标准)
- 算24点教学讲解课件
- 提高住院患者痰培养标本留取的合格率品管圈ppt汇报书
- GB/T 35274-2023信息安全技术大数据服务安全能力要求
- 医院关于成立安全管理委员会的通知汇编五篇
评论
0/150
提交评论