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





《《面向对象程序设计》课程设计报告_小型公司工资管理系统.doc》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课程设计报告_小型公司工资管理系统.doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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#include#include#include#includeusing namespace std;/常变量(供修改用):const int n1=2,n2=2,n3=4,n4=2; /*定义公司各类职工人数(方便修改) (n1:技术员人数;n2:经理人数;n3:销售员人数;n4:销售经理人数 )*/const double m_salary=
5、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(); /数据打印void
6、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 /雇员类(基类)public: voi
7、d 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 setw(8)name setw(
8、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(); void find()
9、 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_salary; Employee:sa
10、ve(); ;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; outfilesetw(6)num setw(
11、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_amount*s_propo
12、rtion; 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 save() pay=sold_a
13、mount*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() char n; menu();
14、 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数据打印中,请等待nnend
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 课程设计 报告 小型 公司 工资管理 系统

限制150内