第三次Blog作业:JAVA总结性作业概括

一 :作业总结


  首先总言就是感觉大部分作业还算正常👍,但是仍然存在部分作业内容留有问题,难度适中,工作量偏急,量大。

  Blog作业算上现在也就只有三次,量倒是不大,难度也没有什么。但是有点迷茫的是不清楚做这个作业到底会有什么实质性的成长,目前还是比较不清楚的。

  Pta作业比较合乎我对于作业的预期,难度适中,十分有效得帮助了自己对于java的学习和练习,可惜测试点描述含糊,有点消磨时间。

  实验作业对我个人而言就是一个巨大的雷区了,并不是说题目难度或者提交方式不好,而是它无法“复制粘贴“的属性极大程度上加大了自己的工作量,甚至会激发自己放弃的想法,毕竟在以效率之上的时代,明明有着更好的编译环境可以使用,大部分人毋庸置疑会优先选择idea等优质编译软件辅助自己的编译,极大提高自己的编译效率与后期修改,但是由于无法复制的属性导致进入实验提交系统需要二次输入,而且是一个字一个字地输入,且先不说输入错误的难度大和时间上的消耗。修改起来也是极其不便,哪怕是切入ide里面去找到了错误的点,还要返回来在一堆看起来不是十分舒适的字体与排版中去寻找问题修改点,我觉得这点有点折磨😅。

image

  线上课程与线下课程工作量难度适中。

(1)第一次大作业:

题目:

设计一个电梯类,具体包含电梯的最大楼层数、最小楼层数(默认为1层)当前楼层、运行方向、运行状态,以及电梯内部乘客的请求队列和电梯外部楼层乘客的请求队列,其中,电梯外部请求队列需要区分上行和下行。
电梯运行规则如下:电梯默认停留在1层,状态为静止,当有乘客对电梯发起请求时(各楼层电梯外部乘客按下上行或者下行按钮或者电梯内部乘客按下想要到达的楼层数字按钮),电梯开始移动,当电梯向某个方向移动时,优先处理同方向的请求,当同方向的请求均被处理完毕然后再处理相反方向的请求。电梯运行过程中的状态包括停止、移动中、开门、关门等状态。当电梯停止时,如果有新的请求,就根据请求的方向或位置决定移动方向。电梯在运行到某一楼层时,检查当前是否有请求(访问电梯内请求队列和电梯外请求队列),然后据此决定移动方向。-每次移动一个楼层,检查是否有需要停靠的请求,如果有,则开门,处理该楼层的请求,然后关门继续移动。
使用键盘模拟输入乘客的请求,此时要注意处理无效请求情况,例如无效楼层请求,比如超过大楼的最高或最低楼层。还需要考虑电梯的空闲状态,当没有请求时,电梯停留在当前楼层。

要求:

请编写一个Java程序,设计一个电梯类,包含状态管理、请求队列管理以及调度算法,并使用一些测试用例,模拟不同的请求顺序,观察电梯的行为是否符合预期,比如是否优先处理同方向的请求,是否在移动过程中处理顺路的请求等。为了降低编程难度,不考虑同时有多个乘客请求同时发生的情况,即采用串行处理乘客的请求方式(电梯只按照规则响应请求队列中当前的乘客请求,响应结束后再响应下一个请求),具体运行规则详见输入输出样例。

思路:

此次处理采用了一个先判断,后运动的大概思路,通过依次读取的电梯内外层需求信息,
做到及时判断,运动处理,在逻辑上十分清楚简洁,而也只需要在判断类里面加上一个“panduan方法,
做到依照不同的情况返回不同的数值而精准判断运动类型”,便可以做到满足用户需求。

写完代码参数分析:

  

 

  从矩阵图可以直观地看出来,第一次的大作业编写还是不太成熟,类过少,深度过高,if—else滥用成灾,虽然运行起来也没有问题,但是后期在修改上十分困难。

(2)第二次大作业:

题目:

某航空公司“航空货运管理系统”中的空运费的计算涉及多个因素,通常包
括货物重量/体积、运输距离、附加费用、货物类型、客户类型以及市场供需等。

本次题目模拟某客户到该航空公司办理一次货运业务的过程:
航空公司提供如下信息:
航班信息(航班号,航班起飞机场所在城市,航班降落机场所在城市,航班
日期,航班最大载重量)
客户填写货运订单并进行支付,需要提供如下信息:
 客户信息(姓名,电话号码等)
 货物信息(货物名称,货物包装长、宽、高尺寸,货物重量等)
 运送信息(发件人姓名、电话、地址,收件人姓名、电话、地址,所选
航班号,订单日期)
 支付方式(支付宝支付、微信支付)

