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

加入VIP,免费下载资源
 

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

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

下载须知

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

版权提示 | 免责声明

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

小型公司工资管理系统.doc

1、程序设计实习报告中国石油大学(华东)信息与控制工程学院程序设计实习报告小型公司工资管理系统的设计专业班级:自动化10-4班学号:10051426姓名:吴光韬 时 间:2011.7.142011.7.17 2011年7月16日目录一、 实习内容1 1.1、课程设计的目的1 1.2、设计题目及要求1二、 设计思路2三、 程序清单33.1、程序源代码4四、 运行结果144.1、程序运行144.2、备份文本信息16五、 程序使用说明17六、 总结及心得体会172程序设计实习报告一:实习内容1.1、课程设计的目的 此次课程设计的目的是以程序设计语言(C/C+)为基础,针对具有一定难度的综合性题目,进行分

2、析、编程、调试和运行,进一步掌握面向对象和面向过程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合,提高分析问题、解决问题的能力。通过设计一个简单的小型公司工资管理系统,进一步熟悉C+中类的概念、类的封装、继承和多态的实现方式。了解系统开发的需要分析,类层次设计,模块分析,编码测试,模块组装与整体调试的全过程,逐步熟悉程序设计的方法,并养成良好的编程习惯。1.2、设计题目及要求1 题目:小型公司工资关系系统设计2 设计说明与要求 (1) 公司主要有4类人员:经理、技术员、销售员、销售经理。要求储存这些人的职工号姓名、月工资、年龄、性别等信息。 (2) 工资的计算方法A、经理:

3、固定月薪为8000元;B、技术员:工作时间小时工资(100元每小时);C、销售员:销售额4%提成;D、销售经理:底薪(5000元)+所辖部门销售额总额0.5%;(3) 类的层次结构大体如下:雇员类 技术员类销售员类经理类销售经理类 (4) 输入员工基本数据,要求每类人员不能少于4人,员工信息输出格式参考运行效果。 (5) 实现功能 应用程序中要有菜单,用于选择各种功能,其中 数据输入:输入各种数据; 数据统计:统计各种销售经理下属销售员的销售额及限售额之和;销售经理按工资进行的冒泡排序; 数据打印:打印各类员工的数据信息; 数据备份:把各类员工的数据星系写入文件中保存; 推出本系统; (6)

4、菜单说明 数据录入指通过键盘输入各类员工的各项数据; 数据统计指统计各销售经理下属销售员的销售额及销售额之和;销售经理按工资进行冒泡法排序; 数据打印指按照表格的格式在屏幕上输出个员工的信息; 数据备份指将所有员工的信息保存到文件; 退出:结束程序的运行。 (7) 注意一个销售经理管辖多个销售员。 (8) 其他功能可以自己扩充(扩充的功能若比较合理可适当加分)。 (9) 要求在控制台下完成(显示内容都在黑屏下显示)。二、设计思路1、整体考虑程序应该实现的功能,有数据输入,数据统计,数据打印,数据备份和退出系统5个。2、首先定义一个Employee的雇员基类,然后由此派生出Tech,Manage

5、r,Salesman三个分别为技术员类,经理类,销售员类;再由Manager派生出销售经理类Salesmanager。每个类中的成员都是protected型的,所有的继承都是公有继承,基类中定义有数据输入函数。3、主函数里定义了四个对象数组,Tech TA;Manager MB;Salesman SC;Salesmanager SMD,其中A/B/C/D都是全局常变量,代表各类成员人数,便于程序修改。4、整个程序由主函数的一个for循环控制,根据输入的操作选项通过一个switch语句判断该进行什么操作,每一个case后面对应一个函数,每个函数对应一个操作,1对应数据输入,2对应数据统计,3对应

6、数据打印,4对应数据备份,5对应退出系统。5、数据统计、打印以及备份都以表格形式输出。表格通过制表符进行设计。表头表尾表中、菜单还有分隔符均单独定义成void 型的函数。如:void tou()coutendl;cout 职工号 姓名 性别 年龄 工资 endl;6、case 中调用四个带参的函数fun3(T,M,S,SM)、data_tongji(T,M,S,SM)、data_print(T,M,S,SM)、data_beifen(T,M,S,SM)。四个函数均用了四个循环语句分别进行输入、统计、打印、备份。如输入中的一个:for(i=0;iA;i+)Ti.data_cin();couten

