项目总结:超市管理系统2

extends 1

在实现类体中声明需要使用到的实体类,方法,变量

核心代码!!!   ↓   ↓    ↓     ↓   ↓    ↓      ↓   ↓    ↓      ↓   ↓    ↓     ↓   ↓    ↓     ↓   ↓    ↓      ↓   ↓    ↓     ↓   ↓    ↓     ↓   ↓    ↓     ↓   ↓    ↓     ↓   ↓    ↓     ↓   ↓    ↓      ↓   ↓    ↓     ↓   ↓    ↓     ↓   ↓    ↓     ↓   ↓    ↓

  • 购买商品
/**
 * 提示输出购买商品ID 然后将ID判断是否为空;如果不为空打印输出对应商品信息;提示购买数量,判断购买数量是否大于
 * 库存数量;使用money计算总金额;
 * 在goodsService方法中重写更新商品表的方法int goods1 = goodsService.updateStore(pid, sum)
 * 将PID SUM传进goodsService.updateStore更新对应的商品数量   索引使用用户传进来的值
 *
 * @return
 */
public void buyGoods() {
    String n = null;
    int i = 0;
    do {

        System.out.println("---------商品----------");
        List<Goods> list = goodsService.queryAllGoods();
        list.forEach(k->{
            System.out.println(k.toString());
        });
        System.out.println("请输入购买商品ID");
        pid = scanner.nextInt();
        goods = goodsService.queryById(pid);
        if (goods == null) {
            System.out.println("商品已经下架");
        }
        System.out.println(goods);
        System.out.println("确定购买吗 y/n");
        String num = scanner.next();
        if (!("y".equalsIgnoreCase(num))) {
            continue;
        }
        System.out.println("请输入购买数量");
         sum = scanner.nextInt();
        if (sum > goods.getSum()) {
            System.out.println("库存不足  无法购买");
            continue;
        }
        System.out.println("添加成功");
        money = sum * goodsService.queryById(pid).getPrice();
        BigDecimal price = BigDecimal.valueOf(money);
        System.out.println("折算后价格为" + (money * goods.getDiscount() * 0.1));
        moneys = money * goods.getDiscount() * 0.1;
        GoodsVO goodsVO = new GoodsVO(goods,sum,price);
        hashMap.put(i,goodsVO);
        i++;
        System.out.println("是否继续购买 Y/N");
        n = scanner.next();
    } while ("Y".equalsIgnoreCase(n));
}

调用商品goodsService.queryAllGoods方法使用forEach循环打印数据库中的每个商品的信息:

