​Java购物车大作业01​

任务

姓名

编码规范、前期调查与功能设计

李兴果

面向对象设计、PPT制作或博客制作

黎钊涵



目录



0.前期调查

顾客先在商城(Mall)中浏览商品(Commidities),将喜欢的商品加入购物车(Shopping Cart),然后由购物车生成订单(Order),在购买时填写个人信息(Information),购买结束。

Java购物车大作业01_面向对象

Java购物车大作业01_i++_02

Java购物车大作业01_搜索_03

Java购物车大作业01_面向对象_04

1.系统功能结构图

Java购物车大作业01_java_05

Java购物车大作业01_初始化_06

Java购物车大作业01_面向对象_07

Java购物车大作业01_初始化_08

Java购物车大作业01_初始化_09

Java购物车大作业01_i++_10

3.本系统哪里体现了面向对象的封装性

Java购物车大作业01_初始化_11

  • 此部分为购物车部分
  • 主要功能有 根据id来加入商品
  • 查看购物车
  • 清空购物车
  • 查看商品列表
  • 删除商品
import java.util.ArrayList;
import java.util.List;

public class ShoppingCart {//购物车
//放很多东西,用数组
//增加或者减少商品数量
//一键清空购物车
//计算总价
private CarItem sum;
private ArrayList<Entry> list=new ArrayList<>();

public void putIn(Commodities c)
{

int index=findId(c.getId());
//加入商品 出现相同商品的判断 数量
if(index==-1)
{ //判断此时购物车中是否有该商品
list.add(new Entry(c, index));//加入该商品
}
else {
list.get(index).increase();//添加
}

}

private int findId(Integer id)
{
int index=-1;
if(list.size()>0)
{
for(int i=0;i<list.size();i++)
{
if(list.get(i).getD().getId()==id)
index=i;
}
}
return index;
}

//查看购物车
public List<Entry> getlist()//查看清单
{
return list;
}

public List<Entry>clearCar()//清空购物车
{
list.clear();
return list;
}

public List<Entry> seeCar()//查看购物列表
{
return list;
}

public Order putInOder()
{
Order ord = new Order();
ord.setOrderList(list);
return ord;
}

public void remove(Integer id)
{
if(id==null)
System.out.println(false);
int index=findId(id);
if(index==-1)//没有找到
{
System.out.println(false);
}
else {
Entry ent=list.get(index);
if(ent.getNum()<=1)
{
list.remove(index);//删除商品
}
else
{
ent.decrease();
}
}
System.out.println(" fnishi remove");
}

}


4.项目包结构与关键代码:
  • 购物车

Java购物车大作业01_java_12

import java.util.ArrayList;
import java.util.List;

public class ShoppingCart {//购物车
//放很多东西,用数组
//增加或者减少商品数量
//一键清空购物车
//计算总价
private CarItem sum;
private ArrayList<Entry> list=new ArrayList<>();

public void putIn(Commodities c)
{

int index=findId(c.getId());
//加入商品 出现相同商品的判断 数量
if(index==-1)
{ //判断此时购物车中是否有该商品
list.add(new Entry(c, index));//加入该商品
}
else {
list.get(index).increase();//添加
}

}


private int findId(Integer id)
{
int index=-1;
if(list.size()>0)
{
for(int i=0;i<list.size();i++)
{
if(list.get(i).getD().getId()==id)
index=i;
}
}
return index;
}

//查看购物车
public List<Entry> getlist()//查看清单
{
return list;
}

public List<Entry>clearCar()//清空购物车
{
list.clear();
return list;
}

public List<Entry> seeCar()//查看购物列表
{
return list;
}

public Order putInOder()
{
Order ord = new Order();
ord.setOrderList(list);
return ord;
}

public void remove(Integer id)
{
if(id==null)
System.out.println(false);
int index=findId(id);
if(index==-1)//没有找到
{
System.out.println(false);
}
else {
Entry ent=list.get(index);
if(ent.getNum()<=1)
{
list.remove(index);//删除商品
}
else
{
ent.decrease();
}
}
System.out.println(" fnishi remove");
}

}



