课程设计报告课程名称面向对象程序设计课题名称公司人员管理系统专业计算机技术与科学班级学号姓名指导教师年月日课程设计任务书课程名称面向对象程序设计课题专业班级学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日课题5:公司人员管理系统(一)、课程设计题目:公司人员管理系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的一种机制。3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书(三)、设计方法和基本原理:1、问题描述(功能要求):公司人员管理系统实现对公司人员按姓名或者编号显示、查找、增加、删除和保存各类人员信息的操作。某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。程序对所有人员有提升级别的功能。薪金的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成,销售经理既拿固定月薪也领取销售提成。能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。在基本要求达到后,可设计出比较友好的界面(如下拉菜单),也可用VC++ClassWizard设计(选作)。2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告以及系统使用说明书。目录1.系统需求分析...............................................................................错误!未定义书签。2.总体设计.......................................................................................错误!未定义书签。3.详细设计.......................................................................................错误!未定义书签。4.系统调试.......................................................................................错误!未定义书签。5.结果分析.......................................................................................错误!未定义书签。6.总结...............................................................................................错误!未定义书签。7.附录…………………………………………………………………………………11.系统需求分析1.1用户需求:某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水总额并显示全部信息。1.2设计目标:(1)其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。(2)程序对所有人员有提升级别的功能(3)月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成。(4)销售经理机既拿固定月薪也领取销售提成。(5)能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息。1.3根据系统功能要求,可以将问题解决分为以下步奏:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据用户需求,设计目标的类层次;(3)完成类层次中各个类的描述(包括属性和方法);(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;(6)功能调试;(7)完成系统总结报告以及系统使用说明。2.总体设计2.1系统功能模块图,如图2-1所示。图2-1系统功能模块图企业人员管理系统查找更改显示退出删除全删新增2.2系统流程图,如图2-2所示。使用面向对象的程序设计思想进行分析。整个系统涉及两大类信息和操作,职工,职工数据。所以系统主要涉及两个大类:Employee职工类,Database职工数据类。系统的总体框架就是职工类,职工数据类的定义;主函数中定义定义一个职工对象,循环显示主菜单并根据用户选择调用职工类的相应方法。图2-2系统流程图inttag;stringzw;intsalary;intno;stringname;Employee类inttop;Employee();intgettag();intgetno();intgetsalary();voiddelan();voiddisp();voidsetzw();voidsetname();voidgetsalary();voidaddemp();char*getname();Database();voidclear();~Database();intaddemp();voidempdata();voiddisp();Database类3.详细设计3.1类实现classEmployee//职工类{public:Employee(){}//缺省构造函数intgattag()//获取标记intgetno()//获取编号intgetsalary()//获取工资voiddelna()//删除voidsetzw()//设置职务voidgetsalary()//设置工资voidsetname()//设置名字voidaddemp()//增加voiddisp()//显示职工信息char*getname()//获取名字protected:inttag;//删除标记intno;//职工编号intsalary;//职工工资stringzw;//职工职务stringname;//职工姓名}classDatabase//职工数据类{public:Database()voidclear()//删除所有intaddemp//增加职工~Database()voidempdata()voiddisp()//显示职工信息protected:inttop;}3.2界面设计//欢迎界面coutsetw(20)******************************欢迎使用职工管理系统******************************endl;//以下是操作界面coutsetw(50)┌--------------------┐\n;coutsetw(50)│请选择您所需的操作│\n;coutsetw(50)││\n;coutsetw(50)│操作1,并按回车键│\n;coutsetw(50)││\n;coutsetw(50)│返回0,并按回车键│\n;coutsetw(50)└--------------------┘\n;cout职工维护1:新增2:更改3:删除4:查找5:显示6:全删0:退出=;cinchoice;coutsetw(50)┌-----------------------------┐\n;coutsetw(50)│请选择您所需的操作│\n;coutsetw(50)│经理:1,并按回车键│\n;coutsetw(50)│兼职技术人员:2,并按回车键│\n;coutsetw(50)│销售经理:3,并按回车键│\n;coutsetw(50)│兼职推销人员:4,并按回车键│\n;coutsetw(50)└-----------------------------┘\n;3.3主函数实现voidmain(){intchoice=1;DatabaseEmpDB;while(choice!=0){cout********************************************************************************endl;coutendl;coutendl;coutsetw(20)******************************欢迎使用职工管理系统******************************endl;coutendl;coutendl;coutsetw(50)┌--------------------┐\n;coutsetw(50)│请选择您所需的操作│\n;coutsetw(50)││\n;coutsetw(50)│操作1,并按回车键│\n;coutsetw(50)││\n;coutsetw(50)│返回0,并按回车键│\n;coutsetw(50)└--------------------┘\n;cinchoice;switch(choice){case1:while(1){coutsetw(20);EmpDB.empdata();break;break;}}}}4.系统调试4.1主菜单,如图4-1所示。图4-14.2显示职工信息,如图4-2所示。图4-24.3增加职员,如图4-3所示。图4-34.4按编号查找职员,如图4-4所示。图4-44.5删除职员,如图4-5所示。图4-55.结果分析本次课设我做的是公司人员管理系统,其优点是友好的界面。可以有效地进行数据的增加,更改,删除,查找,显示和保存,并且在输入数据有效性的判断。操作界面使用switch语句实现。其不足之处是出现重复编号系统不会提示,它只显示第一次输入的信息。6.总结&*&*&*&*&*&&*#*&%%$@#%$^&@#&%#*#^@$$$$!$@%$^%#^#%*%#**(%z#e^%@#%@#%%$&%#&@#%$@!$@#%@7.附录#includeiostream.h#includeiomanip.h#includestring.h#includefstream.hconstintMaxr=100;classEmployee//职工类{inttag;//删除标记intno;//职工编号charname[20];职工姓名charzw[20];//职工职务intsalary;//职工工资public:Employee(){}char*getname(){returnname;}//获取名字intgettag(){returntag;}//获取标记intgetno(){returnno;}//获取编号intgetsalary(){returnsalary;}//获取工资voidsetzw(charq[])//设置职务{strcpy(zw,q);}voidsetname(charna[])//设置名字{strcpy(name,na);}voidgetsalary(intsa){salary=sa;}