Java课程设计之购物车管理系统

一、项目准备

1、开发工具:JDK、Eclipse

2、需求分析:

包括商品管理和购物车管理。

1)商品管理主要功能

  • 商品信息导入

  • 显示所有商品信息

2)购物车主要功能

  • 添加商品到购物车

  • 修改购物车中的商品数量

  • 显示购物车中的所有商品信息

  • 结算

    4、详细设计

    包括如下类的设计:

  • 商品类(Goods)

  • 商品管理类(GoodsManage)

  • 购物车中的商品信息类(GoodsInCart)

  • 购物车类(ShoppingCart)

  • 测试类 (TestDemo)

  • 下面分别对各个类进行介绍:

    1)商品类(Goods),包括如下属性和方法

    方法:

    -构造方法

    -getter和setter方法

    -hashCode()和equals()方法

    -toString()方法

    2)商品管理类(GoodsManage)

    属性:存放商品的容器(goodsSet):Set类型

    方法:

    -构造方法

    -getter和setter方法

    -商品信息导入:public void importGoods();

    -显示所有商品信息:public void displayAllGoods();

    3)购物车中的商品信息类(GoodsInCart)

    属性:

    - 商品信息(goods):Goods类型

     -  商品数量(num):int类型

    方法:

    -构造方法

    -getter和setter方法

    4)购物车类(ShoppingCart)

    属性:

    - 购物车(shoppingCart):Map类型,其中key为String类型,value为GoodsInCart类型

    方法:

    -添加商品到购物车:

       public void addGoodsToCart(GoodsManage gm);

    -修改购物车中的商品数量:public void updateNumInCart();如果购物车中没有商品,需要给出提示信息

     - 显示购物车中的所有商品:public void displayAllInCart();如果购物车中没有商品,需要给出提示信息

     - 结算:public void settleAccounts();结算后购物车要清空。

     - 构造方法及getter和setter方法

    5)测试类(TestDemo)

     - 根据需求设计完成主流程实现

     代码实现:

  • 商品类(Goods):

    package pers.szl.shopping;
    
    public class Goods {
    
    
        private String goodsId;
        private String goodsName;
        private double price;
        private String goodDes;
    
    
        @Override
        public boolean equals(Object o) {
            if(o==this){
                return true;
            }
            if(o instanceof Goods){
                    Goods goods=(Goods) o;
                    if(this.getGoodsId().equals(goods.goodsId)&&this.goodsName.equals(goods.goodsName)&&this.price==goods.price&&this.goodDes.equals(goods.goodDes)) {
                   return true;
                    }
                }
            return false;
            }
    
        @Override
        public int hashCode() {
            return (goodsId.hashCode()+goodsName.hashCode()+goodDes.hashCode()+(int)price)*31;
        }
    
        public Goods() {
        }
    
        public Goods(String goodsId, String goodsName, double price, String goodDes) {
            this.goodsId = goodsId;
            this.goodsName = goodsName;
            this.price = price;
            this.goodDes = goodDes;
        }
    
        /**
         * 获取
         * @return goodsId
         */
        public String getGoodsId() {
            return goodsId;
        }
    
        /**
         * 设置
         * @param
         */
        public void setGoodsId(String goodsId) {
            this.goodsId = goodsId;
        }
    
        /**
         * 获取
         * @return goodsName
         */
        public String getGoodsName() {
            return goodsName;
        }
    
        /**
         * 设置
         * @param
         */
        public void setGoodsName(String goodsName) {
            this.goodsName = goodsName;
        }
    
        /**
         * 获取
         * @return price
         */
        public double getPrice() {
            return price;
        }
    
        /**
         * 设置
         * @param price
         */
        public void setPrice(double price) {
            this.price = price;
        }
    
        /**
         * 获取
         * @return goodDes
         */
        public String getGoodDes() {
            return goodDes;
        }
    
        /**
         * 设置
         * @param goodDes
         */
        public void setGoodDes(String goodDes) {
            this.goodDes = goodDes;
        }
        public String toString() {
            return "商品编号:" + goodsId + ",商品名称:" + goodsName + ",商品单价:" + price+"元" + ",商品描述:" + goodDes;
        }
    }
    

    商品管理类(GoodsManage):

    package pers.szl.shopping;
    
    import java.util.HashSet;
    
    public class GoodManage {
        HashSet<Goods> goodsSet = new HashSet<>();
    
        public GoodManage() {
        }
    
        public void importGoods() {//商品信息导入
            Goods g1 = new Goods("goods001", "水杯", 56.0, "不锈钢");
            Goods g2 = new Goods("goods002", "电脑", 5556.0, "笔记本电脑");
            Goods g3 = new Goods("goods003", "手机", 2556.0, "智能手机");
            Goods g4 = new Goods("goods004", "饮水机", 556.0, "智能饮水机");
            Goods g5 = new Goods("goods005", "篮球", 256.0, "专业篮球");
            goodsSet.add(g1);
            goodsSet.add(g2);
            goodsSet.add(g3);
            goodsSet.add(g4);
            goodsSet.add(g5);
            System.out.println("商品信息导入成功!");
        }
    
        public void displayAllGoods() {//显示所有商品信息
            System.out.println("显示所有商品信息:");
            for (Object object : goodsSet) {
                System.out.println(object);
            }
        }
    }
    

    购物车中的商品信息类(GoodsInCart):

    package pers.szl.shopping;
    
    public class GoodsInCart {
         private   Goods goods;
         private    int num;
    
        public GoodsInCart() {
        }
    
        public Goods getGoods() {
            return goods;
        }
    
    
        public void setGoods(Goods goods) {
            this.goods = goods;
        }
    
    
        public int getNum() {
            return num;
        }
    
    
        public void setNum(int num) {
            this.num = num;
        }
    
        public String toString() {
            return   goods + ",商品数量:" + num +";";
        }
    }
    

    购物车类(ShoppingCart):

  • package pers.szl.shopping;
    import java.util.*;
    
    public class ShoppingCart {
        Map<String, GoodsInCart> shoppingCart = new HashMap<>();
        Scanner sc=new Scanner(System.in);
        public ShoppingCart() {
        }
        public void addGoodsToCart(GoodManage gm ){//添加商品到购物车
            GoodsInCart goods=new GoodsInCart();
            if(gm.goodsSet.isEmpty()){
                System.out.println("商品信息未导入,请先导入商品信息!");
                return ;
            }
            gm.displayAllGoods();
            System.out.println("请输入商品编号:");
            String goodId=sc.next();
            Set <String> keys=shoppingCart.keySet();
            for(String key:keys){
                if(key.equals(goodId))
                {
                    System.out.println("该商品已添加到购物车,请重新输入商品编号!");
                    addGoodsToCart(gm );
                }
            }
    
            for (Goods object : gm.goodsSet) {
                if(object.getGoodsId().equals(goodId)){
                       goods.setGoods( object);
                    System.out.println("请输入商品数量:");
                    int num=sc.nextInt();
                    while(num<=0){
                        System.out.println("商品数量不能为负,请重新输入商品数量:");
                        num=sc.nextInt();
                    }
                    goods.setNum(num);
                    shoppingCart.put(goods.getGoods().getGoodsId(),goods);
                    System.out.println("添加商品到购物车成功!");
                    return;
                }
            }
                System.out.println("商品信息中不存在该编号的商品,请重新输入商品编号!");
                addGoodsToCart( gm );
        }
        public  void updateNumInCart(){//修改购物车中的商品数量
            GoodsInCart goods=new GoodsInCart();
            if(shoppingCart!=null&&shoppingCart.isEmpty()){
                System.out.println("购物车没有添加商品,请先进行添加商品操作!");
                return;
            }
            System.out.println("请输入修改商品编号:");
            String goodId=sc.next();
            Set <String> keys=shoppingCart.keySet();
            for(String key:keys){
                if(key.equals(goodId))
                {
                  Goods goods1=  shoppingCart.get(key).getGoods();
                    goods.setGoods(goods1);
                    System.out.println("请输入修改商品数量:");
                    int num=sc.nextInt();
                    if(num==0){
                        shoppingCart.remove(key);
                        System.out.println("商品数量为零,已从购物车中删除!");
                        return;
                    }
                    while(num<0){
                        System.out.println("商品数量不能为负,请重新输入商品数量:");
                        num=sc.nextInt();
                    }
                    goods.setNum(num);
                    goods.getGoods().setGoodsId(goodId);
                    shoppingCart.put(goods.getGoods().getGoodsId(),goods);
                    System.out.println("修改购物车中的商品数量成功!");
                    return;
                }
            }
                System.out.println("购物车中不存在该编号的商品,请重新输入商品编号!");
                updateNumInCart();
        }
        public  void displayAllInCart() {//显示购物车中的商品信息
            if(shoppingCart!=null&&shoppingCart.isEmpty()){
                System.out.println("购物车没有添加商品,请先进行添加商品操作!");
                return;
            }
            System.out.println("购物车商品信息如下:");
            Set <String> keys=shoppingCart.keySet();
            for(String key:keys){
                System.out.println(shoppingCart.get(key).getGoods()+",商品数量:"+shoppingCart.get(key).getNum());
            }
        }
        public void settleAccounts(){//结算
            if(shoppingCart!=null&&shoppingCart.isEmpty()){
                System.out.println("购物车没有添加商品,请先进行添加商品操作!");
                return;
            }
            Set <String> keys=shoppingCart.keySet();
            double sumPrice=0;
            for(String key:keys){
                GoodsInCart value=shoppingCart.get(key);
               sumPrice+= value.getGoods().getPrice()*value.getNum();
            }
            System.out.println("结算成功,您一共需要支付"+sumPrice+"元。");
            displayAllInCart();
            shoppingCart.clear();
            System.out.println("支付成功,购物车已清空!");
        }
    }
    

    测试类(TestDemo):

    package pers.szl.shopping;
    
    import java.util.Scanner;
    
    public class TestDemo {
    
        public static  void main(String[]args){
            Menu menu=new Menu();
            Scanner input= new Scanner(System.in);
            while(true){
                menu.home();
                switch(input.next()){
                    case "1":
                        menu.shoppingHome();
                      break;
                    case "2":
                        menu.goodsHome();
                        break;
                    case "0":
                        System.out.println("成功退出系统!");
                        System.exit(0);
                        break;
                    default:
                        System.out.println("没有此操作,请重新输入!");
                }
            }
        }
    }
    
    

    菜单类Menu:

  • package pers.szl.shopping;
    
    import java.util.Scanner;
    
    public class Menu {
        Scanner input = new Scanner(System.in);
        ShoppingCart shoppingCart = new ShoppingCart();
        GoodManage gm = new GoodManage();
    
        public void home() {
            System.out.println("        ************************");
            System.out.println("                **主菜单**");
            System.out.println("              1--商品管理");
            System.out.println("              2--购物车");
            System.out.println("              0--退出");
            System.out.println("        ************************");
            System.out.println("请输入对应数字进行操作:");
        }
    
        public void shoppingHome() {
            boolean flag = true;
            while (flag) {
                System.out.println("       **************************");
                System.out.println("              **商品管理**");
                System.out.println("             1--商品信息导入");
                System.out.println("             2--显示所有商品信息");
                System.out.println("             9--返回上一级菜单");
                System.out.println("       **************************");
                System.out.println("请输入对应数字对商品进行管理:");
                switch (input.next()) {
                    case "1":
                        gm.importGoods();
                        break;
                    case "2":
                        gm.displayAllGoods();
                        break;
                    case "9":
                        System.out.println("成功返回上一级菜单!");
                        flag = false;
                        break;
                    default:
                        System.out.println("输入错误,请重新输入!");
                }
            }
        }
    
        public void goodsHome() {
            boolean flag = true;
            while (flag) {
                System.out.println("      ************************");
                System.out.println("           **购物车管理**");
                System.out.println("         1--添加商品到购物车");
                System.out.println("         2--修改购物车中的商品数量");
                System.out.println("         3--显示购物车中的所有商品");
                System.out.println("         4--结算");
                System.out.println("         9--返回上一级菜单");
                System.out.println("      ***********************");
                System.out.println("请输入对应的数字对购物车进行管理:");
                switch (input.next()) {
                    case "1":
                        shoppingCart.addGoodsToCart(gm);
                        break;
                    case "2":
                        shoppingCart.updateNumInCart();
                        break;
                    case "3":
                        shoppingCart.displayAllInCart();
                        break;
                    case "4":
                        shoppingCart.settleAccounts();
                        break;
                    case "9":
                        System.out.println("成功返回上一级菜单!");
                        flag = false;
                        break;
                    default:
                        System.out.println("输入错误,请重新输入!");
                }
            }
        }
    }
    
    

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扎心小指针0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值