高校人事管理系统_第1页
高校人事管理系统_第2页
高校人事管理系统_第3页
高校人事管理系统_第4页
高校人事管理系统_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

河南城建学院面向对象语言程序设计课程设计报告书班 级 专 业 计算机科学与技术 姓 名 学 号 课程名称 面向对象语言程序设计设计名称 高校人事管理系统 指导教师 计算机科学与工程系2012年6月摘要高校人事管理系统,基于目前高校的人士录用情况,便于高校的人事信息化管理。该系统基于C+语言,以及数据结构的算法设计思想。为方便用户程序设有添加功能、删除功能、查找功能(姓名查找、编号查找)、修改功能、查看功能和人员信息统计功能(对行政人员、教师、一般员工、退休人员、返聘人员和临时工)进行统计,包含对党员人数、女职工人数、高学历人数(研究生、硕士、博士)进行统计。系统的各个功能主要通过函数之间的相互调用实现,主要有添加函数、查找函数、修改函数、显示函数、统计函数。所有函数都是基于文件操作进行,直接对各种操作进行保存。系统设有两个类、两个类为继承关系。体现了C+的多态性。具体信息将在下文详细的剖析概括。系统的开发与设计是基于VC6.0平台实现的编译,根据数据结构算法设计原理,对程序的功能系统分步在VC6.0平台上编译实现。设计中参考了多项有关文件操作与类的继承派生、多态性的书籍。进行了仔细认真的源代码书写,保证程序的健壮性与高效性,各种功能也考虑了用户的需求,做大最大限度的满足用户的需求,并对各种出现异常进行了分析与解决。 关键词:高校人事管理; C+; VC6.0; 数据结构;文件操作目录第一章开发环境和开发工具11.1C+语言简介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 测试数据选择354.2 测试结果分析35总 结40心得体会41参考文献42第一章 开发环境和开发工具1.1 C +语言简介在C的基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C+。 C+进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C+目前流行的最新版本是Borland C+4.5,Symantec C+6.1,和Microsoft VisualC+ 2.0。C+提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。1.2 开发背景 高校人事管理系统,基于目前高校的人士录用情况,便于高校的人事信息化管理。该系统基于C+语言,以及数据结构的算法设计思想。为方便用户程序设有添加功能、删除功能、查找功能(姓名查找、编号查找)、修改功能、查看功能和人员信息统计功能(对行政人员、教师、一般员工、退休人员、返聘人员和临时工)进行统计,包含对党员人数、女职工人数、高学历人数(研究生、硕士、博士)进行统计。系统能够满足高校实现人事的简单管理操作,便于高校对在校人事进行各种及时合理的调度,满足高校简单的运行机制。1.3 开发环境本文所采用的开发环境主要是基于C+环境的信息技术极大地扩展了全人类教育的时空界限,空前地提高了人们学习的兴趣、效率和主动性,已经成为开发人类能力的创造性工具。在计算机科学中,数据结构不仅是一般应用程序设计的基础,而且也是操作系统、数据库系统、网络系统设计及其它大型计算机应用工程重要的实施基础。在编程实现操作系统是基于VC6.0 之上实现,按照了C+语言设计的基本内容。第二章 面向对象思想 2.1 系统需求分析高校人事管理,高校在有职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。要求: 1) 添加删除功能:能根据学院人事的变动情况,添加删除记录;2) 查询功能:能根据编号和姓名进行查询;3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储;4) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);5) 保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。6) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。 2.2 系统总体设计2.2.1 系统设计目标(1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握C+程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的C+程序设计问题。2.2.2 开发设计思想 基于以上系统设计目标,本文在开发高校人事管理系统时遵循了以下开发设计思想: 采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。尽量达到操作过程中的直观、方便、实用、安全等要求。系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。系统应具备文件操作,及时根据用户需求进行数据的添加、删除、修改、备份等操作。2.2.3 系统功能模块设计图3-1系统整体功能模块图 系统的菜单函数menu函数如下:/菜单函数void menu() cout endl;cout endl; cout *1.添加记录* endl; cout *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 Informaion /功能统计类 继承类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 getPolictical() 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, 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.ignore();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 = 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(0L, 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)Addmaion(file, 0);break;elsebreak;if(strcmp(name, person.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);cout 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)Addmaion(file, 0);break;elsebreak;if( person.getNumbers() = number)if( person.getAge() = 0 )cout 编号 person.getNumbers() 的信息已删除! endl;break;elsecout 该用户信息已找到! 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; /记录找到信息时提取的次数 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()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(insteadPerson), 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)cout 该用户信息已找到! 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() 用户信息已删除! endl;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(char *)&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);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(), 硕士) = 0 ) recond.setHightDegee();recond.getTatolperson(file);cout 根据现有信息,统计如下: endl;cout n系统录入的人员总数: recond.gettatolperson() 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.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(obj.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 人员编号: se

温馨提示

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

评论

0/150

提交评论