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

来自CloudWiki
跳转至: 导航搜索
编写测试代码
第54行: 第54行:
 
     }
 
     }
  
     public CartDaoMap(HashMap<Food,Integer> f){  
+
 
 
+
   
    this.f= f;
+
 
 +
     public static void main(String[] args) {          
 +
       
 +
       
 
     }
 
     }
   
+
 
    /**
+
}
 +
</nowiki>
 +
===添加商品方法:AddFood()===
 +
<nowiki> /**
 
  * 向购物车中添加商品
 
  * 向购物车中添加商品
 
  * @param g 向购物车中添加商品
 
  * @param g 向购物车中添加商品
第70行: 第76行:
 
   }
 
   }
 
      
 
      
    /**
+
  </nowiki>
 +
===删除商品方法:DelFood()===
 +
<nowiki> /**
 
  * 向购物车中删除商品
 
  * 向购物车中删除商品
 
  * @param Food 向购物车中删除商品
 
  * @param Food 向购物车中删除商品
第79行: 第87行:
 
  this.f.remove(g);
 
  this.f.remove(g);
 
   }
 
   }
   /**
+
   </nowiki>
 +
 
 +
===查询商品方法:query()===
 +
<nowiki>/**
 
  * 遍历查询购物车中的商品
 
  * 遍历查询购物车中的商品
 
  * @param 值为空
 
  * @param 值为空
第108行: 第119行:
 
}
 
}
 
return s;
 
return s;
  }
+
  }</nowiki>
    public static void main(String[] args) {           
 
       
 
       
 
    }
 
 
 
}
 
</nowiki>
 
 
===编写测试代码===
 
===编写测试代码===
 
在CartDaoMap类的main方法中编写测试代码:
 
在CartDaoMap类的main方法中编写测试代码:
第143行: 第147行:
  
 
[[文件:java7-46.png|500px]]
 
[[文件:java7-46.png|500px]]
 +
 +
==完整代码==
 +
 +
<nowiki> <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></nowiki>

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

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;
 	}

编写测试代码

在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>