文章目录

  • 实验七(第八章)实践题一
  • 实验七(第八章) 实践题二
  • 实验七(第八章) 实践题三

实验七(第八章)实践题一

对本章示范题的用于管理商店商品的实现程序进行完善:完成Wardrobe立柜类的具体定义与使用,并添加“帽子仓库类”以及“立柜仓库类”的定义及使用,以使程序能够对商店的这三种商品(衬衣、帽子、立柜)进行简单的管理与应用。

要对商品实现的操作有:商品的进库(增加某类商品及其库存量),商品的出库(减少某类商品及其库存量),以及某类商品总价格的计算。

【输入形式】

根据提示输入
【输出形式】

把处理后的数据输出

【样例】注意:红色为输入部分,黑色为输出部分。

5 * shirt data in: price/place/material =>60 Tianjin Cotton

3 * shirt data in: price/place/material =>80 Beijing Wool

60 Tianjin Cotton

60 Tianjin Cotton

60 Tianjin Cotton

60 Tianjin Cotton

60 Tianjin Cotton

80 Beijing Wool

80 Beijing Wool

80 Beijing Wool

shiSto.TotalPrice()=540

60 Tianjin Cotton

60 Tianjin Cotton

60 Tianjin Cotton

60 Tianjin Cotton

shiSto.TotalPrice()=240

5 * Cap data in: price/place/material/style =>40 Suzhou Cotton M

3 * Cap data in: price/place/material/style =>30 Wuxi Wool S

40 Suzhou Cotton M

40 Suzhou Cotton M

40 Suzhou Cotton M

40 Suzhou Cotton M

40 Suzhou Cotton M

30 Wuxi Wool S

30 Wuxi Wool S

30 Wuxi Wool S

capSto.TotalPrice()=290

40 Suzhou Cotton M

40 Suzhou Cotton M

40 Suzhou Cotton M

40 Suzhou Cotton M

capSto.TotalPrice()=160

5 * Wardrobe data in: price/place/material/color =>160 Guangzhou Pine Yellow

3 * Wardrobe data in: price/place/material/color =>200 Suzhou Oak Brown

160 Guangzhou Pine Yellow

160 Guangzhou Pine Yellow

160 Guangzhou Pine Yellow

160 Guangzhou Pine Yellow

160 Guangzhou Pine Yellow

200 Suzhou Oak Brown

200 Suzhou Oak Brown

200 Suzhou Oak Brown

WarSto.TotalPrice()=1400

160 Guangzhou Pine Yellow

160 Guangzhou Pine Yellow

160 Guangzhou Pine Yellow

160 Guangzhou Pine Yellow

WarSto.TotalPrice()=640

#include<iostream>
#include<cstring>
using namespace std;
class Base{private:double price;char place[20];int count;public:Base(double pr,char *pl,int cnt){price = pr;strcpy(place,pl);count = cnt;}void display(){cout << price << " " << place<< " ";}void InSomething(int add_cnt){count +=add_cnt;}void OutSomething(int del_cnt){count -= del_cnt;}double TotalPrice(){return price;}
};
class Shirt:public Base{private:char material[20];public:Shirt(double pr,char *pl,int cnt,char *mat):Base(pr,pl,cnt){strcpy(material,mat);}void display(){Base::display();cout <<material<< " ";}
};
class Cap:public Shirt{private:char style;public:Cap(double pr,char *pl,int cnt,char *mat,char sty):Shirt(pr,pl,cnt,mat){style = sty;}void display (){Shirt::display();cout <<style;}
};
class Wardrobe:public Base{private:char material[20];char color[20];public:Wardrobe(double pr,char *pl,int cnt,char *mat,char *col):Base(pr,pl,cnt){strcpy(material,mat);strcpy(color,col);}void display(){Base::display();cout << material << " " << color;}
};
int main()
{int price;char place[20];char material[20];char style;char color[20];cout << "5 * shirt data in: price/place/material =>"<<endl;cin >> price >> place >> material;Shirt s1(price,place,5,material);cout << "3 * shirt data in: price/place/material =>"<<endl;cin >> price >> place >> material;Shirt s2(price,place,3,material);for(int i=0;i<5;i++) {s1.display();cout << endl;}for(int i=0;i<3;i++){s2.display();cout << endl;} cout << "shiSto.TotalPrice()=" << (s1.TotalPrice())*5+(s2.TotalPrice())*3 << endl;for(int i=0;i<4;i++){s1.display();cout << endl;}cout << "shiSto.TotalPrice()=" << (s1.TotalPrice())*4<<endl;cout << "5 * Cap data in: price/place/material/style =>"<<endl;cin >> price >> place >> material >> style;Cap c1(price,place,5,material,style);cout << "3 * Cap data in: price/place/material/style =>"<<endl;cin >> price >> place >> material >> style;Cap c2(price,place,3,material,style);for(int i=0;i<5;i++){c1.display();cout << endl;}for(int i=0;i<3;i++){c2.display();cout << endl;} cout << "capSto.TotalPrice()=" <<(c1.TotalPrice())*5+(c2.TotalPrice())*3 << endl;for(int i=0;i<4;i++){c1.display();cout << endl;}cout << "capSto.TotalPrice()=" <<(c1.TotalPrice())*4<<endl;cout << "5 * Wardrobe data in: price/place/material/color =>"<<endl;cin >> price >> place >> material>>color;Wardrobe w1(price,place,5,material,color);cout << "3 * Wardrobe data in: price/place/material/color =>"<<endl;cin >> price >> place >> material>>color;Wardrobe w2(price,place,3,material,color);for(int i=0;i<5;i++){w1.display();cout << endl;}for(int i=0;i<3;i++){w2.display();cout << endl;}cout << "WarSto.TotalPrice()="<< (w1.TotalPrice())*5+(w2.TotalPrice())*3 <<endl;for(int i=0;i<4;i++){w1.display();cout << endl;}cout <<"WarSto.TotalPrice()=" << (w1.TotalPrice())*4;return 0;
}

