C++ Package继承层次,采用继承实现快递包裹的分类计价(分为空运2日达、陆运3日达)。

一、问题描述:
  • Package继承层次,采用继承实现快递包裹的分类计价(分为空运2日达、陆运3日达)。自定义一个或多个快递公司,自定义计价方法,设计合适、合理的界面文本提示,以广东省内某市为起点,采用用户输入目的地点(省份或省份缩写等)、货物重量和快递时效(类型)的方式,计算快递运费,达到做成一个快递运费查询或者发快递的小软件。
  • 二、目的:
  • 1. 验证private、protect、public继承权限对数据成员和成员函数的权限影响;

    2. 掌握继承的优势,采用合适的继承方法,解决实际问题。

  • 三、问题具体解决方法:
  • 1、首先,创建基类Package,并在构造函数内对变量进行初始化,用a来判断用户所选择的快递为哪个。在各快递函数内定义各种费用。
  • class Package
    {
    public:Package(double weight,int a,int b,int c)//Package的构造函数 {weight_m=weight;this->c = c;firstWeight=1;switch(a){case 1: EMS();	break;case 2:	YTO();	break;case 3: YUNDA();break;case 4: ZTO();	break;case 5: SF();	break;case 6: STO();	break;}}void EMS()//邮政 {if(c==1)//省内包裹 {LandFreight=6;}else//省外包裹 {LandFreight=8;	} continuationWeight_Price=3;AirFreight=10;}void YTO()//圆通 {if(c==1)//省内包裹 {LandFreight=8;}else//省外包裹 {LandFreight=10;	} continuationWeight_Price=1.5;AirFreight=12;}void YUNDA()//韵达 {if(c==1)//省内包裹 {LandFreight=8;}else//省外包裹 {LandFreight=10;	} continuationWeight_Price=3;AirFreight=9;}		void ZTO()//中通 {if(c==1)//省内包裹 {LandFreight=5;}else//省外包裹 {LandFreight=8;	} continuationWeight_Price=2;AirFreight=14;}void SF()//顺丰 {if(c==1)//省内包裹 {LandFreight=7;}else//省外包裹 {LandFreight=9;	} continuationWeight_Price=2.5;AirFreight=9;}void STO()//申通 {if(c==1)//省内包裹 {LandFreight=10;}else//省外包裹 {LandFreight=12;	} continuationWeight_Price=1.5;AirFreight=15;}double getLandFreight(){return LandFreight;}double getAirFreight(){return AirFreight;}double calculateFees(double firstWeight_Price)//计算快递费 {expressFee = firstWeight_Price+ (weight_m - firstWeight)*continuationWeight_Price;return expressFee;} 
    private:double weight_m;//总重量double firstWeight_Price;//首重价格 double continuationWeight_Price;//续重价格 double firstWeight;	//首重 double continuationWeight;//续重 double expressFee;//快递费 double LandFreight;//陆运首重价格 double AirFreight;//空运首重价格 int c;
    };
    2、空运两日达类,是Package类的派生类,打印输出用户所需支付的快递费用。
  • class twoDayDeliver:protected Package//空运两日达 
    {
    public:	twoDayDeliver(double weight_,int a_,int b_,int c_):Package(weight_,a_,b_,c_){	}void outputAmount(){cout<<"你所需支付的快递费为(空运): "<<calculateFees(getAirFreight())<<endl;}
    };
    3、陆运三日达类,功能同上。
  • class threeDayDeliver:private Package//陆运三日达 
    {
    public:threeDayDeliver(double weight_,int a_,int b_,int c_):Package(weight_,a_,b_,c_){	}void outputAmount(){cout<<"你所需支付的快递费为(陆运): "<<calculateFees(getLandFreight())<<endl;}	
    };
    4、测试类的功能。注意:可以增加多一点交互。
  • int main()
    {int k;int a;//记录选择的快递公司的代号 int b;//记录选择的寄件方式(空/陆) int c;//记录所寄件的省份的是否为省内 string  destination;//记录目的地 double weight;//记录包裹重量  cout<<"********************下面为所提供的快递公司的具体收费情况:********************"<<endl<<"*公司名称(编号):  续重价格:   陆运首重价格(省内/省外):  空运首重价格: *"<<endl <<"*邮政(1)                   3/斤                        6/8              10 *"<<endl<<"*圆通(2)                 1.5/斤                        8/10             12 *"<<endl<<"*韵达(3)                   3/斤                        8/10              9 *"<<endl<<"*中通(4)                   2/斤                        5/8              14 *"<<endl<<"*顺丰(5)                 2.5/斤                        7/9               9 *"<<endl<<"*申通(6)                 1.5/斤                       10/12             15 *"<<endl<<"******************************************************************************"<<endl;cout<<"请输入你想寄的包裹的个数:"<<endl;cin>>k; while(k>0){cout<<"请输入选择的快递公司的代号(1~6):"<<endl;cin>>a;cout<<"请输入所寄包裹的目的地(缩写开头字母):"<<endl;cin>>destination;cout<<"请输入所寄包裹的总重量(以斤为单位):"<<endl;cin>>weight;cout<<"请选择寄件方式(输入编号):1.陆运,2.空运 " <<endl;cin>>b;if(destination=="GD"||destination=="gd")//判断目的地是省内还是省外 {c=1;}else{c=0;} 	if(b==1)//判断选择的是陆运还是空运并计算运费 {		threeDayDeliver t2(weight,a,b,c);//创建了一个threeDayDeliver的对象(陆运) t2.outputAmount();	}	else{twoDayDeliver t3(weight,a,b,c);//创建了一个twoDayDeliver的对象(空运)t3.outputAmount();}k--;cout<<endl;} return 0;
    }
    四、完整代码。
  • #include<iostream>
    #include<cstring>
    using namespace std;
    class Package
    {
    public:Package(double weight,int a,int b,int c)//Package的构造函数 {weight_m=weight;this->c = c;firstWeight=1;switch(a){case 1: EMS();	break;case 2:	YTO();	break;case 3: YUNDA();break;case 4: ZTO();	break;case 5: SF();	break;case 6: STO();	break;}}void EMS()//邮政 {if(c==1)//省内包裹 {LandFreight=6;}else//省外包裹 {LandFreight=8;	} continuationWeight_Price=3;AirFreight=10;}void YTO()//圆通 {if(c==1)//省内包裹 {LandFreight=8;}else//省外包裹 {LandFreight=10;	} continuationWeight_Price=1.5;AirFreight=12;}void YUNDA()//韵达 {if(c==1)//省内包裹 {LandFreight=8;}else//省外包裹 {LandFreight=10;	} continuationWeight_Price=3;AirFreight=9;}		void ZTO()//中通 {if(c==1)//省内包裹 {LandFreight=5;}else//省外包裹 {LandFreight=8;	} continuationWeight_Price=2;AirFreight=14;}void SF()//顺丰 {if(c==1)//省内包裹 {LandFreight=7;}else//省外包裹 {LandFreight=9;	} continuationWeight_Price=2.5;AirFreight=9;}void STO()//申通 {if(c==1)//省内包裹 {LandFreight=10;}else//省外包裹 {LandFreight=12;	} continuationWeight_Price=1.5;AirFreight=15;}double getLandFreight(){return LandFreight;}double getAirFreight(){return AirFreight;}double calculateFees(double firstWeight_Price)//计算快递费 {expressFee = firstWeight_Price+ (weight_m - firstWeight)*continuationWeight_Price;return expressFee;} 
    private:double weight_m;//总重量double firstWeight_Price;//首重价格 double continuationWeight_Price;//续重价格 double firstWeight;	//首重 double continuationWeight;//续重 double expressFee;//快递费 double LandFreight;//陆运首重价格 double AirFreight;//空运首重价格 int c;
    };class twoDayDeliver:protected Package//空运两日达 
    {
    public:	twoDayDeliver(double weight_,int a_,int b_,int c_):Package(weight_,a_,b_,c_){	}void outputAmount(){cout<<"你所需支付的快递费为(空运): "<<calculateFees(getAirFreight())<<endl;}
    };class threeDayDeliver:private Package//陆运三日达 
    {
    public:threeDayDeliver(double weight_,int a_,int b_,int c_):Package(weight_,a_,b_,c_){	}void outputAmount(){cout<<"你所需支付的快递费为(陆运): "<<calculateFees(getLandFreight())<<endl;}	
    };int main()
    {int k;int a;//记录选择的快递公司的代号 int b;//记录选择的寄件方式(空/陆) int c;//记录所寄件的省份的是否为省内 string  destination;//记录目的地 double weight;//记录包裹重量  cout<<"********************下面为所提供的快递公司的具体收费情况:********************"<<endl<<"*公司名称(编号):  续重价格:   陆运首重价格(省内/省外):  空运首重价格: *"<<endl <<"*邮政(1)                   3/斤                        6/8              10 *"<<endl<<"*圆通(2)                 1.5/斤                        8/10             12 *"<<endl<<"*韵达(3)                   3/斤                        8/10              9 *"<<endl<<"*中通(4)                   2/斤                        5/8              14 *"<<endl<<"*顺丰(5)                 2.5/斤                        7/9               9 *"<<endl<<"*申通(6)                 1.5/斤                       10/12             15 *"<<endl<<"******************************************************************************"<<endl;cout<<"请输入你想寄的包裹的个数:"<<endl;cin>>k; while(k>0){cout<<"请输入选择的快递公司的代号(1~6):"<<endl;cin>>a;cout<<"请输入所寄包裹的目的地(缩写开头字母):"<<endl;cin>>destination;cout<<"请输入所寄包裹的总重量(以斤为单位):"<<endl;cin>>weight;cout<<"请选择寄件方式(输入编号):1.陆运,2.空运 " <<endl;cin>>b;if(destination=="GD"||destination=="gd")//判断目的地是省内还是省外 {c=1;}else{c=0;} 	if(b==1)//判断选择的是陆运还是空运并计算运费 {		threeDayDeliver t2(weight,a,b,c);//创建了一个threeDayDeliver的对象(陆运) t2.outputAmount();	}	else{twoDayDeliver t3(weight,a,b,c);//创建了一个twoDayDeliver的对象(空运)t3.outputAmount();}k--;cout<<endl;} return 0;
    }
    五、运行结果展示。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【重磅】Cookies、headers、Session规律总结,搞定卡点

