课程设计报告职工工资管理系统设计

上传人:仙*** 文档编号:31499199 上传时间:2021-10-12 格式:DOC 页数:19 大小:596.51KB
收藏 版权申诉 举报 下载
课程设计报告职工工资管理系统设计_第1页
第1页 / 共19页
课程设计报告职工工资管理系统设计_第2页
第2页 / 共19页
课程设计报告职工工资管理系统设计_第3页
第3页 / 共19页
资源描述:

《课程设计报告职工工资管理系统设计》由会员分享,可在线阅读,更多相关《课程设计报告职工工资管理系统设计(19页珍藏版)》请在装配图网上搜索。

1、C+程序设计报告1课 程 设计设计题目设计题目 职工工资管理系统设计职工工资管理系统设计 C+程序设计报告2 课程名称面向对象程序设计课程设计课程代码B704210设计题目职工工资管理系统的设计题目序号设计时间2010 年 1 月 11 日 2010 年 1 月 14 日系(院)计算机科学与信息工程系专业计算机科学与技术班级081041A2一、课程设计任务(条件)一、课程设计任务(条件) 、具体技术参数(指标)、具体技术参数(指标) 本课程设计是面向对象程序设计课程的后继教学环节,学好 C+语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写 C+实际应用程序。根据教

2、材中人事管理应用程序框架,在此基础上按要求完成以下实际应用程序。职工工资管理系统课程设计题目:实现一个简单的工资管理系统。系统的主要功能是计算职工当月工资并存档。公司内有 5 种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。技术人员的工资根据他当月工作的小时数来定,时薪 35 元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的 5%;文秘有 4000 元的基本工资,奖金视为当月工作情况而定;技术经理和销售经理都有 6000 元的固定工资,技术经理的工作业绩可分为 3 个等级,每级可获得 1000 元奖金,销售经理的奖金由他所管理的销售员的

3、销售业绩而定,总销售额的 2%职工工资管理系统的设计:对于整个系统的设计思路是,首先,由员工输入用户信息,包括编号、姓名和职务;然后,在计算某职工的当月工资时,系统先从已输入的职工信息文件中获取职工的工作类型,接着调用不同的处理程序进行计算;最后将结果存档。从用户需求中,可以发现 5 种类型的职员都可以分别设计为一个类。首先,他们都属于雇员,因此可以设计一个基类 employee(雇员) ,然后从中派生出 technician(技术人员)类,salesman(销售人员)类、secretary(文秘)类。对于技术经理和销售经理来说,他们都属于经理,所以设计时可以从 employee 类中派生出一

4、个 manager(经理)类作为 techmanager(技术经理)和 salesman(销售经理)类的父类。而经理类本身并不对应实际的员工类型,由于技术经理有技术人员和经理的双重特点,因此techmanager 类同时继承 technician 类和 manger 类;销售经理有销售人员和经理的双重特点,因此 salesmanager 类同时继承 salesman 类和 manager 类。根据用户需要 employee 类应该拥有的属性有:编号、姓名、职务、月份和工资。Employee 类的服务可以包括 info() 、 search() 、countSalary() 、recordInf

5、o()和recordSalary() 。其中,info()函数用于接收用户输入的职工信息;search()函数用来根据职工名查找职工信息;countSalary()函数为工资计算函数,但在基类中为空,原因是各类人员的工资计算方法不同,无法在基类中统一定义,必须在派生类中分别定义。C+程序设计报告3recordInfo()函数和 recordSalary()函数分别是职工信息和职工工资的记录函数,分别将信息存入文件 info.txt 和 salary.txt。具体的基类和派生类的定义如下图:二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)二、对课程设计成果的要求(包括

6、课程设计说明书、图纸、图表、实物等软硬件要求)(1)分析职工工资管理系统程序结构: 画出程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起) ;(2)对你已经实现的功能(修改的、新编写的)做详细的说明, 并附上流程图及程序清单。(3)自己对该职工工资管理系统的进一步设想;(4)对于有设想但最终未实现的功能的大致编程思路的阐述;(5)论述在设计过程中遇到的并且对你具有启发性的问题。(6)严禁抄袭,发现雷同,双方扣分严禁抄袭,发现雷同,双方扣分。三、课程设计工作进度计划:三、课程设计工作进度计划:周一:教师布置任务,讲解本课设模块。周二:画出主程序粗略的

