点击上方关注帽帽电脑,学习更多电脑知识。
帽帽从事网络工程师,学过很多电脑技能,比如系统集成类,web前栈前后端开发,编程类java,c,设计类phtoshop等等,也得益于毕业后不断学习进步,懂得也是够够多的了,这不今天就有一个还在读大学的铁子慕帽帽名而来,有两个java编程作业,如果能得到80分以上就一百,满分双倍。
这看来也是下血本了啊,那咱就接下这个活了,先来看看是什么要求。

题目要求如下:
使用java创建一个下面订单的计算金额的程序:
啤酒 3.5元/罐, 方便面 4.5元/包, 矿泉水 2.0 元/瓶。
优惠规则:
对于单个商品购买数量超过2件时,给予9折优惠。
对于方便面这种商品,方便面总价超过20元时,扣减2元。
小美购买商品: 啤酒 3罐,方便面3包,矿泉水 2瓶
小明购买商品: 啤酒2罐,方便面 5包
那我们按照要求来进行编写,首先使用AI写框架,手动修改一下细节,首先需要去下载安装java编程软件,我下载的是Eclipse IDE for Java Developer,进入官网点击右上角Download下载。

进来之后继续点击下载,系统会根据你的系统自动匹配安装包,所以基本上下载很简单。

点击Download x86-64,会进入下载页面,等待片刻后自动弹出下载任务按钮,点击下载后直接下一步下一步安装好,非常简单就不一一截图了。


编写java代码(可滚动查看)
通过AI编写框架,然后手动补充一点元素,按照题目再次优化一下,完善修饰细节。
package dazhe.demo;
import java.util.ArrayList;
import java.util.List;
public class demo {
public static void main(String[] args) {
// 1. 创建顾客:小美
Customer xiaomei = new Customer("小美");
xiaomei.addProduct(new Product("啤酒", 3.5, 3)); // 啤酒3罐
xiaomei.addProduct(new InstantNoodle("方便面", 4.5, 3)); // 方便面3包
xiaomei.addProduct(new Product("矿泉水", 2.0, 2)); // 矿泉水2瓶
// 2. 创建顾客:小明
Customer xiaoming = new Customer("小明");
xiaoming.addProduct(new Product("啤酒", 3.5, 2)); // 啤酒2罐
xiaoming.addProduct(new InstantNoodle("方便面", 4.5, 5)); // 方便面5包
// 3. 输出订单明细(含完整打折过程)
System.out.println("===== 顾客:" + xiaomei.getName() + " 的订单 =====");
xiaomei.printOrderDetail();
System.out.println("\n===== 顾客:" + xiaoming.getName() + " 的订单 =====");
xiaoming.printOrderDetail();
}
}
// ------------------------------
// 商品父类:封装通用属性与基础折扣逻辑
// ------------------------------
class Product {
protected String name; // 商品名称
protected double price; // 商品单价
protected int count; // 购买数量
// 价格明细变量(用于输出打折过程)
protected double originalSubtotal; // 原价小计(单价×数量)
protected double discountSubtotal; // 折后小计
protected double baseDiscountAmount; // 基础优惠金额(数量>2打9折)
protected double extraDiscountAmount; // 额外优惠金额(方便面专属满减)
// 构造方法
public Product(String name, double price, int count) {
this.name = name;
this.price = price;
this.count = count;
this.baseDiscountAmount = 0;
this.extraDiscountAmount = 0;
}
// 计算价格(基础规则:数量>2件打9折)
public double calcPrice() {
// 先算原价小计
originalSubtotal = price * count;
// 应用基础折扣
if (count > 2) {
discountSubtotal = originalSubtotal * 0.9;
baseDiscountAmount = originalSubtotal - discountSubtotal;
} else {
discountSubtotal = originalSubtotal;
baseDiscountAmount = 0;
}
return discountSubtotal;
}
// 获取优惠明细描述(被子类重写扩展)
public String getDiscountDesc() {
StringBuilder desc = new StringBuilder();
if (baseDiscountAmount > 0) {
desc.append(String.format("数量>2件9折,优惠%.2f元", baseDiscountAmount));
}
if (extraDiscountAmount > 0) {
if (desc.length() > 0) desc.append(";");
desc.append(String.format("额外减%.2f元", extraDiscountAmount));
}
if (desc.length() == 0) {
desc.append("无优惠");
}
return desc.toString();
}
// Getter方法
public String getName() { return name; }
public double getPrice() { return price; }
public int getCount() { return count; }
public double getOriginalSubtotal() { return originalSubtotal; }
public double getDiscountSubtotal() { return discountSubtotal; }
public double getTotalDiscount() { return baseDiscountAmount + extraDiscountAmount; }
}
// ------------------------------
// 方便面子类:继承商品类,扩展专属优惠逻辑
// ------------------------------
class InstantNoodle extends Product {
public InstantNoodle(String name, double price, int count) {
super(name, price, count);
}
// 重写价格计算:先应用基础折扣,再判断满减
@Override
public double calcPrice() {
// 第一步:执行父类的基础折扣(数量>2打9折)
super.calcPrice();
// 第二步:方便面专属规则:折后总价超过20元,额外减2元
if (discountSubtotal > 20) {
extraDiscountAmount = 2;
discountSubtotal -= extraDiscountAmount;
}
return discountSubtotal;
}
// 重写优惠描述,补充满减说明
@Override
public String getDiscountDesc() {
StringBuilder desc = new StringBuilder();
if (baseDiscountAmount > 0) {
desc.append(String.format("数量>2件9折,优惠%.2f元", baseDiscountAmount));
}
if (extraDiscountAmount > 0) {
if (desc.length() > 0) desc.append(";");
desc.append(String.format("折后总价超20元,额外减%.2f元", extraDiscountAmount));
}
if (desc.length() == 0) {
desc.append("无优惠");
}
return desc.toString();
}
}
// ------------------------------
// 顾客类:管理订单明细与总价计算
// ------------------------------
class Customer {
private String name;
private List<Product> products;
public Customer(String name) {
this.name = name;
this.products = new ArrayList<>();
}
// 添加购买的商品
public void addProduct(Product product) {
products.add(product);
}
// 计算订单总费用
public double calculateTotal() {
double total = 0;
for (Product p : products) {
total += p.calcPrice();
}
return total;
}
// 计算订单原价总金额(用于对比优惠力度)
public double calculateOriginalTotal() {
double originalTotal = 0;
for (Product p : products) {
originalTotal += p.getOriginalSubtotal();
}
return originalTotal;
}
// 输出订单明细(含完整打折过程)
public void printOrderDetail() {
System.out.println("购买商品明细:");
for (Product p : products) {
// 先计算价格(触发优惠逻辑)
p.calcPrice();
// 打印商品基础信息+原价
System.out.printf("【商品】%-6s ×%d | 单价:%.1f元 | 原价小计:%.2f元\n",
p.getName(), p.getCount(), p.getPrice(), p.getOriginalSubtotal());
// 打印优惠明细
System.out.printf("【优惠】%s\n", p.getDiscountDesc());
// 打印折后小计
System.out.printf("【小计】折后价格:%.2f元(共优惠%.2f元)\n",
p.getDiscountSubtotal(), p.getTotalDiscount());
System.out.println("----------------------------------------");
}
// 打印订单总信息
System.out.printf("订单原价总计:%.2f元\n", calculateOriginalTotal());
System.out.printf("订单折后总价:%.2f元\n", calculateTotal());
System.out.printf("累计优惠金额:%.2f元\n", calculateOriginalTotal() - calculateTotal());
}
public String getName() { return name; }
}