要求:
一、计费重量的确定

空运以实际重量(Gross Weight)和体积重量(Volume Weight)中的较
高者作为计费重量。
计算公式:
体积重量(kg) = 货物体积(长×宽×高,单位:厘米)÷ 6000
示例:
若货物实际重量为 80kg,体积为 120cm×80cm×60cm,则:
体积重量 = (120×80×60) ÷ 6000 = 96kg
计费重量取 96kg(因 96kg > 80kg)。

二、基础运费计算

费率(Rate):航空公司或货代根据航线、货物类型、市场行情等制定(如
CNY 30/kg)。本次作业费率采用分段计算方式:

image

公式:基础运费 = 计费重量 × 费率

思路:

1:在每一件货物输出前就有对于总价位的输出,所以说计算总价的类是独立的,且能在分别输出各自货物内容的时候就计算出总价。
2:题目中的重量的取舍取决于每一件物品的实际计算重量谁的大,所以要分出一个方法子类来计算出实际计算重量取哪个。
3:题目中有大量计算,所以最好开通一个计算类,进行各种不同的内容计算。
4:在计算利率的时候不同的范围计算的利率不同,要单独做个方法。
5:输出在格式上别具一格,且无列表符号的出现,所以每一行内容都并非单纯的输出所有列表语句实现。
6:要注意对于单位的取舍和飞机载重的限制。

创建对应的类先把输入的内容“吃掉”,然后再通过控制类将不同类吃掉的内容“消化”,以一个大的计算类进行前提要求下提到的不同板块内容的计算,还有就是提出一个计算实际重量的方法找到真正有用的实际重量带到后期的计算。有了前期消化的内容和消化,现在就可以转化为输出,对于复杂的内容可以直接输出的绝不多加麻烦,要提前计算总重量的地方提前算好。采用这种流程式的对象设计,大大方便了我的代码编译和理解。

写完代码参数分析:

 

 

  可以看到,这次的类图设计相比于上一次的电梯设计有着巨大的进步,上次几乎全部都在绿色意外,这次居然有安全区,复杂度都很低。

二:面向对象技术总结:


通过pta作业image对于基础语法的打磨,已经使得自己掌握了基础的继承,多态,接口等内容的运用,而繁琐的实验内容image,则是在我原有的代码基础知识之上,做到一个修饰效果,令自己学会了升华自己的代码“逼格”,使得整个代码变得华丽高级,而在学会和了解了Javafx之后更是帮助自己在装饰和美化高级化代码内容的路上越走越远,甚至联想到了可以利用javafx制作一些基础的小游戏,说明这些作业是充分激发了自己对于代码编写的认知和兴趣爱好的。还有对于各个领域的运用都有了自己独特的理解,现在目前比较欠缺的就是运用极其稀少的封装和集合框架,而javafx也只是停留在了解和最基础的模仿阶段。还是有许多要学习东西。

三:踩坑心得


学习Java,切记要思路清晰,在脑子里优先建立运行框架,拿起来直接编写是大忌,极有可能走向繁杂无用耗时耗力的陷阱,哪怕是不写类图,也要有一个清晰的流程,等流程构建完毕和主体代码具备之后在进行代码功能的升级和修饰化。还有就是要善于利用AI工具和各种各样的大佬帖子,在很多时候遇到无法解决的问题用眼睛瞪不是瞪不出来的,敢于去问,别人新的观点可能就是解决问题的关键,这里推荐几个好用的解题集合:CSDN,哔哩哔哩,豆包。

image

image

image

四:改进建议及总结:


这边优先建议开启实验提交系统的复制粘贴模式,或者强化实验提交系统的编写代码能力还有效果调节。窗口切来切去还要在密密麻麻的的同色字体之中找错误单词真的有点麻烦。可能会导致学生编写积极性下降,或者说时间上的损耗,如果说实验提交系统是为了锻炼打字速度,那确实是个不错的选择。但如果是对于知识的练习,那就设计的有点本末倒置了。至于课程和组织方式上倒是没有太大问题,但是这边建议给出超级大作业要求小组分工完成,提前让学生们适应未来合作共赢式的工作模型,锻炼合作和协调能力,毕竟学校不能保证每个学生都是独狼。

image

  

posted @ 2025-06-16 10:33  吴与思了~  阅读(57)  评论(0)    收藏  举报