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

下载本文档

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

文档简介

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

2、;   先创建了一个Employer基类.然后派生出四个类: Manager、Technician、Salesman、Salemanager。分别对经理、技术员、销售员、销售经理的数据进行输入。然后选用了一个switch的多分枝选择结构,依次据菜单的选择条件执行数据的输入、数据统计、数据打印、数据备份和退出等。数据的备份要用到fstream类,用来支持对磁盘文件的输入输出。对于switch,结束循环用到exit函数。此函数的参数为任意整数。运行程序后,根据菜单栏的提示选择操作。输入“1”回车后,进入职工基本数据输入栏,在这里,要将所有的技术员、销售员、销售经理、经

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

4、名、性别、年龄、月工资等信息; (2) 工资的计算方法: 经理:固定月薪为8000元; 技术员:工作时间×工资(100元/小时); 销售员:销售额×4%提成; 销售经理:底薪(5000元)+下属销售员销售额总额×0.5%; (3) 员工基本数据的输入: 要求每类人员不能少于4人,其中销售员需要8名,每名销售经理手下有名销售员。3. 实现的基本功能:数据输入、数据统计、数据打印、数据备份、退出。(应用程序中要有菜单,用于选择各项功能)4.菜单说明 数据输入要通过键盘; 统计是统计销售经理下属销售员的销售额及销售额之和,销售经理按工资冒泡排序; 数据打印是以表格形式在

5、屏幕上输出; 数据备份是将所有的员工信息保存到文件; 退出:结束程序运行。二、设计思路从给出的运行结果看主函数是一个选择结构,在这里我采用switch结构,根据学过的c+知识合理的定义类及其对象在类中声明公有函数,来完成对保护数据成员的调用,留作接口,输出数据。 根据运行结果菜单来看知道有5个功能,要分为5个函数来一一实现所需功能,所以在整个系统就要分为5大块来完成。三、程序调试过程中典型问题及解决方法在编写整个程序的第一部分内容数据输入函数时,完成的较快,但是类数组的定义并没有定义为全局数组,虽然把第一天的任务完成了,但是这样的定义给第二天的统计函数的书写造成的极大地不便。结果第二天我又重新

6、修改了第一天的程序,把类数组定义为了全局数组,方便后面程序的调用。在编写打印函数时,遇到了很多难题,像如何把保护类的成员函数给调用出来,刚开始想到是指针的方法,但是经过尝试,可是实现,但是会让程序显得十分冗杂,后来和同学讨论,发现了一种更为简便的方法,在public里面定义一个return函数,通过这个函数可以访问protected里面的成员函数,这样就可以在类外用这些数据。在编写主函数时采用的switch结构,但这个结构只能使用一次,于是我想到了for循环语句,考虑到在输入选择操作时,可能有输错误的行为,所以把这个函数能够循环的最大次数规定到了20次。编写可控各类人员函数时,想要用数组,但是

7、数组必须有初始值,考虑到用户是一家小型公司,就把初始值定为30,方便用户使用。在编写打印备份函数时,由于各类成员姓名长度不一,无法使表格对齐,翻看了课本,学到了一种控制字符长度的变量setw,不论其后的数据占多大的空间,其长度是固定值。四、程序使用说明#include<iostream>#include<string>#include<iomanip>/控制输出量长度的头文件#include<fstream>/输入输出流头文件using namespace std;void datainput();void chose();void statis

8、tics();void print();void backup();int n,i;int a,b,c,d;class Employee/基类雇员类protected:int num,salary;int age;string name;char sex;public:void display();int return_num()/return num;string return_name()/return name;char return_sex()/return sex;int return_age()/return age;int return_salary()/return salar

9、y;void Employee:display()/基类成员函数cout<<"姓名:"cin>>name;cout<<"性别(男士填m/女士填w):"cin>>sex;cout<<"年龄:"cin>>age;class Technician:public Employee/定义技术员类,继承方式为共有继承protected: double worktime;public: void Technician_out()cout<<"技术员编号:&

10、quot;cin>>num;/输入技术员编号display();/输入年龄性别姓名 cout<<"工作时间:"cin>>worktime;salary=100*worktime;Technician t30;/技术员class Manager:public Employee/定义经理类,继承方式为共有继承public: void Manager_out()cout<<"经理编号:"cin>>num;/输入经理编号display();/输入年龄性别姓名salary=8000;Manager m30