public void buyGoods() {
    String n = null;
    int i = 0;
    do {

        System.out.println("---------商品----------");
        List<Goods> list = goodsService.queryAllGoods();
        list.forEach(k->{
            System.out.println(k.toString());
        });
        System.out.println("请输入购买商品ID");
        pid = scanner.nextInt();
        goods = goodsService.queryById(pid);
        if (goods == null) {

将数据库中的表中数据使用循环打印出来:提供让用户选择(根据商品ID)

根据用户输入的商品ID查找商品,如果是null值,就提示用户if判断中的代码信息,continue结束此次循环;如果为真打印商品信息问用户是否购买和购买数量,如果数量库存不足无法购买,continue结束此次循环,继续下次循环;

if (goods == null) {
    System.out.println("商品已经下架");
    continue;
}
System.out.println(goods);
System.out.println("确定购买吗 y/n");
String num = scanner.next();
if (!("y".equalsIgnoreCase(num))) {
    continue;
}
System.out.println("请输入购买数量");
 sum = scanner.nextInt();
if (sum > goods.getSum()) {
    System.out.println("库存不足  无法购买");
    continue;
}

如果商品数量足够就是用类中声明的变量money、sum、moneys、i;

分别用来保存   sum(购买数量)   money(购买商品数量*商品单价)    moneys(购买商品折扣后的价格)  i(表示添加到hashMap中的Key值);     购买商品添加到购物车后打印询问用户是否继续购买;

  if (sum > goods.getSum()) {
            System.out.println("库存不足  无法购买");
            continue;
        }
        System.out.println("添加成功");
        money = sum * goodsService.queryById(pid).getPrice();
        BigDecimal price = BigDecimal.valueOf(money);
        System.out.println("折算后价格为" + (money * goods.getDiscount() * 0.1));
        moneys = money * goods.getDiscount() * 0.1;
        GoodsVO goodsVO = new GoodsVO(goods,sum,price);
        hashMap.put(i,goodsVO);
        i++;
        System.out.println("是否继续购买 Y/N");
        n = scanner.next();
    } while ("Y".equalsIgnoreCase(n));
}

  • 结账
/**
 * pay是结账方法  先校验会员的输入信息是否正确;在VipService 接口中创建Vip vip = vipService.selectByID(id,password)方法
 * 用来校验用户输入的ID密码是否正确如果正确就打印会员的余额,积分;
 * 然后再校验会员当前的余额是否大于购买商品的金额如果余额足够就减去商品总金额,积分加上对应的总金额
 * 在vipService方法中重写更新VIP表的方法int i = vipService.editStore(vip.getId(), money, money) 将购买商品时的金额传进去
 * 更新对应的会员金额和积分     索引使用用户传进来的数值
 */
public void pay() {
    if(hashMap.size() == 0){
        System.out.println("购物车为空");
        return;
    }
    System.out.println("结账");
    System.out.println("请输入会员ID");
    int id = scanner.nextInt();
    System.out.println("请输入会员密码");
    String passwords = scanner.next();
    /**
     * 密码二次加密
     */
    String password = MD5(passwords);
    /**
     * 校验vip是否为空校验会员是否存在
     */
    Vip vip = vipService.selectByID(id, password);
    if(vip != null) {
        if (vip.getId().equals(id) && vip.getPassword().equalsIgnoreCase(password)) {
                System.out.println("登陆成功");
                System.out.println("余额:\t" + "积分");
                System.out.print(vip.getBalance() + "\t");
                System.out.print(vip.getIntegral());
                System.out.println();
                /**
                 * 付款成功后,更新会员表,商品表,信息表,详情表
                 */
                if (vip.getBalance() > money) {
                    System.out.println("付款后余额: \t" + "积分");
                    System.out.print((vip.getBalance() - money) + "\t");
                    System.out.println((vip.getIntegral() + money));
                    int i = vipService.editStore(vip.getId(), money, money);
                    goodsService.updateStore(pid,sum);
                    order = new Order(vip.getId(), money, date, 1);
                    orderService.addOrder(order);
                    details = new Details(details.getId(),vip.getId(),goods.getId(),sum);
                    detailsService.addDetails(details);
                    /**
                     * 购买成功后清空购物车
                     */
                    System.out.println("是否确认购买  (Y/N)");
                    String input= scanner.next();
                    if("Y".equalsIgnoreCase(input)){
                        hashMap.clear();
                        if (i >= 1) {
                            System.out.println("购买成功");
                        } else {
                            System.out.println("购买失败");
                        }
                    }

                } else {
                    System.out.println("余额不足,购买失败");
                }

        } else {
            System.out.println("没有找到对应的会员信息");
        }
    }else {
        System.out.println("用户不存在");
    }
}

结账前先进行hashMap中的元素(购买商品 || 购物车)非空判断;如果不为空使用临时变量保存用户输入的ID、密码;

public void pay() {
    if(hashMap.size() == 0){
        System.out.println("购物车为空");
        return;
    }
    System.out.println("结账");
    System.out.println("请输入会员ID");
    int id = scanner.nextInt();
    System.out.println("请输入会员密码");
    String passwords = scanner.next();

对用户输入的密码进行二次加密(在添加注册会员时进行了一次加密,二次加密才可以得到同样的值;ID为主键为一值)

对会员信息进行非空判断,调用vipService中的方法进行判断,代码:

判断非空后打印当前会员的余额,积分信息(消费余额和积分等同 1/1 --余额  ++积分)

System.out.println("请输入会员密码");
String passwords = scanner.next();
/**
 * 密码二次加密
 */
String password = MD5(passwords);
/**
 * 校验vip是否为空校验会员是否存在
 */
Vip vip = vipService.selectByID(id, password);
if(vip != null) {
    if (vip.getId().equals(id) && vip.getPassword().equalsIgnoreCase(password)) {
            System.out.println("登陆成功");
            System.out.println("余额:\t" + "积分");
            System.out.print(vip.getBalance() + "\t");
            System.out.print(vip.getIntegral());
            System.out.println();
            /**
             * 付款成功后,更新会员表,商品表,信息表,详情表
             */

判断会员余额是否大于购买商品折扣后的总价格;如果余额足够打印购买商品后的会员余额、积分信息;

购买结束后更新数据库会员表信息   

ID      姓名   密码                                         电话                                    积分     余额     创建时间           修改时间

购买成功后更新信息表:

ID                       user(用户ID)              总价格                      订单时间                             支付方式(会员支付)

购买成功后更新详情表:

ID      form(信息表单中的用户ID)  商品ID          购买数量

  /**
                 * 付款成功后,更新会员表,商品表,信息表,详情表
                 */
                if (vip.getBalance() > money) {
                    System.out.println("付款后余额: \t" + "积分");
                    System.out.print((vip.getBalance() - moneys) + "\t");//打印够买后的余额
                    System.out.println((vip.getIntegral() + moneys));//打印购买后的积分
                    int i = vipService.editStore(vip.getId(), moneys, moneys);//更新会员表,根据会员ID 在
                    goodsService.updateStore(pid,sum);//购买商品ID 数量
                    order = new Order(vip.getId(), moneys, date, 1);//信息变添加购买会员ID,价格,购买时间,支付方式(1,会员支付)
                    orderService.addOrder(order);//跟新信息表
                    details = new Details(details.getId(),vip.getId(),goods.getId(),sum);
                    detailsService.addDetails(details);//更新详情表
                    /**
                     * 购买成功后清空购物车
                     */
                    System.out.println("是否确认购买  (Y/N)");
                    String input= scanner.next();
                    if("Y".equalsIgnoreCase(input)){
                        hashMap.clear();//购买成功后清空购物车
                        if (i >= 1) {
                            System.out.println("购买成功");
                        } else {
                            System.out.println("购买失败");
                        }
                    }

                } else {
                    System.out.println("余额不足,购买失败");
                }

        } else {
            System.out.println("没有找到对应的会员信息");
        }
    }else {
        System.out.println("用户不存在");
    }
}

posted @ 2022-01-01 21:32  打翻你的奶瓶  阅读(105)  评论(0)    收藏  举报