职工工资管理系统设计的课程设计.doc
《职工工资管理系统设计的课程设计.doc》由会员分享,可在线阅读,更多相关《职工工资管理系统设计的课程设计.doc(21页珍藏版)》请在沃文网上搜索。
1、面向对象程序设计程序设计报告目录1概述:51.1基本功能51.2拓展功能52课题分析62.1类的设计6 2.2 类的实现63详细设计说明73.1程序主界面73.2 方案73.3程序描述(输入input)94课程设计总结125软件使用说明126附录(参考文献,原代码:)136.1参考文献:136.2原代码131 概述:1.1 基本功能实现一个简单的工资管理系统。系统的主要用来计算职工当月工资并存档。由于公司内有5种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。所以,此系统的基本功能是:首先,由员工输入用户信息(包括编号、姓名和职务;然后,计算某职工的当
2、月工资(系统先从已输入的职工信息文件中获取职工的工作类型;接着调用不同的处理程序进行计算);最后,可以选择将结果(所有员工的编号、姓名、职位、工资等信息)存档。1.2 拓展功能1.设定好5种职位各不相同的工资计算方式:技术人员的工资根据他当月工作的小时数来定,时薪35元;销售人员的工资则是根据本人当月销售额来确定,工资为销售额的5%;文秘有4000元的基本工资,奖金视为当月工作情况而定;技术经理和销售经理都有6000元的固定工资,技术经理的工作业绩可分为3个等级,PS:每级可获得1000元奖金(¥1000、¥2000、¥3000);销售经理的奖金由他所管理的销售员的销售业绩而定,总销售额的2%
3、。 2.添加某个职工信息的查询功能:只要输入一个已经存在数据库内的雇员名字,即可查到该雇员的编号、姓名、职位和工资的信息。3.清屏功能:为了保护雇员个人信息不外露。4.警报功能: 在查询职员工资信息的时候,会发出警报音“滴”的一声。5.退出确定功能退出程序时,会让用户再次确定是否真的要退出的界面。2 课题分析2.1 类的设计从用户需求中,可以发现5种类型的职员都可以分别设计为一个类。首先,他们都属于雇员,因此可以设计一个基类employee(雇员),然后从中派生出technician(技术人员)类,salesman(销售人员)类、secretary(文秘)类、techmanager(技术经理)
4、类和manager(销售经理)类。根据用户需要employee类应该拥有的属性有:编号、姓名、职务、月份和工资。Employee类的服务可以包括input(),print(),find(),save()。其中,input()函数用于接收用户输入的职工信息;print()函数用于输出用户输入的职工信息;find()函数用来根据职工名查找职工信息;save()函数为将职工信息写入文本。由于各类人员的工资计算方法不同,无法在基类中统一定义,必须在派生类中分别定义。2.2类的实现 class Technician:public Employee /技术员类(公有继承雇员类) public:Employ
5、ee类Techmanager类Technician类Manager类Salesman类Secretary类 void input() cout技术员的; Employee:input(); coutworktime; void print() pay=worktime*hourpay; Employee:print(); void find() pay=worktime*hourpay; Employee:find(); void save() pay=worktime*hourpay; 其他类,类似形成。 Employee:save(); protected: double worktime
6、; /工作时间(小时);3 详细设计说明3.1 程序主界面图表 1主菜单目录输入用户信息,包括编号、姓名和职务从已输入的职工信息文件中获取职工的工作类型调用不同的处理程序进行查询,职员信息将结果存档开始开始3.2 方案在明确了整个程序基本的功能目的后,接着,便是思考如何具体实现:问题1:存入的数据放在哪里?const int n1=1,n2=1,n3=1,n4=1,n5=1; /*定义公司各类职工人数(可修改) (n1:技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数 )*/ 事先设定好可修改的全局变量。然后确定好全局对象数组。如此便可以按照所需存入员工信息输入用户信息,包括编
7、号、姓名和职务从已输入的职工信息文件中获取职工的信息调用不同的处理程序进行查询,职员信息将结果存档开始开始 问题2:如何程序要求,落实?派生类派生类派生类派生类基类派生类问题3:怎样处理2个菜单关系?(输入职员信息菜单、目录菜单)让目录菜单作为主菜单,输入职员信息的菜单成为二级菜单。并运用清屏的功能,及时清除输入的职员信息,作为一种安全保护。3.3 程序描述(输入input)* 由主菜单选择进入“1”的数据输入菜单,进行数据输入(进入二级菜单后会自动清屏)。图表 2子菜单(程序中的menu 3)* 根据需要选择输入要输入的职员信息。(只需按照中文提示,依次输入英语或数字信息)图表 3子菜单中选
8、择输入技术经理信息的一个状态* 一个职员的信息全部输入完成后,会自动清屏,回到“财务部门输入数据系统”主菜单图表 4 子菜单* 以此类推,随意输入你要输入的职员信息。若输入全部完成,可以回到主菜单* 然后,在主菜单中选择数据查询,可以根据你填入的职工姓名,查到他的所有信息图表 5 由主菜单选择查询一操作时,反馈信息的状态* 也可选择数据备份,会自动清屏。并让所有已输入过的职工信息,全打印在所在磁盘的一个txt文档里。图表 6 由主菜单选择数据备份一操作后的状态* 如果想要退出系统,可以选择主菜单的退出系统,选择过后,会清屏,显示以下界面,警告用户,是否真的要推出。 图表 7 选择主菜单退出系统
9、一操作后的状态4 课程设计总结通过此次面向对象程序设计的实践课程学习,本人受益匪浅。经过一系列的编程,本人更加体会到纸上得来终觉浅,绝知此事要躬行。实践是检验真理的唯一标准。这两句话说的真切。遇到的难关1.在编写销售经理的类的时候,由于思维混乱,继承乱用,以致真个程序一片混乱,运行不出,且外加几十个错误警告。经过回顾自己先前写的流程图,本人得到了很大的顿悟。关系捋清楚了,思路也豁然开朗了,下笔如有神。遇到的难关2.五种职员在计算工资的时候,先前一直查询不到正确的工资数额。在反复检查、测试的过程中,才发现那些计算公式,继承没有问题,问题出在查询的那个函数忘记将重新计算工资的公式写上。所以一直显示
10、的是employee的工资数,而不是各个职位员工的工资数。遇到的难关3.在增加清屏这一功能时,本以为这很简单。可在具体操作时,才发现,这也考验一个人思维逻辑的严谨。曾设想,为了不泄密,将清屏这一函数放在查询函数后。结果没想到,这导致测试时:工资信息一显示,立刻被擦掉,根本来不及看的窘境。存在的不足1.本程序设计上还有明显的不妥,就是查询工资信息的时候,要求输入的仅仅为用户姓名。由于还是英语输入,难免有同名同姓的状况出现,容易混乱与出错,还需改进。存在的不足2.原本思路是将程序分为两个入口:管理员入口和职员入口。管理员入口:需要输入通行账户和密码。进入后,有两个功能输入所有职工信息(编号、姓名、
11、岗位、月份、业绩奖励等等基本信息)和数据备份。职员入口:则面向所有员工。进入后,只有一个功能根据自己的名字和编号查询自己的工资等信息。可是由于实际精力有限,时间的不足。只能不分入口,直接将所有功能放在一个界面内主菜单内。这样不能很好的起到原先设想的保护功能。实乃缺失。 总之,这不到一周的实践课,让本人的对于知识的应用能力有了显著的提升。本人也明白了,想要真正会编程,就要课后下功夫,多“实战”。这样的进步才更大。5 软件使用说明1.主菜单中,先输入1,按回车。进入输入数据职员的菜单界面。2.按文字提示信息,依次输入5种职员的各个信息。EG:编号 姓名 职位101 zhao techmanager
12、202 qian technician303 sun salesman404 li manager505 zhou secretary3.输入完毕后,输入0,按回车。再次回到主菜单。4.输入2,按回车。可以输入你想查看的职工姓名,按回车,查看其信息。5.输入3,按回车。可以将所有职工的信息,做成文本。6.输入0,按回车。可以通过输入y或n选择,是否退出程序。友情提示:1.由于语言局限,输入的信息仅限26个字母和阿拉伯数字。 2.自动清屏是出于对雇员信息的保护和界面整洁。并非出错,请勿恐慌。 3.备份资料时,电脑发出的“滴”的警报声,只是提示用户,备份已完成。6 附录(参考文献,原代码:)6.1
13、 参考文献:(1)面向对象程序设计 ,郑莉,清华大学出版社, (2)面向对象程序设计C+语言,朱战立等编 西安电子科技大学出版社(3)面向对象程序设计-Visual C+,刘斌等编, 清华大学出版社 (4)面向对象程序设计-C+语言描述, Richard Johnsonbaugh(美)等著,蔡宇辉等译,机械工业出版社, 20036.2原代码#include#include#include#include#includeusing namespace std;/常变量(供修改用):const int n1=1,n2=1,n3=1,n4=1,n5=1; /*定义公司各类职工人数(可修改) (n1:
14、技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数 )*/const double m_salary=6000; /经理固定月工资const double hourpay=35; /技术员小时工资const double basicpay=6000; /销售经理的底薪const double secretarypay = 4000;/文秘的底薪const double s_proportion=5.0/100; /销售员的工资提成比例const double sm_proportion=2.0/100; /销售经理的提成比例double sold_amount;/声明部分:voi
15、d menu(); /主菜单(1/2/3/0)void menu3(); /数据打印二级菜单(1/2/3/4/5/0)void data_input(); /数据输入函数double sm_salary(); /销售经理工资计算void data_find(); /数据查询void data_save(); /数据备份(做到txt中) void clear();ofstream outfile; /打开磁盘文件流对象string f_name; /全局变量(查询用)/定义类:class Employee /雇员类(基类) public: void input() /数据输入函数 coutnum
16、; coutname; coutstatus; coutmonth; void print() /打印数据函数 cout 编号t姓名t职位tt月份t工资 endl; coutnumtnametstatustmonthtpayendl; void find() /查询函数 if(f_name=name ) print(); coutendl; void save() /备份数据函数 outfilenumtnametstatustmonthtpayendl; protected: int num; /职工号 string name; /职工姓名 string status; /职工职位 int m
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 设计 课程设计