《面向对象程序设计》课程设计报告-小型公司工资管理系统.doc

上传人:西安人 文档编号:5017391 上传时间:2020-01-28 格式:DOC 页数:30 大小:251KB
返回 下载 相关 举报
《面向对象程序设计》课程设计报告-小型公司工资管理系统.doc_第1页
第1页 / 共30页
《面向对象程序设计》课程设计报告-小型公司工资管理系统.doc_第2页
第2页 / 共30页
《面向对象程序设计》课程设计报告-小型公司工资管理系统.doc_第3页
第3页 / 共30页
《面向对象程序设计》课程设计报告-小型公司工资管理系统.doc_第4页
第4页 / 共30页
《面向对象程序设计》课程设计报告-小型公司工资管理系统.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《《面向对象程序设计》课程设计报告-小型公司工资管理系统.doc》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课程设计报告-小型公司工资管理系统.doc(30页珍藏版)》请在三一文库上搜索。

1、面向对象程序设计课程设计报告题目:小型公司工资管理系统院系:专业班级:学号:学生姓名:小组成员:2011年9月7日一、 引言本题对程序有如下要求:(1)公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。 (2)工资的计算方法: A.经理:固定月薪为8000; B.技术员:工作时间*小时工资(100元每小时); C.销售员:销售额*4%提成; D.销售经理:底薪(5000)+所辖部门销售额总额*0.5%; (3)输入数据要求每类人员不能少于4人,并按以下格式输出: 职工号姓名性别年龄岗位工资排名 及某部门经理所辖部门各售货员的业绩及

2、自己的工资表: (4)菜单要求:要有一个菜单,用于选择各项功能,其中 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(); 进行数据查询操作voi

4、d data_save(); 进行数据备份操作ofstream对C+程序设计实习.txt进行操作void save_new();保存新增加的联系人ofstream对C+程序设计实习.txt进行操作void menu(); 显示主菜单四、结果显示图:五、程序清单:#include#include#include#include#includeusing namespace std;/常变量(供修改用):const int n1=2,n2=2,n3=4,n4=2; /*定义公司各类职工人数(方便修改) (n1:技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数 )*/const do

5、uble 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(); /主菜单void menu2(); /数据输入二级菜单void menu3(); /数据打印二级菜单void data_input(); /数据输入函数void data_print

6、(); /数据打印void charthead1(); /制作表头1函数,统计销售额void charthead2(); /制作表头2函数,数据打印void chartend(); /制作表尾 void statistics(); /数据统计double sm_salary(); /销售经理工资计算void sm_print(); /销售经理打印数据void data_find(); /数据查询void data_save(); /数据备份ofstream outfile; /打开磁盘文件流对象string f_name; /全局变量(查询用)/定义类:class Employee /雇员类(

7、基类)public: void input() /数据输入函数 coutnum; coutname; coutsex; coutage; void print() /打印数据函数 coutendl; coutsetw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay endl; void find() /查询函数 if(f_name=name) charthead2(); print(); chartend(); coutendl; void save() /备份数据函数 outfileendl; outfilesetw(6)num set

8、w(8)name 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 /技术员类(公有继承) public: void input() cout技术员的; Employee:input(); coutworktime; void print() pay=worktime*hourpay; Employee:print(

9、); void find() Employee:find(); void save() pay=worktime*hourpay; Employee:save(); protected: double worktime; /工作时间(小时);class Manager:public Employee /经理类public: void input() cout经理的; Employee:input(); void print() pay=m_salary; Employee:print(); void find() Employee:find(); void save() pay=m_salar

10、y; Employee:save(); ;class Sell_manager:public Employee /销售经理类public: void input() cout销售经理的; Employee:input(); int sm_number() /调用销售经理职工号 return num; string sm_name() /调用销售经理姓名 return name; void print() coutendl; coutsetw(6)num setw(8)name setw(6)sex setw(6) age ; void save() outfileendl; outfilese

11、tw(6)num setw(8)name setw(6)sex setw(6) age ; ;class Seller:public Employee /销售员类public: Seller() sold_amount=0; /构造函数,销售额初始化为0 void input() cout销售员的; Employee:input(); coutsold_amount; coutnu; void grade() /销售员业绩输出 coutendl; coutsetw(6)num setw(8)name setw(7)sold_amount endl; void print() pay=sold_

