工资管理实验报告(附源程序)_第1页
工资管理实验报告(附源程序)_第2页
工资管理实验报告(附源程序)_第3页
工资管理实验报告(附源程序)_第4页
工资管理实验报告(附源程序)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、合肥学院计算机科学与技术系课程设计报告20082009学年第二期课程程序设计语言u课程设计课程设计名称企业员工工资管理系统学生姓名吕劝劝学号0804032008专业班级网络工程(2)班指导教师咼玲玲李红2009年 6 月一、题目 工资管理系统。某小型公司,主要有四类人员:经理、技术人员、销售经理和推销员。要求存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示 全部信息。人员编号基数为 1000 ,每输入一位人员就加一。经理升级三级因此为四级, 技术人员和销售经理升级二级所以为三级,销售人员升级为二级。月薪计算办法是:经理拿固定月薪 8000 元;技术人员按每小时 100 元领取月 薪

2、;推销员的月薪按该推销员当月销售额的4%提成;销售经理既拿固定月薪也领取销售提成,固定月薪为 5000 元,销售提成为所管辖部门当月销售总额的0.5 %o。二、问题分析 根据题目要求,编写一个可以管理工资系统的程序,公司有四种成员:经理,销售经理,销售人员,技术人员。每个人员的信息有姓名,编号,级别,当前 月薪,人员编号技术为1000。1. 功能选择项:输入选择功能项,及每个功能对应的作用。2. 信息的录入:包括姓名,级别,编号,技术人员需要本月的工作时数,销 售经理需要固定月薪和本月销售额,销售人员仅需要本月的销售额,经理需要输入 固定月薪。3. 显示信息:显示各人员的姓名,级别,编号和本月

3、应发金额。 根据题目要求设计如下:1. 设计一个主菜单大体如下:【 1】各成员信息输入一次;【 2】各成员信息输入两次;【 3】各成员信息输入三次;2. 程序运行时,首先提示输入雇员姓名;3. 对于经理直接输出其工资及其它信息;4. 对于技术人员,程序提示输入其本月工作时数,然后输出其工资及其它信 息;5. 对于推销员,程序提示输入其本月销售额,然后输出其工资及其它信息;6. 对于销售经理,程序提示输入其管辖部门本月销售总额,然后输出其工资及 其它信息。三、算法的设计 根据上述需求,设计一个基类 employee, 然后派生出 technician (技术人员) 类 、 manager ( 经

4、 理 ) 类 和 salesman ( 推 销 员 ) 类 。 由 于 销 售 经 理 ( salesmanager )既是经理又是销售人员,兼具两类人员的特点,因此同时继承 manager 和 salesman 两个类。定义一个雇员类如下:class employeeprotected:char name20 。 /姓名int num。个人编号int grade。 级别float salary。月薪总额static int No。 II静态数据:目前编号public:employee。 构造函数employee()。 /析构函数virtual void pay()=0 。 /计算月薪函数(纯

5、虚函数)virtual void promote(i nt jishu=O) 。/ 升级函数(虚函数)void SetName(char *)。II设置姓名函数char * GetName()。提取姓名函数int GetNum()。 II提取编号函数int Getgrade()。II提取级别函数float Getsalary()。II提取月薪函数。在基类中,除了定义构造函数和析构函数以外,还应统一定义对各类人员信息 都应有的操作,这样可以规范各派生类的基本行为。但是各类人员的月薪计算方法 不同,不能在基类employee中统一定义计算方法。各类人员信息的显示内容也不同,同样不能在基类中统一定义

6、显示方法。因此,在employee类中用纯虚函数的方式定义了计算月薪函数pay,然后在派生类中再根据各自的同名函数实现具体的功能。由于salesmanager的两个基类又有公共基类employee,为避免二义性,这里将employee类设计为虚基类。系统类图属性和方法定义类名成员类 别类型成员名描述employee属性char *n ame雇员姓名intnum丨人编号intgrade级别floataccumPay月薪总额intNo本公司雇员编号目前最大 值方法voidpay()计算月薪函数(为纯虚函 数)voidpromote(i nt)升级函数类名成员类 别类型成员名描述tech ni ci