7、流程图和各个模块的详细流程图。周三:设计程序及调试程序。同时着手写报告。周四:完成设计,提交报告,接受教师考评。C+程序设计报告4四、主要参考资料四、主要参考资料(1) 面向对象程序设计 ,郑莉,清华大学出版社, (2) 面向对象程序设计 C+语言,朱战立等编 西安电子科技大学出版社(3) 面向对象程序设计-Visual C+,刘斌等编, 清华大学出版社 (4) 面向对象程序设计-C+语言描述, Richard Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社, 2003C+程序设计报告5目录目录1概述:概述:.61.1基本功能.62课题分析课题分析.62.1类的设计.62.2类

8、的实现.63详细设计说明详细设计说明.83.1程序主界面.83.2方案.83.3程序描述(输入INPUT) .84课程设计总结课程设计总结.95软件使用说明软件使用说明.106附录(参考文献,原代码:)附录(参考文献,原代码:).10参考文献:.10原代码.10C+程序设计报告61 1概述概述 1.1 基本功能输入职工的姓名编号以及相关信息,系统计算个职工工资。职工分别有秘书、技术经理、技术人员、销售经理、销售人员。技术人员的工资根据他当月工作的小时数来定,时薪 35 元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的 5%;文秘有 4000 元的基本工资,奖金视为当月工作情况而定

9、;技术经理和销售经理都有 6000 元的固定工资,技术经理的工作业绩可分为 3 个等级,每级可获得 1000 元奖金,销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的 2%。功能一目了然,方便用户使用2.2.课题分析课题分析类的设计及实现本课程设计有 7 个类,分别是employee1,secretary,technician,salesman,manager,technicianmanager,salesmanager7个类。其中 technician、salesman 以及 manager 类在继承 employee1 的时候用了virtual,如果不用这在调试的时候不通过。技术

10、人员类技术人员类先写公有成员函数:有读入信息的构造函数以及计算薪资的函数。再写私有型成员变量:要有工作的小时数以及单位小时工作的薪水。具体写法:class technician:virtual public employee1private:float hourlyRate;int workHours;public:technician();void SetworkHours(int wh);void pay();void promote(int); 销售人员类销售人员类先写公有成员函数:C+程序设计报告7有读入信息的构造函数以及计算薪资的函数。再写保护型成员变量:要有销售额以及销售额的百分比

11、。具体写法:class salesman:virtual 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:se

12、cretary();void SetworkPay(int wp);void pay();void promote(int); 经理类先写公有成员函数:有读入信息的构造函数以及计算薪资的函数。再写保护型成员变量:要有固定工资具体写法:class manager:virtual public employee1protected:float monthlyPay;public:manager();void pay();C+程序设计报告8void promote(int); 技术经理类先写公有成员函数:有读入信息的构造函数以及计算薪资的函数。再写保护型成员变量:要有级别以及此级别的奖金。具体写法:

13、class techmanager:virtual public manager,public technician /技术经理类 public:techmanager(float x=1000); /技术经理类的构造函数 void countSalary(); /计算薪资的函数protected:float gradeBonus; /此级别的奖金 int grade; /级别;销售经理类先写公有成员函数:有读入信息的构造函数以及计算薪资的函数。再写保护型成员变量:要有级别以及此级别的奖金。具体写法:class salesmanager:public manager,public salesm

14、anpublic:salesmanager();void pay();void promote(int);3.3.详细设计说明详细设计说明3.1 程序主界面一个单文档的界面(如右边两张图所示) ,以及附属一个对话框(用于用户输入信息) 。3.2 方案利用 VC 中 MFC(exe)来编译此程序。划分功能,根据功能分别设计出相应的类来实现程序。设计出需要的类,即其功能,再组合在一起,并经行改进达到理想中的程序。用 MFC 的临一个好处则是方便编译员实现程序,并且界面比较美观,所以选用 MFC 来编写此程序C+程序设计报告93.3 程序描述由用户输入职工的姓名、编号、以及相应信息。程序源代码清晰,