主要功能

  • 主要功能有
  • 商品信息
  • 根据id来加入商品
  • 查看购物车
  • 清空购物车
  • 查看商品列表
  • 删除商品
    public class Commodities { //商品 private String name;//名字 private double price;//商品价格 private String type;//类型 private Integer id;//编号 public Commodities(String name,double price,String type, Integer id) { this.name=name; this.price=price; this.type=type; this.id=id; } @Override public String toString() { return "Commodities [name=" + name + ", price=" + price + ", type=" + type + ", id=" + id + "]"; } ···各种setter or getter }
  • 功能:
    存储商品信息 :姓名 价格 编号 种类
  • 商品条目数量
    public class Entry { //条目 商品数量 private Commodities d; private int num; public Entry(Commodities d,int num) { this.d=d; this.num=num; num=1;//默认加入商品数量为1 } public Commodities getD() { return d; } public void setD(Commodities d) { this.d = d; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public void increase() { num++; } public void decrease() { num--; } @Override public String toString() {//输出条目的信息 return "Entry [d=" + d + ", num=" + num + "]"; } }
  • 存储购物车中条目:商品 数量
  • 初始化新加入的商品,数量默认为一
  • 操作商品数量
  • 输出条目信息
  • 计算商品价格
    public class CarItem { private Commodities c; private int quantity; @SuppressWarnings("unused") private double price; //商品的单价钱*数量 public CarItem(Commodities c, int quantity, double price) { super(); this.c = c; this.quantity = quantity; this.price = price; } public Commodities getC() { return c; } public void setC(Commodities c) { this.c = c; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } public void setPrice(double price) { this.price = price; } public double getPrice() { return c.getPrice() * this.quantity; } }
  • 商城
    Java购物车大作业01_初始化_13
    import java.util.ArrayList; import java.util.List; public class Mall { //商城 private List<Commodities> commodity=new ArrayList<>(); //初始化 { commodity.add(new Commodities("学院风小黑裙", 299.0, "dress", 1)); commodity.add(new Commodities("马丁靴", 199.0, "shoes", 2)); commodity.add(new Commodities("iPhone13 Pro", 7999.9, "phone", 3)); commodity.add(new Commodities("阿玛尼口红", 310.0, "maquillage", 4)); commodity.add(new Commodities("洗面奶", 65.0, "dailylife", 5)); commodity.add(new Commodities("零食大礼包", 199.0, "eating", 6)); commodity.add(new Commodities("海尔电视机", 2188, "electrical", 7)); commodity.add(new Commodities("牙膏", 15, "dailylife", 8)); commodity.add(new Commodities("口罩", 19.9, "dailylife", 9)); commodity.add(new Commodities("HUAWEI MateBook", 5388, "computer", 10)); } public List<Commodities> show()//展示商品 { return this.commodity; } //按编号搜索商品 public Commodities searchId(int id) { for(int i=0;i<commodity.size();i++) { if(commodity.get(i).getId()==id) { return commodity.get(i); } else { System.out.println("对不起,没有找到您需要的商品"); } } return null; } //按类型搜索商品 public List<Commodities> searchType(String type) { List<Commodities> list=new ArrayList<>(); for(int i=0;i<commodity.size();i++) { if(commodity.get(i).getType().equals(type)) list.add(commodity.get(i)); } return list; } }

功能:

  • 对商城进行初始化
  • 展示商城所有商品
  • 输入编号搜索商品,并将商品信息输出;反之则输出无法找到相应商品
  • 输入类型搜索商品,将该类商品全部输出;不存在则直接输出不存在
  • 生成商品订单
    public class Order { //订单 private List<Entry> orderList=new ArrayList<>(); private String orderId; public List<Entry> checkOrder() { if(orderList.size()>0) { return orderList; }else { return null; } } public String getOrderId() { return orderId; } public void setOrderId() { int x=new Random().nextInt(100); this.orderId = " "+x; } public List<Entry> getOrderList() { return orderList; } public void setOrderList(List<Entry> orderList) { this.orderList = orderList; } public void setOrderId(String orderId) { this.orderId = orderId; } }
  • 顾客个人信息
    public class Information { private String id;//账号 private String name; private int age; private char telph; private String address; public Information(String id, String name, int age, char telph, String address) { super(); this.id = id; this.name = name; this.age = age; this.telph = telph; this.address = address; } ```setter or getter

顾客个人信息

电话

id

姓名

年龄

地址

5.实现思路

简易购物车系统具体功能设计:

1、商城功能:商品展示、按类型查找商品和按id查找商品,被选定商品展示

2、购物车功能:商品到购物车,查看、清空购物车以及从购物车删除商品。

3、订单功能:包括获取购物车的信息以及获取购买者的信息

  • 方法与类必须有内在联系
  • 比如查询商品的方法就是在商城类定义,而不能在商品类