实验七(第八章) 实践题二

【问题描述】

利用继承性与派生类来管理学生教师档案:由Person(人员)类出发(作为基类),派生出Student(学生)及Teacher(教师)类;而后又由Student(学生)类出发(作为基类),派生出GraduateStudent(研究生)类。可假定这几个类各自具有的数据成员为:

Person(人员)类: 姓名、性别、年龄;

Student(学生)类: 姓名、性别、年龄、学号、系别;

Teacher(教师)类: 姓名、性别、年龄、职称、担任课程;

GraduateStudent(研究生)类: 姓名、性别、年龄、学号、系别、导师。

为简化起见,每个类可只设立构造函数以及显示类对象数据的成员函数Print。而后编制简单的主函数,说明上述有关的类对象,并对其类成员函数进行简单使用(调用)。

【输入形式】
【输出形式】
【样例输入】


【样例输出】

== per1.Display() => name,age,sex

sun 42 M

== stu1.Display() => name,age,sex,Reg_Number,department

guo 22 F 1001 comp

== teach1.Display() => name,age,sex,course,post

fang 38 M english professor

== gStu.Display() => name,age,sex,Reg_Number,department,advisor

wu 25 M 1021 comp wei

#include<iostream>
#include<string>
using namespace std;class Person{protected:string name;int age;string sex;public:Person(){}Person(string n,int a,string s):name(n),age(a),sex(s){}void Display(){cout << name << " " << age << " " << sex;}
};
class Student:public Person{protected:int regnum;string department;public:Student(){}Student(string n,int a,string s,int r,string d){name=n;age=a;sex=s;regnum=r;department=d;}void Display(){Person::Display();cout << " " << regnum << " " << department;}
};
class GraduateStudent:public Student{protected:string advisor;public:GraduateStudent(){};GraduateStudent(string n,int a,string s,int r,string d,string ad):Student(n,a,s,r,d),advisor(ad){}void Display(){Student::Display();cout << " " << advisor;}
};
class Teacher:public Person{protected:string course;string post;public:Teacher(string n,int a,string s,string c,string p):Person(n,a,s),course(c),post(p){}void Display(){Person::Display();cout << " " << course << " " << post;}
};int main()
{cout << "== per1.Display() => name,age,sex" << endl;Person per1("sun",42,"M");per1.Display();cout << endl;cout << "== stu1.Display() => name,age,sex,Reg_Number,department" << endl;Student stu1("guo",22,"F",1001,"comp");stu1.Display();cout << endl;cout << "== teach1.Display() => name,age,sex,course,post" << endl;Teacher teach1("fang",38,"M","english","professor");teach1.Display();cout << endl;cout << "== gStu.Display() => name,age,sex,Reg_Number,department,advisor" << endl;GraduateStudent gStu("wu",25,"M",1021,"comp","wei");gStu.Display();return 0;
}

实验七(第八章) 实践题三

