石油大学小型工资管理系统C._第1页
石油大学小型工资管理系统C._第2页
石油大学小型工资管理系统C._第3页
石油大学小型工资管理系统C._第4页
石油大学小型工资管理系统C._第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中国石油大学(华东)信息与控制工程学院程序设计实习报告小型公司工资管理系统设计专业班级:学 号:姓 名:实习时间:2015年7月目录一、实习内容 1二、设计思路 4三、程序调试过程中典型问题及解决方法 5四、程序使用说明 6五、总结及心得体会 222一、实习内容设计一个简单的小型公司管理系统,。了解系统开发的需求设 计、类层次设计、模版分析、模块组装与整体调试的过程;熟悉程序 设计的方法。仁题目:小型公司工资管理系统的设计类的结构先创建了一个 Employer基类.然后派生出四个类 :Manager、 Technician、Salesman、Salemanager。分别对经理、技术员、销售员、

2、 销售经理的数据进行输入。然后选用了一个switch的多分枝选择结构,依次据菜单的选择条 件执行数据的输入、数据统计、数据打印、数据备份和退出等。数据的备份要用到fstream类,用来支持对磁盘文件的输入输出。 对于switch,结束循环用到exit函数。此函数的参数为任意整数。 运行程序后,根据菜单栏的提示选择操作。输入“ 1”回车后,进入职工基本数据输入栏,在这里,要将所有 的技术员、销售员、销售经理、经理的职工号、姓名、性别、工作时 间等信息输入程序中。职工的数据输入完成后自动跳转到菜单栏,选择“2”回车后进入 到数据统计界面,程序会自动对你输入的各销售经理下属销售员的销 售额及销售额之

3、和进行统计,并对销售经理按工资进行排序。数据统计完成后,选择“ 3”,程序会对你输入的职工基本信息进 行打印,打印结果显示在控制台下。在菜单栏中继续选择“ 4”后,程序将对所有的员工信息进行打印 并保存到文件中。最后选择“ 5”,根据提示是否退出本程序,输入“ Y,结束程序 执行;输入“ N,返回主菜单继续进行程序。2. 设计说明与基本要求:(1) 公司主要有4类人员: 经理、技术员、销售员、销售经理。 要求存储这些人的职工号、姓名、性别、年龄、月工资等信息;(2) 工资的计算方法: 经理:固定月薪为8000元;技术员: 工作时间X工资(100元/小时);销售员:销售额X 4%提成;销售 经理

4、:底薪(5000元)+下属销售员销售额总额X 0.5%;(3) 员工基本数据的输入:要求每类人员不能少于 4人,其中销售员需要8名,每名销售经理手下有2名销售员。3. 实现的基本功能:数据输入、数据统计、数据打印、数据备份、 退出。(应用程序中要有菜单,用于选择各项功能)4. 菜单说明 数据输入要通过键盘; 统计是统计销售经理下属销售员的销售额及销售额之和,销售经理按工资冒泡排序; 数据打印是以表格形式在屏幕上输出; 数据备份是将所有的员工信息保存到文件; 退出:结束程序运行。14二、设计思路从给出的运行结果看主函数是一个选择结构,在这里我采用switch结构,根据学过的C+知识合理的定义类及

5、其对象在类中声明 公有函数,来完成对保护数据成员的调用,留作接口,输出数据。根据运行结果菜单来看知道有 5个功能,要分为5个函数来一一实 现所需功能,所以在整个系统就要分为 5大块来完成。三、程序调试过程中典型问题及解决方法在编写整个程序的第一部分内容一一数据输入函数时,完成的较快,但是类数组的定义并没有定义为全局数组,虽然把第一天的任务完成 了,但是这样的定义给第二天的统计函数的书写造成的极大地不便。 结果第二天我又重新修改了第一天的程序,把类数组定义为了全局数 组,方便后面程序的调用。在编写打印函数时,遇到了很多难题,像如何把保护类的成员函数 给调用出来,刚开始想到是指针的方法,但是经过尝

6、试,可是实现, 但是会让程序显得十分冗杂,后来和同学讨论,发现了一种更为简便 的方法,在public里面定义一个return函数,通过这个函数可以访 问protected里面的成员函数,这样就可以在类外用这些数据。在编写主函数时采用的switch结构,但这个结构只能使用一次, 于 是我想到了 for循环语句,考虑到在输入选择操作时,可能有输错误 的行为,所以把这个函数能够循环的最大次数规定到了20次。编写可控各类人员函数时,想要用数组,但是数组必须有初始值,考虑到用 户是一家小型公司,就把初始值定为30,方便用户使用。在编写打印备份函数时,由于各类成员姓名长度不一,无法使表格 对齐,翻看了课本

