上海应用技术学院职工工资管理课设报告.docx
- 文档编号:30252276
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:36
- 大小:348.16KB
上海应用技术学院职工工资管理课设报告.docx
《上海应用技术学院职工工资管理课设报告.docx》由会员分享,可在线阅读,更多相关《上海应用技术学院职工工资管理课设报告.docx(36页珍藏版)》请在冰豆网上搜索。
上海应用技术学院职工工资管理课设报告
课程设计
2014~2015学年第一学期
设计题目职工工资管理系统设计
院(系)计算机科学与信息工程系
专业
班级学号
学生姓名
设计时间
指导教师
提交日期
上海应用技术学院课程设计任务书
课程名称
《面向对象程序设计》课程设计
课程代码
设计题目
职工工资管理系统的设计
题目序号
设计时间
系(院)
计算机科学与信息工程系
专业
班级
一、课程设计任务(条件)、具体技术参数(指标)
本课程设计是《面向对象程序设计》课程的后继教学环节,学好C++语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C++实际应用程序。
根据教材中人事管理应用程序框架,在此基础上按要求完成以下实际应用程序。
职工工资管理系统课程设计题目:
实现一个简单的工资管理系统。
系统的主要功能是计算职工当月工资并存档。
公司内有5种不同类型的职工:
技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。
技术人员的工资根据他当月工作的小时数来定,时薪35元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的5%;文秘有4000元的基本工资,奖金视为当月工作情况而定;技术经理和销售经理都有6000元的固定工资,技术经理的工作业绩可分为3个等级,每级可获得1000元奖金,销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的2%
职工工资管理系统的设计:
对于整个系统的设计思路是,首先,由员工输入用户信息,包括编号、姓名和职务;然后,在计算某职工的当月工资时,系统先从已输入的职工信息文件中获取职工的工作类型,接着调用不同的处理程序进行计算;最后将结果存档。
从用户需求中,可以发现5种类型的职员都可以分别设计为一个类。
首先,他们都属于雇员,因此可以设计一个基类employee(雇员),然后从中派生出technician(技术人员)类,salesman(销售人员)类、secretary(文秘)类。
对于技术经理和销售经理来说,他们都属于经理,所以设计时可以从employee类中派生出一个manager(经理)类作为techmanager(技术经理)和salesman(销售经理)类的父类。
而经理类本身并不对应实际的员工类型,由于技术经理有技术人员和经理的双重特点,因此techmanager类同时继承technician类和manger类;销售经理有销售人员和经理的双重特点,因此salesmanager类同时继承salesman类和manager类。
根据用户需要employee类应该拥有的属性有:
编号、姓名、职务、月份和工资。
Employee类的服务可以包括info()、search()、countSalary()、recordInfo()和recordSalary()。
其中,info()函数用于接收用户输入的职工信息;search()函数用来根据职工名查找职工信息;countSalary()函数为工资计算函数,但在基类中为空,原因是各类人员的工资计算方法不同,无法在基类中统一定义,必须在派生类中分别定义。
recordInfo()函数和recordSalary()函数分别是职工信息和职工工资的记录函数,分别将信息存入文件info.txt和salary.txt。
具体的基类和派生类的定义如下图:
二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)
(1)分析职工工资管理系统程序结构:
画出程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起);
(2)对你已经实现的功能(修改的、新编写的)做详细的说明,并附上流程图及程序清单。
(3)自己对该职工工资管理系统的进一步设想;
(4)对于有设想但最终未实现的功能的大致编程思路的阐述;
(5)论述在设计过程中遇到的并且对你具有启发性的问题。
(6)严禁抄袭,发现雷同,双方扣分。
三、课程设计工作进度计划:
周一、二:
教师布置任务,讲解本课设模块。
画出主程序粗略的流程图和各个模块的详细流程图。
设计程序及调试程序。
周三、四:
设计程序及调试程序。
同时着手写报告。
周五:
完成设计,提交报告,接受教师考评。
四、主要参考资料
(1)《面向对象程序设计》,郑莉,清华大学出版社,
(2)《面向对象程序设计C++语言》,朱战立等编西安电子科技大学出版社
(3)《面向对象程序设计----VisualC++》,刘斌等编,清华大学出版社
(4)《面向对象程序设计----C++语言描述》,RichardJohnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社,2003
1.2拓展功能6
2课题分析8
2.1类的设计8
2.2类的实现9
3详细设计说明10
3.1程序主界面10
3.2方案15
3.3程序描述16
4课程设计总结16
5软件使用说明17
6附录(参考文献,原代码:
)17
6.1参考文献:
17
6.2原代码18
1概述:
1.1基本功能
实现一个简单的工资管理系统。
系统的主要用来计算职工当月工资并存档。
由于公司内有5种不同类型的职工:
技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。
所以,此系统的基本功能是:
(1)首先,由员工输入用户信息(包括编号、姓名和职务;然后,计算某职工的当月工资(系统先从已输入的职工信息文件中获取职工的工作类型;
(2)接着调用不同的处理程序进行计算
(3)最后,可以选择将结果(所有员工的编号、姓名、职位、工资等信息)存档。
1.2拓展功能
(1)设定好5种职位各不相同的工资计算方式:
技术人员的工资根据他当月工作的小时数来定,时薪35元;
销售人员的工资则是根据本人当月销售额来确定,工资为销售额的5%;
文秘有4000元的基本工资,奖金视为当月工作情况而定;
技术经理和销售经理都有6000元的固定工资,技术经理的工作业绩可分为3个等级,PS:
每级可获得1000元奖金(¥1000、¥2000、¥3000);
销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的2%。
(2)添加某个职工信息的查询功能:
只要输入一个已经存在数据库内的雇员名字,即可查到该雇员的编号、姓名、职位和工资的信息。
(3)将工资信息存入salary.txt文件中,工资信息包含雇员编号、姓名、职务、月份、月收入。
Info.txt文件中只存留一些信息及会员最后进入系统时输入的数据,最多含有编号、姓名、职务、月份的信息。
2课题分析
2.1类的设计
从用户需求中,可以发现5种类型的职员都可以分别设计为一个类。
首先,他们都属于雇员,因此可以设计一个基类employee(雇员),然后从中派生出technician(技术人员)类,salesman(销售人员)类、secretary(文秘)类、techmanager(技术经理)类和manager(销售经理)类。
根据用户需要employee类应该拥有的属性有:
编号、姓名、职务、月份和工资。
Employee类的服务可以包括input(),print(),find(),save()。
其中,input()函数用于接收用户输入的职工信息;print()函数用于输出用户输入的职工信息;find()函数用来根据职工名查找职工信息;save()函数为将职工信息写入文本。
由于各类人员的工资计算方法不同,无法在基类中统一定义,必须在派生类中分别定义。
2.2
类的实现
3详细设计说明
3.1程序主界面
图表1主菜单目录
3.2方案
在明确了整个程序基本的功能目的后,接着,便是思考如何具体实现:
问题1:
存入的数据放在哪里?
constintn1=1,n2=1,n3=1,n4=1,n5=1;
/*定义公司各类职工人数(可修改)
(n1:
技术员人数;n2:
经理人数;n3:
销售员人数;n4:
销售经理人数)*/
事先设定好可修改的全局变量。
然后确定好全局对象数组。
如此便可以按照所需存入员工信息
问题2:
怎样处理2个菜单关系?
(输入职员信息菜单、目录菜单)
让目录菜单作为主菜单,输入职员信息的菜单成为二级菜单。
并运用清屏的功能,及时清除输入的职员信息,作为一种安全保护。
界面之间的关系描述:
(1)运行程序进入主界面后,键盘上输入1并按回车键进行数据输入系统界面
(2)输入操作序号1后,清屏进入技术经理数据输入,按要求输入编号,姓名,职位,月份,业绩奖励,输入完毕后按回车键进入上一级界面继续其他职位的输入
(3)继续重复
(2)输入操作序号2、3、4、5在按要求输入所有的职员信息后,输入操作序号0返回上一级主界面
(4)输入操作序号进行数据查询,查询无误后输入序号3进行数据备份,听到电脑发出的“滴”的警报声,提示用户,备份已完成。
(5)输入操作序号0退出系统
3.3程序描述(输入input)
*由主菜单选择进入“1”的数据输入菜单,进行数据输入(进入二级菜单后会自动清屏)。
*根据需要选择输入要输入的职员信息。
(只需按照中文提示,依次输入英语或数字信息)
*一个职员的信息全部输入完成后,会自动清屏,回到“财务部门输入数据系统”主菜单
*以此类推,随意输入你要输入的职员信息。
若输入全部完成,可以回到主菜单
*然后,在主菜单中选择数据查询,可以根据你填入的职工姓名,查到他的所有信息
*也可选择数据备份,会自动清屏。
并让所有已输入过的职工信息,全打印在所在磁盘的一个txt文档里。
*如果想要退出系统,可以选择主菜单的退出系统,选择过后,会清屏,显示以下界面,警告用户,是否真的要推出。
查询功能模块即search函数模块
首先,从info.txt中提取编号,与salary.txt中的编号进行匹配,匹配成功,输出工资信息,直到文件!
indata.eof()==0。
循环控制模块即while
(1)模块
为了更加方便使用,尽量改善系统,实现search函数及systembody函数功能,在search函数及systembody函数模块的基础上加了一些必要的语句,并增加了外层循环控制。
4课程设计总结
本次面向对象课程设计的所有功能基本完成,并且扩展功能也成功的实现!
可执行文件能正常执行指令并运行!
经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。
在为期近一周的C++课程设计中,我体会颇多,学到了很多东西。
我加强了对C++程序设计这门课程的认识,并且复习了自己以前学习到的知识。
这些都使得我对计算机语言的学习有了更深入的认识!
总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。
像职工信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。
而这些问题,这并不是我们平时只靠课本,就可以轻易解决的。
所以,锻炼了我们挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。
课程设计是一个重要的教学环节,通过课程设计使我们了解到一些实际与理论之间的差异。
通过课程设计不仅可以巩固专业知识,为以后的工作打下了坚实的基础,而其还可以培养和熟练使用资料,运用工具书的能力,把我们所学的课本知识与实践结合起来,起到温故而知新的作用。
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升。
5软件使用说明
1.主菜单中,先输入1,按回车。
进入输入数据职员的菜单界面。
2.按文字提示信息,依次输入5种职员的各个信息。
EG:
编号姓名职位
101zhaotechmanager
202qiantechnician
303sunsalesman
404limanager
505zhousecretary
3.输入完毕后,输入0,按回车。
再次回到主菜单。
4.输入2,按回车。
可以输入你想查看的职工姓名,按回车,查看其信息。
5.输入3,按回车。
可以将所有职工的信息,做成文本。
6.输入0,按回车。
可以通过输入y或n选择,是否退出程序。
友情提示:
1.由于语言局限,输入的信息仅限26个字母和阿拉伯数字。
2.自动清屏是出于对雇员信息的保护和界面整洁。
并非出错,请勿恐慌。
3.备份资料时,电脑发出的“滴”的警报声,只是提示用户,备份已完成。
6附录(参考文献,原代码:
)
6.1参考文献:
(1)《面向对象程序设计》,郑莉,清华大学出版社,
(2)《面向对象程序设计C++语言》,朱战立等编西安电子科技大学出版社
(3)《面向对象程序设计----VisualC++》,刘斌等编,清华大学出版社
(4)《面向对象程序设计----C++语言描述》,RichardJohnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社,2003机械工业出版社,2003
6.2原代码
程序清单
#include
#include
#include
#include
#include
usingnamespacestd;
//常变量(供修改用):
constintn1=1,n2=1,n3=1,n4=1,n5=1;/*定义公司各类职工人数(可修改)
(n1:
技术员人数;n2:
经理人数;n3:
销售员人数;n4:
销售经理人数)*/
constdoublem_salary=6000;//经理固定月工资
constdoublehourpay=35;//技术员小时工资
constdoublebasicpay=6000;//销售经理的底薪
constdoublesecretarypay=4000;//文秘的底薪
constdoubles_proportion=5.0/100;//销售员的工资提成比例
constdoublesm_proportion=2.0/100;//销售经理的提成比例
doublesold_amount;
//声明部分:
voidmenu();//主菜单(1/2/3/0)
voidmenu3();//数据打印二级菜单(1/2/3/4/5/0)
voiddata_input();//数据输入函数
doublesm_salary();//销售经理工资计算
voiddata_find();//数据查询
voiddata_save();//数据备份(做到txt中)
voidclear();
ofstreamoutfile;//打开磁盘文件流对象
stringf_name;//全局变量(查询用)
//定义类:
classEmployee//雇员类(基类)
{
public:
voidinput()//数据输入函数
{
cout<<"编号:
";
cin>>num;
cout<<"其姓名:
";
cin>>name;
cout<<"职位:
";
cin>>status;
cout<<"月份:
";
cin>>month;
}
voidprint()//打印数据函数
{
cout<<"编号\t姓名\t职位\t\t月份\t工资"< cout< } voidfind()//查询函数 { if(f_name==name) { print(); cout< } } voidsave()//备份数据函数 { outfile< } protected: intnum;//职工号 stringname;//职工姓名 stringstatus;//职工职位 intmonth;//工资月份 doublepay;//职工工资 }; classTechnician: publicEmployee//技术员类(公有继承) { public: voidinput() { cout<<"技术员的"; Employee: : input(); cout<<"工作时间: "; cin>>worktime; } voidprint() {pay=worktime*hourpay; Employee: : print(); } voidfind() { pay=worktime*hourpay; Employee: : find(); } voidsave() {pay=worktime*hourpay; Employee: : save(); } protected: doubleworktime;//工作时间(小时) }; classManager: publicEmployee//技术经理类 { public: voidinput() { cout<<"技术经理的"; Employee: : input(); cout<<"业绩奖励(输入金额数: 、或): "; cin>>m_expay; } voidprint() {pay=m_salary+m_expay; Employee: : print(); } voidfind() {pay=m_salary+m_expay; Employee: : find(); } voidsave() {pay=m_salary+m_expay; Employee: : save(); } protected: intm_expay; }; classSell_Manager: publicEmployee//销售经理类 { public: voidinput() {cout<<"销售经理的"; Employee: : input(); } intsm_number()//调用销售经理职工号 { returnnum; } stringsm_name()//调用销售经理姓名 { returnname; } voidprint() {pay=basicpay+sold_amount*sm_proportion; cout<<"编号\t姓名\t职位\t\t月份\t工资"< cout< } voidsave() { pay=basicpay+sold_amount*sm_proportion; outfile< } voidfind() { if(f_name==name) { print(); cout< } } }; classSeller: publicEmployee//销售员类 { public: Seller(){sold_amount=0;}//构造函数,销售额初始化为 voidinput() { cout<<"销售员的"; Employee: : input(); cout<<"销售额: "; cin>>sold_amount; cout<<"所属销售经理的编号: "; cin>>nu; } voidprint() {pay=sold_amount*s_proportion; cout< <<"\t"< } ints_number()//调用销售员所属销售经理职工号 { returnnu; } doubleamount()//调用销售员销售额 { returnsold_amount; } voidfind() {if(f_name==name) { cout<<"编号\t姓名\t职位\t\t月份\t工资\t所属部门经理编号"< print(); } } voidsave() {pay=sold_amount*s_proportion; outfile< <<"\t"< } protected: doublesold_amount;//销售额 intnu;//所属销售经理职工号 }; classSecretary: publicEmployee//文秘类 { public: voidinput() { cout<<"文秘的"; Employee: : input(); cout<<"附加奖励(输入本月奖金数额): "; cin>>sy_expay; } voidprint() {pay=secretarypay+sy_expay; Employee: : print(); } voidfind() { pay=secretarypay+sy_expay; Employee: : find(); } voidsave() {pay=secretarypay+sy_expay; Employee: : save(); } protected: intsy_expay; }; //定义全局对象数组 Techniciant[n1];//技术员 Managerm[n2];//经理 Sellers[n3];//销售员 Sell_Managersm[n4];//销售经理(下属若干销售员) Secretarysy[n5];//文秘 //主函数部分: intmain() { charn; menu(); for(inti=0;i<1000;i++)//设定循环次数(便于各项操作的切换及方便查询) {cin>>n; switch(n) { case'1': //数据输入 clear(); cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上海 应用 技术学院 职工工资 管理 报告