这是接上次做的模拟前台购物结算,上次是对List的增删改查,这次是对Map的增删改查,有利于综合学习。
视频演示
图书管理系统效果
模拟购物车
-----------------------------------------------------------------------------------------------------------------------------------------------------
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:yes
请输入你要购买的图书编号:1001
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:see
商品编号 商品名称 商品数量 商品单价 商品总额
1001 三国演义 1 100.0 100.0
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:yes
请输入你要购买的图书编号:1001
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:see
商品编号 商品名称 商品数量 商品单价 商品总额
1001 三国演义 2 100.0 200.0
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:yes
请输入你要购买的图书编号:1004
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:see
商品编号 商品名称 商品数量 商品单价 商品总额
1001 三国演义 2 100.0 200.0
1004 红楼梦 1 130.0 130.0
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:yes
请输入你要购买的图书编号:1003
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:see
商品编号 商品名称 商品数量 商品单价 商品总额
1001 三国演义 2 100.0 200.0
1003 西游记 1 120.0 120.0
1004 红楼梦 1 130.0 130.0
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:yes
请输入你要购买的图书编号:1003
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:see
商品编号 商品名称 商品数量 商品单价 商品总额
1001 三国演义 2 100.0 200.0
1003 西游记 2 120.0 240.0
1004 红楼梦 1 130.0 130.0
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:remove
请输入你要移除的图书编号:1003
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:see
商品编号 商品名称 商品数量 商品单价 商品总额
1001 三国演义 2 100.0 200.0
1004 红楼梦 1 130.0 130.0
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:clear
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:see
你还没有购物
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:yes
请输入你要购买的图书编号:1004
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:yes
请输入你要购买的图书编号:1004
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:yes
请输入你要购买的图书编号:1003
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:see
商品编号 商品名称 商品数量 商品单价 商品总额
1003 西游记 1 120.0 120.0
1004 红楼梦 2 130.0 260.0
所有图书信息如下:
---------------------------------------------------------------------------
编号 作者 书名 数量 价格 页码 描述
---------------------------------------------------------------------------
1001 罗贯中 三国演义 10 100.0 800 《水浒传》的故事...
1002 施耐庵 水浒传 10 110.0 880 《三国演义》故事...
1003 吴承恩 西游记 10 120.0 900 《西游记》在明代...
1004 曹雪芹 红楼梦 10 130.0 690 《红楼梦》讲述的...
---------------------------------------------------------------------------
1.继续购物吗?yes
2.移除商品? remove
3.清空购物车? clear
4.查看购物车? see
5.结帐? buy
请选择:buy
总额:380.0元。
实现代码
package book.entity;
import java.util.HashMap;
import java.util.Map;
/**
* @ClassName CartItem
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/11 0011-10:55
* @Version V1.0
**/
public class CartItem {
public static Map<Integer, CartItem> cars = new HashMap<>();
/**
* 图书对象的成员变量
*/
private Book book;
/**
* 购买的数量
*/
private Integer number;
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
@Override
public String toString() {
return "CartItem{" +
"book=" + book +
", number=" + number +
'}';
}
}
package book.entity;
import book.service.BookService;
import book.service.impl.BookServiceImpl;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
/**
* @ClassName Shopping
* @Description: TODO
* @Author 汤永红
* @Date 2020/8/11 0011-11:00
* @Version V1.0
**/
public class Shopping {
static BookService bookService = new BookServiceImpl();
static Map<Integer, CartItem> cart = CartItem.cars;
static Scanner input = new Scanner(System.in);
private static void findAll() {
System.out.println("所有图书信息如下:");
System.out.println("---------------------------------------------------------------------------");
System.out.println("编号\t作者\t\t书名\t\t数量\t价格\t页码\t\t描述");
System.out.println("---------------------------------------------------------------------------");
List<Book> list = bookService.findAll();
for (Book book : list) {
System.out.println(book.getId() + "\t" + book.getAuthor() + "\t\t"
+ book.getName() + (book.getName().length() > 3 ? "\t" : "\t\t") + book.getNumber() + "\t\t"
+ book.getPrice() + "\t" + book.getPage() + "\t\t" + (book.getInfo().length() > 8 ? book.getInfo().substring(0, 8) + "..." : book.getInfo()));
}
System.out.println("---------------------------------------------------------------------------");
}
public static void main(String[] args) {
menu1();
//
System.out.println(cart);
}
public static void menu1() {
findAll();
System.out.println("1.继续购物吗?yes");
System.out.println("2.移除商品? remove");
System.out.println("3.清空购物车? clear");
System.out.println("4.查看购物车? see");
System.out.println("5.结帐? buy");
System.out.print("请选择:");
String answer = input.next();
switch (answer) {
case "yes":
System.out.print("请输入你要购买的图书编号:");
Integer id = input.nextInt();
buy(id);
break;
case "buy":
//结算 单价*数量进行累加
double sum = 0;
for (Map.Entry<Integer, CartItem> entry : cart.entrySet()) {
sum += entry.getValue().getBook().getPrice() * entry.getValue().getNumber();
}
System.out.println("总额:" + sum + "元。");
cart.clear();//清空
System.exit(-1);
break;
case "clear":
cart.clear();//清空
break;
case "remove":
//根据id移除,清除这个key
System.out.print("请输入你要移除的图书编号:");
id = input.nextInt();
Book book = cart.get(id) != null ? cart.get(id).getBook() : null;
if (book != null) {
//cart.get(id).setNumber(cart.get(id).getNumber() - 1);
//cart.put(id, cart.get(id));
cart.remove(id);
} else {
System.out.println("你还没有购物");
}
break;
case "see":
if (cart.size() == 0) {
System.out.println("你还没有购物");
} else {
System.out.println("商品编号\t商品名称\t商品数量\t商品单价\t商品总额");
for (Map.Entry<Integer, CartItem> entry : cart.entrySet()) {
System.out.println(entry.getValue().getBook().getId() + "\t\t" + entry.getValue().getBook().getName() + "\t\t" + entry.getValue().getNumber() + "\t\t" + entry.getValue().getBook().getPrice() + "\t\t" + (entry.getValue().getNumber() * entry.getValue().getBook().getPrice()));
}
}
break;
}
menu1();//回到主界面
}
public static void buy(Integer id) {
//购物车功能
//1.根据选择购买的书籍编号找到该本书
Book book = bookService.findOne(id);
//2.购物车查看
CartItem item = (CartItem) cart.get(book.getId());
if (item == null) {
//购物车为空,说明第一次来买东西,要把购物车创建出来
item = new CartItem();
//将书籍放到购物车中
item.setBook(book);
//将书籍的默认数量为1
item.setNumber(1);
} else {
//如果购物车有这个本书,我们只要修改数量,在原有的基础上累加一本
item.setNumber(item.getNumber() + 1);
}
//3.把书放放购物车
cart.put(book.getId(), item);
}
}