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

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

一、面向对象课程设计作品(基于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

相关文章
|
SQL 缓存 数据处理
Seata TCC模式原理与实战
Seata TCC模式原理与实战
953 0
Seata TCC模式原理与实战
|
数据挖掘
提高调查有效性:问卷设计技巧与常见错误避免
设计合格的调查问卷需明确目标、构建清晰结构、编写简明问题并预测试与修改。目标决定数据收集的方向,结构保证逻辑连贯,问题应避免引导性,使用通俗语言。预测试能优化问卷,数据分析则提炼出有价值信息,支持决策。注意问题类型的选择,如封闭式和开放式,确保数据的有效收集。
1720 4
|
安全 物联网 项目管理
RISC-V生态全景解析(四):玄铁VirtualZone基于RISC-V架构的安全扩展
芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。
2473 0
RISC-V生态全景解析(四):玄铁VirtualZone基于RISC-V架构的安全扩展
|
Windows
gitlab 账号注册及修改资料
填写注册信息 点击注册链接奇迹 GitLab后,可以看到以下界面,输入用户名、邮箱等信息,点击 SIGN UP 进行注册: 确认邮件 注册后邮箱会收到一封确认邮件,如果没有收到邮件,可能是被误判为垃圾邮件,请进入邮箱的垃圾箱进行查找。
12057 0
微信token验证失败的解决方法
一、问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况  1. token校验失败 这样回头检查一下各项配置是否正确。如果确定配置没有问题,请按下面的方法检查 2. 请求URL超时 你的服务器在国外,或者服务器网速不给力,一般多试几次就可以了。
4591 0
|
机器学习/深度学习 存储 编解码
Open3d系列 | 3. Open3d实现点云上采样、点云聚类、点云分割以及点云重建
Open3d系列 | 3. Open3d实现点云上采样、点云聚类、点云分割以及点云重建
15331 1
Open3d系列 | 3. Open3d实现点云上采样、点云聚类、点云分割以及点云重建
|
10月前
|
人工智能 弹性计算 双11
2025年阿里云双11优惠活动盛大开启!超7000万大模型tokens免费体验
2025阿里云双11火热开启!领至高1728元优惠券,享超7000万tokens免费体验。云服务器低至38元/年起,AI大模型、GPU算力、企业出海等多重补贴,助力上云普惠升级。
1027 11
|
缓存 网络协议 程序员
TCP协议的相关特性
TCP协议的相关特性
489 0

热门文章

最新文章