ImageVerifierCode 换一换
格式:DOC , 页数:21 ,大小:379.18KB ,
资源ID:854111      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-854111.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(职工工资管理系统设计的课程设计.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

职工工资管理系统设计的课程设计.doc

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

17、onth; /工资月份 double pay; /职工工资;class Technician:public Employee /技术员类(公有继承) public: 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(); protect

18、ed: double worktime; /工作时间(小时);class Manager:public Employee /技术经理类public: void input() cout技术经理的; Employee:input(); coutm_expay; void print() pay=m_salary+m_expay; Employee:print(); void find() pay=m_salary+m_expay; Employee:find(); void save() pay=m_salary+m_expay; Employee:save(); protected: int

19、m_expay;class Sell_Manager:public Employee /销售经理类public: void input() cout销售经理的; Employee:input(); int sm_number() /调用销售经理职工号 return num; string sm_name() /调用销售经理姓名 return name; void print() pay=basicpay+sold_amount*sm_proportion; cout 编号t姓名t职位tt月份t工资endl; coutnumtnametstatusttmonth; void save() pay

20、=basicpay+sold_amount*sm_proportion; outfilenumtnametstatusttmonth; void find() if(f_name=name ) print(); coutendl; ;class Seller:public Employee /销售员类public: Seller() sold_amount=0; /构造函数,销售额初始化为0 void input() cout销售员的; Employee:input(); coutsold_amount; coutnu; void print() pay=sold_amount*s_propo

21、rtion; coutnumtnametstatustmonth tpaytnuendl; int s_number() /调用销售员所属销售经理职工号 return nu; double amount() /调用销售员销售额 return sold_amount; void find() if(f_name=name) cout 编号t姓名t职位tt月份t工资t所属部门经理编号 endl; print(); void save() pay=sold_amount*s_proportion; outfilenumtnametstatustmonth tpayttnuendl; protecte

22、d: double sold_amount; /销售额 int nu; /所属销售经理职工号;class Secretary:public Employee /文秘类public: void input() cout文秘的; Employee:input(); coutsy_expay; void print() pay=secretarypay+sy_expay; Employee:print(); void find() pay=secretarypay+sy_expay; Employee:find(); void save() pay=secretarypay+sy_expay; Em

23、ployee:save(); protected:int sy_expay; ; /定义全局对象数组 Technician tn1; /技术员Manager mn2; /经理Seller sn3; /销售员Sell_Manager smn4; /销售经理(下属若干销售员)Secretary syn5; /文秘 /主函数部分:int main() char n; menu(); for(int i=0;in; switch(n) case1: /数据输入 clear(); coutendl您所选操作为数据输入,请继续-endlendl; data_input(); coutendl; menu(

24、); break; case2: /数据查询 clear(); coutendl您所选操作为数据查询,请继续-endlendl; coutf_name; coutendl-正在查询,请等待-endlendl; cout您查询的信息如下:endlendl; data_find(); coutendlendl; menu(); break; case3: /数据备份 clear(); outfile.open(C+程序设计实习.txt,ios:out); /打开磁盘文件流对象 coutendl您所选操作为数据备份,请继续-endlendl; outfile职工基本情况一览表如下:nendl; da

25、ta_save(); outfile.close(); coutendlendl; couta-数据备份完成,请继续-endlendl; menu(); break; case0: /退出系统 clear(); coutendl是否真的要退出系统?endlendl; cout 是( y ) n; if(n=y) coutn-请按任意键退出系统-endl; exit(0); coutendl; else menu(); break; default: coutendl-出错!请重新选择操作! nendl; menu(); break; return 0;/自定义函数部分:void menu()

26、/菜单函数 cout 小型公司工资管理系统 endl; cout endl; cout 数据输入:1,并按回车键; endl; cout endl; cout 数据查询:2,并按回车键; endl; cout endl; cout 数据备份:3,并按回车键; endl; cout endl; cout | 退出系统:0,并按回车键;| endl; cout endl; cout 请输入操作序号:;void menu2() /数据输入二级菜单函数 cout 财务部门输入数据系统 endl; coutendl; cout 技术经理数据输入:1,并按回车键; endl; cout 技术员数据输入 :

27、2,并按回车键; endl; cout 销售员数据输入 :3,并按回车键; endl; cout 销售经理数据输入:4,并按回车键; endl; cout 文秘数据输入 :5,并按回车键; endl; cout 返回上一级 :0,并按回车键; endl; coutendl; cout 请输入操作序号:;void data_input() /数据输入函数 char p; int i; menu2(); for(int j=0;j p; if(p=0)clear(); break; else switch(p) case1: clear(); for(i=0;in2;i+) mi.input();

28、 /经理 coutendl-endl;clear();menu2();break; case2: clear(); for(i=0;in1;i+) ti.input(); /技术人员 coutendl-endl;clear();menu2();break; case3: clear(); for(i=0;in3;i+) si.input(); /销售员 coutendl-endl;clear();menu2();break; case4: clear(); for(i=0;in4;i+) smi.input(); / 销售经理 coutendl-endl;clear();menu2();bre

29、ak; case5: clear(); for(i=0;in5;i+) syi.input(); / 文秘 coutendl-endl;clear();menu2();break; double salaryn4;double sm_salary() /销售经理工资计算 int i,j;double a ;Sell_Manager b; for(int k=0;kn4;k+) salaryk=0; for(i=0;in4;i+) double sum=0; for(j=0;jn3;j+) if(sj.s_number()=smi.sm_number() sum=sum+sj.amount();

30、 salaryi=sum*sm_proportion+basicpay; return 0;void data_find() /数据查询函数 for(int i=0;in1;i+)/查询技术员数据 ti.find(); for(int i=0;in2;i+)/查询技术经理数据 mi.find(); for(int i=0;in3;i+) /查询销售员数据 si.find(); for(int i=0;in4;i+)/查询销售经理的数据 if(f_name=smi.sm_name() smi.print(); sm_salary() ; coutsetw(12)salaryiendl; cout

31、endl; break; for(int i=0;in5;i+)/查询文秘数据 syi.find();void data_save() /数据备份函数 outfileendl技术员endlendl; /技术员信息 outfile 编号t姓名t职位tt月份t工资 endl; for(int i=0;in1;i+) ti.save(); outfileendlendl-endl; outfileendl技术经理endlendl; /经理信息 outfile 编号t姓名t职位tt月份t工资 endl; for(int i=0;in2;i+) mi.save(); outfileendlendl-en

32、dl; outfileendl销售经理endlendl; /销售经理信息 outfile 编号t姓名t职位tt月份t工资 endl; for(int i=0;in4;i+) smi.save(); outfilesetw(12)salaryiendl; outfileendlendl-endlendl; outfileendl销售员endlendl; /销售员信息 outfile 编号t姓名t职位tt月份t工资tt所属部门经理编号 endl; for(int i=0;in3;i+) si.save(); outfileendlendl-nendl; outfileendl文秘endlendl; /文秘信息 outfile 编号t姓名t职位tt月份t工资 endl; for(int i=0;in5;i+) syi.save(); outfileendlendl-endl; void clear() system(cls); 补充:小型公司职员档案(秘!)编号 姓名 职位101 zhao techmanager202 qian technician303 sun sal

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922