动力商城--javaSE版本

本文介绍了使用JavaSE开发的动力商城项目,包含数据持久化至文件、日志功能(使用log4j)和清晰的用户界面设计。展示了主界面、商家界面和客户界面的部分代码,以及购买商品的流程和gitee上的源码链接。
摘要由CSDN通过智能技术生成

亮点

  • 实现了数据的持久化(用io流将数据保存到了文件)
  • 添加了日志功能(log4j) 新手看不懂也能用
  • 各个功能层次分明

技术栈

  • 交互式
  • 循环
  • 集合
  • io流

功能演示

只展示部分功能

  • 主界面
    主界面
  • 商家界面
    在这里插入图片描述
  • 客户界面
    在这里插入图片描述
  • 购买界面
    在这里插入图片描述
  • 日志文件
    在这里插入图片描述

部分代码

考虑到有的人可能需要日志文件的配置文件 , 在上面有传送门 , 可以获得整个项目
各类在包中的分布
在这里插入图片描述

  • 主界面
/**
 * @AUTHOR TingFeng
 * @DATE 2023/10/18-15:15
 * @DESCRIPTION
 */
public class Shop {
    static Scanner scanner = new Scanner(System.in);
    public static void shop(){
        while (true) {
            UI();
            String rank = scanner.next();
            switch (rank) {
                case "1":
                    Utils.logger.info("用户进入了本平台");
                    System.out.println("------------动力商城客户端-----------");
                    Client.clientUI();
                    break;
                case "2":
                    Utils.logger.info("商家进入了本平台");
                    System.out.println("------------动力商城后台----------");
                    Server.serverUI();
                    break;
                case "3":
                    System.out.println("欢迎下次使用");
                    return;
                default:
                    System.out.println("输入错误!重新输入:");
            }
        }
    }
    private static void UI() {
        System.out.println("-------------动力商城--------------");
        System.out.println("1 客户      2 商家       3 退出");
        System.out.println("请选择你的身份");
    }
}
  • 商家
public static void serverUI() {
        while (true) {
            System.out.println("1 添加商品");
            System.out.println("2 删除商品");
            System.out.println("3 查看商品");
            System.out.println("4 退出");
            System.out.println("请输入你的操作");
            String choose = scanner.next();
            switch (choose) {
                case "1":
                    addGoods();
                    break;
                case "2":
                    delGood();
                    break;
                case "3":
                    showGoods();
                    break;
                case "4":
                    Utils.logger.info("商家退出了平台");
                    return;
            }
        }
    }
  • 用户
public static void clientUI() {

        boolean f = true;
        while (true) {
            if (f){
                if (goodsList.size() == 0) {
                    System.out.println("该店还未营业!");
                    return;
                }
                System.out.println("\t商品编号\t\t商品名称\t\t库存\t\t价格");
                for (int i = 0; i < goodsList.size(); i++) {
                    System.out.println("\t" + goodsList.get(i).getId() + "\t\t\t" + goodsList.get(i).getName() + "\t\t" + goodsList.get(i).getCount() + "\t\t" + goodsList.get(i).getPrice());
                }
            }
            f = true;
            System.out.println("1.购买产品\t\t2.根据价格降序排序\t\t3.根据编号升序排序\t\t4.退出");
            System.out.println("请输入你的操作");
            int choose = scanner.nextInt();
            switch (choose) {
                case 1:
                    buy();
                    break;
                case 2:
                    f = false;
                    goodsList.sort((o1, o2) -> (int) (o2.getPrice() - o1.getPrice()));
                    System.out.println("\t\t商品编号\t商品名称\t\t库存\t\t价格");
                    for (int i = 0; i < goodsList.size(); i++) {
                        System.out.println("\t\t\t" + goodsList.get(i).getId() + "\t\t" + goodsList.get(i).getName() + "\t\t" + goodsList.get(i).getCount() + "\t\t" + goodsList.get(i).getPrice());
                    }
                    break;
                case 3:
                    f= false;
                    goodsList.sort((o1, o2) -> (int) (o1.getId() - o2.getId()));
                    System.out.println("\t\t商品编号\t商品名称\t\t库存\t\t价格");
                    for (int i = 0; i < goodsList.size(); i++) {
                        System.out.println("\t\t\t" + goodsList.get(i).getId() + "\t\t" + goodsList.get(i).getName() + "\t\t" + goodsList.get(i).getCount() + "\t\t" + goodsList.get(i).getPrice());
                    }
                    break;
                case 4:
                    Utils.logger.info("用户退出了平台");
                    return;
            }
        }
    }
  • 购买商品
private static void buy() {
        System.out.println("请输入产品编号");
        int goodID = scanner.nextInt();
        Goods goalGood = haveGood(goodID,goodsList);
        if (haveGood(goodID,goodsList) != null) {
            System.out.println("你购买的产品为: " + goalGood);
            System.out.println("请输入购买数量");
            int count = scanner.nextInt();
            if (count <= goalGood.getCount()) {
                System.out.println("你需要支付: " + goalGood.getPrice() * count + "(Y/N)");
                String safy = scanner.next();
                if ("Y".equals(safy) || "y".equals(safy)) {

                    goalGood.setCount(goalGood.getCount() - count);
                    try (MyObjectOutputStream myOos = new MyObjectOutputStream(new FileOutputStream
                            ("com/tingfeng/data/data.txt"));){


                        for (int i = 0; i < goodsList.size(); i++) {
                            if (goodsList.get(i).getCount()==0){
                                goodsList.remove(i);
                                continue;
                            }
                            myOos.writeObject(goodsList.get(i));
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    System.out.println("购买成功");
                    Utils.logger.info("客户购买了{},数量为{},总价为{}",goalGood.getName(),count,goalGood.getPrice()*count);
                } else {
                    System.out.println("购买失败!");
                }
            } else {
                System.out.println("库存不足!请重新输入");
            }
        } else {
            System.out.println("没有该编号的产品!");
        }

    }

传送门

gitee源码

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值