当前位置: 首页 > news >正文

blog作业

作为一名刚开始接触Java的新手,这段时间的学习让我对编程有了全新的认识,也深刻体会到Java作为一门面向对象语言的强大。尽管学习过程并不是一帆风顺,但我对Java还是有了一定的了解。
1第一次作业
1.1设计要求
类设计必须符合单一职责原则(SRP)。
1.2输入格式
第1行:输入航班号flightNo(字符串,例如CA1201)
第2行:输入该航班最大载重重量maxWeight(实型数,例如1200.0)
第3行:输入该航班要装载的货物件数n(整型数,例如10)
从第4行开始,循环输入要装载的货物的名称cargoName(字符串)和cargoWeight重量(实型数)
1.3类图
第一次作业类图如下。

图片1

类关系说明
(1)聚合关系
LoadManifest 聚合 Flight、聚合多个 Cargo;
(2)工具调用
LoadManifest 调用 CargoSorter 静态方法完成排序;
(3)入口
Main 主类负责数据录入、业务调用、结果输出。
1.4复杂度分析
第一次作业的复杂度分析如下。

图片2

(1)整体规模
代码总行数:126 行
有效语句:72 条
类与接口总数:5 个
平均每个类包含方法数:3.2 个
平均每个方法语句数:2.63 条
(2)复杂度核心指标
最大复杂度:4
平均复杂度:1.2
最深块嵌套:5
平均块深度:1.71
1.5结果

图片3

2第二次作业
2.1设计要求
必须严格遵循单一职责原则(SRP),不得将多个职责合并到一个类中。违背 SRP 本题不得分。
必须实现以下类(参考提供的类图与代码框架):
Position:表示货舱中的一个位置(行、列),提供 getPosName() 等方法。
Cargo:表示货物,包含 id(货物名称)、weight。
CargoCompartment:货舱类,包含 id、maxWeight、positions(组合)、cargos(聚合),提供 addCargo(Cargo cargo)、getCurrentWeight() 等方法。
Flight:航班类,包含航班号、最大起飞重量、最大业载重量、List。
LoadDispatcher:调度类,负责对货物列表按重量降序排序(sortCargos)、查找货物(FindCargo)。
InputValidator:输入校验类,提供整数、浮点数的范围校验方法。
2.2输入格式
第1行:航班号(字符串)
第2行:最大起飞重量(实型)
第3行:最大业载重量(实型)
第4行:货舱数量 m(整数,1 ≤ m ≤ 5)
接下来 m 行,每行描述一个货舱:货舱ID(字符串) 最大载重(实型) 行数(整数) 列数(整数)
接下来一行:货物件数 n(整数,1 ≤ n ≤ 100)
接下来 n 行,每行描述一件货物:货物名称(字符串) 重量(实型) 目标货舱ID(字符串,必须与上面输入的某个货舱ID一致)。
2.3类图
第二次作业类图如下

图片4

类关系说明
(1)包含关系(组合 / 聚合)
货舱(CargoCompartment)包含多个位置(Position)
货舱(CargoCompartment)装载多个货物(Cargo)
航班(Flight)包含多个货舱(CargoCompartment)
(2)依赖关系
调度器(LoadDispatcher)依赖货物、货舱
主程序(Main)依赖所有业务类
输入验证(InputValidator)提供静态工具方法
(3)类职责
Position:存储坐标位置
Cargo:货物信息(ID、重量、目标货舱)
CargoCompartment:货舱管理(载重、容量、超载判断)
Flight:航班信息(起飞重量、总载重判断)
LoadDispatcher:货物排序、货舱匹配
InputValidator:输入合法性校验
Main:程序入口、输入输出、流程控制
2.4复杂度分析
第二次作业的复杂度分析如下

图片5

(1)整体代码规模与结构
代码总行数:332 行
有效语句:217 条
类总数:7 个
平均每个类方法数:6.57 个
平均每个方法语句数:3.17 条
(2)核心复杂度指标
最大复杂度:5
平均复杂度:1.27
最深块嵌套:5
平均块深度:1.97
2.5结果

图片6

3第三次作业
3.1设计要求
本次迭代新增约4个类,系统总类数达到10个左右。严禁使用继承和多态(无extends、无interface、无instanceof)。
3.2输入格式
第1行,航班号(字符串)
第2行,前舱货架行号(整型,≥0)
第3行,前舱货架列号(整型,≥0)
第4行,前舱最大载重量(实型,≥0.0)
第5行,后舱货架行号(整型,≥0)
第6行,后舱货架列号(整型,≥0)
第7行,后舱最大载重量(实型,≥0.0)
第8行,乘客人数n(整型,≥0)
从第9行开始,连续n行,输入每名乘客所携带行李重量(实型数,≥0.0)
货物总件数m(整型,≥0)
装载在前舱的货物件数p(整型,0≤p≤m)
接下来连续输入装载在前舱的p件货物的信息,分别为:
货物编号(整型,≥0)
货物重量(实型,≥0.0)
在输入装载在后舱的m-p件货物的信息,分别为:
货物编号(整型,≥0)
货物重量(实型,≥0.0)
3.3类图
第三次作业类图如下。

图片7

