头歌实验--面向对象程序设计

目录

实验五 类的继承与派生

第1关:简易商品系统

任务描述

答案代码

第2关:公司支出计算

任务描述

答案代码

第3关:棱柱体问题

任务描述

答案代码


实验五 类的继承与派生

第1关:简易商品系统

任务描述

答案代码

#include<iostream>
#include<string>
using namespace std;
/***********begin**********/
//此处完成各个类的书写,并实现题目输出
class Shirt {
private:
	string place;
	int price;
	int num;
	string mar;
public:
	Shirt(string, int, int, string);
	void InStorage(int i);
	void OutStorage(int j);
	void Calculate();
};
Shirt::Shirt(string a, int b, int c, string d)
{
	place = a;
	price = b;
	num = c;
	mar = d;
}
void Shirt::InStorage(int i)
{
	num = num + i;
}
void Shirt::OutStorage(int j)
{
	if (j > num)
	{
		cout << "Insufficient  number!" << endl;
		num = 0;
	}
	else {
		num = num - j;
	}
}
void Shirt::Calculate()
{
	int m;
	m = num * price;
	cout << "total money=" << m << endl;
} 
class Cap:public Shirt
{
public:
	Cap(string, int, int, string, string);
private:
	string shape;
};
Cap::Cap(string a, int b, int c, string d, string e):Shirt(a,b,c,d),shape(e){}
 
class Capboard:public Shirt
{
public:
	Capboard(string, int, int, string, string);
private:
	string color;
};
Capboard::Capboard(string a,int b,int c,string d,string f):Shirt(a,b,c,d),color(f){}
	/**********end***********/
	int main() {
 
	Shirt s1("江西南昌", 235, 150, "纯棉");
	Cap p1("四川成都", 88, 150, "尼龙", "平顶");
	Capboard cup1("云南昆明", 3500, 10, "云松木", "原色");
	int i, j, k, m;
	cin >> i >> j >> k >> m;
	s1.InStorage(i);
	s1.OutStorage(j);
	p1.OutStorage(k);
	cup1.OutStorage(m);
	s1.Calculate();
	p1.Calculate();
	cup1.Calculate();
}

第2关:公司支出计算

任务描述

答案代码

#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
//请在此处完成YearWork,MonthWorker,WeekWoker及Company类的编码
/***********begin***********/
class Employee{
    public:
    virtual int earning()=0;
};
class YearWorker:public Employee{
    int salary;
    public:
    YearWorker(int s)
    {
        salary=s;
    }
    virtual int earning()
    {
        return salary;
    }
};
class MonthWorker:public Employee{
    int salary;
    public:
    MonthWorker(int s)
    {
        salary=s;
    }
    virtual int earning()
    {
        return salary*12;
    }
};
class WeekWorker:public Employee{
    int salary;
    public:
    WeekWorker(int s)
    {
        salary=s;
    }
    virtual int earning()
    {
        return salary*52;
    }
};
class Company{
    public:
    Employee *emp[30];
    Company(){
        for(int i=0;i<30;i++){
            emp[i]=NULL;
        }
    }
    int salarypay(){
        int total=0;
        for(int i=0;i<30;i++)
        {
            if(emp[i]!=NULL){
                total+=emp[i]->earning();
            }
        }
        return total;
    }  
};
/************end**********/
int main() {
    Company co;
    for (int i = 0; i < 30; i++)
    {
        int r = rand() % 3 + 1;
        switch (r) {
        case 1:
            co.emp[i] = new WeekWorker(580);
            break;
        case 2:
            co.emp[i] = new MonthWorker(2500);
            break;
        case 3:
            co.emp[i] = new YearWorker(22000);
            break;
        default:
            break;
        }
    }
    cout << "company total pay=" << co.salarypay();
    return 0;
}

第3关:棱柱体问题

任务描述

答案代码

#include <iostream>
using namespace std;
#include<string>
#include"time.h"
#include"math.h"
#define PI 3.14

/*********begin**********/
class Plane
{
public:
    virtual double area() = 0;//求面积函数
};
class Rectangle :public virtual Plane
{
public:
    double length, width;//长和宽
 
    Rectangle(double l, double w) :length(l), width(w) {};
    virtual double area()
    {
        return length * width;//覆盖求面积函数
    }
};
class Square :public Rectangle{
public:
    Square(double l) :Rectangle(l,l) {};//析造函数
};
class Circle :public virtual Plane
{
public:
    double radius;//半径
 
    Circle(double r) :radius(r) {};
    virtual double area()
    {
        return 3.14 * radius * radius;
    }
};
class Triangle :public virtual Plane
{
   
public:
    double a, b, c;
    Triangle(double a, double b, double c) :a(a), b(b), c(c) {};
    virtual double area()
    {
        double p;
        p = (a + b + c) / 2;
        return sqrt(p * (p - a) * (p - b) * (p - c));
    }
};
class Body
{
public:
    