程序运行结果输出
===== 顾客:小美 的订单 =====
购买商品明细:
【商品】啤酒 ×3 | 单价:3.5元 | 原价小计:10.50元
【优惠】数量>2件9折,优惠1.05元
【小计】折后价格:9.45元(共优惠1.05元)
----------------------------------------
【商品】方便面 ×3 | 单价:4.5元 | 原价小计:13.50元
【优惠】数量>2件9折,优惠1.35元
【小计】折后价格:12.15元(共优惠1.35元)
----------------------------------------
【商品】矿泉水 ×2 | 单价:2.0元 | 原价小计:4.00元
【优惠】无优惠
【小计】折后价格:4.00元(共优惠0.00元)
----------------------------------------
订单原价总计:28.00元
订单折后总价:25.60元
累计优惠金额:2.40元
===== 顾客:小明 的订单 =====
购买商品明细:
【商品】啤酒 ×2 | 单价:3.5元 | 原价小计:7.00元
【优惠】无优惠
【小计】折后价格:7.00元(共优惠0.00元)
----------------------------------------
【商品】方便面 ×5 | 单价:4.5元 | 原价小计:22.50元
【优惠】数量>2件9折,优惠2.25元;折后总价超20元,额外减2.00元
【小计】折后价格:18.25元(共优惠4.25元)
----------------------------------------
订单原价总计:29.50元
订单折后总价:25.25元
累计优惠金额:4.25元

效果截图如下:

看起来是很不错,当时我想应该没有满分,能及格也是可以了,好在今天刚好满了一个月,我就把这个文章写出来,铁子也来报喜来了,直接截图过来,评了一百分。

这不妥妥帽帽双倍酬劳到手了么,简直nice,得知帽帽对开发编程,小工具制作,系统封装,优化等都非常精通,下次还要给帽帽介绍客户,这个作业其实也就半小时不到就完成了,看来学的多还是有益的,铁子们你们看怎么样。

帽帽电脑

夜雨聆风