航空器配载与货运管理系统开发学习总结博客

这学期的航空器配载与货运管理系统相关编程作业,一共分为三次迭代,从最基础的框架搭建,到功能扩展,再到最后的载重平衡计算,一步步完成了一个完整的小型航空货运配载管理程序。三次作业的知识点层层递进,难度逐步提高,内容也越来越贴近真实的航空配载业务。
第一次作业以 Java 面向对象基础为主,题量不大,重点是类的定义、封装和简单组合;第二次作业开始加入业务逻辑、输入校验、货物排序等内容,代码量明显增加,对程序的健壮性要求更高;第三次作业则是完整版本,加入了旅客、行李、载重平衡、力矩重心计算等专业内容,是整个阶段最复杂、最考验逻辑的一次。
整体来看,三次作业不是简单的重复,而是从会写代码,到写对代码,再到写好、写严谨的过程。不仅巩固了 Java 类设计、集合使用、方法封装、排序算法、输入校验等基础技能,还把航空器载重平衡的专业知识真正用代码实现了出来,让我体会到编程和专业业务结合的实际意义。通过这三次作业,我从只会写简单语法,慢慢具备了完成一个小型业务系统的能力,也养成了梳理流程、严谨调试、重视格式和边界条件的习惯。
一、设计与源码分析

  1. 第一次作业设计与分析
    第一次作业是整个系统的雏形,目标很明确:搭建最基础的实体结构,实现航班、货舱、货物的基本管理和信息展示。这一次的重点是理解面向对象,把现实中的东西变成代码里的类。
    我设计了Flight、CargoCompartment、Cargo几个核心类,用最基础的组合关系把它们联系起来:航班包含货舱,货舱装载货物。类里面主要是属性封装、get/set 方法,以及简单的添加货物、判断重量的功能。整个程序逻辑简单,没有复杂的工具类,输入输出和判断逻辑基本都写在主方法里。
    从结构上看,第一次作业的类关系清晰,但耦合度高、功能单一,只能完成最基础的数据录入和展示。虽然能跑通流程,但扩展性很差,也没有做完善的异常处理。这次作业让我明白:一个程序的底层结构非常重要,类设计得合理,后面迭代修改会轻松很多。
    1189063e3659172dcce1a3906edbe331
    image
    image

  2. 第二次作业设计与分析
    第二次作业是第一次的升级,重点是完善业务逻辑、提高程序健壮性。在第一次的基础上,我增加了前舱、后舱双货舱管理,加入了输入校验,还手写了冒泡排序实现货物按重量降序排列。
    这一次我开始做模块化拆分,把输入校验单独写成InputValidator类,把排序功能单独放在LoadDispatcher类,不再把所有代码堆在一起。这样一来,代码结构清晰很多,职责也更明确:实体类只管数据,工具类只管功能,主方法只管流程。
    在功能上,第二次作业要求更严格:所有输入不能为负、货物要排序、货舱容量要判断、输出格式要规范。我在调试中发现,很多错误不是语法错,而是逻辑顺序错、判断条件错、遍历方式错。比如统计总重量时忘记累加、查找货舱时匹配条件写错、排序调用时机不对等。
    这次作业让我真正体会到:写代码不只是实现功能,还要考虑各种异常情况,程序不能只在理想数据下运行。模块化、规范化、可调试性,比单纯实现功能更重要。
    4b8a0fd6ec9025d6876aaf1556a72c62
    a24bf44224285fa472f4f3b0e5a5a765
    13cdab333007063258b2ee2380e3d3b3

  3. 第三次作业设计与分析
    第三次作业是最终完整版本,也是难度最高、内容最全面的一次。在第二次的基础上,新增了旅客、行李组合结构,以及最核心的航空器载重平衡计算,包括总重量、总力矩、重心位置、重心百分比,最后还要判断配平是否安全。
    类结构上,我新增了Ren(旅客)、Xing(行李),用组合关系实现旅客体重加行李重量的计算;同时把所有配平计算单独封装到Cal类,让计算逻辑统一、清晰、便于修改。整个程序形成了完整结构:实体类、管理类、工具类、计算类,层次分明。
    最关键的部分是载重平衡公式的代码实现:空机重量与力臂、旅客力矩、前舱后舱力矩,全部要严格按照公式累加,再用总力矩除以总重量得到重心,最后换算成 MAC 百分比。任何一个常量写错、任何一个力臂带错,结果都会完全不对。
    同时,第三次作业对输入校验、边界判断、输出格式、提示文字要求极高:前舱超载、后舱超载、货物数量范围非法,都必须精准拦截。我也是在这次作业中,真正学会了控制代码执行顺序、严格校验输入时机、逐行核对输出格式。
    可以说,第三次作业是对前两次所有知识的综合运用,也是我收获最大、提升最明显的一次。
    e5bc3f45fa9034702a9c09ef8d5dae29
    fa3503d8e7c69299dd14ba7906d84b1f
    fa3503d8e7c69299dd14ba7906d84b1f

