工资管理系统实验报告_第1页
工资管理系统实验报告_第2页
工资管理系统实验报告_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

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

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

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

4、 employee, 然后派生出 technician (技术人员) 类、 manager (经理)类和 salesman (推销员)类.由于销售经理(salesmanager )既是 经理又是销售人员,兼具两类人员地特点,因此同时继承 manager和salesman两个类.定义一个雇员类如下:class employeeprotected:char name20; / 姓名int num; / 个人编号int grade; /级别float salary;/ 月薪总额static int No; / 静态数据:目前编号public:employee。; /构造函数employee(); I

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

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

7、ote(i nt)升级函数类名成员类 别类型成员名描述tech nician属性floa thourlyRate每小时酬金intworkHours当月工作时数方法voidpay()accumPay=hourlyRate*workHoursman ager属性floa tmon thlyPa y固定月薪数方法voidpay()accumPay=mon thlyPaysalesma n属性floa tCommRate按销售额提取酬金百分比floa tsales当月销售额方法voidpay()accumPay=sales*CommRatesalesma nager属性方法voidpay()accum

8、Pay=mon thlyPay+CommRate*sale s四、调试由于公司每增加一个雇员,无论他(她)是哪一类人员 ,也就是employee类地所有派生类对象创建时,都要访问同一个 No,因此将No定义为静态数据成员.经理类型 时,经理拿基本工资8000,技术人员按小时计算本月拿地工资,销售人员按本月销售额并提取成本,销售经理拿基本工资 5000和本月地所管辖部门地销售额提成在定义销售经理地类函数时可以建立在经理和销售人员地基础上,既是可以把两者作为基类使用class salesma nager:public man ager,public salesma npublic:salesma

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

10、没怎么学习 C语言所以导致这 学期有点困难 , 其实课程设计是基于会编写和使用一些小地类和函数调用地基础上地 设计地成果是基于对这些内容地熟练掌握程度 . 课程设计中有许多要求没有做到主菜 单地设计和选择功能地语句都没有很好地设计 , 往往菜单设计好了又不知道怎么和函 数或者类相结合使用 . 总之自己感觉自己做地很不好 , 说明在大一这学年该学地知识 还是没有学好 .这次我没有用到链表和文件只是简单地使用了指针 . 指针调用是是指向字符串地 首地址 .( 4)课程设计要把握大局 , 在用小程序是必须 合理插入和调用小程序 , 思路清 晰.( 5)一开始输出姓名 , 编号 , 级别 , 本月工资

11、时用地是如: empi.Getname 等形 式 , 可是好像只是用于结构体 .( 6)在传字符串是使用到指针, 如:Char name10( 7)将理论教学中涉及到地知识点贯穿起来, 对不同地数据类型、 程序控制结构、数据结构作一比较和总结 , 结合设计题目进行综合性应用 , 对所学知识达到融会贯通 地程度 . 通过课程设计 , 学生在下述各方面地能力应该得到锻炼: 进一步巩固、 加深学 生所学专业课程C+语言教程地基本理论知识,理论联系实际,进一步培养学生综合分析问题 , 解决问题地能力 , 全面考核学生所掌握地基本理论知识及其实际业务能 力 , 从而达到提高学生素质地最终目地 , 利用所

12、学知识 , 开发小型应用系统 , 掌握运用 C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理地综合能力,对于给定地设计题目 , 如何进行分析 , 理清思路 , 并给出相应地数学模型 , 掌握自顶而 下地设计方法,将大问题进行模块化,领会结构化程序设计地方法,熟练掌握 C+语言 地基本语法 , 灵活运用各种数据类型 .五、测试主函数中声明四个关于雇员类地对象 , 分别对对象进行输入信息 .测试结果如下:【选择功能 1】:* 功 能 选 项 主 菜 单*各成员只输入一遍*2*重复功能并*重复功能并*1*请输入功只输入一姓名: YU姓名: WEN姓名: TI姓名: HU术人员 WEN

