- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西电oop大作业报告
面向对象程序设计c++
面向对象程序设计C++报告
销售公司员工管理
作业题目:
设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出销售员类Salesman,包含销售额保护数据成员以及相关的成员函数;再由Staff派生出经理类Manager;然后由Salesman和Manager类派生出销售经理类SalesManager。
设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录。)另外要求分别统计这三类员工的人数以及所有员工的总数。
2.编程思想:
本课程学习的是面向对象程序语言,面向对象和面向过程的区别从这个大作业中就可以很好的体现出来,具有类的封装 继承。首先先分析他们的相同之处,不同员工之间的同的属性是员工号,员工年龄,和销售额,我将他们定义为全局变量,然后进行对题目中涉及的4个类的实现:staff中的成员变量是编号,姓名,年龄,岗位,以及next指针,实现构造方法对staff这个类初始化,然后定义output() ,gerAmount() 这样的两个纯虚函数,并且定义友员类 company
Salesman通过对staff的继承 新加成员变量 Amount 重写构造函数 设置set get方法 得到amount 并且重写从staff中继承的虚方法output()对其属性进行输出
Manager也是对staff的继承,无需添加新的成员变量,则其构造函数只需要继承父类的构造函数即可
同理销售经理类也是如此
最后要实现的则是他的功能 我们将其所有的功能放到 staff的友员类company中实现
其中其成员变量是 员工表,也是就是staff的指针实现构造函数,析构函数和主要功能
void Add(); //增加数据
void Delete(); //删除数据
void Modify(); //更新数据
void Query(); //查询数据
void Restruct(); //重组文件
void Acount(); //人数统计
void Save(); //数据存储
void Load(); //数据装入
在实现其的时候使用了链表的方式,这种方式使我们的结构更加方便详细的函数见代码吧这只是他的思想
3.源代码
#include<iostream>
#include<string>
#include<ctype.h>
#include<fstream>
#include<iomanip>
using namespace std;
int ID; //员工标识
int Age;//员工年龄
double Amount=0;//销售额
//Staff类(员工类)
class Staff
{
protected:
int No; //编号
char Name[20]; //姓名
int Age; //年龄
int Duty; //岗位
Staff *next;
public:
Staff(char ID,char *Name,int Age,int Duty)
{
this->Duty=Duty;
strcpy(this->Name,Name);
this->No=ID;
this->Age=Age;
}
virtual double GetAmount()=0;
virtual void Output()=0;
friend class Company;
};
//Salesman类(销售员类)
class Salesman:virtual public Staff
{
protected:
double Amount;
public:
Salesman(char ID,char *Name,int Age,int Duty,double Amount):Staff(ID,Name,Age,Duty)
{
this->Amount=Amount;
}
double GetAmount()
{
return Amount;
}
void SetAmount(double Amount)
{
this->Amount=Amount;
}
void Output()
{
cout<<No<<"
文档评论(0)