二、采坑心得
三次作业写下来,我踩过的坑非常多,很多错误看似小,却能直接导致测试不通过。下面结合我的代码、调试过程和测试结果,把最典型、最真实的问题总结出来。
第一个坑:类和方法命名不规范,封装不严格。第一次作业时,我随便给方法起名,调用时经常找不到;成员变量没有私有化,外部可以随便改值,导致数据混乱。后来统一用标准的 get/set 结构,代码立刻稳定很多。
第二个坑:集合遍历和对象查找逻辑错误。在统计旅客总重量、货物总重量时,我一开始没有循环累加,直接赋值,结果数值永远不对;查找前舱、后舱时,遍历条件写错,经常拿到null引发空指针异常。后来我学会画简单流程,一步一步打印中间值,很快就定位了问题。
第三个坑:输入校验的时机错误,这是第三次作业最容易失分的地方。我最开始把 “前舱货物数量范围校验” 写在读完全部货物之后,完全失去了拦截作用,导致 “输入数据范围非法” 测试一直不通过。后来改成先读数值 → 立刻校验 → 再录数据,才顺利通过。
第四个坑:载重平衡公式理解不到位。一开始我把力臂数值记错、混用,力矩计算结果和样例差很多。我只能对照题目公式,手动笔算一遍,再和代码逐行对比,才把空机力臂、旅客力臂、前后舱力臂全部修正正确。
第五个坑:货舱超载判断逻辑不对。最早我是等所有货物装完再统一判断,不符合测试要求;后来改成装一件判断一件,装不进去立刻提示并退出,前舱、后舱容量不足测试才全部通过。
第六个坑:输出格式不严格。空格、换行、小数位数、提示文字稍有不同,就被判错。比如 “数值不能为负数”“输入必须在 0 到 m 之间”“警告文字”,必须和题目一模一样,我前后修改了很多次才完全对齐。
第七个坑:排序调用时机错误。曾经把排序写在货物添加之前,结果集合为空,排序无效。后来明确:所有货物添加完成后,再执行排序,功能才正常。
这些坑让我深刻意识到:写程序不是 “能跑就行”,而是逻辑严谨、顺序正确、边界全覆盖、格式完全标准。任何一个小疏忽,都会导致结果错误。
三、改进建议
结合我写的三次作业代码,我从实际开发角度提出一些可持续改进的建议,让程序更完善、更易维护、更贴近真实使用场景。
第一,统一管理全局常量。现在力臂、重量、安全范围等固定值虽然有定义,但有些还是散落在代码里。可以建一个专门的常量类,把所有固定数值放在一起,以后修改标准时,只改一处即可,不用到处查找替换。
第二,优化输入方式,增加提示信息。目前控制台输入没有提示,用户不知道该输什么。可以加中文提示,让操作更友好;也可以加入文件读取功能,批量读取测试数据,提高测试效率。
第三,拆分更细的功能模块。现在计算类Cal代码较多,未来可以继续拆分为旅客计算、货舱计算、重心计算等小类,让每个类职责更单一,代码更清爽。
第四,加强异常处理。目前只校验了数值范围,但如果输入字母、符号,程序依然会崩溃。可以加入try-catch捕获异常,让程序更稳定。
第五,扩展货物和旅客属性。现在货物只有编号和重量,现实中还应有目的地、类型、优先级等。未来可以扩展这些属性,增加筛选、统计功能,让系统更实用。
第六,减少重复遍历,提高效率。程序中多次查找前舱、后舱对象,可以在一开始获取后缓存起来,避免重复遍历集合,提升运行效率。
第七,优化输出报表。目前只能控制台打印,可以实现输出到本地文件,自动保存舱单,样式排版更整齐,更接近真实工作使用。
这些改进不影响现有功能,但能让程序结构更好、扩展性更强、使用更方便。
image
image

四、总结
经过这三次作业的训练,我学到的东西非常多,也真正感受到了从入门到独立完成一个小系统的成长过程。
在编程方面,我熟练掌握了 Java 面向对象设计、类的封装与组合、集合使用、工具类封装、冒泡排序、输入校验、格式化输出等核心技能,能够独立完成需求分析、类结构设计、代码编写、调试排错、测试验证的完整流程。以前我只会写语法,现在能真正用代码解决业务问题。
在专业知识方面,我把航空器载重平衡、重心、力矩、力臂等知识彻底理解,并成功转化为代码。这让我明白,编程不只是计算机技能,还可以和自己的专业紧密结合,做到学以致用。
在学习习惯上,我养成了先梳理流程,再写代码;先考虑异常,再实现功能;先核对格式,再提交运行的严谨习惯。遇到错误不再慌张,能够通过拆分逻辑、打印中间值、对照公式等方法快速定位问题。
当然,我也清楚自己还有很多不足:算法能力还比较薄弱,代码精简能力不够,复杂业务梳理速度偏慢,自主扩展功能的能力还需要加强。这些都是我接下来要重点提升的地方。
最后,对课程和作业提一些小建议。课堂上的知识点讲解很清楚,如果能在作业前简单梳理一下类结构和执行流程,会让我们更有方向;迭代作业的要求非常合理,如果能附上更清晰的步骤提示和常见错误说明,可以减少大家反复修改的时间;实验课的答疑非常有用,如果能增加同学间代码交流、互相找错的环节,学习效果会更好。
总体来说,这三次作业让我收获巨大,不仅提升了编程能力,也培养了严谨、耐心、细致的学习态度。在今后的学习中,我会继续巩固基础、强化实践、查漏补缺,不断提高自己的编程水平和综合实践能力。

posted @ 2026-05-18 19:25  塑料博士  阅读(9)  评论(0)    收藏  举报