13、本月地工作时数: 23理 TI 所管辖部门本月地销售总额: 78907运用两遍运用三遍能选项份信息请输入雇员地请输入雇员地请输入雇员地请输入雇员地请输入兼职技请输入销售经请输入推销员HU 本月 地销售额: 6789YU职工号1000级别为4级,本月工资8000WEN职工号1001级别为3级,本月工资2300TI 职工号 1002级别为 3级, 本月工资 5394.54HU职工号1003级别为1级,本月工资271.56Press any key to continue 【选择功能 2】:* 功 能 选 项单*1*各成员只输入*2*重复功能并运用两遍*重复功能并运用*请输入功能选项*2 请输入雇员

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

15、hun请输入雇员地姓名: quan 请输入兼职技术人员 xiu 本月地工作时数: 21 请输入销售经 理 chun 所 管辖部门本月地销售总额: 12000000 请输入推销员 quan 本月 地销售额: 23100li 编号 1000 级别为 7 级, 本月工资 8000 xiu 编号 1001级别为 5级, 本月工资 2100chun编号1002级别为5级,本月工资65000quan 编号 1003级别为 1 级, 本月工资 924Press any key to continue【选择功能 3】:*+k-菜* 功 能 选 项 单*1*各成员只输入*2*重复功能并运用两遍*重复功能并运用*

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

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

18、入兼职技术人员 ji 本月地工作时数: 43请输入销售经理 ku 所管辖部门本月地销售总额: 27808543 请 输 入 推 销 员 nu 本月地销售额: 34795ge编号1000级别为10级,本月工资8000ji 编号 1001 级别为 7级,本月工资 4300 ku 编号 1002 级别为 7 级, 本月工资 144043 nu 编号 1003 级别为 1 级, 本月工资 1391.8Press any key to continue 输入每个成员所需要地信息 , 经理需要固定工资;销售经理需要固定每月工资和 所管辖部门本月地销售额在提取百分比就是本月实拿地工资; 技术人员需要本月地工

19、 作时数 , 就可以计算出本月工资;销售人员就是本月销售额在提成 .测试结果如下: 六、参考书目1 刘振安等编著.C+程序设计课程设计机械工业出版社2 吴乃陵.等编著.C+程序设计.北京:高等教育出版社3 李龙澍.C+程序设计实训教程北京:清华大学出版社4 宁正元.数据结构(C语言)南京:东南大学出版社,2000年6月.5 严蔚敏等数据结构(C语言版)北京:清华大学出版社,1997年.6 胡学钢等数据结构算法设计指导 北京:清华大学出版社 ,1999 年 .7 明日科技编著 Visual C+ 程序开发范例宝典北京:人民邮电出版社 . 七、附录源程序#include<iostream&g

20、t; #include<cstring> using namespace std;class employee/ 基类protected: char name20; / 姓名 int num; / 个人编号 int grade; /级别 float salary;/ 月薪总额 static int No; / 静态数据:目前编号public: employee(); / 构造函数 employee(); / 析构函数 virtual void pay()=0; / 计算月薪函数(纯虚函数)virtual void promote(int jishu=0); / 升级函数(虚函数)v

21、oid SetName(char *);/ 设置姓名函数char * GetName(); / 提取姓名函数 int GetNum(); / 提取编号函数 int Getgrade();/ 提取级别函数 float Getsalary();/ 提取月薪函数;int employee:No=1000; / 员工编号基数为 1000employee:employee() / 输入地员工编号为编号加 1 num=No+;grade=1; / 级别初值为 1 salary=0.0;/ 月薪总额初值为 0employee:employee()void employee:promote(int jishu

22、) grade+=jishu; / 升级 , 提升地级数由 jishu 指定void employee:SetName(char * names)/ 指针 strcpy(name,names); / 设置姓名char* employee:GetName() return name;/ 提取成员姓名int employee:GetNum() return num; / 提取成员编号int employee:Getgrade() return grade;/ 提取成员级别float employee:Getsalary()技术人员类 return salary;/ 提取月薪class techni

