利用Map构建实现网上购书系统

来源:互联网 发布:墨尔本勋爵 知乎 编辑:程序博客网 时间:2024/05/17 08:35

  网上购书  (Map构建实现)
      购物车:添加书、重复添加书、移除书、查看购物车、清空购物车
      购物车存放:key-购物信息   (商品对象:数量)
      购物车用Map实现,Map中存入key-value: key-商品编号    value-购物信息(商品和数量)  
 


package com.derun.dian.map;


//商品类


import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


class Book{
    String isbn;           //国际标准图书编号(International Standard Book Number)
    String title;
    double prise;


    public Book() {
    }


    public Book(String isbn, String title, double prise) {
        this.isbn = isbn;
        this.title = title;
        this.prise = prise;
    }


    public String getIsbn() {
        return isbn;
    }


    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }


    public String getTitle() {
        return title;
    }


    public void setTitle(String title) {
        this.title = title;
    }


    public double getPrise() {
        return prise;
    }


    public void setPrise(double prise) {
        this.prise = prise;
    }    
}


//购物信息
class CartItem{           //购物车商品
    Book book;             //购买的商品 
    int number;            //该商品的购买数量


    public CartItem() {
    }


    public CartItem(Book book, int number) {
        this.book = book;
        this.number = number;
    }


    public Book getBook() {
        return book;
    }


    public void setBook(Book book) {
        this.book = book;
    }


    public int getNumber() {
        return number;
    }


    public void setNumber(int number) {
        this.number = number;
    }
    
    
}


//购物车类
class Cart {


    Map<String, CartItem> myCart = new HashMap<>();      //代表购物车容器
    
    //添加
    public void add(Book book){
        //先看购物车里有没有这本书  调用containsKey
        boolean isHave = myCart.containsKey(book.getIsbn());
        
        //如果没有 则创建一个新的该书的购物信息项
        if(!isHave){
            CartItem ci = new CartItem(book,1);
            myCart.put(book.getIsbn(), ci);
        }else{ //如果有 则修改该书在购物信息项中的数量
            CartItem ci = myCart.get(book.getIsbn());
            //CartItem ci = myCart.get(book.getIsbn());
            ci.setNumber(ci.getNumber() + 1);
            myCart.put(book.getIsbn(), ci);
        }
        
    }
    
    //删除
    public void remove(String isbn){
        //先看购物车里有没有这本书
        boolean isHave = myCart.containsKey(isbn);
        //如果有 则删除
        if(isHave){
            myCart.remove(isbn);    //直接删除
        }else{  //没有 提示信息
            System.out.println("没有找到该书!");
        }
        
    }
    
    //修改
    public void update(String isbn,int number){
        //先看购物车里有没有这本书
        boolean isHave = myCart.containsKey(isbn);
        //如果没有 return
        if(!isHave) return;
        if(isHave){ //有 1.新数量为零 则删除该本书  //2.不为零 修改该书在购物信息项中的数量
            if(number == 0){
                myCart.remove(isbn);
            }else{
                CartItem ci = myCart.get(isbn);
                ci.setNumber(number);
                myCart.put(isbn, ci);
            }
        }
    
    }
    
    //清空
    public void clear(){
        //清空购物车
        myCart.clear();
        
    }
    
    //查看所以商品
    public Collection<CartItem> findAll(){
        //遍历购物车 返回所有购物项的集合
        //System.out.println(myCart.values());
        //List<CartItem> allBooks = myCart.values(); // 不能用List因为Collection不能转换为List类型,只能由List类型转换为Collection
        Collection<CartItem> allBooks = myCart.values();
        return allBooks;
    }
}


//测试程序 模拟购物过程
public class Shopping {
    public static void main(String[] args) {
        Cart cart = new Cart();
        
        Book book01 = new Book("111","西游记",66.6);
        cart.add(book01);
        
        Book book02 = new Book("222","水浒传",62.6);
        cart.add(book02);
        
        Book book03 = new Book("333","世界未解之谜",35.5);
        cart.add(book03);
        
        Book book04 = new Book("444","哈利波特",33.6);
        cart.add(book04);
        
        Book book05 = new Book("111","西游记",66.6);
        cart.add(book05);
        
        System.out.println("-----------------------查看所有商品-----------------------");
       
        Collection<CartItem> books = cart.findAll();
        book(books);
        
        System.out.println("-----------------------增加商品的数量----------------------");
        
        cart.update("222", 3);
        
        book(books);
        
        System.out.println("-----------------------删除某个商品------------------------");
        cart.remove("444");
        
        book(books);
        
        System.out.println("------------------------清空所有商品-----------------------");
        cart.clear();
        book(books);
    }
    
    public static void book(Collection<CartItem> cartItems){
            if(cartItems==null || cartItems.size()==0){
                System.out.println("您的购物车里还没有添加商品!");
            }else{
                System.out.println("购物车中现在的商品有:");
                for(CartItem item : cartItems){
                    System.out.println(item.getBook().getTitle() + " " + item.getNumber());
                }
            }
        }
        

}


运行结果:

     -----------------------查看所有商品-----------------------
     购物车中现在的商品有:
     哈利波特 1
     水浒传 1
     西游记 2
     世界未解之谜 1
     -----------------------增加商品的数量----------------------
     购物车中现在的商品有:
     哈利波特 1
     水浒传 3
     西游记 2
     世界未解之谜 1
     -----------------------删除某个商品------------------------
     购物车中现在的商品有:
     水浒传 3
     西游记 2
     世界未解之谜 1
     -----------------------清空所有商品-----------------------
     您的购物车里还没有添加商品!




0 0
原创粉丝点击