Java实现简单的小超市程序攻略
需求分析
在实现小超市程序之前,我们需要了解程序的需求。假设我们需要实现以下功能:
- 商品信息的录入和展示
- 商品的购买和结算
- 支持会员折扣和促销活动
设计思路
在了解需求之后,我们再来规划一下小超市程序的设计思路。
商品实体类
首先我们需要设计一个商品的实体类,包括商品名称、单价、库存、条形码等属性。
超市类
我们还需要设计一个超市的类,主要职责包括:
- 存储商品信息
- 展示商品信息
- 实现购买和结算功能
会员类
为了支持会员折扣,我们需要设计会员类,其中会员属性包括会员编号、姓名、折扣等信息。同时,会员类还需要实现会员折扣计算功能。
实现以上类之后,我们就可以开始写代码了。
代码实现
商品实体类代码
public class Goods {
private String name; // 商品名称
private double price; // 单价
private int stock; // 库存
private String barcode; // 条形码
// 构造函数
public Goods(String name, double price, int stock, String barcode) {
this.name = name;
this.price = price;
this.stock = stock;
this.barcode = barcode;
}
// getName, setName等方法省略...
// 最好重写toString方法,方便输出测试
@Override
public String toString() {
return "商品名称:" + name +
",单价:" + price +
",库存:" + stock +
",条形码:" + barcode;
}
}
超市类代码
public class Supermarket {
private List<Goods> goodsList; // 商品列表
private double totalPrice; // 总价
private boolean isMember; // 是否为会员
public Supermarket() {
goodsList = new ArrayList<>();
totalPrice = 0;
isMember = false;
}
// 购买商品
public void buyGoods(String barcode, int num) {
Goods goods = findGoodsByBarcode(barcode);
if (goods != null && goods.getStock() >= num) {
goods.setStock(goods.getStock() - num);
totalPrice += goods.getPrice() * num;
System.out.println("购买成功!");
} else {
System.out.println("商品库存不足或商品不存在!");
}
}
// 简单计算购物车价格
public double calculateTotalPrice() {
double price = totalPrice;
if (isMember) { // 如果是会员,使用会员折扣计算价格
price *= 0.9; // 九折优惠
}
return price;
}
// 根据条形码查找商品
private Goods findGoodsByBarcode(String barcode) {
for (Goods goods : goodsList) {
if (goods.getBarcode().equals(barcode)) {
return goods;
}
}
return null;
}
// 添加商品
public void addGoods(Goods goods) {
goodsList.add(goods);
}
// 输出所有商品
public void listGoods() {
for (Goods goods : goodsList) {
System.out.println(goods);
}
}
// 成为会员
public void becomeMember() {
isMember = true;
}
}
会员类代码
public class Member {
private String memberId; // 会员编号
private String name; // 姓名
private double discount; // 折扣
public Member(String memberId, String name, double discount) {
this.memberId = memberId;
this.name = name;
this.discount = discount;
}
public double calculatePrice(double price) {
return price * discount;
}
// 其他getter和setter省略...
}
示例说明
以下是两个简单的示例说明:
示例1
public class Main {
public static void main(String[] args) {
// 创建一个超市
Supermarket supermarket = new Supermarket();
// 添加商品
Goods goods1 = new Goods("可乐", 2.5, 10, "0001");
Goods goods2 = new Goods("矿泉水", 1.0, 20, "0002");
supermarket.addGoods(goods1);
supermarket.addGoods(goods2);
// 输出商品列表
supermarket.listGoods();
// 购买商品
supermarket.buyGoods("0001", 3);
supermarket.buyGoods("0002", 5);
// 计算总价
double totalPrice = supermarket.calculateTotalPrice();
System.out.println("总价:" + totalPrice);
}
}
执行以上代码后,控制台输出以下内容:
商品名称:可乐,单价:2.5,库存:10,条形码:0001
商品名称:矿泉水,单价:1.0,库存:20,条形码:0002
购买成功!
购买成功!
总价:11.5
示例2
public class Main {
public static void main(String[] args) {
// 创建一个超市
Supermarket supermarket = new Supermarket();
// 添加商品
Goods goods1 = new Goods("可乐", 2.5, 10, "0001");
Goods goods2 = new Goods("矿泉水", 1.0, 20, "0002");
supermarket.addGoods(goods1);
supermarket.addGoods(goods2);
// 成为会员
Member member = new Member("00000001", "张三", 0.8);
supermarket.becomeMember();
// 输出商品列表
supermarket.listGoods();
// 购买商品
supermarket.buyGoods("0001", 3);
supermarket.buyGoods("0002", 5);
// 计算总价
double totalPrice = supermarket.calculateTotalPrice();
double memberPrice = member.calculatePrice(totalPrice);
System.out.println("总价:" + totalPrice);
System.out.println("会员价:" + memberPrice);
}
}
执行以上代码后,控制台输出以下内容:
商品名称:可乐,单价:2.5,库存:10,条形码:0001
商品名称:矿泉水,单价:1.0,库存:20,条形码:0002
购买成功!
购买成功!
总价:11.5
会员价:9.2
建议
以上代码仅为简单示例,实际开发中还需要考虑多线程、异常处理、数据库等更多因素。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现简单的小超市程序 - Python技术站