Package继承层次,采用继承实现快递包裹的分类计价(分为空运2日达、陆运3日达)。自定义一个或多个快递公司,自定义计价方法,设计合适、合理的界面文本提示,以佛科院为起点,采用用户输入目的地点(省份或省份缩写等)、货物重量和快递时效(类型)的方式,计算快递运费,达到做成一个快递运费查询或者发快递的小软件。
时间: 2023-06-12 09:07:53 浏览: 149
为了实现快递包裹的分类计价,我们需要设计一个类层次结构,其中父类为Package,子类为AirPackage和LandPackage,分别代表空运和陆运快递包裹。具体实现如下:
```python
class Package:
def __init__(self, weight):
self.weight = weight
def calculate_cost(self):
pass
class AirPackage(Package):
def calculate_cost(self):
return self.weight * 10
class LandPackage(Package):
def calculate_cost(self):
return self.weight * 5
```
在这个类层次结构中,Package为父类,包含一个重量属性和一个计算运费的方法calculate_cost。AirPackage和LandPackage分别为子类,重写了calculate_cost方法,分别计算空运和陆运快递包裹的运费。
接下来,我们需要自定义一个或多个快递公司和相应的计价方法。这里我们以顺丰快递为例,定义一个名为SFExpress的类,并实现其计价方法:
```python
class SFExpress:
def calculate_cost(self, destination, weight, delivery_type):
if delivery_type == "2日达":
package = AirPackage(weight)
cost = package.calculate_cost()
elif delivery_type == "3日达":
package = LandPackage(weight)
cost = package.calculate_cost()
else:
raise ValueError("Invalid delivery type")
# 根据目的地点计算运费
if destination == "北京":
cost += 10
elif destination == "上海":
cost += 15
elif destination == "广州":
cost += 20
else:
cost += 30
return cost
```
在SFExpress类中,我们实现了一个计算运费的方法calculate_cost,其参数包括目的地点、货物重量和快递时效。根据快递时效的不同,我们选择调用AirPackage或LandPackage的calculate_cost方法计算基本运费,然后根据目的地点的不同,加上不同的附加费用。
最后,我们需要设计一个合适、合理的界面文本提示,以用户输入目的地点、货物重量和快递时效的方式,计算快递运费。一个简单的实现如下:
```python
def main():
print("欢迎使用快递运费查询系统!")
destination = input("请输入目的地点:")
weight = float(input("请输入货物重量(kg):"))
delivery_type = input("请输入快递时效(2日达/3日达):")
sf = SFExpress()
cost = sf.calculate_cost(destination, weight, delivery_type)
print("您的运费为:%.2f元" % cost)
if __name__ == "__main__":
main()
```
在这个界面中,我们首先输出欢迎信息,然后要求用户输入目的地点、货物重量和快递时效。接着,我们创建一个SFExpress对象,并调用其calculate_cost方法计算运费。最后,输出运费信息。
通过上面的实现,我们就可以做成一个快递运费查询或者发快递的小软件了。用户输入目的地点、货物重量和快递时效,程序即可自动计算出运费并输出。
阅读全文