版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目:小型公司工资管理系统院系:专业班级:学号:学生姓名:小组成员:2011年9月7日一、 引言本题对程序有如下要求:(1)公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。 (2)工资的计算方法: a.经理:固定月薪为8000; b.技术员:工作时间*小时工资(100元每小时); c.销售员:销售额*4%提成; d.销售经理:底薪(5000)+所辖部门销售额总额*0.5%; (3)输入数据要求每类人员不能少于4人,并按以下格式输出: 职工号姓名性别年龄岗位工资排名 及某部门经理所辖部门各售货员的业绩及自己的工资表: (4)菜单要
2、求:要有一个菜单,用于选择各项功能,其中 1)数据录入:输入各种数据; 2)数据统计:各销售经理的工资计算及最终按工资进行的冒泡排序; 3)数据打印:打印上述表格; 4)数据备份:把相关数据写入文件; 5) 退出:推出本系统;二、 系统功能介绍:充分利用了类的继承与派生的知识,先定义了一个雇员类employee,由雇员类公有派生出技术员类tech,销售员类seller,经理类manager,由销售员类seller,经理类manager公有派生出销售经理类xmanager。把基类都定义为虚基类。通过基类去写的派生类就可以调基类的公有成员。利用for循环把经理数据,技术员数据,销售员数据,销售经理
3、数据输入,利用冒泡排序法把各销售经理的资按升序排列。利用switch进行选择系统进行的工作。在主菜单中进行调用各函数,从而实现系统各功能的运行。 三、 模块设计:主函数进入主显示界面按照提示进行选择数据查询数据备份 退出系统数据输入数据统计数据打印 返回上一级经理数据输入技术员数据输入销售员数据输入销售经理数据输入结束程序四、 各个成员函数间关联:void data_input(); 进行数据输入操作void statistics(); /进行数据统计操作void data_print(); 进行数据打印操作void data_find(); 进行数据查询操作void data_save();
4、 进行数据备份操作ofstream对"c+程序设计实习.txt"进行操作void save_new();保存新增加的联系人ofstream对"c+程序设计实习.txt"进行操作void menu(); 显示主菜单四、结果显示图:五、程序清单:#include<fstream>#include<iostream>#include<string>#include<iomanip>#include<stdlib.h>using namespace std;/常变量(供修改用):const int n1
5、=2,n2=2,n3=4,n4=2; /*定义公司各类职工人数(方便修改) (n1:技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数 )*/const double m_salary=8000; /经理固定月工资const double hourpay=100; /技术员小时工资const double basicpay=5000; /销售经理的底薪const double s_proportion=4.0/100; /销售员的工资提成比例const double sm_proportion=0.5/100; /销售经理的提成比例/声明部分:void menu(); /主菜单v
6、oid menu2(); /数据输入二级菜单void menu3(); /数据打印二级菜单void data_input(); /数据输入函数void data_print(); /数据打印void charthead1(); /制作表头1函数,统计销售额void charthead2(); /制作表头2函数,数据打印void chartend(); /制作表尾 void statistics(); /数据统计double sm_salary(); /销售经理工资计算void sm_print(); /销售经理打印数据void data_find(); /数据查询void data_save(
7、); /数据备份ofstream outfile; /打开磁盘文件流对象string f_name; /全局变量(查询用)/定义类:class employee /雇员类(基类)public: void input() /数据输入函数 cout<<"编号:" cin>>num; cout<<"其姓名:" cin>>name; cout<<"性别(m/w):" cin>>sex; cout<<"年龄:" cin>>age;
8、 void print() /打印数据函数 cout<<""<<endl; cout<<""<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6) <<age<<" "<<setw(7)<<pay
9、<<" "<<endl; void find() /查询函数 if(f_name=name) charthead2(); print(); chartend(); cout<<endl; void save() /备份数据函数 outfile<<""<<endl; outfile<<""<<setw(6)<<num<<" "<<setw(8)<<name<<" &
10、quot;<<setw(6)<<sex<<" "<<setw(6) <<age<<" "<<setw(7)<<pay<<" "<<endl; protected: int num; /职工号 string name; /职工姓名 char sex; /职工性别 int age; /职工年龄 double pay; /职工工资;class technician:public employee /技术员类(公有继承) p
11、ublic: void input() cout<<"技术员的" employee:input(); cout<<"工作时间:" cin>>worktime; void print() pay=worktime*hourpay; employee:print(); void find() employee:find(); void save() pay=worktime*hourpay; employee:save(); protected: double worktime; /工作时间(小时);class manag
12、er:public employee /经理类public: void input() cout<<"经理的" employee:input(); void print() pay=m_salary; employee:print(); void find() employee:find(); void save() pay=m_salary; employee:save(); ;class sell_manager:public employee /销售经理类public: void input() cout<<"销售经理的"
13、employee:input(); int sm_number() /调用销售经理职工号 return num; string sm_name() /调用销售经理姓名 return name; void print() cout<<""<<endl; cout<<""<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<
14、;" "<<setw(6) <<age<<" " void save() outfile<<""<<endl; outfile<<""<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6)
15、 <<age<<" " ;class seller:public employee /销售员类public: seller() sold_amount=0; /构造函数,销售额初始化为0 void input() cout<<"销售员的" employee:input(); cout<<"销售额:" cin>>sold_amount; cout<<"所属销售经理的编号:" cin>>nu; void grade() /销售员业绩输出
16、 cout<<""<<endl; cout<<""<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(7)<<sold_amount<<" "<<endl; void print() pay=sold_amount*s_proportion; cout<<""<&l
17、t;endl; cout<<""<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6) <<age<<" "<<setw(7)<<pay<<" "<<setw(13)<<nu<&
18、lt;" "<<endl; int s_number() /调用销售员所属销售经理职工号 return nu; double amount() /调用销售员销售额 return sold_amount; void find() if(f_name=name) cout<<""<<endl; cout<<" 职 工 号 姓 名 性 别 年 龄 工 资 所属部门经理编号 "<<endl; print(); cout<<"" void save()
19、pay=sold_amount*s_proportion; outfile<<""<<endl; outfile<<""<<setw(6)<<num<<" "<<setw(8)<<name<<" "<<setw(6)<<sex<<" "<<setw(6) <<age<<" "<<setw
20、(7)<<pay<<" "<<setw(13)<<nu<<" "<<endl; protected: double sold_amount; /销售额 int nu; /所属销售经理职工号;/定义全局对象数组 technician tn1; /技术员 manager mn2; /经理 seller sn3; /销售员 sell_manager smn4; /销售经理(下属若干销售员)/主函数部分:int main() char n; menu(); for(int i=0;i<
21、1000;i+) /设定循环次数(便于各项操作的切换及方便查询) cin>>n; switch(n) case'1': /数据输入 cout<<endl<<"您所选操作为数据输入,请继续-"<<endl<<endl; data_input(); cout<<endl; menu(); break; case'2': /数据统计 cout<<endl<<"您所选操作为数据统计,请继续-"<<endl<<en
22、dl; statistics(); cout<<endl<<"销售经理按工资排序为:"<<'n'<<endl; sm_print(); cout<<endl; menu(); break; case'3': /数据打印 cout<<endl<<"您所选操作为数据打印,请继续-"<<endl<<endl; cout<<'a'<<"数据打印中,请等待"<&
23、lt;'n'<<'n'<<endl; cout<<"职工基本情况一览表如下:"<<'n'<<endl; data_print(); cout<<endl<<endl; cout<<'a'<<"-数据打印完毕-"<<'n'<<'n'<<endl; menu(); break; case'4': /数据查询
24、 cout<<endl<<"您所选操作为数据查询,请继续-"<<endl<<endl; cout<<"请输入您要查询的职工姓名: " cin>>f_name; cout<<endl<<"-正在查询,请等待-"<<endl<<endl; cout<<"您查询的信息如下:"<<endl<<endl; data_find(); cout<<endl<
25、<endl; menu(); break; case'5': /数据备份 outfile.open("c+程序设计实习.txt",ios:out); /打开磁盘文件流对象 cout<<endl<<"您所选操作为数据备份,请继续-"<<endl<<endl; outfile<<"职工基本情况一览表如下:"<<'n'<<endl; data_save(); outfile.close(); cout<<en
26、dl<<endl; cout<<'a'<<"-数据备份完成,请继续-"<<endl<<endl; menu(); break; case'0': /退出系统 cout<<endl<<"您所选操作为退出系统,请确认-"<<endl<<endl; cout<<" 是( y )"<<" "<<"否( n ) " cin>&
27、gt;n; if(n='y') cout<<'n'<<"-请按任意键退出系统-"<<endl; exit(0); cout<<endl; else menu(); break; default: cout<<endl<<"-出错!请重新选择操作! "<<'n'<<endl; menu(); break; return 0;/自定义函数部分:void menu() /菜单函数 cout<<"
28、小型公司工资管理系统 "<<endl; cout<<""<<endl; cout<<" 请选择您所需的操作 "<<endl; cout<<" 数据输入:1,并按回车键; "<<endl; cout<<" 数据统计:2,并按回车键; "<<endl; cout<<" 数据打印:3,并按回车键; "<<endl; cout<<" 数据查询
29、:4,并按回车键; "<<endl; cout<<" 数据备份:5,并按回车键; "<<endl; cout<<" 退出系统:0,并按回车键; "<<endl; cout<<""<<endl; cout<<" 请选择一个操作:"void menu2() /数据输入二级菜单函数 cout<<" 小型公司工资管理系统 "<<endl; cout<<"
30、"<<endl; cout<<" 请选择您所需的操作 "<<endl; cout<<" 经理数据输入 :1,并按回车键; "<<endl; cout<<" 技术员数据输入 :2,并按回车键; "<<endl; cout<<" 销售员数据输入 :3,并按回车键; "<<endl; cout<<" 销售经理数据输入:4,并按回车键; "<<endl; cout
31、<<" 返回上一级 :5,并按回车键; "<<endl; cout<<""<<endl; cout<<" 请选择一个操作:"void menu3() /数据打印二级菜单函数 cout<<" 小型公司工资管理系统 "<<endl; cout<<""<<endl; cout<<" 请选择您所需的操作 "<<endl; cout<<&quo
32、t; 经理数据打印 :1,并按回车键; "<<endl; cout<<" 技术员数据打印 :2,并按回车键; "<<endl; cout<<" 销售员数据打印 :3,并按回车键; "<<endl; cout<<" 销售经理数据打印:4,并按回车键; "<<endl; cout<<" 返回上一级 :5,并按回车键; "<<endl; cout<<""<<en
33、dl; cout<<" 请选择一个操作:"void data_input() /数据输入函数 char p;int i; menu2(); for(int j=0;j<100;j+) cin>>p; if(p='5') break; else switch(p) case'1': for(i=0;i<n2;i+) mi.input(); cout<<endl<<"-"<<endl;menu2();break; case'2': for(
34、i=0;i<n1;i+) ti.input(); cout<<endl<<"-"<<endl;menu2();break; case'3': for(i=0;i<n3;i+) si.input(); cout<<endl<<"-"<<endl;menu2();break; case'4': for(i=0;i<n4;i+) smi.input(); cout<<endl<<"-"<&l
35、t;endl;menu2();break; void charthead1() /制表头1(数据统计用) cout<<""<<endl; cout<<"职 工 号 姓 名 销 售 额 "<<endl;void charthead2() /制表头2(数据打印及销售经理数据统计用) cout<<""<<endl; cout<<" 职 工 号 姓 名 性 别 年 龄 工 资 "<<endl;void chartend() /制
36、表尾(数据打印及销售经理数据统计用) cout<<"" void statistics() /数据统计函数 int i,j; for(i=0;i<n4;i+) double sum=0; cout<<endl<<"职工号为 "<<smi.sm_number()<<" 销售经理 "<<smi.sm_name() <<" 下属销售员的业绩为:"<<endl<<endl; charthead1(); for(
37、j=0;j<n3;j+) if(sj.s_number()=smi.sm_number() sum=sum+sj.amount(); sj.grade(); cout<<""<<endl; cout<<"销售额总计"<<setw(12)<<sum<<" "<<endl; cout<<""<<endl; double salaryn4;double sm_salary() /销售经理工资计算及排序 int
38、 i,j;double a ;sell_manager b; for(int k=0;k<n4;k+) salaryk=0; for(i=0;i<n4;i+) double sum=0; for(j=0;j<n3;j+) if(sj.s_number()=smi.sm_number() sum=sum+sj.amount(); salaryi=sum*sm_proportion+basicpay; for( j=0;j<n4-1;j+) for( i=0;i<n4-1-j;i+) if(salaryi<salaryi+1) a=salaryi+1;salar
39、yi+1=salaryi;salaryi=a; b=smi+1;smi+1=smi;smi=b; return 0;void sm_print() sm_salary(); charthead2(); for(int i=0;i<n4;i+) smi.print(); cout<<setw(7)<<salaryi<<" "<<endl; chartend(); cout<<endl;void data_print() /数据打印 char p;int i,j; menu2(); for(j=0;j<10
40、0;j+) cin>>p; if(p='5') break; else switch(p) case'1': cout<<endl<<"经理"<<endl; /经理信息 charthead2(); for(i=0;i<n2;i+) mi.print(); chartend(); cout<<endl<<endl<<"-"<<endl; menu3();break; case'2': cout<<
41、endl<<"技术员"<<endl; /技术员信息 charthead2(); for(i=0;i<n1;i+) ti.print(); chartend(); cout<<endl<<endl<<"-"<<endl; menu3();break; case'3': cout<<endl<<"销售员"<<endl; /销售员信息 cout<<""<<endl; c
42、out<<" 职 工 号 姓 名 性 别 年 龄 工 资 所属部门经理编号 "<<endl; for(i=0;i<n3;i+) si.print(); cout<<"" cout<<endl<<endl<<"-"<<'n'<<endl; menu3();break; case'4': cout<<endl<<"销售经理"<<endl; /销售经理信
43、息 sm_salary(); sm_print(); cout<<endl<<endl<<"-"<<endl<<endl; menu3();break; void data_find() /数据查询函数 for(int i=0;i<n1;i+) ti.find(); for(i=0;i<n2;i+) mi.find(); for(i=0;i<n3;i+) si.find(); for(i=0;i<n4;i+) if(f_name=smi.sm_name() charthead2(); smi.print(); cout<<setw(7)<<salaryi<<" "<<endl; chartend(); cout<<endl; break; void data_save() /数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灵山特岗笔试题目及答案
- 东莞市恒钜电子迁扩建项目环境影响报告表
- 单招笔试题及答案
- 抽油井系统设计课程设计
- 小学四年级劳动:塑丝毽子公益志愿服务知识清单
- c 课程设计 登录界面
- 小学英语三年级《Unit2ColoursPartCStorytime》跨学科融合教案
- 车辆出入库管理plc课程设计
- 2026届北京市小升初语文分班考试古诗文阅读与名著积累专项60题(含答案解析与评分标准)
- 初中七年级数学上册:探索生活中的立体图形教案
- 2024年贵州省普通高校招生信息表(普通类本科批-历史组合)
- 初中全英文数学试卷
- 航天禁(限)用工艺目录(2021版)-发文稿(公开)
- 新版苏教版六年级数学下册全册教案
- 2021新安全生产法解读
- 2024年广东清远市国有资产经营有限公司招聘笔试参考题库含答案解析
- 现场应急救护知识讲座老年人课件
- 上海交通大学学生生存手册
- 电力建设工程变电工程竣工结算书(示范文本)
- 炼金术化学与哲学教学课件
- 紫苏子、炒紫苏子生产工艺规程
评论
0/150
提交评论