java购物车模拟

面向对象的编程-训练

用于构造对象的class类:Goods.class

package Demo;

public class Goods {
    int id;
    String name;
    double price;
    int buyNumber;
}

主函数体

/*
* 本代码通过面向对象的编程模拟购物车的实现
* 商品、购物车、用户操作
* 1.从外部定义商品类,用于后期创建商品对象
* 2.定义购物车对象,数组表示,因为目前只学过数组所以用数组当作容器,理论应该是用集合做容器
* 3.Goods[100]代表Goods里面最多可以装下100个商品对象
* 4.搭建操作架构
* */
package Demo;

import java.util.Scanner;

public class ShopCarTest {
    public static void main(String[] args) {
        Goods[] shopCar=new Goods[100];
        while (true) { // 为了不终止购物车的操作,设置为一个死循环,块设置循环体的快捷键Ctrl+Alt+t
            System.out.println("您可以使用如下命令进行操作:");
            System.out.println("添加商品到购物车:add");
            System.out.println("查询商品到购物车:query");
            System.out.println("修改买商品的数量:update");
            System.out.println("结算商品购买金额:pay");
            Scanner sc =new Scanner(System.in);
            System.out.println("输入命令:");
            String commands = sc.next();
            switch (commands){
                case "add":
                    addGoods(shopCar,sc);
                    break;
                case "query":
                    queryGoods(shopCar);
                    break;
                case "update":
                    updateGoods(shopCar,sc);
                    break;
                case "pay":
                    pay(shopCar);
                    break;
                default:
                    System.out.println("您输入的字符串有问题,没有这个功能");
            }
        }
    }

    public static void pay(Goods[] shopCar) {
        // 输入pay命令之后展示商品名称、单价、购买数量、单个商品总金额、全部商品总金额
        double heJi=0.0;
        for(int i=0;i<shopCar.length;i++){
            Goods g = shopCar[i];
            System.out.println("商品名称\t\t"+"单价"+"\t\t"+"数量\t\t"+"金额");
            if(g!=null){
                System.out.println(g.name+"\t\t"+g.price+"\t\t"+g.buyNumber+"\t\t"+g.buyNumber*g.price);
                heJi+=g.buyNumber*g.price;
            }else{
                System.out.println("合计总金额:"+heJi+"元");
                break;
            }
        }
    }

    public static void updateGoods(Goods[] shopCar,Scanner sc) {
        // 根据商品id更新商品的购买数量
        while (true) {
            System.out.println("请输入商品的id:");
            int id= sc.nextInt();
            Goods g=getGoodsById(shopCar,id);
            if(g==null){
                System.out.println("没有该商品,请重新输入");
            }else{
                System.out.println("查询到该商品信息:\n"+
                        g.id+"\t\t"+g.name+"\t\t"+g.price+"\t\t"+g.buyNumber+"\n" +
                        "请您重新输入该商品的购买数量:");
                int buyNumber= sc.nextInt();
                g.buyNumber=buyNumber;
                System.out.println("修改完成!新的购物车信息为:\n");
                queryGoods(shopCar);
                break;
            }
        }
    }
    public static Goods getGoodsById(Goods[] shopCar,int id){ // 更新商品用到的函数,将其独立出来,这个函数返回的是一个Goods对象
        for(int i=0;i<shopCar.length;i++){
            Goods g = shopCar[i]; // 拿一个临时变量来接一下商品对象
            if(g!=null){
                if(g.id==id){
                    return g;
                }
            }else{
                return null; // 遍历前面所有的商品均没有符合条件的,返回null
            }
        }
        return null;   // 遍历至最后也没有查询到符合条件的商品,返回一次null
    }

    public static void queryGoods(Goods[] shopCar) {
        System.out.println("================查询购物车信息如下===============");
        System.out.println("编号\t\t名称\t\t价格\t\t数量\t\t");
        for(int i=0;i< shopCar.length;i++){
            Goods g=shopCar[i]; // 模拟临时存储,shopCar[i]返回的是一个地址
            if (g!=null){
                System.out.println(g.id+"\t\t"+g.name+"\t\t"+g.price+"\t\t"+g.buyNumber+"\t\t");
            }else {
                // 没有商品,结束
                break;
            }
        }
    }

    public static void addGoods(Goods[] shopCar,Scanner sc) {
        // 录入商品的各个信息
        System.out.println("输入商品编号:");
        int id= sc.nextInt();
        System.out.println("输入商品名称");
        String name= sc.next();
        System.out.println("输入商品数量:");
        int buyNumber= sc.nextInt();
        System.out.println("输入商品价格:");
        double price= sc.nextDouble();
        // 将商品信息封装入Goods对象
        Goods g=new Goods();
        g.id=id;
        g.name=name;
        g.buyNumber=buyNumber;
        g.price=price;
        // 将商品对象添加到购物车数组当中去,即购物车的数组中的每个元素是一个商品对象
        for(int i=0;i<shopCar.length;i++){
            if(shopCar[i]==null){
                shopCar[i]=g;
                System.out.println("您的商品 "+ g.name +" 已经添加至购物车");
                break; // 添加完毕之后必须终止本次存入,避免重复添加
            }
        }
    }
}

实例截图:

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的 Java 模拟购物系统的实现。 首先,我们需要定义一个商品类 `Product`,它应该包含名称、价格和库存等属性: ```java public class Product { private String name; private double price; private int stock; public Product(String name, double price, int stock) { this.name = name; this.price = price; this.stock = stock; } // getter 和 setter 方法省略 } ``` 然后,我们需要定义一个购物类 `Cart`,它应该包含商品列表、总价格等属性,以及添加商品、移除商品、计算总价等方法: ```java import java.util.ArrayList; import java.util.List; public class Cart { private List<Product> productList; private double totalPrice; public Cart() { this.productList = new ArrayList<>(); this.totalPrice = 0; } public void addProduct(Product product, int quantity) { if (product.getStock() < quantity) { System.out.println("库存不足!"); return; } for (Product p : productList) { if (p.getName().equals(product.getName())) { p.setStock(p.getStock() - quantity); totalPrice += product.getPrice() * quantity; return; } } Product newProduct = new Product(product.getName(), product.getPrice(), product.getStock() - quantity); productList.add(newProduct); totalPrice += product.getPrice() * quantity; } public void removeProduct(String productName, int quantity) { for (Product p : productList) { if (p.getName().equals(productName)) { if (p.getStock() + quantity > 0) { p.setStock(p.getStock() + quantity); totalPrice -= p.getPrice() * quantity; } else { System.out.println("商品数量不能小于0!"); } return; } } System.out.println("购物中不存在该商品!"); } public double getTotalPrice() { return totalPrice; } } ``` 最后,我们可以在 `Main` 类中测试购物系统的功能: ```java public class Main { public static void main(String[] args) { Product p1 = new Product("iPhone 11", 5999, 10); Product p2 = new Product("iPad Pro", 7999, 5); Cart cart = new Cart(); cart.addProduct(p1, 2); cart.addProduct(p2, 1); System.out.println("总价:" + cart.getTotalPrice()); cart.removeProduct("iPhone 11", 1); System.out.println("总价:" + cart.getTotalPrice()); cart.addProduct(p2, 10); System.out.println("总价:" + cart.getTotalPrice()); } } ``` 输出结果如下: ``` 总价:13997.0 总价:9998.0 库存不足! 总价:9998.0 ``` 这就是一个简单的 Java 模拟购物系统。当然,这只是一个基础版本,您可以根据实际需求进行扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值