您好,欢迎访问三七文档
1公司员工管理系统2015-6-30(2014届)《面向对象课程设计》课程设计报告课程设计题目:公司员工管理系统学院:软件学院专业:软件工程(电子商务)学生姓名:王鑫班级:1421812学号:201420181220指导老师:魏振华2015年6月25日2公司员工管理系统2015-6-30目录1.需求分析..................................................................................22.具体要求....................................................................................23.总体设计....................................................................................34.详细设计.....................................................................................45.测试结果...................................................................................136.软件操作说明书.......................................................................187.总结...........................................................................................198.源代码.......................................................................................19公司员工管理系统课程设计报告1.需求分析根据对公司人员管理的需要,编写一个“公司人员管理系统”,以方便对公司人员数据的录入、修改、删除、显示、和查询功能。2.具体要求设计一个虚基类Staff(员工),包括编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出工程师类Engineer包含专业和职称保护数据成员以及相关的成员函数,再由Staff派生出领导类Leader,包括职务和部门保护数据成员以及相关的成员函数;然后由Engineer和Leader类派生出主任工程师类Chairman。具体实现以下要求:1.增加员工数据信息2.更新员工数据信息3公司员工管理系统2015-6-303.查询员工数据信息4.删除员工数据信息5.良好的人际交互界面、方便操作3.总体设计根据问题描述和要求,系统要求能够按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。确定程序至少应该具备如下功能:“增加各类人员数据”、“查询各类人员数据”、“显示各类成员数据”、“修改各类人员数据”、“删除各类人员数据”、“各类人员数据存盘”、“各类人员数据读入”基本模块。公司人员管理系统删除员工数据查询员工数据员工数据存盘员工数据读盘添加员工数据图3.1程序基本功能结构图为体现面向对象编程的优点,本系统除过显示菜单函数、文件读写以及主函数为全局函数外,其他所有函数功能均封装于类之中。4公司员工管理系统2015-6-30StaffEngineerLeaderChairman共同派生ListT(类模版)图3.2类结构一览图4.详细设计本系统公有五个类,其中一个抽象类,一个模版类,三个派生类。全局函数包括一个主函数、五个菜单显示函数、文件读写函数各三个。下面详细阐述各部分的具体构成。1)各类的构成a)抽象类Staff本系统中Staff类中拥有四个纯虚函数,故为抽象类,这四个纯虚函数为Staff类的派生类提供了共同的接口,函数的具体功能则由派生类实现,并且拥有保护成员TableNumber和Name[11],分别用于记录员工的编号和姓名。5公司员工管理系统2015-6-30Staff(抽象类)ProtectedPublicdoubleTableNumber;charName[11];Intage;virtualvoiddraw()=0;virtualvoidDisplay()=0;virtualvoidout1()=0;virtualintinput()=0;图4.1Staff类一览图b)派生类Engineer与LeaderEngineer与Leader类公有继承于Staff类,分别增加保护成员Profession[11]、PostName[11]与post[11]、workspace[11]分别用于记录工程师的专业、职称和领导的职务、部门,并且重写了四个虚函数,使得四个函数拥有了具体的功能。EngineerProtectedPubliccharProfession[11];charPostName[11];voiddraw();voidDisplay();voidout1();intinput();Staff公有继承图4.2Engineer类一览图6公司员工管理系统2015-6-30LeaderProtectedPubliccharpost[11];charworkspace[11];voiddraw();voidDisplay();voidout1();intinput();Staff公有继承图4.3Leader类一览图c)派生类ChairmanChairman类是由Engineer与Leader类共同派生出的,并没有增加任何私有或保护成员,但是重写了原来的四个虚函数。ChairmanPublicvoiddraw();voidDisplay();voidout1();intinput();Leader公有继承公有继承Engineer图4.4Chairman类一览图d)模版类Listt为了减少代码的重复并且提高程序的运行效率,这里特地定义模版类Listt,主函数中绝大多数具体功能都由类模版中的函数直接实现,具体成员与函数如下:7公司员工管理系统2015-6-301.私有成员Tdata[MAXSIZE],用于存放任意类型的对象数组。2.私有成员intlen,用来统计对象数组最后一个成员的下标。3.公有成员函数voidaddList,用于调用具体对象的draw()函数增加员工数据。4.公有成员函数voidBIList(),用于显示所有员工的数据。8公司员工管理系统2015-6-30Len=0?输出数据为空Yi=0Nilen?N开始结束输出对象成员信息Yi=i+1传入Len图4.5BIList()函数流程图5.公有成员函数intresearch(intj),用于查询员工数据并显示到显示器上。9公司员工管理系统2015-6-30开始传入Len,j输出数据为空结束Len=0?Y输入查询编号aNi=0iLen?Y判断j的值输出不同成员信息i=i+1N图4.6research函数流程图6.公有成员函数voiddeleteDat(intk),用于删除员工数据。10公司员工管理系统2015-6-30开始传入k,lenj=-1len=0?数据为空Y结束输入删除编号ai=0ilen?根据k的值显示不同类型的成员数据j=iNYi=i+1j=-1?N删除成功Y没有该成员N图4.7deleteDat函数流程图7.公有成员函数voidoutput(intj),用于把已有员工数据输出到硬盘上。11公司员工管理系统2015-6-30开始传入j的值调用Engineer类对象的out1()函数调用Leader类对象的out1()函数调用Chairman类对象的out1()函数j=1j=2j=3数据输出到当前目录下的Engineer.txt文件中数据输出到当前目录下的Leader.txt文件中数据输出到当前目录下的Chairman.txt文件中结束图4.8output函数流程图8.公有成员函数voidinter(intj),用于把硬盘上的员工数据读出并显示到显示器上。12公司员工管理系统2015-6-30开始传入j的值调用Engineer类对象的input()函数调用Leader类对象的input()函数调用Chairman类对象的input()函数j=1j=2j=3数据从当前目录下的Engineer.txt文件中读出并显示到显示器上数据从当前目录下的Leader.txt文件中读出并显示到显示器上数据从当前目录下的Chairman.txt文件中读出并显示到显示器上结束图4.9inter函数流程图2)主函数main构成本系统中主函数创建了三个模版类的具体对象,借此来访问各个具体类的成员函数,用户通过输入信息调用相应的功能模块函数,实现员工数据的录入、查询、显示、删除、保存、加载等功能。主函数流程图如下:13公司员工管理系统2015-6-30开始输出菜单输入操作选择i退出系统添加数据查询数据删除数据显示数据保存数据加载数据继续操作否结束YNi=0i=1i=2i=3i=4i=5i=6主函数流程图5.测试结果(1)程序运行主菜单:14公司员工管理系统2015-6-30(2)添加数据:15公司员工管理系统2015-6-30(3)查询数据:(4)显示数据:16公司员工管理系统2015-6-30(5)保存数据:17公司员工管理系统2015-6-30(6)加载数据:(7)删除数据:18公司员工管理系统2015-6-306.软件操作说明书本系统操作简洁明了,运行后界面同上,用户按菜单提示操作即可。19公司员工管理系统2015-6-307.总结经过一学期对面向对象语言C++的学习,我对面向对象的编程思想有了一定的认识,但是个人认为还远远不够,现在我已能够完成一些很基础的小型程序的开发,但是若想做一些大一点的项目,还需要继续加倍努力。关于这个公司员工管理系统,编写的过程中我发现了我有一些基础的知识还不大牢固,比如说多态性里的抽象类、虚函数等,但是经过这几天努力复习已经对其有了更深入的了解。8.源代码#includeiostream#includestring.h#includefstream#includewindows.h//图形设备接口函数//0=黑色8=灰色1=蓝色9=淡蓝色2=绿色A=淡绿色3=湖蓝色B=淡浅绿色4=红色C=淡红色5=紫色D=淡紫色6=黄色E=淡黄色7=白色F=亮白色#defineMAXSIZE10usingnamespacestd;ofstreamout4(Engineer.txt,ios::app);//ios::app以追加的方式打开文件ofstreamout2(Leader.txt,ios::app);ofstreamout3(Chairman.txt,ios::app);ifstreamin4(Engineer.txt,ios::app);ifstreamin2(Leader.txt,ios::app);ifstreamin3(Chairman.txt,ios::app);voidmenu();voidaddPerson();voidremovePerson();voiddisplayPerson();classStaff20公司员工管理系统2015-6-30{protected:doubleTableNumber;charName[11];intage;public:virtualvoiddraw()=0;virtualvoidDisplay()=0;virtualvoidout1()=0;virtualintinput()=0;};classEngineer:virtualpublicStaff{protected:charProfession[11];charPostName[11];public:voiddra
本文标题:C++课程设计报告
链接地址:https://www.777doc.com/doc-6372774 .html