第二次作业
前言
对于题目集8,9的前两道题在此不过多赘述,因为都是对继承与多态的不断学习以及加深印象,代码复杂度以及长度并不高,主要是为了航空货运管理系统服务。
本次航空货运管理相较于电梯代码复杂度更为简单,对于思维逻辑的要求并没有那么高,主要是对学习的抽象类,继承与多态,合成复用等的学习内容进行实践。Java的核心知识也都考到了,像接口多态怎么写,集合框架怎么用,日期格式怎么处理,还有输入验证和异常处理这些细节。在写代码的时候,还得把类的功能划分清楚,理好数据处理的流程,考虑到以后加新功能也方便。难点也不少,接口设计不好后面扩展就麻烦,对象之间的关系容易搞混,输入验证要是漏了非法数据就会出bug,重复的代码逻辑也得想办法封装复用。做完这个作业,面向对象设计和复杂系统开发的能力都能练
作业要求如下:
一、计费重量的确定
空运以实际重量(Gross Weight)和体积重量(Volume Weight)中的较 高者作为计费重量。 计算公式: 体积重量(kg) = 货物体积(长×宽×高,单位:厘米)÷ 6000
示例: 若货物实际重量为 80kg,体积为 120cm×80cm×60cm,则: 体积重量 = (120×80×60) ÷ 6000 = 96kg 计费重量取 96kg(因 96kg > 80kg)。
二、基础运费计算
费率(Rate):航空公司或货代根据航线、货物类型、市场行情等制定(如 CNY 30/kg)。本次作业费率采用分段计算方式:
三、题目说明
本次题目模拟某客户到该航空公司办理一次货运业务的过程: 航空公司提供如下信息: 航班信息(航班号,航班起飞机场所在城市,航班降落机场所在城市,航班 日期,航班最大载重量) 客户填写货运订单并进行支付,需要提供如下信息: ⎫ 客户信息(姓名,电话号码等) ⎫ 货物信息(货物名称,货物包装长、宽、高尺寸,货物重量等) ⎫ 运送信息(发件人姓名、电话、地址,收件人姓名、电话、地址,所选 航班号,订单日期) ⎫ 支付方式(支付宝支付、微信支付) 注:一个货运订单可以运送多件货物,每件货物均需要根据重量及费率单独 计费。 程序需要从键盘依次输入填写订单需要提供的信息,然后分别生成订单信 息报表及货物明细报表。
四、题目要求
本次题目重点考核面向对象设计原则中的单一职责原则、里氏代换原则、开 闭原则以及合成复用原则。
输入格式:
按如下顺序分别输入客户信息、货物信息、航班信息以及订单信息。
客户编号
客户姓名
客户电话
客户地址
运送货物数量
[货物编号
货物名称
货物宽度
货物长度
货物高度
货物重量
]//[]内的内容输入次数取决于“运送货物数量”,输入不包含“[]”
航班号
航班起飞机场
航班降落机场
航班日期(格式为YYYY-MM-DD)
航班最大载重量
订单编号
订单日期(格式为YYYY-MM-DD)
发件人地址
发件人姓名
发件人电话
收件人地址
收件人姓名
收件人电话
输出格式:
如果订单中货物重量超过航班剩余载重量,程序输出The flight with flight number:航班号 has exceeded its load capacity and cannot carry the order. ,程序终止运行。
如果航班载重量可以承接该订单,输出如下:
客户:姓名(电话)订单信息如下:
航班号:
订单号:
订单日期:
发件人姓名:
发件人电话:
发件人地址:
收件人姓名:
收件人电话:
收件人地址:
订单总重量(kg):
微信支付金额:
货物明细如下:
明细编号 货物名称 计费重量 计费费率 应交运费
1 ...
2 ...
注:输出中实型数均保留1位小数。
第一次作业分析结果:


总结
本次作业我的问题在于抽象类的使用并不到位以及对于类之间关系的理解不充分
第二次航运程序
作业要求:本次题目重点考核面向对象设计原则中的单一职责原则、里氏代换原则、开闭原则以及合成复用原则、依赖倒转原则。
设计与分析:

、

总结
两个系统都经历了从简单实现到迭代优化的过程,从中学习到了很多经验:掌握了继承/多态的应用;学会了使用集合框架处理业务数据;实践了异常处理机制的正确用法,同时加强了对这种较大程序的框架搭建经验,了解了哪个类后续可以作为父类,哪个方法可以抽象化在子类中实现多态
浙公网安备 33010602011771号