西电C++大作业报告.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《西电C++大作业报告.pdf》由会员分享,可在线阅读,更多相关《西电C++大作业报告.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、大作业报告大作业报告一、题目:一、题目:销售公司员工管理设计一个虚基类 Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由 Staff 派生出销售员类 Salesman,包含销售额保护数据成员以及相关的成员函数;再由Staff派生出经理类Manager;然后由Salesman和Manager类派生出销售经理类 SalesManager。设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录。)另外要求分别统计这三类员工
2、的人数以及所有员工的总数。二、分析:二、分析:1 1、类的分析:、类的分析:从题目中可以看出,至少需要有类 Staff,类 Salesman,类 Manager,类SalesManager 这四个类。这四个类是最基本的。当然,还需要添加其他类,在后面的分析中。2 2、类中数据成员的分析:、类中数据成员的分析:这四个类的关系以及相关的数据成员,题目中说得很清楚。为了对象信息的为了对象信息的完整性,在类完整性,在类 SalesmanSalesman 中添加一个数据成员中添加一个数据成员 titletitle,用来标记一个员工的职称;,用来标记一个员工的职称;在类在类 ManagerManager
3、中添加一个数据成员中添加一个数据成员 positionposition,用来标记一个员工的职位。当然,用来标记一个员工的职位。当然,程序中也可以不添加。程序中也可以不添加。其中,关键在于各个类中成员函数的设计。3 3、类中成员函数的分析:、类中成员函数的分析:考虑到要对数据的处理,各个类中要有成员函数能够实现输入数据的功能来实例化对象,还要有成员函数来输出一个对象的相关信息,即输出一个对象中的数据成员信息。由于题目要求利用文件处理方式实现对公司人员进行管理,所以,各个类中要有成员函数能够将一个对象的相关信息写入到文件中,还要有一个成员函数能够将相关信息从文件中读出。因此,每个类中至少要有上述四
4、种成员函数。由于类中存在继承关系,为了优化程序,利用虚函数实现多态性,在基类由于类中存在继承关系,为了优化程序,利用虚函数实现多态性,在基类StaffStaff 中将这四种函数定义为虚函数,并在其他三个类中重写这四个函数,就可中将这四种函数定义为虚函数,并在其他三个类中重写这四个函数,就可以通过基类指针来访问派生类中这四个同名函数。以通过基类指针来访问派生类中这四个同名函数。4 4、添加一个新的类:、添加一个新的类:题目要求设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能,还要求分别统计这三类员工的人数以
5、及所有员工的总数。所以,可以设计一个新的类设计一个新的类 ManagementSystemManagementSystem,用来实现上述所要求的功能,用来实现上述所要求的功能。在类 ManagementSystem 中,每一个成员函数对应题目中的一个功能,当要求不同的功能时,就调用相应的成员函数,在成员函数中通过对之前四个类的操作以及其他操作来实现相关的功能。在类 ManagementSystem 中,还需要一个成员函数来进行功能选择,即用来管理其他成员函数。值得注意的是,值得注意的是,在类中要显在类中要显式的定义一个构造函数,完成相关数据成员的初始化,这点非常重要。式的定义一个构造函数,完成
6、相关数据成员的初始化,这点非常重要。类 ManagementSystem 中的数据成员,可以根据所需要的功能来添加。如数据成员中需要定义一个文件流对象,用来关联一个文件,实现对文件的处理。在构造函数中就可以将它与一个文件关联起来。可以添加四个数据成员分别用来表示销售员的人数、经理的人数、销售经理的人数以及总的人数。5 5、设计一个结构体:、设计一个结构体:在文件处理方式中,为了方便对文件的操作,可以设置一个索引数组,这个数组中的每一个元素可以用来标记一个员工数据在文件中的相关信息。考虑到功能的要求,这个数组的每个元素要标记数个信息,所以这个数组定义为一个结构体数组。在定义的结构体中,有四个参数
7、,分别用来表示一个员工的数据在文件中的删除标志删除标志、员工的编号员工的编号、编号对应的员工信息在文件中的位置编号对应的员工信息在文件中的位置,以及员工的员工的类型类型。因此,因此,ManagementSystemManagementSystem 类中还可以添加一个成员函数来实现将一个结构类中还可以添加一个成员函数来实现将一个结构体变量插入到结构体数组中。并且,在类体变量插入到结构体数组中。并且,在类 ManagementSystemManagementSystem 中可以增加一个中可以增加一个结构体指针的数据成员指向结构体数组,增加一个表示结构体数组的容量的数结构体指针的数据成员指向结构体数
8、组,增加一个表示结构体数组的容量的数据成员,增加一个表示结构体数组中已有记录数目的数据成员。据成员,增加一个表示结构体数组中已有记录数目的数据成员。6 6、程序的说明:、程序的说明:以上所有的分析与设计,就是编写程序的整体框架,即思路。根据以上的思想,可以写出各个类以及结构体的相关信息。至于具体的实现细节,可见源程序,源程序中有相关的文字说明。(1)Staff(1)Staff类:类:类中定义了三个保护数据成员,分别为 char num8,char name15,intage,分别表示员工的编号、姓名和年龄。类中定义了七个公有的成员函数。分别为 Staff(),virtual Staff(),c
9、onstchar*GetNum(),virtual void SetData()=0,virtual void ShowData()const=0,virtual void Read(fstream&f)const=0,virtual void Write(fstream&f)const=0。分别为构造函数、析构函数、得到员工编号的成员函数、设置数据的成员函数、输出数据的成员函数、从文件中读出数据的成员函数和向文件中写入数据的成员函数。(2)Salesman(2)Salesman 类:类:类中定义了两个保护数据成员,分别为 double sales,char title15,分别表示员工的销售
10、额和职称。类中定义了六个公有的成员函数。分别为 Salesman(),virtualSalesman(),void SetData(),void ShowData()const,void Read(fstream&f),void Write(fstream&f)。分别为构造函数、析构函数,以及具体定义了基类Staff 中的四个纯虚函数。(3)Manager(3)Manager 类:类:类中定义了一个保护数据成员,为 char position15,表示员工的职位。类中定义了六个公有的成员函数。分别为 Manager(),virtual Manager(),void SetData(),void
11、 ShowData()const,void Read(fstream&f),voidWrite(fstream&f)。分别为构造函数、析构函数,以及具体定义了基类 Staff中的四个纯虚函数。(4)SalesManager(4)SalesManager 类:类:类中没有定义数据成员,均是从父类继承而来。类中定义了六个公有的成员函数。分别为 SalesManager(),virtualSalesManager(),void SetData(),void ShowData()const,void Read(fstream&f),void Write(fstream&f)。分别为构造函数、析构函数,
12、以及具体定义了基类 Staff 中的四个纯虚函数。(5)Index(5)Index 结构体:结构体:结构体中有四个变量,分别为 char num8,int seat,bool del_mark,chartype,分别表示员工编号、员工信息在文件中的位置、员工记录的删除标志和员工的类型。(6)ManagementSystem(6)ManagementSystem 类:类:类中定义了八个私有数据成员,分别为 fstream file,Index*index,intcount,int max,int SalesmanSum,int ManagerSum,int SalesManagerSum 和in
13、t TotalSum,分别表示文件流对象、索引数组的指针、索引数组的记录数目、索引数组的空间、销售员的人数、经理的人数、销售经理的人数和总人数。类中定义了七个私有成员函数,分别为 void AddIndex(Index&e),voidAddData(),void UpdateData(),void QueryData(),void DeleteData(),voidRecombineFile(),void ShowSum(),分别表示增加索引记录、增加数据、更新数据、查询数据、删除数据、重组文件和输出各类人数信息。类中还定义了三个公有成员函数。分别为 ManagementSystem(),Ma
14、nagementSystem(),void SelectFunction(),分别表示构造函数、析构函数和功能选择。7 7、程序运行的过程:、程序运行的过程:程序运行时,先定义 ManagementSystem 类的一个对象,对象完成相关初始化后,调用一个表示功能选择的成员函数。在这个成员函数中,进行相关功能的选择,不同选择会调用不同的成员函数,直至调用表示退出程序的成员函数,程序运行结束。三、源程序:三、源程序:#include#include#includeusing namespace std;/类 Staffclass Staffprotected:char num8;/编号char
15、name15;/姓名int age;/年龄public:Staff()virtual Staff()const char*GetNum()constreturn num;/得到员工的编号virtual void SetData()=0;/设置数据virtual void ShowData()const=0;/输出数据virtual void Read(fstream&f)const=0;/从文件中读出数据virtual void Write(fstream&f)const=0;/向文件中写入数据;/类 Salesmanclass Salesman:virtual public Staffpro
16、tected:double sales;/销售额char title15;/职称public:Salesman()virtual Salesman()void SetData()/重写基类函数cout num;cout name;cout age;cout sales;cout title;void ShowData()const/重写基类函数cout 编号:numendl;cout 姓名:nameendl;cout 年龄:ageendl;cout 销售额:salesendl;cout 职称:titleendl;/重写基类函数void Read(fstream&f)const f.read(c
17、har*)this,sizeof(Salesman);void Write(fstream&f)const f.write(char*)this,sizeof(Salesman);/类 Managerclass Manager:virtual public Staffprotected:char position15;/职位public:Manager()virtual Manager()void SetData()/重写基类函数cout num;cout name;cout age;cout position;void ShowData()const/重写基类函数cout 编号:numend
18、l;cout 姓名:nameendl;cout 年龄:ageendl;cout 职位:positionendl;/重写基类函数void Read(fstream&f)const f.read(char*)this,sizeof(Manager);void Write(fstream&f)const f.write(char*)this,sizeof(Manager);/类 SalesManagerclass SalesManager:public Salesman,public Managerpublic:SalesManager()virtual SalesManager()void Set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 作业 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内