7、a n属性floathourlyRate每小时酬金intworkHours当月工作时数方法voidpay()accumPay=hourlyRate*workHoursman ager属性floatmon thlyPay固定月薪数方法voidpay()accumPay=mon thlyPaysalesma n属性floatCommRate按销售额提取酬金百分比floatsales当月销售额方法voidpay()accumPay=sales*CommRatesalesma nage属性方法voidpay()accumPay=mon thlyPay+CommRate*sales四、调试由于公司每增加

8、一个雇员,无论他(她)是哪一类人员,也就是employee类的所有派生类对象创建时,都要访问同一个No,因此将No定义为静态数据成员。经理类型时,经理拿基本工资8000,技术人员按小时计算本月拿的工资,销售人员按本月销售额并提取成本,销售经理拿基本工资5000和本月的所管辖部门的销售额提成。在定义销售经理的类函数时可以建立在经理和销售人员的基础上,既是可以把 两者作为基类使用。class salesma nager:public man ager,public salesma npublic:salesmanager() 。 / 构造函数void pay() 。 /计算月薪函数 void pr

9、omote(int) 。/ 升级函数。进一步改进(1)目前程序中,经理月薪,技术人员的小时酬金和销售人员的销售额提成 比例均是固定的,这不适应不同公司的需要,可考虑用带参数的构造函数来解决。(2)销售经理月薪计算中,要输入其管辖部门当月销售总额。实际上,这可 以通过将本部门所有推销员销售额相加而得到。可以考虑在推销员类中增加所属部 门等属性来完成这方面的功能。(3 )这次课程设计是我第一次面对大程序,以前只是完成课后慢的小型题目,没有牵涉到链表和文件。C+是建立在C语言上的,上学期没怎么学习C语言所以导致这学期有点困难,其实课程设计是基于会编写和使用一些小的类和函数调 用的基础上的,设计的成果

10、是基于对这些内容的熟练掌握程度。课程设计中有许多 要求没有做到主菜单的设计和选择功能的语句都没有很好的设计,往往菜单设计好 了又不知道怎么和函数或者类相结合使用。总之自己感觉自己做的很不好,说明在 大一这学年该学的知识还是没有学好。这次我没有用到链表和文件只是简单的使用了指针。指针调用是是指向字符串 的首地址。( 4)课程设计要把握大局,在用小程序是必须合理插入和调用小程序,思路清晰。( 5)一开始输出姓名,编号,级别,本月工资时用的是如:empi.Getname等形式,可是好像只是用于结构体。( 6)在传字符串是使用到指针,如:Char name10(7)将理论教案中涉及到的知识点贯穿起来,

11、对不同的数据类型、程序控制 结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到 融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:进一步 巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力,全面考核学生所掌握的基本理论 知识及其实际业务能力,从而达到提高学生素质的最终目的,利用所学知识,开发 小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力,对于给定的设计题目,如何进行分析,理清思路, 并给出相应的数学模型,掌握自顶而下的设计方法,将大问题进行模块化

12、,领会结 构化程序设计的方法,熟练掌握C+语言的基本语法,灵活运用各种数据类型。五、测试主函数中声明四个关于雇员类的对象,分别对对象进行输入信息。 测试结果如下:【选择功能 1】:* 功能选项 主菜单 *1*各成员只输入一遍 *重复功能并运用两遍重 复 功 能 并 运 用 三 遍 *请输入功台匕能选项*1*只输入一份信息* 请输入雇员 的姓名: YU 请输入雇员 的姓名: WEN 请输入雇员 的姓名: TI 请输入雇员 的姓名: HU 请输入兼职 技术人员 WEN本月的工作时数: 23 请输入销售 经理 TI 所管辖部门本月的销售总额: 78907 请输入推销 员 HU 本月的销售额: 678

13、9YU职工号1000级别为4级,本月工资 8000WEN职工号1001级别为3级,本月工资 2300TI 职工号 1002级别为 3级,本月工资 5394.54HU职工号1003级别为1级,本月工资 271.56Press any key to continue 【选择功能 2】:* 功能选项 主菜单 *各 成员只 输入 一遍 2*重 复 功 能 并 运 用 两 遍 *重 复 功 能 并 运 用 三 遍 *请输入功能选项*2 请输入雇员的 姓名: hua 请输入雇员的 姓名: yu 请输入雇员的 姓名: fang 请输入雇员的 姓名: qing 请输入兼职技 术人员 yu本月的工作时数: 6