【重磅】Cookies规律总结,搞定卡点 登录后开始正式获取数据阶段: 不使用session: 放在请求头headers中 当如是:headers = {“user-agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36”,“Coo…

【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--作业

0. 题目 1. T1 逆深度参数化时的特征匀速模型的重投影误差 参考常鑫助教的答案&#xff1a;思路是将i时刻的观测投到world系&#xff0c;再用j时刻pose和外参投到j时刻camera坐标系下&#xff0c;归一化得到预测的二维坐标&#xff08;这里忽略了camera的内参&#xff0c;逆深…

一款简单而强大的文档翻译网站

一款文字/文件翻译的网站,支持多个领域的翻译&#xff0c;支持常见的语言翻译(韩/日/法/英/俄/德…),最大百分比的保持原文排版(及个别除外基本100%还原)。 新用户注册就有100页的免费额度&#xff0c;每月系统还会随机赠送翻译额度&#xff0c;说实话这比好多的企业要好的多了…

Magics测量两个圆形中心点距离的方法

摘要&#xff1a;本文介绍如何使用magics测量两个圆孔之间的距离。 问题来源&#xff1a;3D模型打开后&#xff0c;两个圆孔中心点之间的间距测量无法直接通过测距实现&#xff0c;需要进行一些小小的设置才行。 工具选择“量尺”&#xff0c;如果不设置的话&#xff0c;它会默…

安装anaconda时控制台conda-version报错

今天根据站内的一篇博客教程博客在此安装anaconda时&#xff0c;检查conda版本时报错如下&#xff1a; >>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<< Traceback (most recent call last): File “D:\An…

【WPF系列】- XAML语法规范

【WPF系列】- XAML语法规范 文章目录 【WPF系列】- XAML语法规范一、概述二、对象元素语法三、特性语法&#xff08;属性&#xff09;四、特性值的处理五、枚举特性值六、属性和事件成员名称引用七、属性元素语法八、集合语法九、XAML 内容属性XAML 内容属性值必须是连续的 十、…

ES6 数值扩展

数值分隔符 允许给较长的数值添加分隔符&#xff0c;分割不没有间隔位数限制&#xff0c;不影响原值&#xff0c;不能在特殊符号前后。 let num 1_00_000_000; 检测数值是否有限 有限&#xff1a;true 无限&#xff1a;false Numbet.isFinite(10) // true Numbet.isFinite(…

PTA:三元组顺序表表示的稀疏矩阵转置Ⅱ

三元组顺序表表示的稀疏矩阵转置Ⅱ 题目输入格式输出格式输入样例输出样例 代码 题目 三元组顺序表表示的稀疏矩阵转置Ⅱ。设a和b为三元组顺序表变量&#xff0c;分别表示矩阵M和T。要求按照a中三元组的次序进行转置&#xff0c;并将转置后的三元组置入b中恰当的位置。 输入…

CCF-CSP真题《202305-5 闪耀巡航》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202305-5试题名称&#xff1a;闪耀巡航时间限制&#xff1a;5.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 问题描述 西西艾弗岛旅游公司最近推出了一系列环绕西西艾…

pb:获取服务器时间、判断是否有重复数据

/*----------------------------------------------------------------------- * 函数名称:datetime gf_getsysdate(string as_dbms) * 功能描述:取得服务器的的日期时间(DateTime) * 参数含义:as_dbms 所使用的数据库DBMS * 返 回 值:datetime类型…

51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机锅炉监控系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 1.主要功能&#xff1a;讲解视频2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 51单片机锅炉监控系统仿…

hfut网络攻防技术阅读与综述

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 : 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑得累…

SpringCloud-Alibaba之OSS对象存储服务

阿里云的 OSS 服务进行云端的文件存储 用户认证需要上传图片、首页轮播需要上传图片&#xff0c;OSS分布式文件服务系统可以提供服务。 一、依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>aliyun-oss-spring-boot-starter</…

idea文件比对

idea文件比对 1.项目内的文件比对2.项目间的文件比对3. 剪切板对比4. 版本历史(不同分支和不同commit)对比 1.项目内的文件比对 在项目中选择好需要比对的文件(类)&#xff0c;然后选择Compare Files Mac下的快捷键是Commandd&#xff0c; 这样的比对像是git冲突解决一样 …

4.1 构建onnx结构模型-Reshape

前言 构建onnx方式通常有两种: 1、通过代码转换成onnx结构,比如pytorch —> onnx 2、通过onnx 自定义结点,图,生成onnx结构 本文主要是简单学习和使用两种不同onnx结构, 下面以reshape 结点进行分析 方式 方法一:pytorch --> onnx 固定shape import torchcla…

Java21新特性

一、Java21新特性 1、字符串模版 字符串模版可以让开发者更简洁的进行字符串拼接&#xff08;例如拼接sql&#xff0c;xml&#xff0c;json等&#xff09;。该特性并不是为字符串拼接运算符提供的语法&#xff0c;也并非为了替换StringBuffer和StringBuilder。 利用STR模版进…

【Linux】多路IO复用技术③——epoll详解如何使用epoll模型实现简易的一对多服务器(附图解与代码实现)

在正式阅读本篇博客之前&#xff0c;建议大家先按顺序把下面这两篇博客看一下&#xff0c;否则直接来看这篇博客的话估计很难搞懂 多路IO复用技术①——select详解&如何使用select模型在本地主机实现简易的一对多服务器http://t.csdnimg.cn/BiBib多路IO复用技术②——poll…

k8s:二进制搭建 Kubernetes v1.20

目录 1 操作系统初始化配置 2 部署 etcd 集群 2.1 准备签发证书环境 2.2 生成Etcd证书 3 部署 docker引擎 4 部署 Master 组件 5 部署 Worker Node 组件 k8s集群master01&#xff1a;192.168.30.105 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集…

《进化优化》第6章 进化策略

文章目录 6.1 &#xff08;11) 进化策略6.2 1/5规则&#xff1a;推导走廊问题 6.3 μ1进化策略6.4 μλ和&#xff08;μ,λ&#xff09;进化策略6.5 自身自适应进化策略协方差阵自适应CMA 6.1 &#xff08;11) 进化策略 假设f(x)是随机向量x的函数,我们想要最大化适应度f(x).…

2023年辽宁省数学建模竞赛A题铁路车站的安全标线

2023年辽宁省数学建模竞赛 A题 铁路车站的安全标线 原题再现&#xff1a; 在火车站或地铁站台上&#xff0c;离站台边缘 1 米左右的地方都画有一条黄线(或白线)&#xff0c;这是为什么呢?   这条线称为安全线(业内称之为安全标线)&#xff0c;人们在候车时必须站在安全线以…