小组成员
吴钧杰 202121333054
雷宇轩 202121333044
一、前期调查
在某购物网站上查看商品信息
可以查看到商品的价格、库存、颜色等属性
将商品加入购物车
显示了购买数量,总价格等属性
二、系统设计
已完成功能:显示菜单,查看商品,加入购物车,进入购物车,增加/减少购物车商品数量,结算商品
三、程序设计
1.Commodity类(雷宇轩)
public class Commodity {
int id;//商品编号
String name;//商品名称
double price;//商品价格
int stock;//商品库存
static int idCount=0;
int amount=1;
public Commodity() {
this.id=idCount++;
}
public Commodity(int id, String name, double price, int stock) {
super();
this.id = id;
this.name = name;
this.price = price;
this.stock = stock;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
@Override
public String toString() {
return "编号 " + id + " 名称 " + name + " 价格 " + price + "r"+" stock " + stock;
}
}
2.Mall类(雷宇轩)
public class Mall {
public static void searchCommodity(ShoppingCart cart, int index, ArrayList<Commodity> commodities) {// 显示选择查看的商品信息
if (index >= 4) {
System.out.println("商品不存在");
Menu.showInitialMenu(commodities);
ShoppingCart.operate_ShoppingCart(cart, commodities);
} else {
System.out.println(commodities.get(index));
}
}
}
3.Shoppingcart类(吴钧杰)
public class ShoppingCart {
ArrayList<Commodity> shopList = new ArrayList<>();
public ShoppingCart() {
super();//编译器会自动在子类构造函数的第一句加上 super(); 来调用父类的无参构造器;此时可以省略不写。
}
public void show_ShoppingCart() {
if (shopList.isEmpty()) {
System.out.println("您的购物车为空!");
}
else {
for (Commodity e : shopList) {
System.out.println( e.getId()+e.getName() + " " + e.getPrice() + "r" + " " + "序号:"+"数量"+e.amount);
}
}
}
public void add(Commodity c)
{
int flag = 0;
if(shopList.isEmpty())
{
shopList.add(c);
}
else
{
for (Commodity e2 : shopList) {
if(e2.getName().contains(c.getName()))
{
e2.amount++;
flag++;
break;
}
}
if(flag==0)
{
shopList.add(c);
}
}
}
public void delete(Commodity a)
{
int flag = 0;
if(shopList.isEmpty())
{
System.out.println("您的购物车为空!");
}
else
{
if(a.amount==1)
{
shopList.remove(a);
flag++;
}
}
if(flag==0) {
a.amount--;
}
}
public double sum()
{
double num = 0;
for (Commodity e : shopList) {
num +=(double)e.getPrice()*e.amount;
}
return num;
}
public static void operate_ShoppingCart(ShoppingCart cart, ArrayList<Commodity> commodities) {
Scanner sc1 = new Scanner(System.in);
int n = sc1.nextInt();
if (n == 1) {
System.out.println("请输入需要的商品编号:");
int index = sc1.nextInt();
System.out.println("是否需要加入购物车?(是/否)");
String answer = sc1.next();
if ("是".equals(answer))
{
Commodity commodity = new Commodity();
commodity = commodities.get(index);
cart.add(commodity);
System.out.println("添加购物车成功!");
System.out.println();
if (commodity.id == index) {
commodity.stock--;
}
Menu.showInitialMenu(commodities);
operate_ShoppingCart(cart, commodities);
} else if ("否".equals(answer)) {
Menu.showInitialMenu(commodities);
operate_ShoppingCart(cart, commodities);
} else {
System.out.println("输入错误");
Menu.showInitialMenu(commodities);
operate_ShoppingCart(cart, commodities);
}
}
else if (n == 2) {
cart.show_ShoppingCart();
System.out.println("请选择你的操作:");
System.out.println("1.返回商城");
System.out.println("2.继续操作购物车");
int n1 = sc1.nextInt();
if (n1 == 1) {
Menu.showInitialMenu(commodities);
operate_ShoppingCart(cart, commodities);
} else if (n1 == 2) {
System.out.println("请选择你对购物车的操作:");
System.out.println("1.删除购物车商品");
System.out.println("2.结算");
int n2 = sc1.nextInt();
if (n2 == 1) {
System.out.println("请输入需要删除的商品名称:");
String n3 = sc1.next();
for (Commodity e1 : commodities) {
if(e1.getName().equalsIgnoreCase(n3))
{
e1.stock++;
cart.delete(e1);
break;
}
}
Menu.showInitialMenu(commodities);
operate_ShoppingCart(cart, commodities);
} else if (n2 == 2) {
double sum = cart.sum();
System.out.println("总计:" + sum);
System.exit(0);
}
}
}
else if (n == 3) {
System.exit(0);
}
else {
System.out.println("输入错误");
Menu.showInitialMenu(commodities);
operate_ShoppingCart(cart, commodities);
}
sc1.close();
}
}
4.Menu类(吴钧杰)
public class Menu {
public static void showInitialMenu( ArrayList<Commodity> commodities) {
System.out.println("-----欢迎进入商城-----");
System.out.println("以下是我们的商品:");
Goods.showGoods(commodities);
System.out.println("------------------");
System.out.println("请选择以下操作:");
System.out.println("1.查询商品");
System.out.println("2.查看购物车");
System.out.println("3.退出商城");
}
}
5.Goods类(雷宇轩)
public class Goods {
public static void showGoods( ArrayList<Commodity> commodities) {
commodities = new ArrayList<>();
Commodity commodity1 = new Commodity(1,"aj1",599, 1);
Commodity commodity2 = new Commodity(2,"aj4",699,2);
Commodity commodity3 = new Commodity(3,"aj6",899,6);
commodities.add(commodity1);
commodities.add(commodity2);
commodities.add(commodity3);
for (int i = 0; i < commodities.size(); i++) {
Commodity commodity = new Commodity();
commodity = commodities.get(i);
System.out.println(commodity.toString());
}
}
}
四、期待与改进
1.购物车类中一些方法的功能还是比较繁琐,需要将部分功能分离出来成为另外的方法
2.还没能实现查看订单和管理员修改商城商品信息的内容