自定义一个日期时间类DateTimeType,它含有类DateType与类TimeType的类对象作为其数据成员,并具有所列的其他几个成员函数。而后编制主函数,说明DateTimeType的类对象,并对其成员函数以及二对象成员所属类的公有成员函数进行使用。

class DateTimeType { //自定义的日期时间类 DateTimeType

DateType date; //类 DateType 的类对象 date 作为其数据成员

TimeType time; //类 TimeType 的类对象 time 作为其另一个数据成员

public:

DateTimeType(int y0=1, int m0=1, int d0=1, int hr0=0, int mi0=0, int se0=0);

//构造函数,设定 DateTimeType 类对象的日期时间,并为各参数设置了默认值

DateType& GetDate(){ return date; } //返回本类的私有数据对象 data

TimeType& GetTime(){ return time; } //返回本类的私有数据对象 time

void IncrementSecond(int s); //增加若干秒,注意“进位”问题

void PrintDateTime(); //屏幕输出日期时间对象的有关数据

};

注意,每一个DateTimeType类对象中总包含有一个DateType类对象(对象成员)以及一个TimeType类对象(对象成员),编制与实现本程序时,也必须包含DateType与TimeType自定义类(类型)。

之所以设置了公有的类成员函数GetDate与GetTime,是为类外如主函数处使用该类的私有数据成员date与time提供方便(否则的话,类外无法直接访问该类的私有数据成员)。另外,两成员函数返回的都为引用,为的是可将返回对象当作一个独立变量来使用(如可以继续作左值等)。例如,假设编制了如下形式的主函数:

void main() {

DateTimeType dttm1(1999,12,31,23,59,59), dttm2;

(dttm1.GetDate()).PrintDate(); //调用对象成员所属类的公有成员函数

cout<<endl;

dttm1.PrintDateTime(); //调用本派生类的成员函数 PrintDateTime

dttm2.PrintDateTime();

dttm1.IncrementSecond(30) ; //调用本派生类成员函数

dttm1.PrintDateTime();

}
【样例输出】

1999-12-31

1999-12-31 23:59:59

1-1-1 0:0:0

2000-1-1 0:0:29

#include<iostream>
using namespace std;class DateType{protected:int y;int m;int d;public:DateType(int yy=0,int mm=0,int dd=0):y(yy),m(mm),d(dd){}void PrintDate(){cout << y << "-" << m << "-" << d;}void up(){int g[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};if(y%4==0&&y%100!=0||y%400==0) g[2] = 29;d++;if(d>g[m]){d-=g[m];m++;if(m>12){m-=12;y++;}}}
};
class TimeType{protected:int h;int m;int s;public:TimeType(int hh=0,int mm=0,int ss=0):h(hh),m(mm),s(ss){}void PrintTime(){cout << h << ":" << m << ":" << s;}int up(int ss){s+=ss;int temp = s/60;if(temp){m+=temp;s-=60*temp;temp=m/60;if(temp){h+=temp;m-=60*temp;temp=h/24;if(temp){h-=24*temp;return temp;}}}return 0;}
};
class DateTimeType {  DateType date;TimeType time;public:DateTimeType(int y0=1, int m0=1, int d0=1, int hr0=0, int mi0=0, int se0=0):date(y0,m0,d0),time(hr0,mi0,se0){}DateType& GetDate(){ return date; } TimeType& GetTime(){ return time; } void IncrementSecond(int s){//如果大于24小时 if(time.up(s)){date.up();//日期增加一天 }}void PrintDateTime(){date.PrintDate();cout << " ";time.PrintTime();cout << endl;}
};int main(){DateTimeType dttm1(1999,12,31,23,59,59), dttm2;(dttm1.GetDate()).PrintDate(); cout<<endl;dttm1.PrintDateTime(); dttm2.PrintDateTime();dttm1.IncrementSecond(30); dttm1.PrintDateTime();return 0;
}

【C++】实验七 继承与派生相关推荐

  1. 实验四---继承与派生练习以及运算符[ ]重载练习

    1. 车辆基本信息管理 问题场景描述如下: 为了对车量基本信息进行管理,对现实世界车量基本信息抽象后,抽象出Car类.ElectricCar类.Battery类, 它们之间的关系描述如下:基于Car类 ...

  2. C++实验七——类的继承(1)

    实验报告 题目1 题目2 [实验名称] 实验七 类的继承(1) [实验内容] 题目1 以动物类为父类进行派生,设计可行的派生类,为派生类增加必要的成员,并对父类中的成员做适当调整,在主程序中对派生类的 ...

