Java航空管理系统题目集8-9总结
05/23/2025 19:06:22
前言:
这是我的 总结Blog 老师要求我有严谨的行文风格,格式规范,严禁抄袭和使用AI生成内容,我当然会完成。但我不知道我含辛茹苦、认认真真写的Blog会不会有人同等认真的对待。大概率看的是助教同学 你好!
起码我到现在也没有被PTA查重查到 说明老师们的判断是准确的 要是把我认认真真写了这么久的代码判断抄袭了 我会气到七窍流血的。
我觉得八九次的题目集比六七八的题目集简单很多???
在我以为肯定是我越来越强了的时候 越来越高的满分率狠狠打了我的嘴巴。相比起电梯带给我的无尽折磨,航空货运就像甜蜜的亲吻。电梯作业就像让我在地狱的火焰中跳芭蕾,而航空货运作业宛如仙女从云端洒下的蜜糖,甜到我忍不住想许愿。"电梯作业:让我梦回1912年,正被泰坦尼克号拖拽着向冰山进发;航空货运作业:我乘着波音747在云端喝着特调莫吉托。"
这几次的题目集是我学习面向对象的唯二途径,我被迫详细的了解了:
继承
-
定义 :通过
extends关键字,子类可继承父类的属性和方法,提升代码复用性。 -
特点 :具有单继承性,即一个类只能继承一个父类,但存在继承的传递性。子类可通过
super关键字调用父类构造方法、访问父类成员变量和方法。 -
方法重写 :子类可对父类方法重写,需保证方法名、参数列表、返回值类型相同,且访问权限不大于父类方法。
接口
-
定义 :通过
interface关键字定义,包含抽象方法、常量、默认方法和静态方法等,规定实现类的方法规范。 -
特点 :接口无构造方法,不能实例化。类可用
implements关键字实现接口,需实现接口中所有抽象方法。接口间可继承,一个类可实现多个接口,弥补 Java 单继承的限制。 -
默认方法与静态方法 :Java 8 起接口可含默认方法(用
default修饰,有方法体)、静态方法(用static修饰,可通过接口名直接调用)。
当时看概念觉得晦涩难懂 难以理解 但是写写题之后就感觉很舒服
分析代码和心得:
8-3
import java.security.PublicKey;
import java.util.*;
/**
* Gindama On Java Now
* 2025/4/27 19:20
* By The Spirit Of MF DOOM
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Customer customer = new Customer();
customer.setCustomerID(scanner.nextLine());
customer.setCustomerName(scanner.nextLine());
customer.setCustomerPhone(scanner.nextLine());
customer.setCustomerAddress(scanner.nextLine());
int Count = scanner.nextInt();
scanner.nextLine(); // 消耗读取Count后的换行符
ArrayList<Stuff> stuffs = new ArrayList<>();
for (int i = 0; i < Count; i++) {
String StuffId = scanner.nextLine();
String StuffName = scanner.nextLine();
double width = scanner.nextDouble();
double length = scanner.nextDouble();
double height = scanner.nextDouble();
double weight = scanner.nextDouble();
scanner.nextLine(); // 消耗换行符
double volumeWeight = (width * length * height) / 6000.0;
double chargeWeight = Math.max(weight, volumeWeight);
double rate = SetRate(chargeWeight);
double MoneyNeed = chargeWeight * rate;
//Stuff(String stuffID, String stuffName, double length, double height, double weight, double chargeWeight, double quantity, double rate, double money) {
stuffs.add(new Stuff(StuffId, StuffName, length, height, weight, chargeWeight, Count, rate, MoneyNeed,width));
}
String flightNumber = scanner.nextLine();
String departureAirport = scanner.nextLine();
String arrivalAirport = scanner.nextLine();
String flightDate = scanner.nextLine();
double maxPayload = scanner.nextDouble();
scanner.nextLine(); // 消耗换行符
double ALLWEIGHT = 0;
for (Stuff stuff : stuffs) {
double actuallyweight = Math.max(stuff.getWeight(),((stuff.getWidth() * stuff.getHeight() * stuff.getLength()) / 6000.0));
ALLWEIGHT += actuallyweight;
}
if (ALLWEIGHT > maxPayload) {
System.out.printf("The flight with flight number:%s has exceeded its load capacity and cannot carry the order.%n", flightNumber);
return;
}
double ALLMONEY = 0;
for (Stuff stuff : stuffs) {
ALLMONEY += stuff.getMoney();
}
/*客户:姓名(电话)订单信息如下:
-----------------------------------------
航班号:
订单号:
订单日期:
发件人姓名:
发件人电话:
发件人地址:
收件人姓名:
收件人电话:
收件人地址:
订单总重量(kg):
微信支付金额:
货物明细如下:
-----------------------------------------
明细编号 货物名称 计费重量 计费费率 应交运费
1 ...
2 ...*/
String orderId = scanner.nextLine();
String orderDate = scanner.nextLine();
String senderAddress = scanner.nextLine();
String senderName = scanner.nextLine();
String senderPhone = scanner.nextLine();
String receiverAddress = scanner.nextLine();
String receiverName = scanner.nextLine();
String receiverPhone = scanner.nextLine();
System.out.println("客户:" + customer.getCustomerName() + "(" + customer.getCustomerPhone() + ")订单信息如下:");
System.out.println("-----------------------------------------");
System.out.println("航班号:" + flightNumber);
System.out.println("订单号:" + orderId);
System.out.println("订单日期:" + orderDate);
System.out.println("发件人姓名:" + senderName);
System.out.println("发件人电话:" + senderPhone);
System.out.println("发件人地址:" + senderAddress);
System.out.println("收件人姓名:" + receiverName);
System.out.println("收件人电话:" + receiverPhone);
System.out.println("收件人地址:" + receiverAddress);
System.out.printf("订单总重量(kg):%.1f\n", ALLWEIGHT);
System.out.printf("微信支付金额:%.1f\n", ALLMONEY);
System.out.println();
System.out.println("货物明细如下:");
System.out.println("-----------------------------------------");
System.out.printf("明细编号\t货物名称\t计费重量\t计费费率\t应交运费\n");
for (int i = 0; i < Count; i++) {
if(i==Count-1)
{
System.out.printf("%d\t%s\t%.1f\t%.1f\t%.1f", i + 1, stuffs.get(i).getStuffName(),stuffs.get(i).getChargeWeight(),stuffs.get(i).getRate(),stuffs.get(i).getMoney());
}
else{
System.out.printf("%d\t%s\t%.1f\t%.1f\t%.1f\n", i + 1, stuffs.get(i).getStuffName(),stuffs.get(i).getChargeWeight(),stuffs.get(i).getRate(),stuffs.get(i).getMoney());
}
}
}
public static double SetRate(double weight){
if(weight <20){return 35;}
if(20<=weight&&weight<50){return 30;}
if(50<=weight&&weight<100){return 25;}
if(weight >=100){return 15;}
return 0;
}
static class Customer{
private String CustomerID;
private String CustomerName;
private String CustomerPhone;
private String CustomerAddress;
public Customer() {
}
public Customer(String customerID, String customerName, String customerPhone, String customerAddress) {
CustomerID = customerID;
CustomerName = customerName;
CustomerPhone = customerPhone;
CustomerAddress = customerAddress;
}
public String getCustomerID() {
return CustomerID;
}
public void setCustomerID(String customerID) {
CustomerID = customerID;
}
public String getCustomerName() {
return CustomerName;
}
public void setCustomerName(String customerName) {
CustomerName = customerName;
}
public String getCustomerPhone() {
return CustomerPhone;
}
public void setCustomerPhone(String customerPhone) {
CustomerPhone = customerPhone;
}
public String getCustomerAddress() {
return CustomerAddress;
}
public void setCustomerAddress(String customerAddress) {
CustomerAddress = customerAddress;
}
}
static class Stuff{
private String StuffID;
private String StuffName;
private double length;
private double height;
private double weight;
private double chargeWeight;
private double quantity;
private double rate;
private double money;
private double width;
public Stuff() {
}
public Stuff(String stuffID, String stuffName, double length, double height, double weight, double chargeWeight, double quantity, double rate, double money,double width) {
StuffID = stuffID;
StuffName = stuffName;
this.length = length;
this.height = height;
this.weight = weight;
this.chargeWeight = chargeWeight;
this.quantity = quantity;
this.rate = rate;
this.money = money;
this.width = width;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public String getStuffID() {
return StuffID;
}
public void setStuffID(String stuffID) {
StuffID = stuffID;
}
public String getStuffName() {
return StuffName;
}
public void setStuffName(String stuffName) {
StuffName = stuffName;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double getChargeWeight() {
return chargeWeight;
}
public void setChargeWeight(double chargeWeight) {
this.chargeWeight = chargeWeight;
}
public double getQuantity() {
return quantity;
}
public void setQuantity(double quantity) {
this.quantity = quantity;
}
public double getRate() {
return rate;
}
public void setRate(double rate) {
this.rate = rate;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
static class Flight{
private String FlightID;
private String TakeOffPlace;
private String ArrivePlace;
private String FlightDate;
private int MaxCapacity;
public Flight() {
}
public Flight(String flightID, String takeOffPlace, String arrivePlace, String flightDate, int maxCapacity) {
FlightID = flightID;
TakeOffPlace = takeOffPlace;
ArrivePlace = arrivePlace;
FlightDate = flightDate;
MaxCapacity = maxCapacity;
}
public String getFlightID() {
return FlightID;
}
public void setFlightID(String flightID) {
FlightID = flightID;
}
public String getTakeOffPlace() {
return TakeOffPlace;
}
public void setTakeOffPlace(String takeOffPlace) {
TakeOffPlace = takeOffPlace;
}
public String getArrivePlace() {
return ArrivePlace;
}
public void setArrivePlace(String arrivePlace) {
ArrivePlace = arrivePlace;
}
public String getFlightDate() {
return FlightDate;
}
public void setFlightDate(String flightDate) {
FlightDate = flightDate;
}
public int getMaxCapacity() {
return MaxCapacity;
}
public void setMaxCapacity(int maxCapacity) {
MaxCapacity = maxCapacity;
}
}
static class Order{
private String OrderID;
private String OrderDate;
private String SendAddress;
private String SendName;
private String SendNumber;
private String ReceiveAddress;
private String ReceiveName;
private String ReceiveNumber;
private ArrayList<Stuff> stuffs;
private Flight flight;
private Customer customer;
public Order() {
}
public Order(String orderID, String orderDate, String sendAddress, String sendName, String sendNumber, String receiveAddress, String receiveName, String receiveNumber, ArrayList<Stuff> stuffs, Flight flight, Customer customer) {
OrderID = orderID;
OrderDate = orderDate;
SendAddress = sendAddress;
SendName = sendName;
SendNumber = sendNumber;
ReceiveAddress = receiveAddress;
ReceiveName = receiveName;
ReceiveNumber = receiveNumber;
this.stuffs = stuffs;
this.flight = flight;
this.customer = customer;
}
public String getOrderID() {
return OrderID;
}
public void setOrderID(String orderID) {
OrderID = orderID;
}
public String getOrderDate() {
return OrderDate;
}
public void setOrderDate(String orderDate) {
OrderDate = orderDate;
}
public String getSendAddress() {
return SendAddress;
}
public void setSendAddress(String sendAddress) {
SendAddress = sendAddress;
}
public String getSendName() {
return SendName;
}
public void setSendName(String sendName) {
SendName = sendName;
}
public String getSendNumber() {
return SendNumber;
}
public void setSendNumber(String sendNumber) {
SendNumber = sendNumber;
}
public String getReceiveAddress() {
return ReceiveAddress;
}
public void setReceiveAddress(String receiveAddress) {
ReceiveAddress = receiveAddress;
}
public String getReceiveName() {
return ReceiveName;
}
public void setReceiveName(String receiveName) {
ReceiveName = receiveName;
}
public String getReceiveNumber() {
return ReceiveNumber;
}
public void setReceiveNumber(String receiveNumber) {
ReceiveNumber = receiveNumber;
}
public ArrayList<Stuff> getStuffs() {
return stuffs;
}
public void setStuffs(ArrayList<Stuff> stuffs) {
this.stuffs = stuffs;
}
public Flight getFlight() {
return flight;
}
public void setFlight(Flight flight) {
this.flight = flight;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}
}

-
从用户处获取客户信息(包括客户 ID、姓名、电话和地址)。
-
获取一批货物的详细信息,包括货物 ID、名称、尺寸(宽、长、高)、重量、计费重量、计费费率以及应交运费等。
-
根据航班的最大载重量判断是否能够承载这批货物。
-
输出订单的详细信息,包括航班号、订单号、订单日期、发件人和收件人信息、订单总重量、微信支付金额以及货物明细(明细编号、货物名称、计费重量、计费费率和应交运费)。
主类 Main
-
包含主方法
main,是程序的入口。 -
使用
Scanner类从控制台获取用户输入,实现了与用户的交互。 -
创建了
Customer对象,用于存储客户信息。 -
通过循环获取多条货物信息,并将每条货物信息封装到
Stuff对象中,存入ArrayList列表。 -
计算所有货物的总重量
ALLWEIGHT,并与航班的最大载重量maxPayload进行比较,判断是否超载。如果超载,则输出提示信息并结束程序。 -
计算所有货物的运费总和
ALLMONEY。 -
获取订单的其他相关信息(订单号、订单日期、发件人和收件人地址等)。
-
按照指定格式输出订单的详细信息和货物明细。
工具方法 SetRate
-
该方法根据货物的计费重量来确定计费费率。具体规则为:重量小于 20kg,费率 35;20kg(含)到 50kg,费率 30;50kg(含)到 100kg,费率 25;100kg 及以上,费率 15。
内部类
-
Customer:表示客户信息的类,包含客户 ID、姓名、电话和地址四个属性,以及对应的getter和setter方法。 -
Stuff:用于存储货物的详细信息,包括货物 ID、名称、长、高、宽、重量、计费重量、数量、费率和运费等属性,同样提供了getter和setter方法来访问和修改这些属性。 -
Flight:表示航班信息,包含航班号、起飞地、目的地、日期和最大载重量等属性及其getter和setter方法。 -
Order:代表订单信息,包含订单号、订单日期、发件人和收件人信息、货物列表、航班对象和客户对象等属性。通过getter和setter方法对这些属性进行操作。
-
功能较为完整,涵盖了物流订单处理中的关键环节,如客户信息录入、货物信息录入、超载判断、运费计算和订单信息输出等。
-
使用了面向对象的编程思想,将不同的数据和行为封装到各个类中(如
Customer、Stuff、Flight和Order),提高了代码的可维护性和可扩展性。例如,如果后续需要对客户或货物的相关操作进行修改或扩展,只需在对应的类中进行调整,而不用在整个程序中到处查找和修改代码。 -
代码结构清晰,主类中的逻辑按照功能模块划分,便于理解和阅读。例如,先处理客户信息,再处理货物信息,接着进行超载判断和运费计算,最后输出订单信息,整个流程比较直观。
-
通过
Scanner实现了与用户的交互,增强了程序的实用性和灵活性,能够根据用户输入的不同数据进行相应的处理和输出。
9-3
import java.util.ArrayList;
import java.util.Scanner;
/**
Gindama On Java Now
2025/5/13 19:31
By The Spirit Of MF DOOM
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
/*客户类型[可输入项:Individual/Corporate]
客户编号
客户姓名
客户电话
客户地址
货物类型[可输入项:Normal/Expedite/Dangerous]
运送货物数量
[货物编号
货物名称
货物宽度
货物长度
货物高度
货物重量
]//[]内的内容输入次数取决于“运送货物数量”,输入不包含“[]”
航班号
航班起飞机场
航班降落机场
航班日期(格式为YYYY-MM-DD)
航班最大载重量
订单编号
订单日期(格式为YYYY-MM-DD)
发件人地址
发件人姓名
发件人电话
收件人地址
收件人姓名
收件人电话
支付方式[可输入项:Wechat/ALiPay/Cash]*/
String customerType = scanner.nextLine();
String customerID = scanner.nextLine();
String customerName = scanner.nextLine();
String customerPhone = scanner.nextLine();
String customerAddress = scanner.nextLine();
String cargoType = scanner.nextLine();
int count = Integer.parseInt(scanner.nextLine());
ArrayList<Cargo> cargos = new ArrayList<>();
for (int i = 0; i < count; i++) {
String cargoId = scanner.nextLine();
String cargoName = scanner.nextLine();
double width = Double.parseDouble(scanner.nextLine());
double length = Double.parseDouble(scanner.nextLine());
double height = Double.parseDouble(scanner.nextLine());
double weight = Double.parseDouble(scanner.nextLine());
double volumeWeight = (width * length * height) / 6000;
double chargeWeight = Math.max(weight, volumeWeight);
double rate = getRate(cargoType, chargeWeight);
double baseFreight = chargeWeight * rate;
cargos.add(new Cargo(cargoId, cargoName, width, length, height, weight, chargeWeight, rate, baseFreight));
}
String flightNumber = scanner.nextLine();
String departureAirport = scanner.nextLine();
String arrivalAirport = scanner.nextLine();
String flightDate = scanner.nextLine();
double maxPayload = Double.parseDouble(scanner.nextLine());
double totalChargeWeight = cargos.stream().mapToDouble(Cargo::getChargeWeight).sum();
if (totalChargeWeight > maxPayload) {
System.out.printf("The flight with flight number:%s has exceeded its load capacity and cannot carry the order.%n", flightNumber);
return;
}
String orderId = scanner.nextLine();
String orderDate = scanner.nextLine();
String senderAddress = scanner.nextLine();
String senderName = scanner.nextLine();
String senderPhone = scanner.nextLine();
String receiverAddress = scanner.nextLine();
String receiverName = scanner.nextLine();
String receiverPhone = scanner.nextLine();
String paymentMethod = scanner.nextLine();
double totalBaseFreight = cargos.stream().mapToDouble(Cargo::getBaseFreight).sum();
double discountRate = customerType.equals("Corporate") ? 0.8 : 0.9;
double totalPayment = totalBaseFreight * discountRate;
System.out.println("客户:" + customerName + "(" + customerPhone + ")订单信息如下:");
System.out.println("-----------------------------------------");
System.out.println("航班号:" + flightNumber);
System.out.println("订单号:" + orderId);
System.out.println("订单日期:" + orderDate);
System.out.println("发件人姓名:" + senderName);
System.out.println("发件人电话:" + senderPhone);
System.out.println("发件人地址:" + senderAddress);
System.out.println("收件人姓名:" + receiverName);
System.out.println("收件人电话:" + receiverPhone);
System.out.println("收件人地址:" + receiverAddress);
System.out.printf("订单总重量(kg):%.1f%n", totalChargeWeight);
System.out.printf("%s支付金额:%.1f%n%n", getPaymentMethodName(paymentMethod), totalPayment);
System.out.println("货物明细如下:");
System.out.println("-----------------------------------------");
System.out.println("明细编号\t货物名称\t计费重量\t计费费率\t应交运费");
for (int i = 0; i < cargos.size(); i++) {
Cargo cargo = cargos.get(i);
System.out.printf("%d\t%s\t%.1f\t%.1f\t%.1f", i + 1, cargo.getCargoName(), cargo.getChargeWeight(), cargo.getRate(), cargo.getBaseFreight());
if (i != cargos.size() - 1) {
System.out.println("");
}
}
}
private static double getRate(String cargoType, double chargeWeight) {
switch (cargoType) {
case "Normal":
if (chargeWeight < 20) return 35;
if (chargeWeight < 50) return 30;
if (chargeWeight < 100) return 25;
return 15;
case "Dangerous":
if (chargeWeight < 20) return 80;
if (chargeWeight < 50) return 50;
if (chargeWeight < 100) return 30;
return 20;
case "Expedite":
if (chargeWeight < 20) return 60;
if (chargeWeight < 50) return 50;
if (chargeWeight < 100) return 40;
return 30;
default:
return 0;
}
}
private static String getPaymentMethodName(String paymentMethod) {
switch (paymentMethod) {
case "Wechat": return "微信";
case "ALiPay": return "支付宝";
case "Cash": return "现金";
default: return "";
}
}
static class Cargo {
private String cargoId;
private String cargoName;
private double width;
private double length;
private double height;
private double weight;
private double chargeWeight;
private double rate;
private double baseFreight;
public Cargo(String cargoId, String cargoName, double width, double length, double height, double weight,
double chargeWeight, double rate, double baseFreight) {
this.cargoId = cargoId;
this.cargoName = cargoName;
this.width = width;
this.length = length;
this.height = height;
this.weight = weight;
this.chargeWeight = chargeWeight;
this.rate = rate;
this.baseFreight = baseFreight;
}
public Cargo() {
}
public String getCargoId() {
return cargoId;
}
public void setCargoId(String cargoId) {
this.cargoId = cargoId;
}
public String getCargoName() {
return cargoName;
}
public void setCargoName(String cargoName) {
this.cargoName = cargoName;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double getChargeWeight() {
return chargeWeight;
}
public void setChargeWeight(double chargeWeight) {
this.chargeWeight = chargeWeight;
}
public double getRate() {
return rate;
}
public void setRate(double rate) {
this.rate = rate;
}
public double getBaseFreight() {
return baseFreight;
}
public void setBaseFreight(double baseFreight) {
this.baseFreight = baseFreight;
}
}
static class Stuff{
private String StuffID;
private String StuffName;
private double length;
private double height;
private double weight;
private double chargeWeight;
private double quantity;
private double rate;
private double money;
private double width;
public Stuff() {
}
public Stuff(String stuffID, String stuffName, double length, double height, double weight, double chargeWeight, double quantity, double rate, double money,double width) {
StuffID = stuffID;
StuffName = stuffName;
this.length = length;
this.height = height;
this.weight = weight;
this.chargeWeight = chargeWeight;
this.quantity = quantity;
this.rate = rate;
this.money = money;
this.width = width;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public String getStuffID() {
return StuffID;
}
public void setStuffID(String stuffID) {
StuffID = stuffID;
}
public String getStuffName() {
return StuffName;
}
public void setStuffName(String stuffName) {
StuffName = stuffName;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public double getChargeWeight() {
return chargeWeight;
}
public void setChargeWeight(double chargeWeight) {
this.chargeWeight = chargeWeight;
}
public double getQuantity() {
return quantity;
}
public void setQuantity(double quantity) {
this.quantity = quantity;
}
public double getRate() {
return rate;
}
public void setRate(double rate) {
this.rate = rate;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
static class Flight{
private String FlightID;
private String TakeOffPlace;
private String ArrivePlace;
private String FlightDate;
private int MaxCapacity;
public Flight() {
}
public Flight(String flightID, String takeOffPlace, String arrivePlace, String flightDate, int maxCapacity) {
FlightID = flightID;
TakeOffPlace = takeOffPlace;
ArrivePlace = arrivePlace;
FlightDate = flightDate;
MaxCapacity = maxCapacity;
}
public String getFlightID() {
return FlightID;
}
public void setFlightID(String flightID) {
FlightID = flightID;
}
public String getTakeOffPlace() {
return TakeOffPlace;
}
public void setTakeOffPlace(String takeOffPlace) {
TakeOffPlace = takeOffPlace;
}
public String getArrivePlace() {
return ArrivePlace;
}
public void setArrivePlace(String arrivePlace) {
ArrivePlace = arrivePlace;
}
public String getFlightDate() {
return FlightDate;
}
public void setFlightDate(String flightDate) {
FlightDate = flightDate;
}
public int getMaxCapacity() {
return MaxCapacity;
}
public void setMaxCapacity(int maxCapacity) {
MaxCapacity = maxCapacity;
}
}
static class Customer{
private String CustomerID;
private String CustomerName;
private String CustomerPhone;
private String CustomerAddress;
public Customer() {
}
public Customer(String customerID, String customerName, String customerPhone, String customerAddress) {
CustomerID = customerID;
CustomerName = customerName;
CustomerPhone = customerPhone;
CustomerAddress = customerAddress;
}
public String getCustomerID() {
return CustomerID;
}
public void setCustomerID(String customerID) {
CustomerID = customerID;
}
public String getCustomerName() {
return CustomerName;
}
public void setCustomerName(String customerName) {
CustomerName = customerName;
}
public String getCustomerPhone() {
return CustomerPhone;
}
public void setCustomerPhone(String customerPhone) {
CustomerPhone = customerPhone;
}
public String getCustomerAddress() {
return CustomerAddress;
}
public void setCustomerAddress(String customerAddress) {
CustomerAddress = customerAddress;
}
}
}

-
客户与货物信息录入 :可录入客户类型、编号、姓名、电话、地址,以及货物类型、数量和每件货物的详细尺寸与重量。
-
航班信息管理 :支持录入航班号、起降机场、日期及最大载重量,并自动判断货物总重量是否超限。
-
订单详情记录 :能够录入订单编号、日期、发件人和收件人信息,以及支付方式。
-
运费计算与展示 :根据货物类型和重量计算每件货物运费,支持客户类型折扣(企业客户 8 折,个人客户 9 折),并输出订单总金额和货物明细。
主类 Main
-
输入处理 :使用
Scanner从控制台获取用户输入,包含客户、货物、航班、订单等多方面信息。 -
货物信息存储 :将每件货物信息封装为
Cargo对象,存入ArrayList列表,便于后续处理。 -
载重检查 :利用 Java 8 的 Stream API 计算所有货物的总计费重量,与航班最大载重量对比,超载则提示并终止程序。
-
运费计算 :根据客户类型确定折扣率,计算订单总支付金额。
-
信息输出 :按指定格式输出客户订单信息和货物明细,涵盖航班、订单、收发件人等关键信息。
工具方法
-
getRate:依据货物类型和计费重量返回对应费率。不同货物类型(普通、特快、危险品)有不同的费率梯度。 -
getPaymentMethodName:将英文支付方式转换为对应的中文名称,提升输出信息的可读性。
内部类
-
Cargo:封装货物详细信息,如编号、名称、尺寸、重量、计费重量、费率和运费等,提供对应的 getter 和 setter 方法。 -
Stuff:与Cargo类功能相似,但在这段代码中未被主程序逻辑充分利用。 -
Flight:存储航班基本信息,如航班号、起降机场、日期和最大载重量等。 -
Customer:记录客户信息,包括客户编号、姓名、电话和地址。
-
面向对象设计 :通过类封装不同实体的信息和行为,如
Cargo类管理货物细节,Customer类存储客户数据,使代码结构清晰、模块化,便于理解和维护。 -
灵活的运费计算 :能够根据货物类型和重量动态计算运费,并支持客户类型折扣,满足不同业务场景需求。
-
良好的可扩展性 :新增货物类型或调整费率规则时,只需修改
getRate方法中的逻辑,其余代码无需大幅改动。 -
高效的输入输出处理 :运用
Scanner灵活获取用户输入,结合格式化输出函数(System.out.printf),清晰展示订单和货物信息。 -
载重检查机制 :在发货前判断货物总重量是否超出航班承载能力,有效避免超载情况。
区别:
-
第一个代码片段没有明确提及支付方式。
-
第二个代码片段增加了支付方式的选择(微信、支付宝、现金),并在输出时显示相应的支付金额。
-
第一个代码片段中的计费主要根据货物重量进行计算。
-
第二个代码片段则根据货物类型(普通、特快、危险品)和重量来确定不同的计费费率,并且考虑了客户类型(个人/企业)的折扣。
- 第二个代码片段是对第一个代码片段的功能增强和结构优化,提供了更全面的物流订单处理功能。
说句实话 这个比电梯简单太多了 我都不想死了
之前写电梯写的我想上吊了都 现在好多了 感觉人生光明了都
踩坑心得:
或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量或许是你在计算总重量时用了实际重量!!!!!!!!!!!!!!!!!!!!!!!!!!!
这不是魔咒吗? 我嘞个都啊 他那个示例给的例子 实际重量和计费重量是一样的 总结来说还得是得认真读题,不认真读题可能会让你在完成任务后发现需要大量返工。这就像在建房子时没看清楚设计图,结果建了一半才发现你造的是一个厕所而不是一个卧室。认真读题可以帮助你避免这种“返工”的烦恼。能够帮助你避免那些让你拍脑袋的“低级错误”。你可能会想,“我直接动手做,再回来读题也不迟。” 但事实上,误读题目可能会让你浪费大量时间。认真读题不仅仅是为了避免错误,更是为了提高效率、增强自信并确保任务顺利完成。就像在航海中,你需要仔细研究航海图,才能确保船只航行在正确的航线上。
最开始接触航空货运编程时,我常常感到手足无措。业务逻辑的复杂性、数据结构的庞大性,各种难题纷至沓来,让我一度怀疑自己是不是高估了自己,我是不是无法胜任这个领域。我每天都在和复杂的业务规则较劲,每次看到屏幕上那一串串晦涩难懂的数据,我都想直接放弃。但你知道吗?每当我成功调试通过一个功能模块,那种成就感就像是在茫茫雾海中找到了一座灯塔,让我觉得再艰难的挑战都值得面对。编程不仅是智力的挑战,更是耐心和细心的深度考验。每一次遇到系统故障并排除它,练习故障排查技能,寻找那些隐藏在海量代码中的细微错误,有一次,我在处理货物重量计算逻辑时,怎么也找不到问题根源。于是,我一点点地梳理流程,对比数据的差异,最终发现是一个小小的数值转换错误。那种云开月明的感觉,真的令人着迷。在这个过程中,我也逐渐领悟到编程的真谛不在于构建多么复杂的系统,而在于写出稳定、清晰、易维护的代码。并且我真心觉得和同事交流经验至关重要,比独自苦闷思考有用多了。每周和团队成员分享技术心得,我们彼此交换遇到的难题和解决方案,有时还会携手定位问题。我真心认为这样的协作能极大地激发我们的创新思维!当然,我的代码离完美还差得很远,甚至可以说漏洞百出,尤其是在算法的高效性和代码结构的合理性方面亟待提升。我编写的程序在处理高并发请求或超大规模数据集时,性能往往不尽如人意,这促使我不断学习前沿知识,优化代码架构。此外,微服务架构的实践也需要深入钻研,以增强系统的可扩展性和容错性。
我把我想说的说完了 我相信没人会看这个Blog 除了我 希望这个对你有帮助 谢谢老师 谢谢java 谢谢中国

浙公网安备 33010602011771号