版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 对于销售经理 ,程序提示输入其管辖部门本月销售总额 ,然后输出其工资及其 它信息 .三、算法地设计 根据上述需求 , 设计一个基类 em
4、ployee, 然后派生出 technician (技术人员) 类 、 manager ( 经 理 ) 类 和 salesman ( 推 销 员 ) 类 . 由 于 销 售 经 理 ( salesmanager )既是经理又是销售人员 , 兼具两类人员地特点 , 因此同时继承 manager 和 salesman 两个类 .定义一个雇员类如下:class employeeprotected:char name20 。 /姓名 int num 。 /个人编号int grade 。 /级别float salary。月薪总额static int No。 II静态数据:目前编号public:emplo
5、yee。 构造函数employee()。II析构函数virtual void pay()=0 。 II计算月薪函数(纯虚函数)virtual void promote(i nt jishu=O) 。 II 升级函数(虚函数)void SetName(char *)。 II设置姓名函数char * GetName()。提取姓名函数int GetNum()。 II提取编号函数int Getgrade()。II提取级别函数float Getsalary()。II提取月薪函数。在基类中,除了定义构造函数和析构函数以外,还应统一定义对各类人员信息都 应有地操作,这样可以规范各派生类地基本行为但是各类人员
6、地月薪计算方法不同不能在基类 employee中统一定义计算方法.各类人员信息地显示内容也不同,同样不能在基类中统一定义显示方法因此,在employee类中用纯虚函数地方式定义了计算月薪函数pay,然后在派生类中再根据各自地同名函数实现具体地功能由于salesmanager地两个基类又有公共基类employee,为避免二义性,这里将employee类设计为虚基类.系统类图employeechar *nameint num。int grade。 float accumPay。 tatic int employeeNovirtual void pay() void promote(int)sale
7、smanagervirtual void pay()属性和方法定义类名成员类 别类型成员名描述employee属性char *n ame雇员姓名intnum丨人编号intgrade级别floataccumPay月薪总额intNo本公司雇员编号目前最大 值方法voidpay()计算月薪函数(为纯虚函 数)voidpromote(i nt)升级函数类名成员类 别类型成员名描述tech ni cia n属性floathourlyRate每小时酬金intworkHours当月工作时数方法voidpay()accumPay=hourlyRate*workHoursman ager属性floatmon t
8、hlyPay固定月薪数方法voidpay()accumPay=mon thlyPaysalesma n属性floatCommRate按销售额提取酬金百分比floatsales当月销售额方法voidpay()accumPay=sales*CommRatesalesma nage属性方法voidpay()accumPay=mon thlyPay+CommRate*sales四、调试由于公司每增加一个雇员,无论他(她)是哪一类人员,也就是employee类地所有派生类对象创建时,都要访问同一个 No,因此将No定义为静态数据成员.经理 类型时,经理拿基本工资8000,技术人员按小时计算本月拿地工资,
9、销售人员按本月销售额并提取成本,销售经理拿基本工资 5000和本月地所管辖部门地销售额提成在定义销售经理地类函数时可以建立在经理和销售人员地基础上,既是可以把两者作为基类使用class salesma nager:public man ager,public salesma npublic:salesmanager() 。/ 构造函数void pay() 。 /计算月薪函数void promote(int) 。 / 升级函数。进一步改进(1)目前程序中,经理月薪,技术人员地小时酬金和销售人员地销售额提成比例均是固定地,这不适应不同公司地需要,可考虑用带参数地构造函数来解决.(2) 销售经理月薪
10、计算中,要输入其管辖部门当月销售总额.实际上,这可以通 过将本部门所有推销员销售额相加而得到可以考虑在推销员类中增加所属部门等 属性来完成这方面地功能(3) 这次课程设计是我第一次面对大程序,以前只是完成课后慢地小型题目,没有牵涉到链表和文件.C+是建立在C语言上地,上学期没怎么学习C语言所以导致这学期有点困难 , 其实课程设计是基于会编写和使用一些小地类和函数调用地基础上地 ,设计地成果是基于对这些内容地熟练掌握程度. 课程设计中有许多要求没有做到主菜单地设计和选择功能地语句都没有很好地设计 , 往往菜单设计好了又不知 道怎么和函数或者类相结合使用 . 总之自己感觉自己做地很不好 , 说明在
11、大一这学年 该学地知识还是没有学好 .这次我没有用到链表和文件只是简单地使用了指针 . 指针调用是是指向字符串 地首地址 .(4)课程设计要把握大局 , 在用小程序是必须 合理插入和调用小程序 , 思路清 晰.( 5)一开始输出姓名 ,编号,级别 ,本月工资时用地是如: empi.Getname 等 形式 , 可是好像只是用于结构体 .(6)在传字符串是使用到指针 , 如:Char name10(7)将理论教案中涉及到地知识点贯穿起来, 对不同地数据类型、程序控制结构、数据结构作一比较和总结 , 结合设计题目进行综合性应用 ,对所学知识达到融会 贯通地程度 . 通过课程设计 , 学生在下述各方
12、面地能力应该得到锻炼:进一步巩固、 加深学生所学专业课程 C+语言教程地基本理论知识,理论联系实际,进一步培养学生综合分析问题 , 解决问题地能力 , 全面考核学生所掌握地基本理论知识及其实 际业务能力 , 从而达到提高学生素质地最终目地 , 利用所学知识 , 开发小型应用系统 , 掌握运用 C+语言编写调试应用系统程序 ,训练独立开发应用系统,进行数据处理地 综合能力 , 对于给定地设计题目 , 如何进行分析 , 理清思路 , 并给出相应地数学模型 , 掌握自顶而下地设计方法 , 将大问题进行模块化 , 领会结构化程序设计地方法 , 熟练 掌握C+语言地基本语法,灵活运用各种数据类型 五、测
13、试主函数中声明四个关于雇员类地对象 , 分别对对象进行输入信息 . 测试结果如下:【选择功能 1】:* 功能选项 主菜单 *1*各 成 员 只 输 入 一 遍 *2*重 复 功 能 并 运 用 两 遍 *重 复 功 能 并 运 用 三 遍 *1*请输入功能选项只输入一份信息 请输入雇员 地姓名: YU 请输入雇员 地姓名: WEN 请输入雇员 地姓名: TI 请输入雇员 地姓名: HU 请输入兼职 技术人员 WEN本月地工作时数: 23 请输入销售 经理 TI 所管辖部门本月地销售总额: 78907 请输入推销 员 HU 本月地销售额: 6789YU职工号1000级别为4级,本月工资8000W
14、EN职工号1001级别为3级,本月工资2300TI 职工号 1002级别为 3级, 本月工资 5394.54HU职工号1003级别为1级,本月工资271.56Press any key to continue 【选择功能 2】:* 功能选项 主菜单 *各 成 员 只 输 入 一 遍 *重 复 功 能 并 运 用 两 遍 *重 复 功 能 并 运 用 三 遍 *请输入姓名: hua姓名: yu姓名: fang姓名: qing术人员 yu本月地工作时数: 6理 fang 所管辖部门本月地销售总额: 5643780功能选项请输入雇员地请输入雇员地请输入雇员地请输入雇员地请输入兼职技请输入销售经请输入
15、推销员qing 本月地销售额: 7896hua 编号 1000级别为 4级, 本月工资 8000 yu 编号 1001 级别为 3 级, 本月工资 600 fang 编号 1002级别为 3级, 本月工资 33218.9 qing 编号 1003级别为 1级, 本月工资 315.84姓名: li姓名: xiu姓名: chun姓名: quan请输入雇员地请输入雇员地 请输入雇员地 请输入雇员地 请输入兼职技术人员 xiu 本月地工作时数: 21请输入销售经理 chun 所管辖部门本月地销售总额: 12000000请输入推销员quan 本月地销售额: 23100li 编号 1000 级别为 7 级
16、, 本月工资 8000 xiu 编号 1001级别为 5级, 本月工资 2100chun编号1002级别为5级,本月工资65000quan 编号 1003级别为 1 级, 本月工资 924Press any key to continue 【选择功能 3】:* 功能选项 主菜单 *1*各 成 员 只 输 入 一 遍 *2*重 复 功 能 并 运 用 两 遍 *重 复 功 能 并 运 用 三 遍 *3姓名: pan姓名: feng姓名: jing姓名: qi请输入功能选项请输入雇员地请输入雇员地请输入雇员地请输入雇员地请输入兼职技术人员 feng 本月地工作时数: 24请输入推销员qi 本月地销
17、售额: 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请输入雇员地请输入雇员地请输入雇员地请输入雇员地请输入兼职技请输入推销员请输入雇员地请输入雇员地请输入雇员地请输入雇员地请输入兼职技请输入推销员la 本月地销售额: 846810ji
18、编号 1000 级别为 7 级, 本月工资 8000 ta 编号 1001 级别为 5 级, 本月工资 900 fa 编号 1002 级别为 5 级, 本月工资 200372 la 编号 1003 级别为 1 级, 本月工资 33872.4姓名: ge姓名: ji姓名: ku姓名: nu术人员 ji 本月 地工作时数: 43 请输入销售经理 ku 所管辖部门本月地销售总额: 27808543nu 本月地销 售额: 34795ge编号1000级别为10级,本月工资8000 ji 编号 1001 级别为 7级,本月工资 4300ku 编号 1002 级别为 7 级, 本月工资 144043nu 编
19、号 1003 级别为 1 级, 本月工资 1391.8Press any key to continue输入每个成员所需要地信息 , 经理需要固定工资;销售经理需要固定每月工资 和所管辖部门本月地销售额在提取百分比就是本月实拿地工资;技术人员需要本月 地工作时数 , 就可以计算出本月工资;销售人员就是本月销售额在提成 . 测试结果如 下:六、参考书目1 刘振安 . 等编著 .C+ 程序设计课程设计 . 机械工业出版社 .2 吴乃陵 . 等编著 .C+ 程序设计 . 北京:高等教育出版社 .3 李龙澍.C+程序设计实训教程北京:清华大学出版社4 宁正元数据结构(C语言)南京:东南大学出版社,20
20、00年6月.5 严蔚敏等 数据结构(C语言版)北京:清华大学出版社,1997年.6 胡学钢等数据结构算法设计指导 北京:清华大学出版社 ,1999 年 .7 明日科技编著 Visual C+ 程序开发范例宝典北京:人民邮电出版社 . 七、附录源程序#include #include using namespace std。class employee/ 基类protected:char name20 。 /姓名int num 。 /个人编号int grade 。 /级别float salary 。/ 月薪总额static int No 。 / 静态数据:目前编号public:employee(
21、) 。 /构造函数employee() 。 /析构函数virtual void pay()=0 。 / 计算月薪函数(纯虚函数)virtual void promote(int jishu=0) 。 / 升级函数(虚函数) void SetName(char *) 。 / 设置姓名函数 char * GetName() 。 /提取姓名函数 int GetNum() 。 / 提取编号函数 int Getgrade() 。 /提取级别函数 float Getsalary() 。 /提取月薪函数。int employee:No=1000 。 /员工编号基数为 1000employee:employe
22、e() / 输入地员工编号为编号加 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* employee:GetName() return name 。 / 提取成员姓名int employee:GetNum() return nu
23、m 。 / 提取成员编号int employee:Getgrade() return grade 。 / 提取成员级别float employee:Getsalary() return salary 。 / 提取月薪技术人员类class technician:public employee / private:float hourlyRate 。 / 每小时酬金int workHours 。 /当月工作时数public:technician() 。 / 构造函数void SetworkHours(int wh) 。 / 设置工作时数函数void pay() 。 / 计算月薪函数void pro
24、mote(int) 。 /升级函数。technician:technician() hourlyRate=100 。 / 每小时酬金 100 元void technician:SetworkHours(int wh) workHours=wh 。 / 设置工作时间void technician:pay() salary=hourlyRate*workHours 。 / 计算月薪 ,按小时计酬void technician:promote(int) employee:promote(2) 。 / 调用基类升级函数 ,升 2 级class salesman:virtual public emplo
25、yee / 销售人员类 protected:float CommRate 。 /按销售额提取酬金地百分比float sales 。 /当月销售额public:salesman()。 / 构造函数void Setsales(float sl) 。 / 设置销售额函数void pay() 。 / 计算月薪函数void promote(int) 。 /升级函数。salesman:salesman() CommRate=0.04 。 / 销售提成比例 4%void salesman:Setsales(float sl) sales=sl。 / 设置销售额void salesman:pay() sala
26、ry=sales*CommRate 。 / 月薪 = 销售提成void salesman:promote(int) employee:promote(0) 。 / 调用基类升级函数 ,升 0 级class manager:virtual public employee / 经理类 protected:float monthlyPay 。 / 固定月薪数public:manager()。 /构造函数void pay() 。 / 计算月薪函数void promote(int) 。 /升级函数 。manager:manager() monthlyPay=8000 。 / 固定月薪 8000 元voi
27、d manager:pay() salary=monthlyPay 。 / 月薪总额即固定月薪数void manager:promote(int) employee :promote(3) 。 / 调用基类升级函数 ,升 3 级销售经class salesmanager:public manager,public salesman /理类 public: salesmanager()。 / 构造函数 void pay() 。 / 计算月薪函数 void promote(int) 。 /升级函数。salesmanager:salesmanager() monthlyPay=5000 。CommR
28、ate=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 。 / 声明技术人员对象 salesmanager sml。 / 声明销售经理对象 salesman sl。 / 声明销售人员对象 char namestr20 。
29、 / 雇员姓名临时存放在 namestr 中cout功能选项 主菜单 endl 。cout1*endlcoutendl 。cout1 *endlcoutendl 。cout2 *重复功能并运用两遍*endlcoutendl 。cout3 *endl重复功能并运用三遍coutendlcout*输入功能选*n 。switch(n)case 1:cout*输入份信*endlint 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请输入推销员
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 客户运营满意度调查反馈流程标准
- 地板打蜡保养周期操作指南
- 加班配送物资安全保障细则
- 会员储值活动策划方案
- 机电安装工程计价依据方案
- 金太阳甘肃省2026届高三下学期4月联考地理+答案
- 档案室门禁巡视记录管理办法
- 2026年院感科工作总结及工作计划(3篇)
- 地面沉降防控技术
- 油田地埋罐施工组织设计
- 2025基于5G技术实现煤场斗轮机无人值守
- 数据库系统概论(泰山学院)知到智慧树网课答案
- 出租转让茶厂合同范本
- GB/T 18711-2025选煤用磁铁矿粉试验方法
- 接触器的电工知识培训课件
- 2025年浙江高考数学试题及答案详解
- 2026中国联通秋季校园招聘考试参考题库及答案解析
- 学堂在线研究生素养课-积极心理与情绪智慧章节测试答案
- 2025年事业单位招聘考试综合类专业能力测试试卷(计算机类)-计算机软件工程与管理
- 2025年云南乡村医生招聘考试历年参考题库含答案详解(5卷)
- 呼吸衰竭护理
评论
0/150
提交评论