15、一看就能明白每条代码的用处。程序的对话框简洁明了,功能清晰。对于用户的使用很方便。对于编译员日后对程序的改进升级也很方便。设计流程图设计流程图开始显示选项提示输入提示输出销售人员信息秘书信息技术经理信息销售经理信息技术人员信息显示输入的相关信息4 4 课程设计总结课程设计总结在编译此程序时总体还是比较顺利的,但难免会遇到个别问题。比如一开始 technician 与 salesman 类在继承 employee1 类的时候并未用virtual 来继承,编译不通过,于是改用 virtual 来公共继承 employee1 类。刚开始的时候有用户输入的编号无法显示,问题出在对话框中 edit 的控

16、件弄错而倒是一系列的问题。之后又发现在销售经理与销售人员的工资上发生错乱。开始并未发现是两者工资错乱,只是一味的以为是销售经理的工资计算出了问题,进行多次改编以后依然毫无进展。于是与老师进行讨论发现了两个问题,一个是两者工资互换并且 CommRate 无法提取数据salesmanager:salesmanager()monthlyPay=6000;CommRate=2/100;void salesmanager:pay()accumPay=(sales*CommRate)+monthlyPay;void salesmanager:promote(int)employee1:promote(2)

17、;C+程序设计报告10salesman:salesman()CommRate=5/100;void salesman:Setsales(float s1)sales=s1;void salesman:pay()accumPay=(sales*CommRate);并且经行多次改编依然无效,于是将 CommRate 全部改成数据编译通过。而两者的工资问题则在 emp 中DDX_Text(pDX, IDC_EDIT13, m_ss1);DDX_Text(pDX, IDC_EDIT14, m_ss2);将 ss1 与 ss2 互换问题得以解决。至此程序完成。5 5 软件使用说明软件使用说明在对话框选择

18、 Test-Input Data(如图一) ,出现职员信息的对话框(如图二) ,将相应信息输入按确定,再选择 Test-Output Data 就能读取用户所输入的信息了(如图三) 。6 6 附录(参考文献,源代码:)附录(参考文献,源代码:)参考文献:C+语言程序设计(第三版)源代码:(部分)/employee1.cpp#includestdafx.h#include#include#include图一 图二C+程序设计报告11#include#includewenjian.h#includeemployee1.husing namespace std;employee1:employee1

19、()grade=1;accumPay=0.0;employee1:employee1()void employee1:promote(int increment)grade+=increment;void employee1:SetName(char * names)strcpy(name,names);char* employee1:GetName()return name;void employee1:SetindividualEmpNo(char * individualEmpNos)strcpy(individualEmpNo,individualEmpNos);char* emplo

20、yee1:GetindividualEmpNo()return individualEmpNo;int employee1:Getgrade()return grade;float employee1:GetaccumPay()return accumPay;technician:technician()hourlyRate=35;void technician:SetworkHours(int wh)workHours=wh;void technician:pay()accumPay=hourlyRate*workHours;图三C+程序设计报告12void technician:promo

21、te(int)employee1:promote(2);manager:manager()monthlyPay=6000;void manager:pay()accumPay=monthlyPay;void manager:promote(int)employee1:promote(3);salesmanager:salesmanager()monthlyPay=6000;CommRate=2/100;void salesmanager:pay()accumPay=(sales*0.02)+6000;void salesmanager:promote(int)employee1:promote

22、(2);salesman:salesman()CommRate=5/100;void salesman:Setsales(float s1)sales=s1;void salesman:pay()accumPay=(sales*0.05);void salesman:promote(int)employee1:promote(0);technicianmanager:technicianmanager()monthlyPay=6000;void technicianmanager:Setlevel(int dj)dengji=dj;void technicianmanager:pay()C+程

23、序设计报告13accumPay=monthlyPay+(1000*dengji);void technicianmanager:promote(int)employee1:promote(2);secretary:secretary()monthlyPay=4000;void secretary:SetworkPay(int wp)workPay=wp;void secretary:pay()accumPay=workPay+monthlyPay;void secretary:promote(int)employee1:promote(0);class FileExceptionpublic:

24、FileException():message(File is not created !)const char *what() constreturn message;private:const char *message;int main()technician t1;secretary st1;salesmanager sm1;technicianmanager tm1;salesman s1;char namestr20;char individualEmpNostr1000;vector vchar;vchar.push_back(&t1);vchar.push_back(&st1)

25、;vchar.push_back(&sm1);vchar.push_back(&tm1);vchar.push_back(&s1);int i;C+程序设计报告14for(i=0;i5;i+)coutnamestr;vchari-SetName(namestr);coutindividualEmpNostr;vchari-SetindividualEmpNo(individualEmpNostr);vchari-promote(i);cout请输入兼职技术人员t1.GetName()wh;t1.SetworkHours(wh);cout请输入秘书姓名st1.GetName()wp;st1.Se