    virtual double volume() = 0;//体积
    virtual double superficialarea() = 0;//表面积
};
class Triangularprism :public Triangle,public Body
{
private:
    double height;
public:
    Triangularprism( int n,double h, double a, double b, double c) :Triangle(a, b, c), height(h) {};
    virtual double volume()
    {
        return Triangle::area() * height;
    }
   virtual double superficialarea() {
        return (Triangle::area() * 2 + Triangle::a * height + Triangle::b * height + Triangle::c * height);
    }
};
class Circularcolumn :public Circle,public Body
{
private:
    double height;
public:
    Circularcolumn(int n, double h, double r) :Circle(r), height(h) {};
   virtual double volume()
    {
        return Circle::area() * height;
    }
   virtual double superficialarea()
    {
        return (Circle::radius* 2*3.14*height + Circle::area() * 2 );
    }
};
class Quadrangular :public Rectangle,public Body
{
private:
    double height;
public:
    Quadrangular(int n, double h, double l) :Rectangle(l,l), height(h) {};
    virtual double volume()
    {
        return Rectangle::area() * height;
    }
    virtual double superficialarea()
    {
        return (Rectangle::area() * 2 + Rectangle::width * height * 2 + Rectangle::length * height*2);
    }
};
 
 
/**********end********/
int main() {
    int n;
    double height,r,t1,t2,t3,l;
    cin>>n>>height>>r;//输入n=0,表示圆柱体
    Circularcolumn c1(n,height,r);
    cin>>n>>height>>t1>>t2>>t3;//输入n=3,表示三棱柱
    Triangularprism t(n,height,t1,t2,t3);
    cin>>n>>height>>l;//输入n=4表示正四棱柱
    Quadrangular qu(n,height,l);
    Body *body[3];
    body[0]=&c1;
    body[1]=&t;
    body[2]=&qu;
    double superficalsum=0;
    double volumesum=0;
    for(int i=0;i<3;i++)
       {
          volumesum+=body[i]->volume();//volume()获取该体的体积
          superficalsum+=body[i]->superficialarea();//获取该体的表面积
       }
    cout<<"all volume="<<volumesum<<endl;
    cout<<"all superfilarea="<<superficalsum<<endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969979.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

卷积神经网络实战人脸检测与识别

文章目录 前言一、人脸识别一般过程二、人脸检测主流算法1. MTCNN2. RetinaFace3. CenterFace4. BlazeFace5. YOLO6. SSD7. CascadeCNN 三、人脸识别主流算法1.deepface2.FaceNet3.ArcFace4.VGGFace5.DeepID 四、人脸识别系统实现0.安装教程与资源说明1. 界面采用PyQt5框架2.人…

Spring IoC的实现机制是什么?

大家好&#xff0c;我是锋哥。今天分享关于【Spring IoC的实现机制是什么&#xff1f;】面试题。希望对大家有帮助&#xff1b; Spring IoC的实现机制是什么&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring IoC&#xff08;Inversion of Control…

关闭浏览器安全dns解决访问速度慢的问题

谷歌浏览器加载速度突然变慢了&#xff1f;检查安全DNS功能(DoH)是否被默认开启。 谷歌浏览器在去年已经推出安全DNS功能(即DoH) , 启用此功能后可以通过加密的DNS增强网络连接安全性。例如查询请求被加密后网络运营商将无法嗅探用户访问的地址&#xff0c;因此对于增强用户的…

【Spring AI】基于SpringAI+Vue3+ElementPlus的QA系统实现(前端)

整理不易&#xff0c;请不要吝啬你的赞和收藏。 1. 前言 这篇文章是 Spring AI Q&A 系统的前端实现。这篇文章将介绍如何快速搭建一个基于 vue3 ElementPlus 的前端项目&#xff0c;vue3 项目的目录结构介绍&#xff0c;如何在前端实现流式响应&#xff0c;如何高亮显示…

中望CAD c#二次开发 ——VS环境配置

新建类库项目&#xff1a;下一步 下一步 下一步&#xff1a; 或直接&#xff1a; 改为&#xff1a; <Project Sdk"Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>NET48</TargetFramework> <LangVersion>pr…

Java—File

Flie对象就表示一个路径&#xff0c;可以是文件的路径、也可以是文件夹的路径这个路径可以是存在的&#xff0c;也允许是不存在的 file类常用的构造方法&#xff1a; 代码案列&#xff1a; 小结&#xff1a; file的常见成员方法 判断获取相关方法&#xff1a; 代码案例&#…

HTML的入门

一、HTML HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是一种用来告知浏览器如何组织页面的标记语言。 超文本&#xff1a;就是超越了文本&#xff1b;HTML不仅仅可以用来显示文本(字符串、数字之类)&#xff0c;还可以显示视频、音频等…

辛格迪客户案例 | 钥准医药科技GMP文件管理(DMS)项目

01 创新药企&#xff0c;崛起于启东 在我国医药行业蓬勃发展的浪潮中&#xff0c;钥准医药科技&#xff08;启东&#xff09;有限公司&#xff08;以下简称“钥准医药”&#xff09;犹如一颗冉冉升起的新星&#xff0c;闪耀着创新与活力的光芒。成立于2015年&#xff0c;钥准医…

DeepSeek本地化部署【window下安装】【linux下安装】

一、window 本地安装指导 1.1、下载window安装包 https://ollama.com/download/OllamaSetup.exe 1.2、点击下载好的安装包进行安装 检测安装是否成功&#xff1a; C:\Users\admin>ollama -v ollama version is 0.5.7有上面的输出&#xff0c;则证明已经安装成功。 配置…

【第1章:深度学习概览——1.4 深度学习的核心组件与概念解析之激活函数的作用与类型】

嘿,各位技术小伙伴们,今天咱们来聊聊深度学习中的一个超级重要的概念——激活函数。这可是深度学习模型中的“调味剂”,让模型变得更加灵活和强大。准备好了吗?咱们这就开讲! 一、激活函数是什么? 激活函数,简单来说,就是神经网络中的一层“魔法调料”。它给神经网络…

智慧升级,赋能未来——开启安全高效与绿色低碳新篇章

在数字化转型与“双碳”目标的驱动下&#xff0c;古河云科技携手全球领先的AI企业DeepSeek&#xff0c;以“AI数字孪生”为核心&#xff0c;推出全新一代智能运维与能碳管理解决方案&#xff0c;助力企业实现安全管控、设备效能优化、绿色节能与高效管理四大维度的全面升级&…

SpringCloud - Seata 分布式事务

前言 该博客为Sentinel学习笔记&#xff0c;主要目的是为了帮助后期快速复习使用 学习视频&#xff1a;7小快速通关SpringCloud 辅助文档&#xff1a;SpringCloud快速通关 源码地址&#xff1a;cloud-demo 一、简介 官网&#xff1a;https://seata.apache.org/zh-cn/ Seata …

Java面试宝典:说下Spring Bean的生命周期?

Java面试宝典专栏范围&#xff1a;JAVA基础&#xff0c;面向对象编程&#xff08;OOP&#xff09;&#xff0c;异常处理&#xff0c;集合框架&#xff0c;Java I/O&#xff0c;多线程编程&#xff0c;设计模式&#xff0c;网络编程&#xff0c;框架和工具等全方位面试题详解 每…

基于Swift实现仿IOS闹钟

仿 iOS 系统闹钟 添加闹钟效果图 收到通知效果图 更新日志 2018.09.12 由于 iOS 系统限制了注册本地推送的数量&#xff0c;最大的注册量为 64 条&#xff0c;且一旦超出 64 条&#xff0c;所有的推送都将失效&#xff0c;故而在添加推送的时候做了一个判断&#xff0c;超过…

如何使用 DeepSeek R1 构建开源 ChatGPT Operator 替代方案

开源大型语言模型&#xff08;LLMs&#xff09;的兴起使得创建 AI 驱动的工具比以往任何时候都更容易&#xff0c;这些工具可以与 OpenAI 的 ChatGPT Operator 等专有解决方案相媲美。在这些开源模型中&#xff0c;DeepSeek R1 以其强大的推理能力、自由的可访问性和适应性而脱…

力反馈设备在工厂生产中遥操作机器人的应用优势

工业自动化与智能化已经成为现代工厂提升生产效率、保障人员安全的关键手段。在这一背景下&#xff0c;Haption Virtuose力反馈设备凭借其卓越的性能和广泛的应用前景&#xff0c;在机器人遥操作领域脱颖而出&#xff0c;尤其在工厂生产中展现出了显著的应用优势。本文将深入探…

【STM32】输入捕获实现超声波测距

1.超声波测距原理 &#xff08;超声波发出到 遇到障碍物反弹回来的时间&#xff09;*声速/2就是到障碍物的距离 操作过程&#xff1a; 单片机给TRIG引脚输出一个脉冲&#xff0c;然后超声波模块会将ECHO电平拉高&#xff0c;当超声波遇到障碍物回来时&#xff0c;ECHO电平就会…

phpipam1.7安装部署

0软件说明 phpipam是一个开源Web IP地址管理应用程序&#xff08;IPAM&#xff09; phpipam官网&#xff1a;https://www.phpipam.net/ 1安装环境 操作系统&#xff1a;Rocky Linux9.5x86_64 phpipam版本&#xff1a;1.7 php版本&#xff1a;8.0.30 数据库版本&#xff1a…

【C语言】C语言 好声音比赛管理系统(含源码+数据文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 【C语言】C语言 好声音比赛管理系统&#xff08;含…

WPF进阶 | 深入 WPF 依赖项属性:理解其强大功能与应用场景

WPF进阶 | 深入 WPF 依赖项属性&#xff1a;理解其强大功能与应用场景 前言一、依赖项属性基础概念1.1 什么是依赖项属性1.2 依赖项属性与 CLR 属性的区别1.3 依赖项属性的定义与注册 二、依赖项属性的原理深入剖析2.1 依赖项属性系统的工作机制2.2 元数据&#xff08;Metadata…