“商苑面馆:Java命令行版之 CartDao”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
第120行: 第120行:
 
return s;
 
return s;
 
  }</nowiki>
 
  }</nowiki>
 +
===判断商品是否在购物车内:hasFood()===
 +
<nowiki>/**
 +
  * 查询购物车中的商品
 +
  * @param myFood 带查询的商品
 +
  * @return 该商品的数量
 +
  */
 +
    public Integer hasFood(Food g){
 +
    // 遍历所有的书籍信息
 +
   
 +
    if(f.containsKey(g))
 +
    return f.get(g);
 +
   
 +
    return 0;
 +
    }</nowiki>
 
===编写测试代码===
 
===编写测试代码===
 
在CartDaoMap类的main方法中编写测试代码:
 
在CartDaoMap类的main方法中编写测试代码:

2019年5月12日 (日) 08:31的版本

Dao层

Java8-1.png


实现步骤

建立接口CartDao

在包dao下建立抽象接口CartDao

package dao;

import entity.*;
public interface CartDao {
	
	  public void addFood(Food f1, Integer num);//添加商品
	 
	  public void delFood(Food g);//删除商品
	  
	  public void queryFood();//查询购物车内已放商品
	  
	  //public Integer hasFood(Food g);//查询购物车内是否已有某件商品
	 
	  //public void modifyFood(Food g,Integer num);//修改购物车内该种商品的数量

	
	
}

建立接口的实现类

接口实现类可以用多种方式实现,ArrayList,LinkedList, MySQL等

这里我们用HashMap实现

接口实现类CartDaoMap

package dao;

import java.util.*;

import entity.Food;
import entity.Noodle;
public class CartDaoMap implements CartDao {
	
    private HashMap<Food,Integer> f ;
	
    public CartDaoMap(){
    	//初始化购物车
    	this.f= new HashMap<>();
    	Food f1 = new Noodle("炸酱面",12.0,3,"不辣");
    	Food f2 =new Noodle("臊子面",14.0,2,"麻辣");
    	
    	this.addFood(f1,3);
    	this.addFood(f2,3);
    	
    }

   
    
   
    public static void main(String[] args) {            
        
        
    }

}

添加商品方法:AddFood()

 /**
	   * 向购物车中添加商品
	   * @param g 向购物车中添加商品
	   * @return 值为空
	   */
    public void addFood(Food g,Integer n){
    	
	    this.f.put(g, n);  		
	  	
   }
    
   

删除商品方法:DelFood()

 /**
	   * 向购物车中删除商品
	   * @param Food 向购物车中删除商品
	   * @return 值为空
	   */
   public void delFood(Food g){
	   //将数组中myFood条目对应的商品数量减为0	   
	   this.f.remove(g);
   }
   

查询商品方法:query()

/**
	   * 遍历查询购物车中的商品
	   * @param 值为空
	   * @return 值为空
	   */
    public void queryFood(){
    	
    	String s =this.toString();//调用本类的toString方法
		System.out.println(s);
		
    }
   
    /**
	   * 返回该类的字符串形式
	   * @return 返回该类的字符串形式
	   */
    @Override
   public String toString() {
    	 
		 String s="";
		 s +="购物车商品明细:\r\n";
		 //显示所有书籍    	
	     Set<Food> keys = f.keySet();
	     s += "***********************\r\n";
		 //遍历keyset,通过map.get(key)方法获得value的值
		 for(Food key : keys){
			s +=key.toString() + "\t" +"选中数量:\t"+ f.get(key)+"\r\n";
		}	
		return s;
 	}

判断商品是否在购物车内:hasFood()

/**
	   * 查询购物车中的商品
	   * @param myFood 带查询的商品
	   * @return 该商品的数量
	   */
    public Integer hasFood(Food g){
    	// 遍历所有的书籍信息
    	
    	if(f.containsKey(g))
    		return f.get(g);
    	
    	return 0;
    }

编写测试代码

在CartDaoMap类的main方法中编写测试代码:

 public static void main(String[] args) {
		    	 
    	// TODO Auto-generated method stub
    	 
    	CartDao  f = new CartDaoMap();//用数组列表f初始化食物仓库foodset
    	
        //查看购物车
    	System.out.println("查看购物车");
        f.queryFood();//调用toString方法
        
        //向购物车添加商品
        Food f3 = new Noodle("刀削面",10.0,5,"微辣");
        System.out.println("购买商品"+f3.getName());        
        f.addFood(f3, 1);      
        f.queryFood(); //查看购物车
        
        //取消购买
        System.out.println("取消购买");
        f.delFood(f3);
        f.queryFood();//调用toString方法
        
    }

Java7-46.png

完整代码

 <nowiki>package dao;

import java.util.*;

import entity.Food;
import entity.Noodle;
public class CartDaoMap implements CartDao {
	
    private HashMap<Food,Integer> f ;
	
    public CartDaoMap(){
    	//初始化购物车
    	this.f= new HashMap<>();
    	Food f1 = new Noodle("炸酱面",12.0,3,"不辣");
    	Food f2 =new Noodle("臊子面",14.0,2,"麻辣");
    	
    	this.addFood(f1,3);
    	this.addFood(f2,3);
    	
    }

    public CartDaoMap(HashMap<Food,Integer> f){   	
	  	
    	this.f= f;
    }
    
    /**
	   * 向购物车中添加商品
	   * @param g 向购物车中添加商品
	   * @return 值为空
	   */
    public void addFood(Food g,Integer n){
    	
	    this.f.put(g, n);  		
	  	
   }
    
    /**
	   * 向购物车中删除商品
	   * @param Food 向购物车中删除商品
	   * @return 值为空
	   */
   public void delFood(Food g){
	   //将数组中myFood条目对应的商品数量减为0	   
	   this.f.remove(g);
   }
   /**
	   * 遍历查询购物车中的商品
	   * @param 值为空
	   * @return 值为空
	   */
    public void queryFood(){
    	
    	String s =this.toString();//调用本类的toString方法
		System.out.println(s);
		
    }
   
    /**
	   * 返回该类的字符串形式
	   * @return 返回该类的字符串形式
	   */
    @Override
   public String toString() {
    	 
	     String s="";
	     s +="购物车商品明细:\r\n";
	     //显示所有书籍    	
	     Set<Food> keys = f.keySet();
	     s += "***********************\r\n";
	     //遍历keyset,通过map.get(key)方法获得value的值
	     for(Food key : keys){
		s +=key.toString() + "\t" +"选中数量:\t"+ f.get(key)+"\r\n";
	     }	
	     return s;
 	}
    public static void main(String[] args) {            
        CartDao  f = new CartDaoMap();//用数组列表f初始化食物仓库foodset
    	
        //查看购物车
    	System.out.println("查看购物车");
        f.queryFood();//调用toString方法
        
        //向购物车添加商品
        Food f3 = new Noodle("刀削面",10.0,5,"微辣");
        System.out.println("购买商品"+f3.getName());        
        f.addFood(f3, 1);      
        f.queryFood(); //查看购物车
        
        //取消购买
        System.out.println("取消购买");
        f.delFood(f3);
        f.queryFood();//调用toString方法
        
    }

}
</nowiki>