小型公司工资管理系统C++实习(9页).doc
-小型公司工资管理系统C+实习-第 7 页中国石油大学(华东)信息与控制工程学院程序设计实习报告小型公司工资管理系统的设计与实现专业班级:电气12级4班学号:120534xx姓名:xxx起止日期:2013.7.222013.7.27指导老师:董超群 2013年7月27日 目录一、 实习内容1 1.1、课程设计的目的1 1.2、设计题目及要求1二、 设计思路2三、 程序清单43.1、程序源代码4四、 运行结果134.1、程序运行144.2、备份文本信息15五、 程序使用说明16六、 总结及心得体会17三、程序清单#include <iostream>#include <string>#include <cstdlib>#include <fstream>#include<iomanip>using namespace std;const int A=1,B=2,C=1,D=1;/定义全局常变量int n=0;int m2=0,0;int t2;/以下是5个类的设计class Staff/雇员类(基类) public: void data_cin()/成员函数 cout<<"其姓名:"cin>>name; cout<<"性别(m/w):"cin>>sex; cout<<"年龄:"cin>>age; 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 pay;class Technician:public Staff/技术员类(雇员类派生类) public: void data_cin() cout<<"技术员的编号:"cin>>num; Staff:data_cin(); cout<<"工作时间:"cin>>time; int turn_pay1() return 100*time; protected: int time;class Salesman:public Staff/销售员类(雇员类派生类) public: Salesman()sales_money=0; void data_cin() cout<<"销售员的编号:"cin>>num; Staff:data_cin(); cout<<"销售额:"cin>>sales_money; cout<<"所属销售经理的编号:"cin>>belong; pay=sales_money*0.04; int turn_sales_money() return sales_money; int turn_belong() return belong; int turn_pay2() return sales_money*0.04; protected: int sales_money; int belong;class Manager:public Staff/经理类(雇员类派生类) public: void data_cin() cout<<"经理的编号:"cin>>num; Staff:data_cin(); pay=8000; int turn_pay3() return 8000;class Salesmanager:public Manager/销售经理类(经理类派生类) public: int turn_num() return num; void data_cin() cout<<"销售经理的编号:"cin>>num; Staff:data_cin();/以下是对象或对象数组的定义Technician TA;Manager MB;Salesman SC;Salesmanager SMD;/有关函数的声明和定义void fun1();void qian();void zhong();void hou();void fun1()cout<<"-"<<endl;void qian()cout<<""<<endl;cout<<" 职工号 姓名 性别 年龄 工资 "<<endl;void zhong()cout<<""<<endl;void hou()cout<<""<<endl;double wageD;/工资计算方法double SM_wage(Salesman S,Salesmanager SM)int i,j,k;double p;Salesmanager q;for(k=0;k<D;k+) wagek=0; for(i=0;i<D;i+)double sum=0; for(j=0;j<C;j+) if(SMi.turn_num()=Sj.turn_belong()sum+=Sj.turn_sales_money(); wagei=sum*0.005+5000; for(i=0;i<D-1;i+) for(j=0;j<D-1-i;j+) if(wagej<wagej+1)p=wagej+1;wagej+1=wagej;wagej=p; q=SMj+1;SMj+1=SMj;SMj=q; return 0;/以下是主函数int main()int flag=1,operate;docout<<" 小型公司工资管理系统n"cout<<" n"cout<<" 请选择您所需的操作 n"cout<<" 数据输入:1,并按回车键 n"cout<<" 数据统计:2,并按回车键 n"cout<<" 数据打印:3,并按回车键 n"cout<<" 数据备份:4,并按回车键 n"cout<<" 退出系统:5,并按回车键 n"cout<<" n"cout<<" 请选择一个操作: "cin>>operate;switch(operate)case 1:/在此添加代码,完成数据输入功能cout<<"请输入数据:"<<endl;cout<<"正在输入数据."<<endl;fun1(); int i; for(i=0;i<A;i+)Ti.data_cin();cout<<endl; fun1(); for(i=0;i<B;i+)Mi.data_cin();cout<<endl; fun1(); for(i=0;i<C;i+)Si.data_cin();cout<<endl; fun1(); for(i=0;i<D;i+)SMi.data_cin();cout<<endl; fun1();break;case 2:/在此添加代码,完成数据统计功能cout<<"请等待."<<endl;cout<<"正在进行数据统计."<<endl;int i,j; for(i=0;i<D;i+)cout<<"职工号为"<<SMi.turn_num()<<"销售经理"<<SMi.turn_name()<<"下属销售员的业绩为:"<<endl; cout<<""<<endl; cout<<" 职工号 姓名 销售额 "<<endl; for(j=0;j<C;j+) if(Sj.turn_belong()=SMi.turn_num()cout<<""<<endl; cout<<""<<setw(12)<<Sj.turn_num()<<""<<setw(12)<<Sj.turn_name()<<""<<setw(12)<<Sj.turn_sales_money()<<""<<endl; mi+=Sj.turn_sales_money(); cout<<""<<endl; cout<<"销售额总计 "<<setw(20)<<mi<<" "<<endl; cout<<""<<endl; cout<<"销售经理排序为:"<<endl; qian(); SM_wage(S,SM); for(i=0;i<D;i+)zhong(); cout<<""<<setw(6)<<SMi.turn_num()<<" "<<setw(6)<<SMi.turn_name()<<" "<<setw(6)<<SMi.turn_sex()<<" "<<setw(6)<<SMi.turn_age()<<" "<<setw(6)<<wagei<<" "<<endl; hou();break;case 3:/在此添加代码,完成数据打印功能cout<<"请等待."<<endl;cout<<"正在进行数据打印."<<endl;SM_wage(S,SM);int i; cout<<"请稍等"<<endl; cout<<"职工基本情况一览表如下:"<<endl; cout<<"技术员"<<endl; qian(); for(i=0;i<A;i+)zhong(); cout<<""<<setw(6)<<Ti.turn_num()<<" "<<setw(6)<<Ti.turn_name()<<" "<<setw(6)<<Ti.turn_sex()<<" "<<setw(6)<<Ti.turn_age()<<" "<<setw(6)<<Ti.turn_pay1()<<" "<<endl;hou();fun1();cout<<"经理"<<endl;qian();for(i=0;i<B;i+)zhong();cout<<""<<setw(6)<<Mi.turn_num()<<" "<<setw(6)<<Mi.turn_name()<<" "<<setw(6)<<Mi.turn_sex()<<" "<<setw(6)<<Mi.turn_age()<<" "<<setw(6)<<Mi.turn_pay3()<<" "<<endl;hou();fun1();cout<<"销售经理"<<endl;qian();for(i=0;i<D;i+)zhong();cout<<""<<setw(6)<<SMi.turn_num()<<" "<<setw(6)<<SMi.turn_name()<<" "<<setw(6)<<SMi.turn_sex()<<" "<<setw(6)<<SMi.turn_age()<<" "<<setw(6)<<wagei<<" "<<endl;hou();fun1();cout<<"销售员"<<endl;cout<<""<<endl;cout<<" 职工号 姓名 性别 年龄 工资 所属部门经理编号"<<endl;for(i=0;i<C;i+)cout<<""<<endl; cout<<""<<setw(6)<<Si.turn_num()<<" "<<setw(6)<<Si.turn_name()<<" "<<setw(6)<<Si.turn_sex()<<" "<<setw(6)<<Si.turn_age()<<" "<<setw(6)<<Si.turn_pay2()<<" "<<setw(10)<<Si.turn_belong()<<" "<<endl;cout<<""<<endl;fun1();break;case 4:/在此添加代码,完成数据备份功能cout<<"请等待."<<endl;cout<<"正在进行数据备份."<<endl;SM_wage(S,SM); int i;ofstream outfile;outfile.open("工资管理系统.txt",ios:out); outfile<<"职工基本情况一览表如下:"<<'n'<<endl; outfile<<"技术员"<<endl;outfile<<""<<endl;outfile<<" 职工号 姓名 性别 年龄 工资 "<<endl;for(i=0;i<A;i+)outfile<<""<<endl;outfile<<""<<setw(6)<<Ti.turn_num()<<" "<<setw(6)<<Ti.turn_name()<<" "<<setw(6)<<Ti.turn_sex()<<" "<<setw(6)<<Ti.turn_age()<<" "<<setw(6)<<Ti.turn_pay1()<<" "<<endl;outfile<<""<<endl;outfile<<"-"<<endl;outfile<<"经理"<<endl;outfile<<""<<endl;outfile<<" 职工号 姓名 性别 年龄 工资 "<<endl;for(i=0;i<B;i+)outfile<<""<<endl;outfile<<""<<setw(6)<<Mi.turn_num()<<" "<<setw(6)<<Mi.turn_name()<<" "<<setw(6)<<Mi.turn_sex()<<" "<<setw(6)<<Mi.turn_age()<<" "<<setw(6)<<Mi.turn_pay3()<<" "<<endl; outfile<<""<<endl; outfile<<"-"<<endl; outfile<<"销售经理"<<endl;outfile<<""<<endl;outfile<<" 职工号 姓名 性别 年龄 工资 "<<endl; for(i=0;i<D;i+)outfile<<""<<endl;outfile<<""<<setw(6)<<SMi.turn_num()<<" "<<setw(6)<<SMi.turn_name()<<" "<<setw(6)<<SMi.turn_sex()<<" "<<setw(6)<<SMi.turn_age()<<" "<<setw(6)<<wagei<<" "<<endl; outfile<<""<<endl;outfile<<"-"<<endl;outfile<<"销售员"<<endl;outfile<<""<<endl;outfile<<" 职工号 姓名 性别 年龄 工资 所属部门经理编号"<<endl;for(i=0;i<C;i+)outfile<<""<<endl;outfile<<""<<setw(6)<<Si.turn_num()<<" "<<setw(6)<<Si.turn_name()<<" "<<setw(6)<<Si.turn_sex()<<" "<<setw(6)<<Si.turn_age()<<" "<<setw(6)<<Si.turn_pay2()<<" "<<setw(10)<<Si.turn_belong()<<" "<<endl;outfile<<""<<endl;outfile<<"-"<<endl;break;case 5:exit(0);/强制结束程序运行!break;default:cout<<"输入错误,请重新1-5间的输入"<<endl;break;while(1);return 0;运行结果