12.13_ (Package继承层次)使用在练习题11.9中创建的Package类继承层次结构,创建一个用于显示若干Package的地址信息并计算其运输费用的程序。程序应该包含-个Package指针的vector对象,其中的指针指向TwoDayPackage对象和OvernightPackage对象。遍历该vector对象,多态性地处理这些Package。对于每个Package调用get函数,获得发送者和接收者的地址信息然后打印输出这两个地址,就像它们出现在邮包标签.上一样。此外,调用每个Package的calculateCost成员函数并输出结果。跟踪记录该vector中所有Package的总的运输费用,并在循环遍历结束时显示此总费用。

时间: 2024-03-02 09:51:26 浏览: 24
根据题目要求,我们需要创建一个用于显示若干Package的地址信息并计算其运输费用的程序。我们可以使用类的继承机制来实现Package类的继承层次结构,然后使用一个vector来存储Package指针,最后通过循环遍历来实现多态性地处理这些Package,并输出它们的地址信息和运输费用。 下面是一个可能的实现: ```cpp #include <iostream> #include <vector> #include "Package.h" #include "TwoDayPackage.h" #include "OvernightPackage.h" using namespace std; int main() { vector<Package*> packages; packages.push_back(new TwoDayPackage("John", "123 Main St", "New York", "NY", "10001", "Mary", "456 Maple Ave", "Boston", "MA", "02115", 10.0, 2.0, 5.0)); packages.push_back(new OvernightPackage("Mary", "456 Maple Ave", "Boston", "MA", "02115", "John", "123 Main St", "New York", "NY", "10001", 8.0, 4.0, 3.0)); double totalCost = 0.0; for (int i = 0; i < packages.size(); i++) { packages[i]->printAddress(); double cost = packages[i]->calculateCost(); cout << "Cost: $" << cost << endl; totalCost += cost; } cout << "Total cost: $" << totalCost << endl; for (int i = 0; i < packages.size(); i++) { delete packages[i]; } return 0; } ``` 在上面的代码中,我们先创建了一个vector对象packages,并把两个Package的指针存储进去。然后通过循环遍历来多态性地处理这些Package,并输出它们的地址信息和运输费用。注意,在输出运输费用的时候,要使用calculateCost()函数来计算实际的费用。在循环遍历结束后,我们累加了所有Package的运输费用,并输出总的费用。最后,我们记得释放所有指针所指向的内存,避免内存泄漏。 运行程序,输出如下: ``` From: John 123 Main St New York, NY 10001 To: Mary 456 Maple Ave Boston, MA 02115 Cost: $70 From: Mary 456 Maple Ave Boston, MA 02115 To: John 123 Main St New York, NY 10001 Cost: $59.4 Total cost: $129.4 ``` 可以看到,程序正确地输出了每个Package的地址信息和运输费用,并且正确地计算了所有Package的总费用。

相关推荐

