目录
Git源码
https://gitee.com/shen-chao/sc-java-code.git
一.成员分工
| 姓名 | 工作 |
|---|---|
| 赵祥 | 前期调查,功能设计,Git方式管理 |
| 黄志昌 | UML设计,博客撰写 |
| 陈理荣 | 编码规范,包规划 |
| 申超 | 面向对象设计 |
二.前期调查

三.系统结构
1.结构图:

2.系统描述:
运行进入页面显示商城里的各种商品,进入加购页面选择完产品信息产生相应的商品条目,将商品条目加入购物车,在购物车内科进行增减商品数量,删除商品,展示购物车内商品等操作,在购物车内进行结算操作产生相应的总金额。
四.UML类图

五.代码展示
1.Commodity类
定义了商品的编号、名称、价格、描述、库存属性,并覆盖了toString、equals方法
public class Commodity {
private Integer id;
private String name;
private Double price;
private String describe;//描述;
private int goodsNum=0;//库存
public int getGoodsNum() {
return goodsNum;
}
public void setGoodsNum(int goodsNum) {
this.goodsNum = goodsNum;
}
public Commodity(Integer id, String name,Double price) {
this.id = id;
this.name = name;
this.price=price;
}
public Integer getId() {
return id;
}
public void setId(Integer 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 String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
@Override
public boolean equals(Object obj) { //只比较id,id相同则说明两个商品相同
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Commodity other = (Commodity) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return "序号:" + id +"\t"+ "商品名称:" + name +"\t\t"+ "商品价格:" + price;
}
}
定义了food、ElectronicProducts、Shoes类都继承了Commodity类,其中定义了各自的属性并重新覆盖了toString方法。
class Food extends Commodity{
private String date;//生产日期;
private String QuaGuaPeriod;//保质期;
}
@Override
public String toString() {
return super.toString() +"\t\t生产日期:" + date +"\t\t"+ "保质期:" + QuaGuaPeriod;
}
}
class ElectronicProducts extends Commodity{
private String model;//型号;
private String configuration;//电脑配置;
@Override
public String toString() {
return super.toString() +"\t型号:" + model + "\t 电脑配置:" +configuration;
}
}
class Shoes extends Commodity{
private String size;//码数范围;
private String color;//颜色;
private String brand;//品牌;
@Override
public String toString() {
return super.toString() +"\t\t码数范围:" + size + "\t\t颜色:" +color+ "\t\t品牌:" +brand;
}
}
2.CartDao接口
public interface CartDao {
public void addCommodity(Commodity e,int count);//加入购物车
public boolean remove(Integer id);//将商品移除
public void diplayAll();//输出购物车内商品条目
public double checkout();//输出总金额
public void delete();//清空
}
3.Cart类
实现了对商品的加购、移除、展示和结算。
public class Cart implements CartDao {
private ArrayList<CommodityItem> cartList=new ArrayList<>();
@Override
public void addCommodity(Commodity e, int count) {
if (e == null) {
return ;
}
int index = findById(e.getId());
if (index == -1) {// 如果不包含该商品的条目
cartList.add(new CommodityItem(e,count));
} else {
cartList.get(index).increase();
}
}
@Override
public boolean remove(Integer id) {
// TODO 自动生成的方法存根
if (id == null) {
System.out.println("商品不存在!");
return false;
}
int index = findById(id);
if (index == -1) {// 未找到
System.out.println("商品不存在!");
return false;
} else {
// 删除条目
cartList.remove(index);
}
System.out.println("商品删除成功!!");
return true;
}
@Override
public void diplayAll() {
// TODO 自动生成的方法存根
for (CommodityItem e : cartList) {
System.out.println(e);
}
}
@Override
public double checkout() {
// TODO 自动生成的方法存根
double money=0;
for (CommodityItem e : cartList) {
money=money+e.totalMoney();
System.out.println(e);
}
return money;
}
private int findById(Integer id) {
for (int i = 0; i < cartList.size(); i++) {
if (cartList.get(i).getId().equals(id))
return i;
}
return -1;
}
4.CommodityItem类,储存加购商品的信息和商品数量增删。
private class CommodityItem {
Commodity product;// 购买的商品(包含商品编号,名称,分类,单价)
int count;// 商品数量
public double totalMoney() {
double price = product.getPrice();
return price * count;
}
public Object getId() {
return product.getId();
}
public CommodityItem(Commodity product) {
this.product = product;
count=1;
}
public void increase() {
count++;
}
public void decrease() {
count--;
}
@Override
public String toString() {
return "ItemEntry [product=" + product + ", count=" + count + "]";
}
@Override
public void delete() {
cartList.clear();
}
}
5.MarketDao接口
public interface MarketDao {
public boolean addCommodity(Commodity e);//添加商品
public boolean deleteCommodity(Commodity e);//删除商品
public void showCommodity();//展示货架上的商品
public Commodity getItemById(Integer id);//根据id找商品
}
6.Market类
编写商城类并添加各种商品及其信息
public class Market implements MarketDao {
private ArrayList<Commodity> marketList=new ArrayList<>();// 货架
@Override
public boolean addCommodity(Commodity e) {//添加商品到商城;
if (e == null) {
return false;
}
int index = findById(e.getId());
if (index == -1) { // 如果该商品编号不存在,则需创建新的商品
marketList.add(e);
} else {
marketList.get(index).setGoodsNum(marketList.get(index).getGoodsNum() + e.getGoodsNum());
}
return true;
}
@Override
public boolean deleteCommodity(Commodity e) {
if (e.getId() == null)
return false;
int index = findById(e.getId());
if (index == -1) {// 未找到
return false;
} else {
marketList.remove(index);
}
return true;
}
@Override
public void showCommodity() {
for (Commodity e : marketList) {
System.out.println(e);
}
}
@Override
public Commodity getItemById(Integer id) {
if (id == null)
return null;
int index = findById(id);
if (index == -1) {// 未找到
return null;
} else {
return marketList.get(index);
}
}
private int findById(Integer id) {
for (int i = 0; i < marketList.size(); i++) {
if (marketList.get(i).getId().equals(id))
return i;
}
return -1;
}
}
7.Main类
public class Main {
public static void main(String[] args) {
CartDao cart = new Cart();
MarketDao market = new Market();
int choice;
while (true) {
Scanner sc=new Scanner(System.in);
System.out.println("*******************");
System.out.println("请选择:");
System.out.println("1.加购商品");
System.out.println("2.进入购物车");
System.out.println("按其他键退出");
choice = sc.nextInt();
if (choice == 1) {// 添加商品到购物车
System.out.println("*******************");
market.showCommodity();// 展示货架内的商品
System.out.println("请选择你要加入购物车的商品id:");
int id = sc.nextInt();
if(market.getItemById(id)==null) {
System.out.println("商品不存在!");
continue;
}
System.out.println("请输入你要加购的数量:");
int n = sc.nextInt();
if(n > market.getItemById(id).getGoodsNum()){
System.out.format("库存不足!!!(当前库存为%s)\n\n",market.getItemById(id).getGoodsNum());
//System.out.println("库存不足!!!");
}else {
cart.addCommodity(market.getItemById(id), n);
market.reduceCommodity(market.getItemById(id),n);
System.out.println("添加成功!");
}
}else if (choice == 2) {
while (true) {
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("其他键退出");
int nextchoice = sc.nextInt();
System.out.println("*******************");
switch (nextchoice) {
case 1:
System.out.println("请输入需要删除的商品的id:");
int in = sc.nextInt();
cart.remove(in);
System.out.println("删除成功!");
break;
case 2:
cart.delete();;
break;
case 3:
cart.diplayAll();// 展示购物车
break;
case 4:
System.out.println("总金额为:" + cart.checkout());
System.out.println("*******************");
break;
default:
break;
}
if(nextchoice!=1&&nextchoice!=2&&nextchoice!=3) break;
}
} else {
break;
}
}
}
}
六.效果展示
1.运行页面:

2.加购商品:

3.购物车功能:

4.展示和删除商品:

5.结算:

浙公网安备 33010602011771号