面向对象程序设计实验五:继承与派生

简介: 面向对象程序设计实验五:继承与派生

一、面向对象课程设计作品(基于MFC的仓库管理系统完整工程完整工程):

面向对象课程设计作品(完整)(也适用于软件工程大实验).7z_采用面向对象方法分析,设计和实现订货系统。-C/C++文档类资源-CSDN下载

二、实验五题目:

       分析学校管理系统、图书管理系统中具有继承关系的基类和派生类,分别给出定义并在主函数中调用测试。要求:

1.基类具有基本的数据成员,派生类扩展相关数据成员。

2.基类具有基本的成员函数,派生类扩展相关成员函数。

3.基类和派生类均具有构造函数和深拷贝构造函数。

#include<iostream>
#include<string>
#include<iomanip>
using namespace std;//蓝多多作业
class essential   //定义一个学校管理系统的学生基本信息的基类
{
private://类的成员
  string number;//学号
  string name;//姓名
  string major;//专业
  int sex;//性别 男生0 女生1
public:
  essential()//无参的构造函数
  {
    name = number = major = "0"; sex = 0;
  }
  essential(string a, string b, string c, int d)//有参的构造函数
  {
    number = a; name = b; major = c; sex = d;
  }
  ~essential()//析构函数
  {}
  essential(const essential &p)//深拷贝构造函数
  {
    number = p.number; name = p.name; major = p.major; sex = p.sex;
  }
  void print();
  void output(essential a[]);
};
class Library : public essential//定义一个图书馆系统的派生类
{
private:
  string date; string book;
public:
  ~Library() {}
  Library(string a, string b, string c, int d,
    string date1, string book1) :essential(a, b, c, d)//派生类的有参构造函数
  {
    date = date1; book = book1;
  }
  Library(const Library &a)//派生类的深拷贝构造函数
  {
    this->date = a.date; this->book = a.book;
  }
  Library() {}
  void display()
  {
    print();
    cout <<"{date :"<<setw(10)<<this->date <<setw(20);
    cout <<"book :"<<setw(20)<<this->book <<"}"<< endl;
  }
  void putout(Library c[]);
};
int main()
{
  {essential b[2] =
  {
  essential("049999901","dyy","chemistry",0),essential("029999938","dxn","computer",1)
  };
  Library a[2] =
  {
  Library("049999901","dyy","chemistry",0,"2018.5.6","Life without limit"),Library("029999938",
  "dxn","computer",1,"2018.3.5","Cherish life Time")
  };
  essential ob;
  ob.output(b);
  cout << endl;
  Library on;
  on.putout(a);
  }
  system("pause");
  return 0;
}
void essential::print()//定义一个输出函数 使用this指针
{
  cout << this->number << setw(8);
  cout << this->name << setw(11);
  cout << this->major << setw(8);
  cout << this->sex;
  cout << endl;
}
void essential::output(essential a[])//定义一个输出函数
{
  cout << setw(9) << "number" << setw(9) << "name" << setw(9) << "major"
    << setw(9) << "sex" << endl;//输出表头
  for (int i = 0; i < 2; i++)
    a[i].print();//用for循环输出学生基础信息
}
void Library::putout(Library c[])//定义一个输出函数
{
  cout << setw(9) << "number" << setw(9) << "name" << setw(9) << "major"
    << setw(9) << "sex" << endl;//输出表头
  for (int i = 0; i < 2; i++)
    c[i].display();
}

image.gif

相关文章
|
弹性计算 安全 Linux
【云服务器选型指南:五大关键】
【云服务器选型指南:五大关键】
978 0
|
安全 物联网 项目管理
RISC-V生态全景解析(四):玄铁VirtualZone基于RISC-V架构的安全扩展
芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。
2236 0
RISC-V生态全景解析(四):玄铁VirtualZone基于RISC-V架构的安全扩展
|
Windows
gitlab 账号注册及修改资料
填写注册信息 点击注册链接奇迹 GitLab后,可以看到以下界面,输入用户名、邮箱等信息,点击 SIGN UP 进行注册: 确认邮件 注册后邮箱会收到一封确认邮件,如果没有收到邮件,可能是被误判为垃圾邮件,请进入邮箱的垃圾箱进行查找。
11774 0
|
机器学习/深度学习 存储 编解码
Open3d系列 | 3. Open3d实现点云上采样、点云聚类、点云分割以及点云重建
Open3d系列 | 3. Open3d实现点云上采样、点云聚类、点云分割以及点云重建
14245 1
Open3d系列 | 3. Open3d实现点云上采样、点云聚类、点云分割以及点云重建
|
存储
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍
1303 3
|
数据挖掘
提高调查有效性:问卷设计技巧与常见错误避免
设计合格的调查问卷需明确目标、构建清晰结构、编写简明问题并预测试与修改。目标决定数据收集的方向,结构保证逻辑连贯,问题应避免引导性,使用通俗语言。预测试能优化问卷,数据分析则提炼出有价值信息,支持决策。注意问题类型的选择,如封闭式和开放式,确保数据的有效收集。
1235 4
|
前端开发 JavaScript 开发工具
新一代前端开发工具:探索WebAssembly在前端领域的应用
本文将介绍WebAssembly在前端开发领域的应用,探讨其在提升前端性能、扩展开发语言选择、优化代码大小等方面的优势。通过深入分析WebAssembly的特性和优势,以及实际案例展示,帮助读者更好地理解和应用这一新一代前端开发工具。
|
设计模式 安全 程序员
【C++ 智能指针】C++智能指针的正确打开方式:避免滥用的实践指南
【C++ 智能指针】C++智能指针的正确打开方式:避免滥用的实践指南
864 1
|
前端开发 图形学 UED
深度解析Qt背景设计:从基础到高级,从Widget到Quick(一)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
1306 0