订单管理系统
某购物商场,想做一个在线购物的程序,客户可以通过程序自助购物,要求有显示商品、选购商品、购物车、历史订单等功能。
学习目标
通过这个案例我们想达到的学习目标是 以下几点
- 1.熟练使用BufferedReader和BufferedWriter读写数据
- 2.熟练使用ArrayList集合进行增、删、改、查等操作
- 3.了解面向对象和实际场景的结合使用
- 4.了解购物类项目的业务流程
1. 需求分析
所有的商品信息以固定的格式(商品编号,商品名称,商品价格,商品库存)保存在product.txt文件中
格式如下:
001,小米手机,1999,10
002,华为手机,3999,10
003,乐事薯片,5,100
004,小米锅巴,5,200
005,格力空调,5000,5
...
1.显示商品功能:
读取product.txt文件,将每一行打印在控制台即可
2.选购商品功能:
键盘录入购买的商品编号和数量,将商品信息添加到购物车,并提示是否继续购买。
如下:
录入购买的商品编号:
001
录入购买的商品数量
5
已添加到购物车,是否继续购买(Y/N)?
选择Y: 继续购物
选择N: 结束购物
3.购物车功能:
显示购物车中每个商品的名称,数量和金额,以及购物车总金额,并提示是否生成订单。
查看购物车格式如下:
商品名称:小米手机, 价格:1999, 数量:3, 金额:5997
商品名称:乐视薯片, 价格:5, 数量:3, 金额:15
总金额:6012元
---------------------------------------------
是否生成订单?(Y/N)
选择Y:
1)会有一个唯一的订单号,并且把订单的购物清单写到orderlist文件中
2)商品库存减少相应的数量
3)清空购物车
选择N: 什么都不做
4.历史订单功能:每一个订单信息,以如下格式保存到orderlist.txt文件中。
订单编号:92a9502f-cbd8-40f3-af1d-87a387a9fada
商品名称:小米手机, 价格:1999, 数量:3, 金额:5997
商品名称:乐视薯片, 价格:5, 数量:3, 金额:15
总金额:6012元
---------------------------------------------
订单编号:00785cce-394c-4788-9313-af5b3cd4a863
商品名称:小米手机, 价格:1999, 数量:3, 金额:5997
商品名称:乐视薯片, 价格:5, 数量:3, 金额:15
总金额:6012元
---------------------------------------------
2. 准备数据
在Shopping模块目录下,新建一个product.txt文件。将以下商品信息复制到文件中。每一行从左往右分别表示商品编号、商品名称、商品价格、商品库存
001,小米手机,1999,10
002,华为电视,3999,10
003,乐事薯片,5,100
004,小米锅巴,5,200
005,格力空调,5000,5
006,海尔冰箱,2500,10
007,公牛插座,50,250
008,长虹电视,3500,200
009,南孚电池,5,1000
010,大桥鸡精,9000,100
3. 功能菜单
public static void main(String[] args) throws IOException {
while (true) {
System.out.println("**************欢迎来到黑马商城***************");
System.out.println("1.查看商品 2.选购商品 3.我的购物车 4.我的订单");
Scanner sc = new Scanner(System.in);
String choose = sc.next();
switch (choose) {
case "1":
//查看所有商品信息
showAllProduct();
break;
case "2":
//选购商品
buyProduct(shoppingcart);
break;
case "3":
//查看购物车
showShoppingCart(shoppingcart);
break;
case "4":
//查看订单
showOrderList();
break;
default:
System.out.println("你选择有误,请重新输入");
}
}
}
4. Product类
public class Product {
private String id; //编号
private String name; //名称
private int price; //单价
private int stock; //库存
//自己补全get和set方法,以及构造方法
...
}
5. 查看商品
查看商品的思路:
1.编写方法readProductToList(),读取所有的商品信息到集合
2.遍历集合中的所有数据,并打印输出
- 读取product.txt文件到集合
- 使用BufferedReader读取product.txt文件
- 使用把每一行使用","进行切割,得到一个字符串数组
- 字符串数组中的元素分别表示:商品编号、商品名称、商品价格、商品库存
注意:其中商品的价格和库存需要转换为整数
//如: 把"123"转换为123
int price=Integer.parseInt("123");
- 把商品信息封装为Product对象
- 把对象存储到ArrayList集合中
//读取文件到集合
public static ArrayList<Product> readProductToList() throws IOException {
//创建流对象,关联day15/product.txt文件
BufferedReader br =
new BufferedReader(new FileReader("Shoppping/product.txt"));
//创建集合,用于存储商品对象
ArrayList<Product> list = new ArrayList<>();
//line用来记录读取的每一行
String line;
//读取readLine()方法返回null,则表示读取到文件末尾
while