类的抽象与类间关系
Ø Date类:日期类,表示一个日期
Ø Department类:表示部门类。
Ø Employee类:表示员工的抽象类。
Ø Technician类:表示技术员类。
Ø Saler类:表示销售员类。
Ø Manager类:表示经理类。
Ø SalerManager类:表示销售经理类。
类间关系——组合关系,如下图如下。
1 主控模块运行界面
2 添加信息模块运行界面
3 查询信息模块运行界面
4.删除信息模块运行界面
5 显示信息模块运行界面
6 部门管理运行界面
7 部门信息浏览界面
8 按部门统计信息界面
9 工资排序运行界面
10 部门相关操作运行界面
11 退出模块运行界面
部分代码:
//data.h //类的设计
//类的设计
#ifndef _EMPLOYEE
#define _EMPLOYEE
#include <map>
#include "define.h"
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
/*日期类*/
class Date
{
protected:
int age;
int year;
int month;
int day;
public:
void Init(int y, int m, int d);
int GetYear();
int GetMonth();
int GetDay();
int GetAge();
};
/*部门类*/
class Department
{
protected:
static int dCount; //部门数目
string *str; //储存所有部门
int *bianhao; //部门编号
public:
Department(); //默认构造函数
~Department(); //清理动态申请的空间
void InitDep(string *s, int *b, int length); //加载文件后初始化部门信息
string Check(string d); //查找是否有这个部门 <绑定关系>
void Add(string NewDep); //添加部门
void Delete(string OldDep); //删除部门
void Modify(string OldDep, string NewDep); //修改部门的名字 depNa原来部门的名字 dep_Na修改后的名字
void Scan(); //浏览部门
int GetDNumber(string d); //获取部门编号
static int GetDCount(); //获取部门数目
string GetDep(int choice); //获取所需部门
};
/*员工抽象类*/
class Employee //派生类成员函数可以访问直接基类的保护成员,但派生的派生则不可以
{
protected:
static int eCount; //员工数目
static int MaxNum; //最大工号
int number; //工号 (系统自动赋值 不输入)
int age; //年龄
float salary; //当月工资
string name; //姓名
string sex; //性别
string department; //员工所属的部门
Department dep; //部门 (类的组合)
string job; //岗位
Date date; //日期类
public:
Employee(); //无参(默认)构造函数
void Init(); //初始化员工 基本信息
virtual void Output(); //输出员工信息 (虚函数 动态多态性)
Employee &operator =(const Employee &obj); //重载=
static int GetECount(); //获取员工数目
int GetNumber(); //获取工号
int GetAge(); //获取员工年龄
float GetSalary(); //获取员工当月工资
string GetName(); //获取员工姓名
string GetSex(); //获取员工性别
string GetJob(); //获取员工岗位
string GetDepartment() const; //获取员工的部门
void SetMaxNum(int m); //加载文件后设置初始化最大工号
void SetECount(int size); //修改员工数目
void SetName(string tname); //修改姓名
void SetSex(string tsex); //修改性别
void SetAge(int tage); //修改年龄
void SetJob(string tjob); //修改岗位
void SetSalary(float tsalary); //修改当月工资
void SetDep(string tdepart); //修改员工所属的部门
void InitDep(string *s, int *b, int length); //初始化部门信息
string Check(string d); //查找是否有这个部门 <绑定关系>
void AddDep(string NewDep); //添加部门
void DeleteDep(string OldDep); //删除部门
void ModifyDep(string OldDep, string NewDep); //修改部门的名字
void BrowseDep(); //浏览部门
int GetDNumber(string d); //获取部门编号
int GetDCount() const; //获取部门数目
string GetDep(int choice); //获取所需部门
};
/*技术员类*/
class Technician :virtual public Employee //虚基类继承(至多调用一次虚基类的