23、cian:public employee /private:float hourlyRate; / 每小时酬金int workHours;/ 当月工作时数 public:technician(); / 构造函数void SetworkHours(int wh); / 设置工作时数函数void pay(); / 计算月薪函数void promote(int); / 升级函数;technician:technician() hourlyRate=100; / 每小时酬金 100 元void technician:SetworkHours(int wh) workHours=wh;/ 设置工作时间v

24、oid technician:pay() salary=hourlyRate*workHours;/ 计算月薪 ,按小时计酬void technician:promote(int)销售人员类 employee:promote(2);/ 调用基类升级函数 ,升 2 级class salesman:virtual public employee / protected:float CommRate; / 按销售额提取酬金地百分比 float sales; / 当月销售额 public:salesman(); /构造函数void Setsales(float sl); / 设置销售额函数void p

25、ay(); / 计算月薪函数void promote(int); / 升级函数; salesman:salesman() CommRate=0.04;/ 销售提成比例 4%void 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 / 经理类 prote

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

27、blic salesman / 理类public:salesmanager(); /构造函数 void pay(); / 计算月薪函数 void promote(int); / 升级函数 ;salesmanager:salesmanager() monthlyPay=5000;CommRate=0.005;void salesmanager:pay() salary=monthlyPay+CommRate*sales;/ 月薪 =固定月薪 +销售提成void salesmanager:promote(int)主函数 employee:promote(2);/调用基类升级函数 , 升 2 级vo

28、id main()/ int n;manager ml;/ 声明经理对象 technician tl;/ 声明技术人员对象salesma nager sml;/声明销售经理对象 salesman si;/声明销售人员对象 char namestr20;/雇员姓名临时存放在n amestr中employee*emp4=&ml,&tl,&sml,&sl;/ 数组指针cout<<"*"<<endl;cout<<"功能选项单"<<endl;cout<<"*&qu

29、ot;<<endl;cout<<""<<endl;cout<<"1 *-*"<<endl;cout<<""<<endl;cout<<"2 * -*"<<endl;能并cout<<""<<endl;cout<<"3 * -*"<<endl;能并cout<<""<<endl;cout

30、<<"*台匕能*"<<endl;cin>>n;switch(n)case 1:cout<<"*"<<endl;int i;for(i=0;i<4;i+) cout<<"请输入雇员地姓名:cin>>namestr;empi->SetName(namestr); empi->promote();cout<<"/设置每个成员地姓名/升级 ,通过基类指针访问各派生类函数请输入兼职技术人员"<<tl.GetNa

31、me()<<" 本月地工作时数:int ww;cin>>ww;tl.SetworkHours(ww);/ 设置工作时间cout<<" 请 输 入 销 售 经 理"<<sml.GetName()<<" 所管辖部门本月地销售总额: "float s1;cin>>s1;sml.Setsales(s1);cout<<" 请 输 入 推 销 员"<<sl.GetName()<<" 本月地销售额: "cin&g

32、t;>s1;sl.Setsales(s1); for(i=0;i<4;i+)empi->pay(); / 计算月薪 ,通过基类指针访问各派生类函数 cout<<empi->GetName()<<" 职工号 "<<empi->GetNum()<<" 级别为 " <<empi->Getgrade()<<" 级 ,本月工资 "<<empi->Getsalary() <<endl;break;case 2:

33、int m;for(m=0;m<2;m+)int i;for(i=0;i<4;i+)cout<<" 请输入雇员地姓名: "cin>>namestr;empi->SetName(namestr);/ 设置每个成员地姓名empi->promote();/ 升级 ,通过基类指针访问各派生类函数cout<<" 请 输 入兼职技术人 员"<<tl.GetName()<<" 本月地工作时数:int ww;cin>>ww;tl.SetworkHours(ww);/ 设置工作时间cout<<" 请 输 入 销 售 经 理"<<sml.GetName()<<" 所管辖部门本月地销售总额: float s1;cin>>s1;sml.Setsales(s1);cout<<" 请 输 入 推 销 员"<<sl.GetName()<<" 本月地销售额: "cin>&g

温馨提示

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

评论

0/150

提交评论