7、,学到了一种控制字符长度的变量setw,不论其后的数据占多大的空间,其长度是固定值。四、程序使用说明#in clude#in clude#i ncludevioma nip/控制输出量长度的头文件#i nclude/ 输入输出流头文件using n amespace std;void data in put();void chose();void statistics();void prin t();void backup();int n,i;int a,b,c,d;class Employee/基类雇员类protected:int nu m,salary;int age;stri ng n

8、ame;char sex;public:void display();in t return_num()/return nu m;stri ng return_ name()/return n ame;char return_sex()/retur n sex;in t return_age()/retur n age;in t retum_salary()/return salary;;void Employee:display() 基类成员函数cout姓名:;cinn ame;cout性别(男士填m/女士填w):;cin sex;cout年龄:;cin age;class Tech nic

9、ia n:public Employee/定义技术员类,继承方式为共有继承protected:double worktime;public:void Tech nician _out()cout技术员编号:;cinn um;输入技术员编号display();输入年龄性别姓名cout工作时间:;cin worktime;salary=100*worktime;Technician t30;技术员class Man ager:public Employee/定义经理类,继承方式为共有继承 public:void Man ager_out()cout经理编号:;cin num;/输入经理编号disp

10、lay();输入年龄性别姓名salary=8000;Man ager m30; 经理class Salesma n:public Employee/定义销售员类,继承方式为共有继承 protected:double amount;int bel on g_ma nager_ num;public:void Salesma n_out()cout销售员编号:;cinn um;输入销售员编号display();输入年龄性别姓名cout销售额:;cin am oun t;输入销售额salary=am oun t*0.04;coutvv所属经理编号:;cin bel on g_ma nager_ nu

11、 m;/输 入所属经理编号/in t fun 1()return belo ng_ma nager_ nu m;stri ng fun 2()return n ame;in t fun 3()return amoun t;;Salesma n s30;/销售员class SalesMa nager:public Employee定义销售经理类,继承方式为共有继承protected:int saleroom;public:void SalesMa nager_out()coutvv销售经理编号:;cin num;/输入销售经理编号display();输入年龄性别姓名void SalesMa na

12、ger_salary_calculate(i nt n)/肖售经理工资计算salary=n*0.005+5000;saleroo m=n;int return_salary()return salary;int retur n_saleroom()retur n saleroom;SalesMa nager sm30;/销售经理void mai n()/主函数for(i=0;i20;i+) chose();switch (n)case 1:data in put();break;case 2:statistics();break;case 3:pri nt();break;case 4:bac

13、kup();break;case 5:exit(0);break;default :cout您输入的数字错误!endl;void chose()cout小型公司工资管理系统 e ndl;coutvv |vve ndl;coutvv I请选择您所需的操作I vvendl;coutvv I数据输入:1,并按回车键I vvendl;coutvv I数据统计:2,并按回车键I vvendl;coutvv I数据打印:3,并按回车键I vvendl;coutvv I数据备份:4,并按回车键I vvendl;coutvv I退出系统:5,并按回车键I vvendl;coutvvJ vve ndl;cout

14、请选择您的操作!;cinn;数据输入void datainput()/函数int i;coutvv请输入各个职位函数 a;cout经理:;cin b;cout销售员:;cin c;cout销售经理:;cind;cout endl;for(i=0;ia;i+)ti.Tech nicia n_out();cout endl;for(i=0;ib;i+)mi.Ma nager_out();cout endl;for(i=0;ic;i+)si.Salesma n_out();cout endl;for(i=0;id;i+)smi.SalesMa nager_out();cout endl;void o