14、请输入销售经 理 fang 所管辖部门本月的销售总额: 5643780 请输入推销员 qing 本月的销售额: 7896hua 编号 1000 级别为 4 级,本月工资 8000yu 编号 1001 级别为 3 级,本月工资 600fang 编号 1002 级别为 3 级,本月工资 33218.9qing 编号 1003 级别为 1级,本月工资 315.84 请输入雇员的 姓名: li 请输入雇员的 姓名: xiu 请输入雇员的 姓名: chun 请输入雇员的 姓名: quan 请输入兼职技 术人员 xiu本月的工作时数: 21 请输入销售经理 chun 所 管辖部门本月的销售总额: 1200

15、0000 请输入推销员quan 本月的销售额: 23100li 编号 1000 级别为 7 级,本月工资 8000 xiu 编号 1001 级别为 5 级,本月工资 2100 chun 编号 1002 级别为 5 级,本月工资 65000quan编号1003级别为1级,本月工资 924Press any key to continue【选择功能 3】:* 功能选项 主菜单 *1*各 成 员 只 输 入 一 遍 *2*重 复 功 能 并 运 用 两 遍 *重 复 功 能 并 运 用 三 遍 *3姓名: pan姓名: feng姓名: jing请输入功能选项请输入雇员的请输入雇员的请输入雇员的请输入

16、雇员的姓名: qi请输入兼职技术人员 feng 本月的工作时数: 24请输入销售经理 jing 所管辖部门本月的销售总额: 42967574请输入推销员qi 本月的销售额: 45673pan 编号 1000 级别为 4 级,本月工资 8000 feng 编号 1001 级别为 3级,本月工资 2400 jing 编号 1002 级别为 3级,本月工资 219838 qi 编号 1003 级别为 1 级,本月工资 1826.92姓名: ji姓名: ta姓名: fa姓名: la术人员 ta 本月 的工作时数: 9 请输入销售经理 fa 所管辖部门本月的销售总额: 39074378请输入雇员的请输入

17、雇员的请输入雇员的请输入雇员的请输入兼职技请输入推销员la 本月的销售额: 846810ji 编号 1000 级别为 7 级,本月工资 8000 ta 编号 1001 级别为 5 级,本月工资 900 fa 编号 1002 级别为 5 级,本月工资 200372 la 编号 1003 级别为 1 级,本月工资 33872.4姓名: ge姓名: ji姓名: ku姓名: nu术人员 ji 本月 的工作时数: 43 请输入销售经理 ku 所管辖部门本月的销售总额: 27808543请输入雇员的请输入雇员的请输入雇员的请输入雇员的请输入兼职技请输入推销员nu 本月的销 售额: 34795 ge 编号

18、1000 级别为 10 级,本月工资 8000ji 编号 1001 级别为 7 级,本月工资 4300ku 编号 1002 级别为 7 级,本月工资 144043nu 编号 1003 级别为 1 级,本月工资 1391.8Press any key to continue 输入每个成员所需要的信息,经理需要固定工资;销售经理需要固定每月工资 和所管辖部门本月的销售额在提取百分比就是本月实拿的工资;技术人员需要本月 的工作时数,就可以计算出本月工资;销售人员就是本月销售额在提成。测试结果 如下:六、参考书目1 刘振安 . 等编著 .C+ 程序设计课程设计 . 机械工业出版社。2 吴乃陵 . 等编

19、著 .C+ 程序设计 . 北京:高等教育出版社。3 李龙澍.C+程序设计实训教程北京:清华大学出版社。4 宁正元数据结构(C语言)南京:东南大学出版社,2000年6月。5 严蔚敏等 数据结构(C语言版) 北京:清华大学出版社,1997年。6 胡学钢等数据结构算法设计指导 北京:清华大学出版社, 1999年 。7 明日科技编著 Visual C+ 程序开发范例宝典北京:人民邮电出版社。 七、附录源程序#include #include using namespace std。class employee/ 基类protected:char name20 。 /姓名int num 。 /个人编号i

20、nt grade 。 /级别float salary 。 / 月薪总额static int No 。 / 静态数据:目前编号public:employee() 。 /构造函数employee() 。 /析构函数virtual void pay()=0 。 / 计算月薪函数(纯虚函数)virtual void promote(int jishu=0) 。/ 升级函数(虚函数)void SetName(char *) 。/ 设置姓名函数char * GetName() 。/提取姓名函数int GetNum() 。 / 提取编号函数 int Getgrade() 。 / 提取级别函数 float G