  3. 实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用

    实验四 类和对象:类的继承和派生:多态性: 接口:构造器应用 一.实验目的 1. 掌握类与对象的关系: 2. 掌握类的定义: 3. 掌握对象的声明及使用: 4. 掌握构造方法的概念及调用时机: 5. ...

  4. 实验四:继承性和派生类 建一个楼房Building为基类,建立住宅类House继承Building,存储房号和面积,建立办公室类Office继承Building,存储办公室名称和电话

    /* * 实验四:继承性和派生类 * 内容提要:建立一个楼房基类Building为基类,用于存储地址和楼号 * 建立住宅类House继承Building, 用来存储房号和面积, * 另外建立办公室类O ...

  5. c++实验三:继承与派生

    一.实验目的 1. 掌握类继承与派生关系以及实现方法,理解类的层次结构: 2. 掌握派生类构造函数初始化基类成员和对象成员的方法: 3. 掌握类型兼容规则,掌握派生类的复制构造函数的定义. 4. 掌握 ...

  6. C++类的继承与派生

    文章目录 一.继承 二.基类和派生类 三.继承方式 六.多继承 七.应用经验 八.课后作业 九.版权声明 一.继承 继承是面向对象程序设计中最重要的一个概念.继承允许我们根据一个类来定义另一个类,达到 ...

  7. Java模式设计卖电脑实验报告,面向对象(Java)实验0继承、接口和多态

    <面向对象(Java)实验0继承.接口和多态>由会员分享,可在线阅读,更多相关<面向对象(Java)实验0继承.接口和多态(11页珍藏版)>请在金锄头文库上搜索. 1.电子信息 ...

  8. ☆ C++ 继承与派生(包括虚继承)

    在友元类中我们知道,一旦在一个类中声明了友元类,那么友元类便拥有了访问该类的所有权限,可以在自己的类中对声明自己的类进行一系列操作. 友元类主要目的是为了拓展友元类的功能,但是友元类的权限未免太多了, ...

  9. c语言 派生,继承和派生

    继承与派生 如果头一次听到这个名字的话,就先要想想这两个词的意思了. 先来说继承,这与现实生活中的继承意思差不多,比如一个人继承另一个人的财产.以及子承父业等等是一个意思,拥有的这个过程就叫做继承. ...

最新文章

  1. 【转】Weblogic的集群
  2. [Javascript] Deep Search nested tag element in DOM tree
  3. Java并发编程(三)volatile域
  4. linux安装软件的几种方式(kali平台)和一些实用的软件(持续更新)
  5. mysql连接失败 ping通_哭~问:oracle 数据库有时会突然连接失败,但能ping通主机...
  6. 远期合约(Forwards/Forward Contract )
  7. 基本入门程序编写格式和注意事项
  8. linux 服务器进程,如何查看Linux服务器的进程
  9. Mac : PS1变量不生效了
  10. java 与 区别
  11. python实现JWT
  12. 联想电脑(xx%电量可用已连接适配器,未充电)解决方法
  13. 新型搜索引擎Blekko欲赶超谷歌 再获3000万美元投资
  14. C# 中的多线程和异步编程
  15. 什么是java swing_Java干货:解读什么是swing
  16. 股票交易接口与各种路由器接口与连接方法
  17. C语言 用泰勒展开公式计算sin(x)的值
  18. 头歌平台数据结构与算法 单链表实验 第1关:倒置链表
  19. css清除浮动的四种方法(详细)
  20. 汇总阿里云GPU云服务器常见问题解答FAQ

热门文章

  1. 懒人日报 | 日本东京将进行区域专用型数字货币的实用试验、蚂蚁区块链涉足冷链物流、eos竞猜游戏FASTWIN遭黑客攻击......
  2. Intra-mart[E.IWP.AUTHZ.DECISION.10007] 资源组别未登记。
  3. Spring boot入门一 环境搭建HelloWorld
  4. 索尼软件测试版,索尼(SONY)SGP511CN/B 黑平板电脑软件测试评测-ZOL中关村在线
  5. 【大学物理·电磁感应 电磁场理论】磁场的能量
  6. 方方格子Excel工具箱的安装步骤教程
  7. 计蒜客 - 渊子赛马
  8. javaweb体育用品商城系统源码
  9. WiFi也能检测人体3D动作?误差低至2.4厘米
  10. 【网络基础】RIP基础概念