类关系说明
(1)包含 / 组合关系
旅客(Passenger)包含行李(Luggage)
货舱(CargoCompartment)装载多个货物(Cargo)
航班(Flight)包含多个旅客 + 两个货舱
(2)工具类(静态调用)
InputValidator:输入合法性校验
LoadDispatcher:货物排序
WeightBalanceCalculator:重量与重心计算
(3)主程序
Main:流程控制、输入输出、整合所有类
3.4复杂度分析
第三次作业的复杂度分析如下

图片8

(1)整体代码规模
代码总行数:328 行
有效语句:104 条
类总数:6 个
平均每类方法数:4.17 个
平均每个方法语句数:2.20 条
(2)核心复杂度指标
最大复杂度:2
平均复杂度:1.08
最深块嵌套:4 层
平均块深度:1.64
3.5结果

图片9

总结
1.优点:
(1)面向对象设计规范
合理拆分实体类(货物、航班、货舱、旅客),属性私有化,统一使用getter/setter封装,符合封装特性。
(2)职责划分清晰
实体类存数据,工具类做排序 / 校验 / 计算,业务类做装载逻辑,主程序只负责输入输出,高内聚低耦合。
(3)排序逻辑统一规范
均使用基础排序算法完成货物排序,逻辑易懂,适合课程教学场景。
(4)具备异常防控意识
后两套加入数值范围校验、负数拦截、装载前载重判断,程序健壮性逐步提升。
(5)复杂度控制优秀
整体圈复杂度普遍偏低,嵌套层级少,代码易读、易调试、易修改。
2.改进部分
(1)统一命名规范
部分变量命名偏随意,统一采用小驼峰,常量全部大写并添加语义注释。
(2)替换固定长度数组 → ArrayList 动态集合
第三次作业使用Cargo[]、Passenger[]固定数组,存在容量上限,改用List可无限扩容,更灵活安全。
(3)提取重复遍历代码
多套代码频繁遍历集合统计总重量,可封装统一统计工具方法,减少冗余代码。
(4)格式化输出统一封装
将舱单打印、平衡报表输出抽离为独立打印工具类,主程序更简洁。
(5)补充代码注释
三次作业代码注释占比均为 0%,建议为类、核心方法、常量等添加功能说明,提升可读性与实验报告完整性。
3.整体总结
从简单重量汇总 → 分舱精细化管理 → 航空重心专业配平,三套代码实现了从基础 OOP 语法练习到行业业务落地的完整递进。代码整体架构合理、复杂度低、易维护,仅需在代码规范、数据结构、异常容错、功能扩展性上优化完善,即可成为一套完整、规范、可商用教学级别的航班货物配载系统。

http://www.jsqmd.com/news/840820/

相关文章:

  • LabVIEW集成Python虚拟环境:基于Conda的隔离部署与工程实践
  • 5.【Python】Python3 运算符
  • Blog-1
  • 从BEC信道到5G标准:手把手图解Polar码的‘信道极化’核心思想
  • 工业防爆监控技术方案:安徽高危场景选型与实施要点
  • OpenClaw自动化配置实战:从入门到精通,打造高效工作流
  • Python Turtle画图进阶:从复制代码到理解几何,打造你的专属动漫头像
  • 开源可观测性平台SigNoz:一体化监控与分布式链路追踪实战
  • Romeo控制板开发说明
  • ViGEmBus:终极Windows游戏控制器模拟解决方案,彻底改变游戏输入体验
  • PD SINK芯片选型指南:从核心参数到实战场景的深度解析
  • 突破Windows窗口限制:免费开源工具WindowResizer终极指南
  • 【嵌入式 AI 实战第 9 期】环境感知(一)气体传感器阵列与数据采集(附完整 C 语言驱动)
  • 西门子1200PLC+FactoryIO:手把手教你搭建三层电梯仿真项目(附完整程序与避坑点)
  • 基于Hermes模型构建AI智能体:中文资源指南与实践路径
  • Book118文档下载器:三步轻松获取免费PDF的完整指南
  • 基于RT-Thread与N32G457的工业UART网关设计与实现
  • 开源自动化工具集OpenClaw:模块化设计与实战应用解析
  • 2026 年华东储气罐源头厂家口碑推荐:储气罐 / 碳钢 / 不锈钢 / ASME / 国标 / 高压 / 定制选择指南 - 海棠依旧大
  • 在天津找家教平台靠不靠谱看这三条:大学生创办、严师考核、费用直达 - 教育资讯板
  • SISSO 终极指南:数据驱动建模的强大工具
  • 【Tools】从零到一:Typora 1.2.4 极速安装与个性化配置全攻略
  • 阿里云 ECS 密钥对登录配置后密码登录失效如何恢复
  • Rust项目AI助手集成:rust-docs-mcp实现代码上下文智能问答
  • 英语阅读_Natural disasters
  • Linux tar 归档命令深度解析:从文件打包到压缩算法的完整实现
  • 6.【Python】Python3 数字(Number)
  • 基于Adafruit TRRS Trinkey构建低成本无障碍鼠标键盘模拟器与开关控制器
  • Apex Legends压枪系统深度解析:智能武器检测与动态补偿算法实战指南
  • 5个惊艳技巧:彻底告别安卓模拟器,Windows原生运行APK应用