7、dl;data_cin()这类函数在各个类中定义,并且同名,这样能简化程序。7、在进行销售经理的数据输出时,考虑其与销售员之间所属关系,定义若干全局数组double wageD单独存放销售经理的工资,排序时通过if语句先判断所属关系,再进行冒泡法排序,这是要用到双重循环。8、考虑各种数据类型还有所需的C+内的函数,要引用 这四个头文件。用于数据备份,使用时,先用ofstream outfile;outfile.open(工资管理系统.txt,ios:out);打开磁盘流文件,并且对备份文件进行命名,同时确定存储位置。用其setw()设置输出数据的宽度,便于表格的制作9、因为类中成员都是保护类型

8、的,所以要定义属于各类的返回成员值的函数,如turn_belong()、turn_num()10、整体构思比较简单,基本能够实现各项功能 三、程序清单#include#include#include#includeusing namespace std;void fun1();void fun2();void tou();void wei();void zhong();const int A=2,B=2,C=4,D=2;const int a=8000;const int b=5000;const double c=0.005;const int d=100;const double e=0.

9、04;int n=0;int m2=0,0;int t2;class Employeepublic:void data_cin() coutname;coutsex;coutage;int turn_num()return num;string turn_name()return name;char turn_sex()return sex;int turn_age()return age;protected:int num;string name;int age;char sex;int gz;class Tech:public Employeepublic:void data_cin()c

10、outnum;Employee:data_cin();couttime;int turn_gz1()return d*time;protected:int time;class Salesman:public Employeepublic:Salesman()sales_money=0;void data_cin()coutnum;Employee:data_cin();coutsales_money;coutbelong;gz=sales_money*e; int turn_sales_money()return sales_money;int turn_belong()return bel

11、ong; int turn_gz2()return sales_money*e;protected: int sales_money;int belong;class Manager:public Employeepublic:void data_cin()coutnum;Employee:data_cin();gz=a;int turn_gz3()return a;class Salesmanager:public Managerpublic:int turn_num()return num;void data_cin()coutnum;Employee:data_cin();double