11、;/经理class Salesman:public Employee/定义销售员类,继承方式为共有继承protected: double amount; int belong_manager_num;public: void Salesman_out()cout<<"销售员编号:"cin>>num;/输入销售员编号display();/输入年龄性别姓名cout<<"销售额:" cin>>amount;/输入销售额salary=amount*0.04;cout<<"所属经理编号:&quo

12、t;cin>>belong_manager_num;/输入所属经理编号int fun1() /return belong_manager_num;string fun2() /return name;int fun3() /return amount;Salesman s30;/销售员class SalesManager:public Employee/定义销售经理类,继承方式为共有继承protected:int saleroom;public: void SalesManager_out()cout<<"销售经理编号:"cin>>num

13、;/输入销售经理编号display();/输入年龄性别姓名void SalesManager_salary_calculate(int n)/销售经理工资计算salary=n*0.005+5000;saleroom=n;int return_salary()return salary;int return_saleroom()return saleroom;SalesManager sm30;/销售经理void main()/主函数for(i=0;i<20;i+)chose();switch (n)case 1:datainput();break;case 2:statistics();

14、break;case 3:print();break;case 4:backup();break;case 5:exit(0);break;default :cout<<"您输入的数字错误!"<<endl;void chose()cout<<" 小型公司工资管理系统"<<endl;cout<<""<<endl;cout<<" 请选择您所需的操作 "<<endl;cout<<" 数据输入:1,并按回车

15、键 "<<endl;cout<<" 数据统计:2,并按回车键 "<<endl;cout<<" 数据打印:3,并按回车键 "<<endl;cout<<" 数据备份:4,并按回车键 "<<endl;cout<<" 退出系统:5,并按回车键 "<<endl;cout<<""<<endl;cout<<"请选择您的操作!"cin>

16、;>n;void datainput()/数据输入函数int i;cout<<"请输入各个职位函数"<<endl;cout<<"技术员:"cin>>a;cout<<"经理:"cin>>b;cout<<"销售员:"cin>>c;cout<<"销售经理:"cin>>d;cout<<""<<endl;for(i=0;i<a;i+

17、)ti.Technician_out();cout<<""<<endl;for(i=0;i<b;i+)mi.Manager_out();cout<<""<<endl;for(i=0;i<c;i+)si.Salesman_out();cout<<""<<endl;for(i=0;i<d;i+)smi.SalesManager_out();cout<<""<<endl;void order()/冒泡排序函数

