小组分工:
任务 | 姓名 |
前期调查、博客制作、面向对象设计、功能设计 | 吴石书 |
一、选题与前期调查
选题为购物车系统
前期调查:
系统功能:
别人做到的:
链接:(5条消息) 第1次任务:购物车程序的面向对象设计_Gyuhow的博客-CSDN博客
我准备实现:首先一进入系统应先展示商品名称和单价及功能列表,其次要能输入商品序号和数量,然后应当能实现向购物车内增添商品,从购物车里删除商品,从购物车内修改商品数量,对购物车内商品进行购物车内商品总价的计算,清空购物车功能。
二、系统功能设计
代码:
Main类
package shopping;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ShoppingCart cart = new ShoppingCart();
Entry e = new Entry();
e.addGoods();
while(true) {
Goods goods = new Goods();
Entry entry = new Entry();
Menu menu = new Menu();
menu.Print(e);
int choice = sc.nextInt();
switch(choice) {
case 1:
System.out.println("请依次输入要添加商品的编号和数量");
cart.addGoods(e, sc.next(), sc.nextInt());
break;
case 2:
System.out.println("请输入要删除的商品的编号");
cart.deleteGoods(e, sc.next());
break;
case 3:
System.out.println("请输入要修改的商品的编号及数量");
cart.changeQty(e, sc.next(), sc.nextInt());
break;
case 4:
cart.deleteAllGoods(e,0);
break;
case 5:
cart.showCart();
break;
case 6:
cart.pay(e);
break;
}
}
}
}
Goods类
package shopping;
public class Goods {
private String id;
private String name;
private double price;
private int stocks;
public int getStocks() {
return stocks;
}
public void setStocks(int stocks) {
this.stocks = stocks;
}
public Goods(String id, String name, double price, int stocks) {
this.id = id;
this.name = name;
this.price = price;
this.stocks = stocks;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "商品编号为:" + id + ", 商品名称为:" + name + ", 商品价格为:" + price;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Goods() {
}
}
Entry类
package shopping;
import java.util.ArrayList;
public class Entry {
private Goods goods;
private int qty;
private ArrayList<Goods> list = new ArrayList<Goods>();
Goods g1 = new Goods("001", "手机", 2999, 100);
Goods g2 = new Goods("002", "电视", 6999, 75);
Goods g3 = new Goods("003", "电脑", 8999, 400);
Goods g4 = new Goods("004", "手表", 1999, 1024);
public ArrayList<Goods> getList() {
return list;
}
public void setList(ArrayList<Goods> list) {
this.list = list;
}
public void addGoods() {
list.add(g1);
list.add(g2);
list.add(g3);
list.add(g4);
}
public Entry(Goods goods, int qty) {
this.goods = goods;
this.qty = qty;
}
public Entry() {
super();
}
public Goods getGoods() {
return goods;
}
public void setGoods(Goods goods) {
this.goods = goods;
}
public int getQty() {
return qty;
}
public String toString() {
return goods + ", 数量为" + qty;
}
public void setQty(int qty) {
this.qty = qty;
}
}
Menu类
package shopping;
public class Menu {
public void Print(Entry e) {
System.out.println("***********************************************************************");
System.out.println("** 本商场含有以下商品:**");
System.out.println("** 编号: 001 名称: 手机 价格: 2999 库存:" + e.getList().get(0).getStocks());
System.out.println("** 编号: 002 名称: 电视 价格: 6999 库存:" + e.getList().get(1).getStocks());
System.out.println("** 编号: 003 名称: 电脑 价格: 8999 库存:" + e.getList().get(2).getStocks());
System.out.println("** 编号: 004 名称: 手表 价格: 299 库存:" + e.getList().get(3).getStocks());
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("** 5、显示购物车内商品");
System.out.println("** 6、购买购物车内商品");
System.out.println("**********************************************************************");
}
}
ShoppingCart类
package shopping;
import java.util.ArrayList;
public class ShoppingCart {
private ArrayList<Entry> list = new ArrayList<>();
public ArrayList<Entry> getList() {
return list;
}
public void setList(ArrayList<Entry> list) {
this.list = list;
}
public void addGoods(Entry entry, String id, int qty){
if(qty <= 0) {
System.out.println("购买数量非法");
}
for(int i = 0; i < 4; i++) {
Goods goods = entry.getList().get(i);
if(goods.getId().equals(id)) {
if(goods.getStocks()>=qty) {
Entry e = new Entry(goods, qty);
list.add(e);
int stocks = entry.getList().get(i).getStocks() - qty;
entry.getList().get(i).setStocks(stocks);
System.out.println("添加成功!");
}else {
System.out.println("库存不足!");
}
}
}
}
public void deleteGoods(Entry en, String id) {
for(int i=0; i<list.size(); i++) {
Entry entry = list.get(i);
Goods goods = entry.getGoods();
if(goods.getId().equals(id)) {
en.getList().get(i).setStocks(list.get(i).getQty() + en.getList().get(i).getStocks());
list.remove(i);
System.out.println("删除成功!");
break;
}
}
}
public void changeQty(Entry en, String id, int newQty) {
if(newQty >= 0) {
for(int i=0; i<list.size(); i++) {
Entry entry = list.get(i);
Goods goods = entry.getGoods();
if(goods.getId().equals(id)) {
en.getList().get(i).setStocks(list.get(i).getQty() + en.getList().get(i).getStocks() - newQty);
list.get(i).setQty(newQty);
System.out.println("修改成功!");
break;
}
}
}
else
System.out.println("输入的数量有误!");
}
public void deleteAllGoods(Entry en, int a) {
while(list.size()>0) {
int i = 0;
en.getList().get(i).setStocks(list.get(0).getQty() + en.getList().get(i).getStocks());
list.remove(0);
i++;
}
if(a == 0)
System.out.println("已清空购物车!");
}
public void showCart() {
for(int i=0; i < list.size(); i++) {
Entry entry = list.get(i);
System.out.println(entry.toString());
}
if(list.size()==0)
System.out.println("购物车为空!");
}
public void pay(Entry en) {
int sum = 0;
for(int i=0; i < list.size(); i++) {
Entry entry = list.get(i);
sum += entry.getQty() * entry.getGoods().getPrice();
}
System.out.println("结算成功,您需要支付" + sum + "元");
deleteAllGoods(en,1);
}
}
调试结果:
功能一:添加商品
功能二:删除商品
功能三:修改商品数量
功能四:清空购物车
功能五:显示购物车内商品
当购物车为空时
当购物车内有商品时
功能六:结算商品
数据存储于内存
界面为控制台
开发工具使用 Eclipse