12、wageD;double SM_wage(Salesman S,Salesmanager SM)int i,j,k;double p;Salesmanager q;for(k=0;kD;k+) wagek=0;for(i=0;iD;i+)double sum=0;for(j=0;jC;j+)if(SMi.turn_num()=Sj.turn_belong()sum+=Sj.turn_sales_money();wagei=sum*c+b;for(i=0;iD-1;i+) /冒泡法for(j=0;jD-1-i;j+)if(wagejwagej+1)p=wagej+1;wagej+1=wagej;

13、wagej=p;q=SMj+1;SMj+1=SMj;SMj=q;return 0;void fun1()cout-endl;void fun2()cout 小型公司工资管理系统endl; coutendl; cout 请选择您所需的操作 endl; cout 数据输入:1,并按回车键; endl; cout 数据统计:2,并按回车键; endl; cout 数据打印:3,并按回车键; endl; cout 数据备份:4,并按回车键; endl; cout 退出系统:5,并按回车键; endl; coutendl; cout请输入一个操作:;void tou()coutendl;cout 职工号

14、 姓名 性别 年龄 工资 endl;void zhong()coutendl;void wei()coutendl;void fun3(Tech T,Manager M,Salesman S,Salesmanager SM)fun1();int i;for(i=0;iA;i+)Ti.data_cin();coutendl;fun1();for(i=0;iB;i+)Mi.data_cin();coutendl;fun1();for(i=0;iC;i+)Si.data_cin();coutendl;fun1();for(i=0;iD;i+)SMi.data_cin();coutendl;fun1(

15、);void data_tongji(Tech T,Manager M,Salesman S,Salesmanager SM)int i,j;for(i=0;iD;i+)cout职工号为SMi.turn_num()销售经理SMi.turn_name()下属销售员的业绩为:endl;coutendl;cout 职工号 姓名 销售额 endl;for(j=0;jC;j+)if(Sj.turn_belong()=SMi.turn_num()coutendl;coutsetw(12)Sj.turn_num()setw(12)Sj.turn_name()setw(12)Sj.turn_sales_mon

16、ey()endl;mi+=Sj.turn_sales_money();coutendl;cout销售额总计 setw(20)mi endl;coutendl;cout销售经理排序为:endl; tou();SM_wage(S,SM);for(i=0;iD;i+)zhong();coutsetw(6)SMi.turn_num() setw(6)SMi.turn_name() setw(6)SMi.turn_sex() setw(6)SMi.turn_age() setw(6)wagei endl;wei();void data_print(Tech T,Manager M,Salesman S,

17、Salesmanager SM)SM_wage(S,SM);int i;cout请稍等endl;cout职工基本情况一览表如下:endl;cout技术员endl;tou();for(i=0;iA;i+)zhong();coutsetw(6)Ti.turn_num() setw(6)Ti.turn_name() setw(6)Ti.turn_sex() setw(6)Ti.turn_age() setw(6)Ti.turn_gz1() endl;wei();fun1();cout经理endl;tou();for(i=0;iB;i+)zhong();coutsetw(6)Mi.turn_num()

18、 setw(6)Mi.turn_name() setw(6)Mi.turn_sex() setw(6)Mi.turn_age() setw(6)Mi.turn_gz3() endl;wei();fun1();cout销售经理endl;tou();for(i=0;iD;i+)zhong();coutsetw(6)SMi.turn_num() setw(6)SMi.turn_name() setw(6)SMi.turn_sex() setw(6)SMi.turn_age() setw(6)wagei endl;wei();fun1();cout销售员endl;coutendl;cout 职工号 姓

19、名 性别 年龄 工资 所属部门经理编号endl;for(i=0;iC;i+)coutendl;coutsetw(6)Si.turn_num() setw(6)Si.turn_name() setw(6)Si.turn_sex() setw(6)Si.turn_age() setw(6)Si.turn_gz2() setw(10)Si.turn_belong() endl;coutendl;fun1();void data_beifen(Tech T,Manager M,Salesman S,Salesmanager SM) SM_wage(S,SM); int i;cout数据备份中,请稍等e

20、ndl; coutendl数据备份完成!endl;ofstream outfile;outfile.open(工资管理系统.txt,ios:out); outfile职工基本情况一览表如下:nendl; outfile技术员endl;outfileendl;outfile 职工号 姓名 性别 年龄 工资 endl;for(i=0;iA;i+)outfileendl;outfilesetw(6)Ti.turn_num() setw(6)Ti.turn_name() setw(6)Ti.turn_sex() setw(6)Ti.turn_age() setw(6)Ti.turn_gz1() end

21、l;outfileendl;outfile-endl;outfile经理endl;outfileendl;outfile 职工号 姓名 性别 年龄 工资 endl;for(i=0;iB;i+)outfileendl;outfilesetw(6)Mi.turn_num() setw(6)Mi.turn_name() setw(6)Mi.turn_sex() setw(6)Mi.turn_age() setw(6)Mi.turn_gz3() endl;outfileendl;outfile-endl;outfile销售经理endl;outfileendl;outfile 职工号 姓名 性别 年龄

22、工资 endl;for(i=0;iD;i+)outfileendl;outfilesetw(6)SMi.turn_num() setw(6)SMi.turn_name() setw(6)SMi.turn_sex() setw(6)SMi.turn_age() setw(6)wagei endl;outfileendl;outfile-endl;outfile销售员endl;outfileendl;outfile 职工号 姓名 性别 年龄 工资 所属部门经理编号endl;for(i=0;iC;i+)outfileendl;outfilesetw(6)Si.turn_num() setw(6)Si

23、.turn_name() setw(6)Si.turn_sex() setw(6)Si.turn_age() setw(6)Si.turn_gz2() setw(10)Si.turn_belong() endl;outfileendl;outfile-endl;int main()void display(Tech T,Manager M,Salesman S,Salesmanager SM,int n);Tech TA;Manager MB;Salesman SC;Salesmanager SMD;int i;for(i=1;in;display(T,M,S,SM,n);if(n=5)bre

24、ak;return 0;void display(Tech T,Manager M,Salesman S,Salesmanager SM,int n)switch(n)case 1:fun3(T,M,S,SM);break; case 2:data_tongji(T,M,S,SM);break; case 3:data_print(T,M,S,SM);break; case 4:data_beifen(T,M,S,SM);break; case 5:coutendl;break; default:cout请重新选择操作endl;break;四、运行结果14325678五、程序的使用说明1、看到

25、菜单后,屏幕上有提示“请选择一个操作:”,用户首先输入1进行数据输入;2、输入1后,会逐项显示所要输入的成员信息,只要按顺序输入即可;3、数据输入完以后,会返回菜单由用户重新选择其他操作,包括数据统计,数据打印和数据备份,最后还有退出系统的选项;4、如果输入2,则进行数据统计,会在屏幕显示各个销售经理下属销售员的业绩,还有对销售经理按工资从高到低进行排序;5、如果输入3,则进行数据打印,屏幕会显示各类成员的基本信息,包括编号、姓名、性别、年龄、工资等;6、如果输入4,则进行数据备份,将打印出来的信息备份到系统指定的文件夹中;7、输入5就是退出系统,退出前可以循环操作,但有一定的次数限制,最好不

26、要超过50次,一般情况够用;8、由于人数固定,所以数据输入时只能输入确定人数的信息,两名技术员,两名经理,四名销售员,两名销售经理;六、总结及心得体会通过对小型公司工资管理系统的C+程序编写,加强了我对C+功能的了解,对象与类之间关系的理解,同时也提高了上机实践能力,自主学习能力,错误分析能力从实习前开始对实习进行构思,如老师所言,要全局考虑,而我也正因为编写前考虑不周全,在定义完类以后,很快把输入数据的函数编写出来了,上机操作也很成功。可是到统计部分还有打印和备份部分就开始发现原写的程序有许多地方需要改动,或者增添新的成员或函数,比如统计数据时需要计算销售经理的工资并且排序,这就需要定义新的

27、数组,新的函数来判断哪些销售员属于哪位销售经理,并按其工资从高到低排序。还有打印数据时需要计算各类对象的工资,就得回头重新定义一些成员函数,而且由于成员都是保护类型的,类外不能直接访问,所以需要在类中定义具有返回类中各数据功能的函数。这些都是数据输入时没有考虑到的。所以说,全局统筹规划,有缜密的构思很重要。当然,快速接受新事物的能力也是必备的,因为备份数据在课堂上未曾提及,就得自己通过网络查找相关信息,百度后才知道要添加这个头文件,用outfile来进行数据备份,并用outfile.open(“”,ios:out)打开磁盘流文件。还有如果需要退出系统,除了我用break跳出循环的方法外,也可以

28、用exit(0)函数退出,只需增加一个头文件。这些知识都是自己查找相关信息分析才知道的,所以自学能力也很重要。再者,由于程序编写过程中出现错误是常有的事,那么,分析错误的能力也就需要慢慢提高,因为错误提示都是英文,所以学好英语也很有必要。错误往往是粗心或者语法不对,比如大括号少了或者多了或者放错了位置,少打分号了,输入法转换时符号输入不经意间改变了,或者一些函数没有声明,声明位置靠后了,由于程序较长,有时候搞不清在哪定义在哪调用了。有时也可能重复定义了。但其实难改的错误并不是这些,当一个程序可以运行时,发现输出的数据存在问题这才是最头疼的,我用了几天时间找一个错误的出错原因。就是销售经理的工资

29、和排序有问题。整个程序编译连接都没有问题,除了销售经理的工资外其他数据也都正确。最后找老师帮忙,才发现是一处极不起眼的地方出现了错误,程序段是这样的:for(i=0;iD;i+)double sum=0;for(j=0;jC;j+)if(SMi.turn_num()=Sj.turn_belong() /其中的i被我写成了jsum+=Sj.turn_sales_money();wagei=sum*c+b;所以说,算法出错时最不好改的,比较计算机是机器。 总体来说,在整个程序中,我们通过使用while循环,switch语句,冒泡排序法,表格设计中的setw()以及类的定义及使用来完成程序设计,使我提高了对C+中语句的使用能力和组合能力,进一步加强了我对使用C+编程的能力。通过这次实习,对C+进行了更如的了解,得到了宝贵的经验,许多同学都有了很大的收获,对程序的优化问题也有了一定认识。然而我写的程序不算灵活,因为人数都是固定的,如果能定义成动态的,并且设置一些查找函数,增加多级菜单,我想程序会更实用。18

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

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

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