购物车问题
来源:5-1 购物车需求
qq_左撇子A_0
2017-10-26 13:34:29
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
//购物车类
public class ShoppingCart {
private Map<String, GoodsInCart> shoppingCart;// 购物车
public ShoppingCart(Map<String, GoodsInCart> shoppingCart) {
this.setShoppingCart(shoppingCart);
}
public Map<String, GoodsInCart> getShoppingCart() {
return shoppingCart;
}
public void setShoppingCart(Map<String, GoodsInCart> shoppingCart) {
this.shoppingCart = shoppingCart;
}
// 添加商品到购物车
public void addGoodsToCart(GoodsManage gm) {
Scanner sc = new Scanner(System.in);
if (gm.getGoodsSet().size() == 0) {
System.out.println("还没有商品,记得导入商品信息哦!");
} else {
System.out.println("添加商品到购物车");
System.out.println("所有商品信息为:");
//gm.importGoods();
gm.getGoodsSet().add(null);
Iterator<Goods> it = gm.getGoodsSet().iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("请输入要添加的商品编号:");
String key = sc.next();
System.out.println("请输入要添加的商品数量:");
int value = sc.nextInt();
for (Goods goodsTmpe : gm.getGoodsSet()) {
GoodsInCart goodsInCart = new GoodsInCart(goodsTmpe, value);
shoppingCart.put(key, goodsInCart);
}
}
}
// 修改购物车中的商品数量
public void updateNumInCart() {
}
// 显示购物车中的所有商品
public void displayAllInCart() {
System.out.println("显示购物车中的所有商品信息");
Iterator<GoodsInCart> it = shoppingCart.values().iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
// 结算
public void settleAccounts() {
}
}public class TestDemo {
Scanner sc = new Scanner(System.in);
// 主菜单
public static void menu() {
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 static void goodsManageMenu() {
System.out.println("**************************************");
System.out.println(" **商品 管理**");
System.out.println(" 1--商品信息导入");
System.out.println(" 2--显示所有商品信息");
System.out.println(" 9--返回上一级菜单");
System.out.println("**************************************");
System.out.println("请输入对应的数字对商品进行管理:");
}
public static void shoppingCartMenu() {
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("请输入对应的数字对购物车进行管理");
}
// 商品信息管理部分的逻辑代码
public void manage_Menu_Code(GoodsManage goodsmanage) {
boolean q = true;
int manageNum;
while (q) {
manageNum = sc.nextInt();
switch (manageNum) {
case 1:
System.out.println("商品信息导入");
System.out.println("导入成功!");
goodsmanage.importGoods();// 商品信息导入
goodsManageMenu();
break;
case 2:
System.out.println("显示所有商品信息");
goodsmanage.displayAllGoods();// 调用方法显示所有商品信息
goodsManageMenu();
break;
case 9:
q = false;// 返回上一级菜单
break;
default:
}
}
}
// 购物车管理的逻辑代码
public void cart_Menu_Code(ShoppingCart shoppingCart) {
int cartNum;
boolean v = true;
while (v) {
cartNum = sc.nextInt();
switch (cartNum) {
case 1:
shoppingCart.addGoodsToCart(new GoodsManage(new HashSet<Goods>()));// 添加商品到购物车
shoppingCartMenu();
break;
case 2:
break;
case 3:
shoppingCart.displayAllInCart();// 显示购物车中的所有商品信息
shoppingCartMenu();
break;
case 4:
break;
case 9:
v=false;
break;
default:
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean b = true;
int menuNum;
while (b) {
menu();// 调用猪菜单
menuNum = sc.nextInt();
switch (menuNum) {
case 1:
goodsManageMenu();
new TestDemo().manage_Menu_Code(new GoodsManage(new HashSet<Goods>()));
break;
case 2:
shoppingCartMenu();
new TestDemo().cart_Menu_Code(new ShoppingCart(new HashMap<String, GoodsInCart>()));
break;
case 0:
b = false;
break;
default:
System.out.println("该数字没有对应的操作!");
}
}
}
}显示购物车中的商品信息输出的是地址 ,,怎么正确的将输入的编号,商品数量添加到map中呢
1回答
1、首先你的TestDemo类在调用方法的使用,GoodsManage的对象不应该每次都new一个新的,这样的话,如果导入商品后,再去显示购物车中显示商品信息,会发现一个商品都没有,因此需要定义一个全局的GoodsManage对象。
2、关于购物车中的商品信息是地址的问题,因为购物车是使用HashMap存放数据的,而其value值是GoodsInCart类的对象,所以还需要进一步获取Goods类的对象才行,如果你的Goods类有toString()方法,那么直接it.next().getGoods()就可以输出商品信息了。
3、商品添加到map中并没有问题。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
回答 2
回答 1