一、前期调查

成员及分工

 

姓名

分工

吴艺发

ShoppingCart、ShoppingMall、itemEntry

叶伟祥

Main、Menu、Goods

 

java实现简单购物车 java如何实现购物车功能_System

如图,购物车程序需要有商品条目,商品数量,对商品条目的操作,生成订单等功能

 

二、图示

业务流程图

java实现简单购物车 java如何实现购物车功能_System_02

功能结构图

java实现简单购物车 java如何实现购物车功能_java实现简单购物车_03

 

三、代码展示

1.Main
功能选择
import java.util.List;
 import java.util.Scanner;
 public class Main{
     public static void main(String[] args) {
         Scanner input = new Scanner(System.in);
         Scanner pause = new Scanner(System.in);
         ShoppingMall mall = new ShoppingMall();
         ShoppingCart cart = new ShoppingCart();
         List<Goods> list = mall.showGoods();
         while(true) {
             Menu.beginMenu();
             System.out.println("请输入你的功能选择");
             int choice = input.nextInt();
             switch(choice) {
             case 1://展示商品
                 for (Goods temp : list) {
                     System.out.println(temp);
                 }
                 System.out.println("按回车返回主界面");
                 String Pause = pause.nextLine();
                 break;
             case 2://按类型查询商品
                 System.out.println("请输入你要查询的类型");
                 String type = input.next();
                 System.out.println(mall.searchByType(type));
                 System.out.println("按回车返回主界面");
                 Pause = pause.nextLine();
                 break;
             case 3://按id查询商品
                 System.out.println("请输入你要查询的id");
                 System.out.println(mall.searchById(input.nextInt()));
                 System.out.println("按回车返回主界面");
                 Pause = pause.nextLine();
                 break;
             case 4://添加商品到购物车
                 System.out.println("请输入你要添加的商品的id,如果输入-1则结束添加商品");
                 while(true) {
                     int flag = input.nextInt();
                     if(flag==-1) {
                         System.out.println("按回车返回主界面");
                         Pause = pause.nextLine();
                         break;
                     }
                     else {
                         cart.addToCart(list.get(flag));
                     }
                 }
                 break;
             case 5://减少购物车商品的数量
                 System.out.println("请输入你要减少的商品的id");
                 cart.remove(input.nextInt());
                 System.out.println("按回车返回主界面");
                 Pause = pause.nextLine();
                 break;
             case 6://查看购物车
                 List<ItemEntry> list1 = cart.showMyCart();
                 for (ItemEntry temp1 : list1) {
                     System.out.println(temp1);
                 }
                 System.out.println("按回车返回主界面");
                 Pause = pause.nextLine();
                 break;
             case 7://清空购物车
                 cart.emptyCart();
                 System.out.println("按回车返回主界面");
                 Pause = pause.nextLine();
                 break;
             case 8://购物车预结算
                 List<ItemEntry> list2 = cart.showMyCart();
                 list2.get(0).getItem().getPrice();
                 int temp=0;
                 for (ItemEntry temp1 : list2) {
                     temp=temp1.getPiece()*temp1.getItem().getPrice()+temp;
                 }    
                 System.out.println("总价为:"+temp);
                 System.out.println("按回车返回主界面");
                 Pause = pause.nextLine();
                 break;
         }
     }
 } 
2.Menu
打印菜单
public class Menu {
     
     public static void beginMenu() {
         System.out.println("购物车");
         System.out.println("1.商品展示");
         System.out.println("2.以类型查询商品");
         System.out.println("3.以编号查询商品");
         System.out.println("4.添加商品至购物车");
         System.out.println("5.减少购物车商品的数量");
         System.out.println("6.查看购物车");
         System.out.println("7.清空购物车");
         System.out.println("8.购物车预结算");
     }
 }3.Goods
商品基本信息
public class Goods {
        private Integer id;
        private String name;
        private int price;
        private String type;
        public Goods(Integer id,String name,int price,String type)
        {
           this.id=id;
           =name;    
           this.price=price;
           this.type=type;
        }//商品的基本信息
        @Override
         public String toString() {
             return "商品" + id + ":名称:" + name +   ", 价格:" + price + ", 类型:"
                     + type ;
         }
         public int getId() {
             return id;
         }
         public void setId(Integer id) {
             this.id = id;
         }
         public String getName() {
             return name;
         }
         public void setName(String name) {
              = name;
         }
         
         public int getPrice() {
             return price;
         }
         public void setPrice(int price) {
             this.price = price;
         }
         public String getType() {
             return type;
         }
         public void setType(String type) {
             this.type = type;
         }
     }4.ShoppingMall
展示商品、搜索商品
public class ShoppingMall {
    List<Goods> goods=new ArrayList<>();
    {
        goods.add(new Goods(0,"java学习笔记",98,"书籍"));
        goods.add(new Goods(1,"计算机网络",59,"书籍"));
        goods.add(new Goods(2,"iPad 9",2499,"电子产品"));
        goods.add(new Goods(3,"面包",30,"食品"));
        goods.add(new Goods(4,"排球",60,"运动"));
    }
    public  List<Goods> showGoods(){
        return this.goods;
    }
    public Goods searchById(Integer id) {
        int i=0;
        int flag=1;
        for(i=0;i<goods.size();i++) {
            if(goods.get(i).getId()==(id)) {
                return goods.get(i);
            }
        }
        if(flag==1)
            System.out.println("抱歉,没有找到搜索的商品");
     return null;
    }//按id搜索商品
    public List<Goods> searchByType(String type) {
        int i=0;
        List<Goods> list=new ArrayList<>();
        for(i=0;i<goods.size();i++) {
            if(goods.get(i).getType().equals(type))
            {
                list.add(goods.get(i));
            }
        }
        return list;
    }   }
5.ShoppingCart
加入商品至购物车
减少购物车商品数量
查看购物车
清空购物车
public class ShoppingCart {
     private List<ItemEntry> itemList = new ArrayList<>();    public void addToCart(Goods e) {
        int index = findById(e.getId());
         if (index == -1) {
             itemList.add(new ItemEntry(e));        } else {
             itemList.get(index).increase();
         }
     }    public List<ItemEntry> getItemList() {
         return itemList;
     }
     public List<ItemEntry> emptyCart(){
         itemList.clear();
         return itemList;
     }
     public List<ItemEntry> showMyCart() {
         return itemList;
     }    public boolean remove(Integer id) {
         if (id == null)
             return false;
         int index = findById(id);
         if (index == -1) {// 未找到
             return false;
         } else {
             ItemEntry entry = this.itemList.get(index);
             if (entry.getPiece() <= 1) {
                 this.itemList.remove(index);
             }
             else
             {
                  entry.decrease();
             }
         }
         return true;
     }    private int findById(Integer id) {
         int index = -1;
         if (itemList.size() > 0) {
             for (int i = 0; i < itemList.size(); i++) {
                 if (itemList.get(i).getItem().getId() == id)
                     index = i;
             }
         }
         return index;
     }
 }6.ItemEntry
购物车中商品条目
public class ItemEntry {
         Goods item;
         int piece;        public ItemEntry(Goods item) {
             this.item = item;
             piece = 1;
         }               public void increase() {
             piece++;
         }        public Goods getItem() {
             return item;
         }        public void setItem(Goods item) {
             this.item = item;
         }        public int getPiece() {
             return piece;
         }        public void setPiece(int piece) {
             this.piece = piece;
         }        public void decrease() {
             piece--;
         }
         public String toString() {
             return "购物车中有:" + item + ", 数量为:" + piece ;
         }    }

本系统哪里体现了面向对象的封装性?
   在ShoppingCart类,外部的类可以通过其提供的功能,来完成商品放入购物车等操作。外部的类是不能直接访问到ShoppingCart类的items。此举体现了封装性。

项目包结构(package的划分)与关键代码:项目的包结构(为什么要这样设计包结构)
   商品,商城,购物车 功能比较简单,放在同一个包可以加快开发效率