15、rder()/冒泡排序函数SalesManager p;for(int y=0;yd-1;y+)for(i nt z=1;zd;z+)if(smy.return_saleroom()smz.return_saleroom()p=smz;smz=smy;smy=p;void statistics()/统计函数for(i nt x=0;xd;x+)int sum=0;i nt j;cout职工号为smx.return_num()vv销售经理smx.return_name()下属销售员的业绩为:e ndl;coutvv |111vve ndl;coutvv |职工号|姓名1销售额| vvendl;f

16、or(j=0;jvc;j+)if(smx.return _num( )=sj.fu n1()coutvv |1p1vve ndl;sum=sum+sj.fu n3();cout | vvsetw(14)vvsj.return_num()| setw(14)sj.return_name() |vvsetw(14)vsj.fun3() | endl;smx.SalesMa nager_salary_calculate(sum);cout |111endl;cout | setw(14)销售额总计| setw(30)sum | endl;cout 111e ndl;coutvv销售经理按工资排序为:

17、e ndl;coutvv |1111I endl;coutvv | 职工号 | 姓名 | 性别 | 年龄 | 工资| endl;order();for(i nt i=0;id;i+)coutvv |1111I vvendl;coutvv | vsetw(12)vsmi.return_num()vv | vvsetw(12)vvsmi.return_name()vv |IIvvsetw(12)vvsmi.retur n_sex()vv |vvsetw(12)vvsmi.retur n_age()vv|vvsetw(12)vvsmi.return_salary()vv | vvendl;1 e n

18、dl;/打印函数void prin t()int i,j,k;cout请等待endl;coutvv职工基本情况一览表如下endl;coutvv技术员endl;/ 技术员coutvv |11111e ndl;coutvv | 职工号 丨 姓名 丨 性别 丨 年龄 丨 工资 丨e ndl;for(i=0;ia;i+)coutvv I11111e ndl;coutvv | vvsetw(10)vvti.return_num()vv | vvsetw(10)vvti.return_name()vv |vvsetw(10)vvti.return_sex()vv|vvsetw(10)vvti.return

19、_age()vv|vvsetw(10)vvti.return_salary()vv | vvendl;coutvv 111111vve ndl;coutvv vve ndl;coutvv经理vve ndl;/ 经理coutvv |11111vve ndl;coutvv | 职工号 | 姓名 | 性别 | 年龄 | 工资 |for(i=0;ivb;i+)vve ndl;17cout e ndl;coutvv | vsetw(10)vvmi.return_num()vv | vsetw(10)vvmi.return_name()vv | setw(10)mi.retur n_sex()|setw(

20、10)mi.retur n_age()|setw(10)mi.return_salary() | endl;cout 111111e ndl;cout e ndl;cout销售经理endl;/销售经理coutvv |11111e ndl;coutvv | 职工号 | 姓名 | 性别 | 年龄 | 工资 |e ndl;for(k=0;kd;k+)int sum=0;for(j=0;jc;j+)if(smk.retur n_num( )=sj.f un 1()sum=sum+sj.fu n3();smk.SalesMa nager_salary_calculate(sum);coutvv |111

21、11e ndl;coutvv | vvsetw(10)vvsmk.return_num()vv | vvsetw(10)vvsmk.return_name()vv | vvsetw(10)vvsmk.retur n_sex()vv|vvsetw(10)vvsmk.retur n_age()vv|vvsetw(10)vvsmk.return_salary()vv | vvendl;coutvv 111111vve ndl;18cout e ndl;cout销售员endl;/销售员coutvv |111111 endl;coutvv |职工号 丨 姓名 丨 性别 丨 年龄 丨 工资 丨所属 经理编

22、号I endl;for(i=0;ic;i+)coutvv I111111 vvendl;coutvv | vvsetw(10)vvsi.return_num()vv I vvsetw(10)vvsi.return_name()vv Ivvsetw(10)si.retur n_sex()Ivsetw(10)vsi.retur n_age()Ivvsetw(10)vvsi.return_salary()v I vsetw(14)vvsi.fun1() I endl;coutvv 1111111 vve ndl;coutvvvve ndl;void backup()/备份函数ofstream put

23、out;/建立输出文件流对象putout.open(职员基本信息备份.txt);/使文件流与txt文件建立关联putoutvv职工基本情况一览表如下vvendl;putoutvv技术员vvendl;/ 技术员putoutvv |11111vve ndl;putoutvv I 职工号 I 姓名 I 性别 I 年龄 I 工资 Ivve ndl;20for(i=0;ia;i+) putoutvv | e ndl;putoutvv | vsetw(10)vvti.return_num()vv | vvsetw(10)vvti.return_name()vv | setw(10)vti.return_s

24、ex()vv|vvsetw(10)vti.return_age()vv|vvsetw(10)vti.return_salary()vv | endl;putoutvv 111111e ndl;putoutvv e ndl;putoutvv经理vve ndl;/经理putoutvv |11111e ndl;putoutvv | 职工号 | 姓名 | 性别 | 年龄 | 工资 |vve ndl;for(i=0;ivb;i+)putoutvv |11111vve ndl;putoutvv | vvsetw(10)vvmi.return_num()vv | vvsetw(10)vvmi.return_

25、name()vv |vvsetw(10)vvmi.retur n_sex()vv|vvsetw(10)vvmi.retur n_age()vv|vvsetw(10)vvmi.return_salary()vv | vvendl;putoutvv 111111vve ndl;putoutvv vve ndl;putoutvv销售经理vvendl;/销售经理e ndl;putoutvv | 职工号 丨 姓名 丨 性别 丨 年龄 丨 工资 Ie ndl;for(int k=O;kd;k+)int sum=0;for(i nt j=O;jc;j+)if(smk.retur n_num( )=sj.f

26、un 1()sum=sum+sj.fu n3();smk.SalesMa nager_salary_calculate(sum);putoutvv I11111e ndl;putoutvvIvvsetw(10)vsmk.return_num()vvIvvsetw(10)vsmk.return_name()vv I setw(10)smk.retur n_sex()Ivsetw(10)vsmk.retur n_age()Ivvsetw(10)vsmk.return_salary()vv I endl;putoutvv 111111e ndl;putoutvv vve ndl;putoutvv销售员vvendl;/销售员putoutvv |111111 vvendl;putoutvv I职工号 I 姓名 I 性别 I 年龄丨

温馨提示

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

评论

0/150

提交评论