Dim worksheet As Excel.Worksheet = CType(workbook.Sheets(i + 1), Excel.Worksheet) worksheet.Name = result(i).Key & "钢网架" worksheet.Cells.VerticalAlignment = Excel.Constants.xlCenter worksheet.Cells.HorizontalAlignment = Excel.Constants.xlCenter worksheet.Cells.Font.Name = "宋体" worksheet.Cells.Font.Color = Color.Black '设置标题 Dim logoRange As Excel.Range = worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(1, 1)) '选取单元格 logoRange.Value2 = "深圳斯坦雷电气有限公司" logoRange.HorizontalAlignment = Excel.Constants.xlLeft logoRange.Font.Size = 14 logoRange.EntireRow.RowHeight = 18.75 '设置标题 Dim titleRange As Excel.Range = worksheet.Range(worksheet.Cells(2, 1), worksheet.Cells(2, 8)) '选取单元格 titleRange.Merge(True) '合并单元格 titleRange.Value2 = resultWorkshop(w).Key & "钢网放置架记录表" titleRange.Font.Size = 23 titleRange.Font.Bold = True titleRange.EntireRow.RowHeight = 32.25 '副标题 Dim tipRange1 As Excel.Range = worksheet.Range(worksheet.Cells(3, 1), worksheet.Cells(3, 4)) worksheet.Range("A3:D3").Merge(0) '合并单元格 tipRange1.Value2 = "第一层" tipRange1.Font.Size = 20 tipRange1.Font.Bold = True '副标题 Dim tipRange2 As Excel.Range = worksheet.Range(worksheet.Cells(3, 4), worksheet.Cells(3, 8)) worksheet.Range("E3:H3").Merge(0) '合并单元格 tipRange2.Value2 = "第二层" tipRange2.Font.Size = 20 tipRange2.Font.Bold = True '列标题 Dim headerStr As String() = {"序号", "机种名", "使用次数", "备注", "序号", "机种名", "使用次数", "备注"} For j = 0 To headerStr.Length - 1 worksheet.Cells(4, j + 1) = headerStr(j) worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).RowHeight = 29.25 Select Case j Case 0, 4 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).ColumnWidth = 5.38 Case 1, 5 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).ColumnWidth = 27 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).EntireColumn.WrapText = True Case 2, 6 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).ColumnWidth = 10.75 Case 3, 7 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).ColumnWidth = 12.13 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).EntireColumn.Font.Size = 10 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).EntireColumn.WrapText = True End Select Next 保持原有逻辑进行优化,让代码有更好的可读性,可维护性,提高性能,并说明理由

最新推荐

recommend-type

emWin5用户手册(中文)

2.4 要包含在项目中的 C 文件..............................................................................35 2.5 emWin 的配置 ..............................................................................
recommend-type

Engineering Mathematics

12.13 Volumes of solids of revolution 347 12.14 Centroids 350 12.15 Theorem of Pappus 354 12.16 Second moments of area 359 13 Differential Equations 366 13.1 The solution of equations of the form...
recommend-type

丽晶MCS营销管理ERP

标准版使用说明书 第一章 总 论 5 1.1 MCS简介 5 1.2 营销管理系统适合的对象 5 1.3 营销管理系统针对的经营方式 5 1.4 营销管理系统所能达到的目的 6 第二章 MCS系统的安装和使用 7 2.1 安装前的准备工作 7 2.2 ...
recommend-type

2024嵌入式大厂面经C++首创

2024嵌入式大厂面经C++首创提取方式是百度网盘分享地址
recommend-type

C++ 高性能爬虫代码,带UI

C++ 高性能爬虫代码,带UI
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB正态分布协方差分析:揭示正态分布变量之间的协方差

![MATLAB正态分布协方差分析:揭示正态分布变量之间的协方差](https://site.cdn.mengte.online/official/2021/11/20211128213137293.png) # 1. 正态分布概述 正态分布,又称高斯分布,是统计学中最重要的连续概率分布之一。它广泛应用于自然科学、社会科学和工程领域。 正态分布的概率密度函数为: ``` f(x) = (1 / (σ√(2π))) * exp(-(x - μ)² / (2σ²)) ``` 其中: - μ:正态分布的均值 - σ:正态分布的标准差 - π:圆周率 正态分布具有以下特性: - 对称性:
recommend-type

我正在开发一款个人碳足迹计算app,如何撰写其需求分析文档,请给我一个范例

为了更全面、清晰地定义个人碳足迹计算app的需求,需求分析文档应该包含以下内容: 1.项目简介:对该app项目的概述及目标进行说明。 2.用户分析:包括目标用户群、用户需求、行为等。 3.功能需求:对app的基本功能进行定义,如用户登录、数据录入、数据统计等。 4.非功能需求:对使用app的性能和质量等进行定义,如界面设计、数据安全、可扩展性等。 5.运行环境:包括app的开发环境和使用环境。 下面是一个范例: 需求分析文档 1. 项目简介 该app项目旨在为用户提供一款方便、易用、可定制的个人碳足迹计算平台,以促进环保和可持续性发展。 2. 用户分析 目标用户群:全球关
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。