12、amount*s_proportion; coutendl; coutsetw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay setw(13)nu endl; int s_number() /调用销售员所属销售经理职工号 return nu; double amount() /调用销售员销售额 return sold_amount; void find() if(f_name=name) coutendl; cout 职 工 号 姓 名 性 别 年 龄 工 资 所属部门经理编号 endl; print(); cout; void sav

13、e() pay=sold_amount*s_proportion; outfileendl; outfilesetw(6)num setw(8)name setw(6)sex setw(6) age setw(7)pay setw(13)nu endl; protected: double sold_amount; /销售额 int nu; /所属销售经理职工号;/定义全局对象数组 Technician tn1; /技术员 Manager mn2; /经理 Seller sn3; /销售员 Sell_manager smn4; /销售经理(下属若干销售员)/主函数部分:int main() c

14、har n; menu(); for(int i=0;in; switch(n) case1: /数据输入 coutendl您所选操作为数据输入,请继续-endlendl; data_input(); coutendl; menu(); break; case2: /数据统计 coutendl您所选操作为数据统计,请继续-endlendl; statistics(); coutendl销售经理按工资排序为:nendl; sm_print(); coutendl; menu(); break; case3: /数据打印 coutendl您所选操作为数据打印,请继续-endlendl; couta

15、数据打印中,请等待nnendl; cout职工基本情况一览表如下:nendl; data_print(); coutendlendl; couta-数据打印完毕-nnendl; menu(); break; case4: /数据查询 coutendl您所选操作为数据查询,请继续-endlendl; coutf_name; coutendl-正在查询,请等待-endlendl; cout您查询的信息如下:endlendl; data_find(); coutendlendl; menu(); break; case5: /数据备份 outfile.open(C+程序设计实习.txt,ios:ou

16、t); /打开磁盘文件流对象 coutendl您所选操作为数据备份,请继续-endlendl; outfile职工基本情况一览表如下:nendl; data_save(); outfile.close(); coutendlendl; couta-数据备份完成,请继续-endlendl; menu(); break; case0: /退出系统 coutendl您所选操作为退出系统,请确认-endlendl; cout 是( y ) n; if(n=y) coutn-请按任意键退出系统-endl; exit(0); coutendl; else menu(); break; default: c

17、outendl-出错!请重新选择操作! nendl; menu(); break; return 0;/自定义函数部分:void menu() /菜单函数 cout 小型公司工资管理系统 endl; coutendl; cout 请选择您所需的操作 endl; cout 数据输入:1,并按回车键; endl; cout 数据统计:2,并按回车键; endl; cout 数据打印:3,并按回车键; endl; cout 数据查询:4,并按回车键; endl; cout 数据备份:5,并按回车键; endl; cout 退出系统:0,并按回车键; endl; coutendl; cout 请选择一

18、个操作:;void menu2() /数据输入二级菜单函数 cout 小型公司工资管理系统 endl; coutendl; cout 请选择您所需的操作 endl; cout 经理数据输入 :1,并按回车键; endl; cout 技术员数据输入 :2,并按回车键; endl; cout 销售员数据输入 :3,并按回车键; endl; cout 销售经理数据输入:4,并按回车键; endl; cout 返回上一级 :5,并按回车键; endl; coutendl; cout 请选择一个操作:;void menu3() /数据打印二级菜单函数 cout 小型公司工资管理系统 endl; cout

19、endl; cout 请选择您所需的操作 endl; cout 经理数据打印 :1,并按回车键; endl; cout 技术员数据打印 :2,并按回车键; endl; cout 销售员数据打印 :3,并按回车键; endl; cout 销售经理数据打印:4,并按回车键; endl; cout 返回上一级 :5,并按回车键; endl; coutendl; cout 请选择一个操作:;void data_input() /数据输入函数 char p;int i; menu2(); for(int j=0;jp; if(p=5) break; else switch(p) case1: for(i

20、=0;in2;i+) mi.input(); coutendl-endl;menu2();break; case2: for(i=0;in1;i+) ti.input(); coutendl-endl;menu2();break; case3: for(i=0;in3;i+) si.input(); coutendl-endl;menu2();break; case4: for(i=0;in4;i+) smi.input(); coutendl-endl;menu2();break; void charthead1() /制表头1(数据统计用) coutendl; cout职 工 号 姓 名

21、销 售 额 endl;void charthead2() /制表头2(数据打印及销售经理数据统计用) coutendl; cout 职 工 号 姓 名 性 别 年 龄 工 资 endl;void chartend() /制表尾(数据打印及销售经理数据统计用) cout; void statistics() /数据统计函数 int i,j; for(i=0;in4;i+) double sum=0; coutendl职工号为 smi.sm_number() 销售经理 smi.sm_name() 下属销售员的业绩为:endlendl; charthead1(); for(j=0;jn3;j+) i

22、f(sj.s_number()=smi.sm_number() sum=sum+sj.amount(); sj.grade(); coutendl; cout销售额总计setw(12)sum endl; coutendl; double salaryn4;double sm_salary() /销售经理工资计算及排序 int i,j;double a ;Sell_manager b; for(int k=0;kn4;k+) salaryk=0; for(i=0;in4;i+) double sum=0; for(j=0;jn3;j+) if(sj.s_number()=smi.sm_numbe

23、r() sum=sum+sj.amount(); salaryi=sum*sm_proportion+basicpay; for( j=0;jn4-1;j+) for( i=0;in4-1-j;i+) if(salaryisalaryi+1) a=salaryi+1;salaryi+1=salaryi;salaryi=a; b=smi+1;smi+1=smi;smi=b; return 0;void sm_print() sm_salary(); charthead2(); for(int i=0;in4;i+) smi.print(); coutsetw(7)salaryi endl; ch

24、artend(); coutendl;void data_print() /数据打印 char p;int i,j; menu2(); for(j=0;jp; if(p=5) break; else switch(p) case1: coutendl经理endl; /经理信息 charthead2(); for(i=0;in2;i+) mi.print(); chartend(); coutendlendl-endl; menu3();break; case2: coutendl技术员endl; /技术员信息 charthead2(); for(i=0;in1;i+) ti.print();

25、chartend(); coutendlendl-endl; menu3();break; case3: coutendl销售员endl; /销售员信息 coutendl; cout 职 工 号 姓 名 性 别 年 龄 工 资 所属部门经理编号 endl; for(i=0;in3;i+) si.print(); cout; coutendlendl-nendl; menu3();break; case4: coutendl销售经理endl; /销售经理信息 sm_salary(); sm_print(); coutendlendl-endlendl; menu3();break; void d

26、ata_find() /数据查询函数 for(int i=0;in1;i+) ti.find(); for(i=0;in2;i+) mi.find(); for(i=0;in3;i+) si.find(); for(i=0;in4;i+) if(f_name=smi.sm_name() charthead2(); smi.print(); coutsetw(7)salaryi endl; chartend(); coutendl; break; void data_save() /数据备份函数 outfileendl技术员endl; /技术员信息 outfileendl; outfile 职

27、工 号 姓 名 性 别 年 龄 工 资 endl; for(int i=0;in1;i+) ti.save(); outfile; outfileendlendl-endl; outfileendl经理endl; /经理信息 outfileendl; outfile 职 工 号 姓 名 性 别 年 龄 工 资 endl; for(i=0;in2;i+) mi.save(); outfile; outfileendlendl-endl; outfileendl销售经理endl; /销售经理信息 sm_salary(); outfileendl; outfile 职 工 号 姓 名 性 别 年 龄

28、 工 资 endl; for(i=0;in4;i+) smi.save(); outfilesetw(7)salaryi endl; outfile; outfileendlendl-endlendl; outfileendl销售员endl; /销售员信息 outfileendl; outfile 职 工 号 姓 名 性 别 年 龄 工 资 所属部门经理编号 endl; for(i=0;in3;i+) si.save(); outfile; outfileendlendl-nendl;六、程序调试心得体会:从网上找了一些相类似的程序,自己开始看模仿,有一部分百度一下,翻翻书,使我的只是增长不少。运行时也有一些错误,对于每个问题都百度一下,找一下原因,理解透。使我的编程能力有一定的提高。七、参考文献:Walter Savitch著,周靖译,C+面向对象程序设计第七版- 30 -

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1