版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南城建学院面向对象语言程序设计课程设计报告书班 级 专 业 计算机科学与技术姓 名 学 号 课程名称 面向对象语言程序设计设计名称 高校人事管理系统 指导教师 计算机科学与工程系2012 年 6 月目录第一章开发环境和开发工具11.1 C+语言简介11.2 开发背景11.3 开发环境1第二章算法思想22.1 系统需求分析22.2 系统总体设计22.2.1 系统设计目标22.2.2 开发设计思想32.2.3 系统功能模块设计32.3 面向对象思想描述7第三章面向对象实现83.1 结构83.2 程序模块93.3 各类之间的关系193.4 源程序代码20第四章测试与分析354.1 测试数据选择35
2、4.2 测试结果分析35总结40心得体会41参 考 文 献42第一章开发环境和开发工具1.1C +语言简介在 C 的基础上,一九八三年又由贝尔实验室的 Bjarne Strou-strup 推出了 C+。C+进一步扩充和完善了 C 语言,成为一种面向对象的程序设计语言。C+目前流行的最新版本是 Borland C+4.5,Symantec C+6.1,和 Microsoft VisualC+ 2.0。C+ 提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来
3、有一定难度。1.2 开发背景高校人事管理系统,基于目前高校的人士录用情况,便于高校的人事信息化管理。该系统基于 C+语言,以及数据结构的算法设计思想。为方便用户程序设有添加功能、删除功能、查找功能(姓名查找、编号查找)、修改功能、查看功能和人员信息统计功能(对行政人员、教师、一般员工、退休人员、返聘人员和临时工)进行统计,包含对党员人数、女职工人数、高学历人数(研究生、硕士、博士)进行统计。系统能够满足高校实现人事的简单管理操作,便于高校对在校人事进行各种及时合理的调度,满足高校简单的运行机制。1.3 开发环境本文所采用的开发环境主要是基于 C+环境的信息技术极大地扩展了全人类教育的时空界限,
4、空前地提高了人们学习的兴趣、效率和主动性,已经成为开发人类能力的创造性工具。在计算机科学中,数据结构不仅是一般应用程序设计的基础, 而且也是操作系统、数据库系统、网络系统设计及其它大型计算机应用工程重要的实施基础。在编程实现操作系统是基于 VC6.0之上实现,按照了 C+语言设计的基本内容。第二章面向对象思想2.1 系统需求分析高校人事管理,高校在有职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。要求:1)添加删除功能:能根据学院人事的变动情况,添加删除记录;2)查
5、询功能:能根据编号和姓名进行查询;3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);5)保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。2.2 系统总体设计2.2.1 系统设计目标(1)要求学生达到熟练掌握 C+语言的基本知识和技能;(2)基本掌握 C+程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的 C+程序设计问题。2.2.2 开发设计思想基于以上系统设计目标
6、,本文在开发高校人事管理系统时遵循了以下开发设计思想:采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。尽量达到操作过程中的直观、方便、实用、安全等要求。系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。系统应具备文件操作,及时根据用户需求进行数据的添加、删除、修改、备份等操作。2.2.3 系统功能模块设计图 3-1 系统整体功能模块图系统的菜单函数 menu 函数如下:/菜单函数void menu()cout endl;cout endl;cout *1.添加记录* endl;cout
7、 *2.查找记录* endl;cout *3.修改记录* endl;cout *4.统计显示* endl;cout *5.删除记录* endl;cout *6.查看记录* endl;cout *7.退出系统* endl;cout (istream &strm, Informaion &obj)/冲在流体去操作符friend ostream &operator (istream &strm, Informaion &obj);friend ostream &operator (ostream &strm, Informaion &obj);;class tatolMaion : public I
8、nformaion/功能统计类 继承类private:int onjobPerson;/在职员工统计int polictical;/党员int womenWork;/ 女工人数int hightDegee;/统计高学历人数public:void setOnjobPerson() onjobPerson+; void setPolictical() polictical+; void setWomenWork() womenWork+; void setHightDegee() hightDegee+; int getOnjobPerson() return onjobPerson; int g
9、etPolictical() return polictical; int getWomenWork() return womenWork; int getHightDegee() return hightDegee; tatolMaion()/构造函数onjobPerson = 0;polictical = 0;womenWork = 0;hightDegee = 0;main 函数:int main()fstream DataFile;int choise, choiseagain;/选择与在选择Informaion person;DataFile.open(Informaion.txt,
10、 ios:out | ios:in | ios:binary); if( !DataFile )cout 文件打开失败! endl; exit(0);while(true)menu();cout choise; cin.ignore();if( choise 7 | choise =0 )cout 7 | choise =0); cout endl;if(1 = choise)Addmaion(DataFile, 1);/调用添加函数else if(2 = choise)cout n 请选择查找方式 1.编号查找 2.姓名查找 endl; cout choiseagain; cin.ignor
11、e();if( choiseagain != 1 & choiseagain != 2 ) cout 输入有误!请重新输入: ;while(choiseagain != 1 & choiseagain != 2);if( 1 = choiseagain )NumbersFindmaion(DataFile);/调用号码查找函数elseNameFindmaion(DataFile);/调用姓名查找函数else if(3 = choise)editMaion(DataFile);/调用修改函数else if(4 = choise)recondMaion(DataFile); else if(5 =
12、 choise)deleteMaion(DataFile); else if(6 = choise)showDataFile(DataFile);/调用显示函数else if(7 = choise)cout 谢谢使用!按任意键退出! endl; exit(0);DataFile.close();return 0;/姓名查找函数void NameFindmaion(fstream & file)char choise, inchoise; /选择继续与选择是否插入未找到信息人员信息doInformaion person; char name11;file.clear();file.seekg(0
13、L, ios:beg); /将读指针至于文件首if( !file )cout 打开文件失败! endl; exit(0);cout 请输入要查找的姓名:;cin.getline(name, 11);while( !file.eof()file.read(char *)&person, sizeof(person); if(file.fail()cout 未找到该用户信息!n endl; cout inchoise;cin.ignore();if(Y = toupper(inchoise)elseAddmaion(file, 0); break;break;if(strcmp(name, per
14、son.getName() = 0)cout 该用户信息已找到! endl; cout person endl;break;cout choise;cin.ignore();while(toupper(choise) = Y);/编号查找函数void NumbersFindmaion(fstream & file)char choise, inchoise; doInformaion person; int number;file.clear();file.seekg(0L, ios:beg); /将读指针至于文件首if( !file )cout 打开文件失败! endl; exit(0);c
15、out number;cin.ignore(); /掠过后面的换行符while( !file.eof()file.read(char *)&person, sizeof(person); if(file.fail()cout 未找到该用户信息! endl;cout inchoise;cin.ignore();if(Y = toupper(inchoise)elseAddmaion(file, 0); break;break;if( person.getNumbers() = number)if( person.getAge() = 0 )elsecout 编号 person.getNumber
16、s() 的信息已删除! endl; break;cout 该用户信息已找到! endl; cout person endl;break;cout choise;cin.ignore();while(toupper(choise) = Y);删除函数 deletaMaion:void deleteMaion(fstream & file)Informaion person, insteadPerson; char name10;int number;int choise;/选择删除方式姓名/编号int recondNumbers; /记录要删除人员的编号int count = 0;/记录找到信息
17、时提取的次数file.clear(); file.seekg(0L, ios:beg); if( !file )cout 打开文件失败! endl; exit(0);cout 请输入要删除人员的姓名或编号 endl *1.输入姓名*2.输入编号 endl choise; cin.ignore();if(choise != 1 & choise != 2)cout 输入有误!请重新输入:;while(choise != 1 & choise != 2); if(choise = 1)cout 请输入要删除的姓名:; cin.getline(name, 11);while( !file.eof()
18、file.read(char *)&person, sizeof(person);count+;if( file.fail()cout 未找到该用户信息! endl; break;if(strcmp(name, person.getName() = 0)cout 该用户信息已找到! endl;recondNumbers = person.getNumbers();/获取原编号cout person endl;insteadPerson.setNumbers(recondNumbers);/将获取的编号赋值与新数据file.seekp( (count-1)*sizeof(insteadPerso
19、n), ios:beg);file.write(char *)&insteadPerson, sizeof(insteadPerson); file.flush();cout 用户 person.getName() 的信息已删除! endl;break;elsecout number;cin.ignore();while( !file.eof()file.read(char *)&person, sizeof(person); count+;if(file.fail()cout 未找到该用户信息! endl; break;if( person.getNumbers() = number)cou
20、t 该用户信息已找到! endl;recondNumbers = person.getNumbers();/获取原编号cout person endl;insteadPerson.setNumbers(recondNumbers);/将获取的编号赋值与新数据file.seekp( (count-1)*sizeof(insteadPerson), ios:beg);file.write(char *)&insteadPerson, sizeof(insteadPerson); file.flush();cout 编号 insteadPerson.getNumbers() 用户信息已删除! end
21、l;break;/显示函数void showDataFile(fstream & file)Informaion person; long posn, posu;file.clear();file.seekg(0L, ios:beg);/检测是否为空文件posn = file.tellg();file.seekg(0L, ios:end); posu = file.tellg();if( posu = posn )cout 文件为空! endl;elsefile.clear(); file.seekg(0L, ios:beg); while( !file.eof() )file.read(ch
22、ar *)&person, sizeof(person); if( file.fail()break;if( person.getAge() = 0 )cout 编号 person.getNumbers() 的信息已删除!可写入新数据!n endl;elsecout person endl;/功能统计函数void recondMaion(fstream & file)Informaion person; tatolMaion recond;file.clear(); file.seekg(0L, ios:beg);if(!file)cout 打开文件失败! endl; exit(0);whil
23、e(!file.eof()file.read(char *)&person, sizeof(person); if(file.fail()break;if(strcmp(person.getPersonProperties(), 行政人员) = 0 | strcmp(person.getPersonProperties(),教师 ) = 0 | strcmp(person.getPersonProperties(), 一般员工) = 0 )recond.setOnjobPerson(); if(strcmp(person.getPolitical(), 党员) = 0)recond.setPo
24、lictical();if(strcmp(person.getGader(), 女) = 0 ) recond.setWomenWork();if(strcmp(person.getHightdegee(), 博士) = 0 | strcmp(person.getHightdegee(), 研究生) = 0 | strcmp(person.getHightdegee(), 硕士) = 0 )recond.setHightDegee();recond.getTatolperson(file);cout 根据现有信息,统计如下: endl;cout n 系统录入的人员总数: recond.gett
25、atolperson() endl;cout n 在职人员: recond.getOnjobPerson() 党员: recond.getPolictical() 女职工: recond.getWomenWork() 高学历: recond.getHightDegee() (istream &strm, Informaion &obj)/冲在流体去操作符friend ostream &operator (istream &strm, Informaion &obj)cout n 现在请输入以下信息: endl endl; cout 请选择人员目前工作情况:; strm.getline(obj.
26、personProperties, 10);cout 输入用户姓名: ; strm.getline(, 11); cout 输入性别: ; strm.getline(obj.gader, 3); cout obj.age; strm.ignore();cout 输 入 职 务 :; strm.getline(obj.position, 10); cout 输 入 职 称 :; strm.getline(obj.title, 10); cout 输入政治面貌:; strm.getline(obj.political, 10); cout 输入学历:;strm.getline(ob
27、j.hightDegee, 10);cout obj.serveingTime; strm.ignore();cout obj.countTime; strm.ignore();return strm;friend ostream &operator (ostream &strm, Informaion &obj)cout.setf(ios:fixed | ios:left);strm 人员编号: setw(10) obj.Numbers 姓名: setw(10) 性别 : setw(10) obj.gader 年龄 : obj.age endl; strm 职务: setw
28、(10) obj.position 职称: setw(10) obj.title 政治面貌: setw(10) obj.political 学历: obj.hightDegee endl;strm 任职时间: setw(10) obj.serveingTime 来院时间: setw(10) obj.countTime 备注: setw(10) obj.personProperties endl; return strm;class tatolMaion : public Informaion/功能统计类 继承类private:int onjobPerson;/在职员工统计int policti
29、cal;/党员int womenWork;/ 女工人数int hightDegee;/统计高学历人数public:void setOnjobPerson() onjobPerson+; void setPolictical() polictical+; void setWomenWork() womenWork+; void setHightDegee() hightDegee+; int getOnjobPerson() return onjobPerson; int getPolictical() return polictical; int getWomenWork() return w
30、omenWork; int getHightDegee() return hightDegee; tatolMaion()/构造函数onjobPerson = 0;polictical = 0;womenWork = 0;hightDegee = 0;/获取静态数值函数void Informaion:getTatolperson(fstream & file)Informaion person;int count = 0; /记录提取次数file.clear(); file.seekg(0L, ios:beg); if( !file )cout 打开文件失败! endl; exit(0);wh
31、ile(!file.eof()file.read(char *)&person, sizeof(person); if(person.getAge() = 0)count-;/被删除数据不计入总数if(file.fail()break; count+;person.tatolperson = count;/功能统计函数void recondMaion(fstream & file)Informaion person; tatolMaion recond;file.clear(); file.seekg(0L, ios:beg);if(!file)cout 打开文件失败! endl; exit(
32、0);while(!file.eof()file.read(char *)&person, sizeof(person); if(file.fail()break;if(strcmp(person.getPersonProperties(), 行政人员) = 0 | strcmp(person.getPersonProperties(),教师 ) = 0 | strcmp(person.getPersonProperties(), 一般员工) = 0 )recond.setOnjobPerson(); if(strcmp(person.getPolitical(), 党员) = 0)recond.setPolictical(); if(strcmp(person.getGader(), 女) = 0 )recond.setWomenWork();if(strcmp(person.getHightdegee(), 博士) = 0 | strcmp(person.getHightdegee(), 研究生) = 0 | strcmp(person.getHightdegee(), 硕士) =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省反假币培训课件
- 保卫干部教育培训制度
- 仪表巡回检查制度
- 中百好物奖金制度
- 不良贷款清收制度
- 2026年株洲市炎陵县财政局、县审计局公开招聘专业人才备考题库完整答案详解
- 2025-2030智能材料产业发展分析及政府战略规划实施研究报告
- 大车安全管理课件下载
- 2026年石狮市人民政府湖滨街道办事处公开招聘编外工作人员备考题库及答案详解1套
- 2025至2030中国功能性食品原料创新开发与消费者接受度分析报告
- 征信修复合同范本
- 2025年公安部遴选面试题及答案
- 中煤集团机电装备部副部长管理能力考试题集含答案
- 化工厂设备维护保养培训
- 福建省网络安全事件应急预案
- 五育融合课件
- 意识障碍的判断及护理
- 储能电站安全管理与操作规程
- 2025年宿迁市泗阳县保安员招聘考试题库附答案解析
- 交通安全企业培训课件
- 2025年广东省中考物理试卷及答案
评论
0/150
提交评论