课程设计报告职工工资管理系统设计.doc
《课程设计报告职工工资管理系统设计.doc》由会员分享,可在线阅读,更多相关《课程设计报告职工工资管理系统设计.doc(19页珍藏版)》请在三一办公上搜索。
1、课程设计设计题目 职工工资管理系统设计 课程名称面向对象程序设计课程设计课程代码B704210设计题目职工工资管理系统的设计题目序号设计时间2010年 1月 11日 2010年 1月 14日系(院)计算机科学与信息工程系专业计算机科学与技术班级081041A2一、课程设计任务(条件)、具体技术参数(指标) 本课程设计是面向对象程序设计课程的后继教学环节,学好C+语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C+实际应用程序。根据教材中人事管理应用程序框架,在此基础上按要求完成以下实际应用程序。职工工资管理系统课程设计题目:实现一个简单的工资管理系统。系统的主要功
2、能是计算职工当月工资并存档。公司内有5种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。技术人员的工资根据他当月工作的小时数来定,时薪35元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的5%;文秘有4000元的基本工资,奖金视为当月工作情况而定;技术经理和销售经理都有6000元的固定工资,技术经理的工作业绩可分为3个等级,每级可获得1000元奖金,销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的2%职工工资管理系统的设计:对于整个系统的设计思路是,首先,由员工输入用户信息,包括编号、姓名和职务;然后,在计算某职工的当月工资时,系
3、统先从已输入的职工信息文件中获取职工的工作类型,接着调用不同的处理程序进行计算;最后将结果存档。从用户需求中,可以发现5种类型的职员都可以分别设计为一个类。首先,他们都属于雇员,因此可以设计一个基类employee(雇员),然后从中派生出technician(技术人员)类,salesman(销售人员)类、secretary(文秘)类。对于技术经理和销售经理来说,他们都属于经理,所以设计时可以从employee类中派生出一个manager(经理)类作为techmanager(技术经理)和salesman(销售经理)类的父类。而经理类本身并不对应实际的员工类型,由于技术经理有技术人员和经理的双重特
4、点,因此techmanager类同时继承technician类和manger类;销售经理有销售人员和经理的双重特点,因此salesmanager类同时继承salesman类和manager类。根据用户需要employee类应该拥有的属性有:编号、姓名、职务、月份和工资。Employee类的服务可以包括info()、 search()、countSalary()、recordInfo()和recordSalary()。其中,info()函数用于接收用户输入的职工信息;search()函数用来根据职工名查找职工信息;countSalary()函数为工资计算函数,但在基类中为空,原因是各类人员的工资
5、计算方法不同,无法在基类中统一定义,必须在派生类中分别定义。recordInfo()函数和recordSalary()函数分别是职工信息和职工工资的记录函数,分别将信息存入文件info.txt和salary.txt。具体的基类和派生类的定义如下图:二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)(1) 分析职工工资管理系统程序结构: 画出程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起);(2) 对你已经实现的功能(修改的、新编写的)做详细的说明, 并附上流程图及程序清单。(3) 自己对该职工工资管理系统的进一步设想;(
6、4) 对于有设想但最终未实现的功能的大致编程思路的阐述;(5) 论述在设计过程中遇到的并且对你具有启发性的问题。(6) 严禁抄袭,发现雷同,双方扣分。三、课程设计工作进度计划:周一:教师布置任务,讲解本课设模块。周二:画出主程序粗略的流程图和各个模块的详细流程图。周三:设计程序及调试程序。同时着手写报告。周四:完成设计,提交报告,接受教师考评。四、主要参考资料(1)面向对象程序设计 ,郑莉,清华大学出版社, (2)面向对象程序设计C+语言,朱战立等编 西安电子科技大学出版社(3)面向对象程序设计-Visual C+,刘斌等编, 清华大学出版社 (4)面向对象程序设计-C+语言描述, Richa
7、rd Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社, 2003目录1概述:61.1基本功能62课题分析62.1类的设计62.2类的实现63详细设计说明83.1程序主界面83.2方案83.3程序描述(输入input)84课程设计总结95软件使用说明106附录(参考文献,原代码:)10参考文献:10原代码101 概述 1.1基本功能输入职工的姓名编号以及相关信息,系统计算个职工工资。职工分别有秘书、技术经理、技术人员、销售经理、销售人员。技术人员的工资根据他当月工作的小时数来定,时薪35元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的5%;文秘有4000元的基本工资
8、,奖金视为当月工作情况而定;技术经理和销售经理都有6000元的固定工资,技术经理的工作业绩可分为3个等级,每级可获得1000元奖金,销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的2%。功能一目了然,方便用户使用2.课题分析类的设计及实现本课程设计有7个类,分别是employee1,secretary,technician,salesman,manager,technicianmanager,salesmanager7个类。其中technician、salesman以及manager类在继承employee1的时候用了virtual,如果不用这在调试的时候不通过。技术人员类先写公有成
9、员函数:有读入信息的构造函数以及计算薪资的函数。再写私有型成员变量:要有工作的小时数以及单位小时工作的薪水。具体写法:class technician:virtual public employee1private:float hourlyRate;int workHours;public:technician();void SetworkHours(int wh);void pay();void promote(int); 销售人员类先写公有成员函数:有读入信息的构造函数以及计算薪资的函数。再写保护型成员变量:要有销售额以及销售额的百分比。具体写法:class salesman:virtua
10、l public employee1protected:float CommRate;float sales;public:salesman();void Setsales(float s1);void pay();void promote(int);文秘类先写公有成员函数:有读入信息的构造函数以及计算薪资的函数。再写保护型成员变量:要有固定工资以及奖金具体写法:class secretary:virtual public employee1protected:float monthlyPay;float workPay;public:secretary();void SetworkPay(i
11、nt wp);void pay();void promote(int); 经理类先写公有成员函数:有读入信息的构造函数以及计算薪资的函数。再写保护型成员变量:要有固定工资具体写法:class manager:virtual public employee1protected:float monthlyPay;public:manager();void pay();void promote(int); 技术经理类先写公有成员函数:有读入信息的构造函数以及计算薪资的函数。再写保护型成员变量:要有级别以及此级别的奖金。具体写法:class techmanager:virtual public man
12、ager,public technician /技术经理类 public:techmanager(float x=1000); /技术经理类的构造函数 void countSalary(); /计算薪资的函数protected:float gradeBonus; /此级别的奖金 int grade; /级别;销售经理类先写公有成员函数:有读入信息的构造函数以及计算薪资的函数。再写保护型成员变量:要有级别以及此级别的奖金。具体写法:class salesmanager:public manager,public salesmanpublic:salesmanager();void pay();v
13、oid promote(int);3.详细设计说明3.1程序主界面一个单文档的界面(如右边两张图所示),以及附属一个对话框(用于用户输入信息)。3.2方案利用VC中MFC(exe)来编译此程序。划分功能,根据功能分别设计出相应的类来实现程序。设计出需要的类,即其功能,再组合在一起,并经行改进达到理想中的程序。用MFC的临一个好处则是方便编译员实现程序,并且界面比较美观,所以选用MFC来编写此程序3.3程序描述由用户输入职工的姓名、编号、以及相应信息。程序源代码清晰,一看就能明白每条代码的用处。程序的对话框简洁明了,功能清晰。对于用户的使用很方便。对于编译员日后对程序的改进升级也很方便。设计流程
14、图开始显示选项提示输入提示输出销售人员信息秘书信息技术经理信息销售经理信息技术人员信息显示输入的相关信息4 课程设计总结在编译此程序时总体还是比较顺利的,但难免会遇到个别问题。比如一开始technician与salesman类在继承employee1类的时候并未用virtual来继承,编译不通过,于是改用virtual来公共继承employee1类。刚开始的时候有用户输入的编号无法显示,问题出在对话框中edit的控件弄错而倒是一系列的问题。之后又发现在销售经理与销售人员的工资上发生错乱。开始并未发现是两者工资错乱,只是一味的以为是销售经理的工资计算出了问题,进行多次改编以后依然毫无进展。于是与
15、老师进行讨论发现了两个问题,一个是两者工资互换并且CommRate无法提取数据salesmanager:salesmanager()monthlyPay=6000;CommRate=2/100;void salesmanager:pay()accumPay=(sales*CommRate)+monthlyPay;void salesmanager:promote(int)employee1:promote(2);salesman:salesman()CommRate=5/100;void salesman:Setsales(float s1)sales=s1;void salesman:pay
16、()accumPay=(sales*CommRate);并且经行多次改编依然无效,于是将CommRate全部改成数据编译通过。而两者的工资问题则在emp中DDX_Text(pDX, IDC_EDIT13, m_ss1);DDX_Text(pDX, IDC_EDIT14, m_ss2);将ss1与ss2互换问题得以解决。至此程序完成。5 软件使用说明在对话框选择Test-Input Data(如图一),出现职员信息的对话框(如图二),将相应信息输入按确定,再选择Test-Output Data就能读取用户所输入的信息了(如图三)。图二图一 6 附录(参考文献,源代码:)参考文献:C+语言程序设计
17、(第三版)源代码:(部分)/employee1.cpp#includestdafx.h#include#include#include#include#includewenjian.h#includeemployee1.h图三using namespace std;employee1:employee1()grade=1;accumPay=0.0;employee1:employee1()void employee1:promote(int increment)grade+=increment;void employee1:SetName(char * names)strcpy(name,na
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 职工工资 管理 系统 设计
链接地址:https://www.31ppt.com/p-3784930.html