18、SalesManager p;for(int y=0;y<d-1;y+)for(int z=1;z<d;z+)if(smy.return_saleroom()<smz.return_saleroom()p=smz;smz=smy;smy=p;void statistics()/统计函数for(int x=0;x<d;x+)int sum=0;int j;cout<<"职工号为"<<smx.return_num()<<"销售经理"<<smx.return_name()<<&

19、quot;下属销售员的业绩为:"<<endl;cout<<""<<endl;cout<<" 职工号 姓名 销售额 "<<endl;for(j=0;j<c;j+)if(smx.return_num()=sj.fun1()cout<<""<<endl;sum=sum+sj.fun3();cout<<""<<setw(14)<<sj.return_num()<<"&

20、quot;<<setw(14)<<sj.return_name()<<""<<setw(14)<<sj.fun3()<<""<<endl;smx.SalesManager_salary_calculate(sum);cout<<""<<endl;cout<<""<<setw(14)<<"销售额总计"<<""<<

21、setw(30)<<sum<<""<<endl;cout<<""<<endl;cout<<"销售经理按工资排序为:"<<endl;cout<<""<<endl;cout<<" 职工号 姓名 性别 年龄 工资 "<<endl;order();for(int i=0;i<d;i+)cout<<""<<endl;cout&

22、lt;<""<<setw(12)<<smi.return_num()<<""<<setw(12)<<smi.return_name()<<""<<setw(12)<<smi.return_sex()<<""<<setw(12)<<smi.return_age()<<""<<setw(12)<<smi.return_salar

23、y()<<""<<endl;cout<<""<<endl;/打印函数void print()int i,j,k;cout<<"请等待"<<endl;cout<<"职工基本情况一览表如下"<<endl;cout<<"技术员"<<endl;/技术员cout<<""<<endl;cout<<" 职工号 姓名 性别 年龄

24、 工资 "<<endl;for(i=0;i<a;i+)cout<<""<<endl;cout<<""<<setw(10)<<ti.return_num()<<""<<setw(10)<<ti.return_name()<<""<<setw(10)<<ti.return_sex()<<""<<setw(10)<

25、<ti.return_age()<<""<<setw(10)<<ti.return_salary()<<""<<endl;cout<<""<<endl;cout<<""<<endl;cout<<"经理"<<endl;/经理cout<<""<<endl;cout<<" 职工号 姓名 性别 年龄 工

26、资 "<<endl;for(i=0;i<b;i+)cout<<""<<endl;cout<<""<<setw(10)<<mi.return_num()<<""<<setw(10)<<mi.return_name()<<""<<setw(10)<<mi.return_sex()<<""<<setw(10)<&l

27、t;mi.return_age()<<""<<setw(10)<<mi.return_salary()<<""<<endl;cout<<""<<endl;cout<<""<<endl;cout<<"销售经理"<<endl;/销售经理cout<<""<<endl;cout<<" 职工号 姓名 性别 年龄

28、 工资 "<<endl;for(k=0;k<d;k+)int sum=0;for(j=0;j<c;j+)if(smk.return_num()=sj.fun1()sum=sum+sj.fun3();smk.SalesManager_salary_calculate(sum);cout<<""<<endl;cout<<""<<setw(10)<<smk.return_num()<<""<<setw(10)<<

29、smk.return_name()<<""<<setw(10)<<smk.return_sex()<<""<<setw(10)<<smk.return_age()<<""<<setw(10)<<smk.return_salary()<<""<<endl;cout<<""<<endl;cout<<""<&l

30、t;endl;cout<<"销售员"<<endl;/销售员cout<<""<<endl;cout<<" 职工号 姓名 性别 年龄 工资 所属经理编号 "<<endl;for(i=0;i<c;i+)cout<<""<<endl;cout<<""<<setw(10)<<si.return_num()<<""<<setw(

31、10)<<si.return_name()<<""<<setw(10)<<si.return_sex()<<""<<setw(10)<<si.return_age()<<""<<setw(10)<<si.return_salary()<<""<<setw(14)<<si.fun1()<<""<<endl;cout<

32、;<""<<endl;cout<<""<<endl;void backup()/备份函数ofstream putout;/建立输出文件流对象putout.open("职员基本信息备份.txt");/使文件流与txt文件建立关联putout<<"职工基本情况一览表如下"<<endl;putout<<"技术员"<<endl;/技术员putout<<""<<endl;p

33、utout<<" 职工号 姓名 性别 年龄 工资 "<<endl;for(i=0;i<a;i+)putout<<""<<endl;putout<<""<<setw(10)<<ti.return_num()<<""<<setw(10)<<ti.return_name()<<""<<setw(10)<<ti.return_sex()<

34、<""<<setw(10)<<ti.return_age()<<""<<setw(10)<<ti.return_salary()<<""<<endl;putout<<""<<endl;putout<<""<<endl;putout<<"经理"<<endl;/经理putout<<""&l

35、t;<endl;putout<<" 职工号 姓名 性别 年龄 工资 "<<endl;for(i=0;i<b;i+)putout<<""<<endl;putout<<""<<setw(10)<<mi.return_num()<<""<<setw(10)<<mi.return_name()<<""<<setw(10)<<mi.retu

36、rn_sex()<<""<<setw(10)<<mi.return_age()<<""<<setw(10)<<mi.return_salary()<<""<<endl;putout<<""<<endl;putout<<""<<endl;putout<<"销售经理"<<endl;/销售经理putout<<""<<endl;putout<<" 职工号 姓名 性别 年龄 工资 "<<endl;for(int k=0;k<d;k+)int sum=0;for(int j=0;j<c;j+)if(smk.return_num()=sj.fun1()sum=sum+sj.fun3();smk.SalesManager_salary_calculate(sum);putout<<""<<endl;putout<<"&quo

温馨提示

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

评论

0/150

提交评论