26、tworkPay(wp);cout请输入销售经理sm1.GetName()sl;sm1.Setsales(sl);cout请输入推销人员s1.GetName()sl;s1.Setsales(sl);cout请输入技术经理tm1.GetName()l;tm1.Setlevel(l);ofstream ofile(employee.txt,ios_base:out);for(i=0;ipay();ofile职工 GetName() 编号 GetindividualEmpNo() 级别为 Getgrade() 级,本月工资 GetaccumPay()endl;ofile.close();C+程序设计

27、报告15cout职员信息已存入文件endl;ifstream infile(employee.txt,ios:in);tryif(! infile)throw FileException();catch (FileException fe)coutfe.what()endl;exit(0);cout从文件中读取信息并显示如下:endl;char line101;for(i=0;i5;i+)infile.getline(line,100);coutlineendl;infile.close();return 0; /employee1.hclass employee1protected:char

28、 name20;char individualEmpNo1000;int grade;float accumPay;public:employee1();employee1();virtual void pay()=0;virtual void promote(int increment = 0);void SetName(char *);char * GetName();void SetindividualEmpNo(char *);char * GetindividualEmpNo();int Getgrade();float GetaccumPay();class secretary:v

29、irtual public employee1C+程序设计报告16protected:float monthlyPay;float workPay;public:secretary();void SetworkPay(int wp);void pay();void promote(int);class technician:virtual public employee1private:float hourlyRate;int workHours;public:technician();void SetworkHours(int wh);void pay();void promote(int)

30、;class salesman:virtual public employee1protected:float CommRate;float sales;public:salesman();void Setsales(float s1);void pay();void promote(int); class manager:virtual public employee1protected:float monthlyPay;public:manager();void pay();void promote(int);class salesmanager:public manager,public

31、 salesmanpublic:C+程序设计报告17salesmanager();void pay();void promote(int);class technicianmanager:public manager,public technicianprivate:int dengji;public:technicianmanager();void Setlevel(int dj);void pay();void promote(int);/employeeView.cpp(部分代码)void CEmployeeView:OnInputData() / TODO: Add your comm

32、and handler code heretechnicianmanager tm1;technician t1;salesman s1;salesmanager sm1;secretary st1;vector vchar;vchar.push_back(&tm1);vchar.push_back(&t1);vchar.push_back(&s1);vchar.push_back(&sm1);vchar.push_back(&st1);emp ed;ed.DoModal();vector vread;vread.push_back(ed.m_str1);vread.push_back(ed.

33、m_str2);vread.push_back(ed.m_str3);vread.push_back(ed.m_str4);vread.push_back(ed.m_str5);vread.push_back(ed.m_str6);vread.push_back(ed.m_str7);vread.push_back(ed.m_str8);C+程序设计报告18vread.push_back(ed.m_str9);vread.push_back(ed.m_str10);int i;for(i=0;iSetName(char*)(LPCTSTR)vreadi);vchari-Setindividua

34、lEmpNo(char*)(LPCTSTR)vreadi+5);vchari-promote(i);t1.SetworkHours(ed.m_hours);tm1.Setlevel(ed.m_level);sm1.Setsales(ed.m_ss1);s1.Setsales(ed.m_ss2);st1.SetworkPay(ed.m_ss3);ofstream ofile(employee.txt,ios:out);for(i=0;ipay();ofileGetName()编号GetindividualEmpNo()级别为Getgrade()级,本月工资GetaccumPay()endl;of

35、ile.close();class FileExceptionpublic:FileException():message(File is not created!)const char *what() const return message;private:const char *message;void CEmployeeView:OnOutputData() / TODO: Add your command handler code hereifstream infile(employee.txt,ios:in);tryC+程序设计报告19if(! infile)throw FileException();catch(FileException fe)/exceptiom handlerMessageBox(fe.what();/fe.what()n;exit(0);CClientDC dc(this);char line101;for(int i=0;i5;i+)infile.getline(line,100);CString c_str;c_str.Format(%s,line);dc.TextOut(100,80,职工信息管理系统:);dc.TextOut(100,100+30*i,c_str);infile.close();

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!