21、etsalary() 。 /提取月薪函数int employee:No=1000 。 /员工编号基数为 1000employee:employee() / 输入的员工编号为编号加 1 num=No+ 。grade=1。 / 级别初值为 1salary=0.0。 /月薪总额初值为 0employee:employee()void employee:promote(int jishu) grade+=jishu 。 /升级,提升的级数由 jishu 指定void employee:SetName(char * names)/ 指针 strcpy(name,names) 。 / 设置姓名char*

22、employee:GetName() return name 。 / 提取成员姓名int employee:GetNum() return num 。 / 提取成员编号int employee:Getgrade() return grade 。 / 提取成员级别float employee:Getsalary() return salary 。 / 提取月薪技术人员类class technician:public employee /private:float hourlyRate 。 / 每小时酬金int workHours 。 /当月工作时数public:technician() 。 /

23、构造函数void SetworkHours(int wh) 。 / 设置工作时数函数 void pay() 。 / 计算月薪函数 void promote(int) 。 /升级函数technician:technician() hourlyRate=100 。 / 每小时酬金 100 元void technician:SetworkHours(int wh) workHours=wh 。 / 设置工作时间void technician:pay() salary=hourlyRate*workHours 。 / 计算月薪,按小时计酬void technician:promote(int) emp

24、loyee:promote(2) 。 / 调用基类升级函数,升 2 级class salesman:virtual public employee / 销售人员类 protected:float CommRate 。 /按销售额提取酬金的百分比float sales 。 /当月销售额public:salesman()。 / 构造函数void Setsales(float sl) 。 / 设置销售额函数void pay() 。 / 计算月薪函数void promote(int) 。 /升级函数。salesman:salesman() CommRate=0.04 。 / 销售提成比例 4%void

25、 salesman:Setsales(float sl) sales=sl。 / 设置销售额void salesman:pay() salary=sales*CommRate 。 / 月薪 = 销售提成void salesman:promote(int) employee:promote(0) 。 / 调用基类升级函数,升 0 级class manager:virtual public employee / 经理类 protected:float monthlyPay 。 / 固定月薪数public:manager()。 /构造函数void pay() 。 / 计算月薪函数void promo

26、te(int) 。 /升级函数 。manager:manager() monthlyPay=8000 。 / 固定月薪 8000 元void manager:pay() salary=monthlyPay 。 / 月薪总额即固定月薪数void manager:promote(int) employee :promote(3) 。 / 调用基类升级函数,升 3 级销售经class salesmanager:public manager,public salesman /理类 public: salesmanager()。 / 构造函数 void pay() 。 / 计算月薪函数 void pro

27、mote(int) 。 /升级函数。salesmanager:salesmanager() monthlyPay=5000 。CommRate=0.005 。 void salesmanager:pay() salary=monthlyPay+CommRate*sales 。 / 月薪 =固定月薪 + 销售提成void salesmanager:promote(int) employee:promote(2) 。 / 调用基类升级函数,升 2 级void main()/ 主函数 int n 。 manager ml。 / 声明经理对象 technician tl 。 / 声明技术人员对象 sa

28、lesmanager sml。 / 声明销售经理对象 salesman sl。 / 声明销售人员对象 char namestr20 。 / 雇员姓名临时存放在 namestr 中cout*1endlcoutendl 。功能选项 主菜单 cout*1endlcoutcout1*endl 。各成 员只 输入 一 遍*1endlcoutcout2*endl 。重 复 功 能 并 运 用 两 遍 *1endlcoutcout3*1endlcoutcout1*endl 。重复 功能并运用三遍endl 。请 输 入 功 能 选 项1*n 。switch(n)case 1:cout1*只 输 入 一 份 信 息endl*1int i 。for(i=0。i4。i+)请输入雇员的姓名:coutnamestr。empi-SetName(namestr) 。/设置每个成员的姓名empi-promote() 。/ 升级,通过基类指针访问各派生类函数cout 请 输 入 兼 职 技 术 人 员tl.GetName()ww 。 tl.SetworkHours(ww) 。/ 设置工作时间cout 请 输 入 销 售 经 理sml.GetName()s1 。 sml.Setsales(s1)。cout请输入推销员sl.GetName

温馨提示

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

评论

0/150

提交评论