选题:购物车程序的面向对象设计
前期调查:通过调查京东购物商场的规划与设计,获得购物车程序面向对象设计的灵感,并进行初步的购物车系统的设计。
登录京东之后,在搜索栏中输入商品名称,搜索后能够看见商品的编号、名、价格、将一定数量的商品添加至购物车,在购物车中可见看见所展示的商品,可对一定数量的商品进行删除或者清空购物车,最后得出商品的总价后结账。
- 先通过搜索商品来进行对商品的浏览
2. 点进去商品可以看到商品的价格和具体内容
3 . 将所要购买的商品加入购物车后可以看到每个商品的价格、数量和总的价格
4 .可以在购物车中对商品进行删除
系统功能概述:
(1)用户能够输入相应的数字进行查找商品的操作,并且能够选择是否要将商品加入进购物车中。
(2)用户能够查看自己的购物车,查看已经添加了的商品以及各商品的数量,并且能够选择删除商品、进行结算或者返回商城继续购物。
(3)用户能够直接选择退出商城。
准备实现哪几部分:
1.操作商品数量
2.提供商品信息
3.商品选择以及删除
4.购物车统筹以及结算
5.自主选择退出商城
系统功能设计
功能1. 查找商品
功能2. 查看购物车
功能3. 退出商城
源码
1.Cart类
package com.twothirdsofzhugeliang;
import java.util.ArrayList;
public class Cart {
ArrayList<Commodity> shopList = new ArrayList<>();
public Cart() {
super();
}
public void print() {
if (shopList.isEmpty()) {
System.out.println("购物车为空");
}
else {
for (Commodity e : shopList) {
System.out.println(e.getName() + " " + e.getPrice() + "元" + " " + "序号:" + e.id+"数量"+e.amount);
}
}
}
public void addToCart(Commodity c)
{
int flag = 0;
if(shopList.isEmpty())
{
shopList.add(c);
}
else
{
for (Commodity e2 : shopList) {
if(e2.name.contains(c.name))
{
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.price*e.amount;
}
return num;
}
}
2.Commodity类
package com.twothirdsofzhugeliang;
public class Commodity {
String name;
double price;
int inventory;
String searchCommodity;
int id;
static int idCount = 0;
static int inventoryCount = 20;
int amount = 1;
public Commodity() {
this.id = ++idCount;
}
public String getName() {
return name;
}
public Commodity(String name, double price, int inventory, String searchCommody, int id) {
super();
this.name = name;
this.price = price;
this.inventory = inventory;
this.searchCommodity = searchCommody;
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getInventory() {
return inventory;
}
public void setInventory(int inventory) {
this.inventory = inventory;
}
public String getSearchCommodity() {
return searchCommodity;
}
public void setSearchCommodity(String searchCommodity) {
this.searchCommodity = searchCommodity;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public static int getIdCount() {
return idCount;
}
public static void setIdCount(int idCount) {
Commodity.idCount = idCount;
}
public static int getInventoryCount() {
return inventoryCount;
}
public static void setInventoryCount(int inventoryCount) {
Commodity.inventoryCount = inventoryCount;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
@Override
public String toString() {
return "Commodity [name=" + name + ", price=" + price + "元" + ", inventory=" + inventory + ", searchCommody="
+ searchCommodity + ", id=" + id + "]";
}
}
3.Mall类
package com.twothirdsofzhugeliang;
import java.util.ArrayList;
import java.util.Scanner;
class Mall {
static{System.out.println("欢迎来到商城");}
public static void showMall(ArrayList<Commodity> commodities) {
System.out.println("商城内的商品有:");
System.out.println("===============");
for (int i = 0; i < commodities.size(); i++) {
Commodity commodity = new Commodity();
commodity = commodities.get(i);
System.out.println(commodity.toString());
}
System.out.println("===============");
System.out.println("请选择你的操作");
System.out.println("1.查找商品");
System.out.println("2.查看购物车");
System.out.println("3.退出商城");
}
public static void searchCommody(Cart cart, int index, ArrayList<Commodity> commodities) {// 显示选择查看的商品信息
if (index >= commodities.size()) {
System.out.println("输入错误");
showMall(commodities);
jiemian(cart, commodities);
} else {
System.out.println(commodities.get(index));
}
}
public static void jiemian(Cart cart, ArrayList<Commodity> commodities) {
Scanner sc1 = new Scanner(System.in);
int n = sc1.nextInt();
if (n == 1) {
System.out.println("请选择你要查看第几个商品(0号开始):");
int index = sc1.nextInt();
searchCommody(cart, index, commodities);
System.out.println("是否需要加入购物车?(Yes/No)");
String answer = sc1.next();
if ("Yes".equals(answer))
{
Commodity commodity = new Commodity();
commodity = commodities.get(index);
cart.addToCart(commodity);
System.out.println("添加购物车成功");
System.out.println();
if (commodity.id == index) {
commodity.inventory--;
}
showMall(commodities);
jiemian(cart, commodities);
} else if ("No".equals(answer)) {
showMall(commodities);
jiemian(cart, commodities);
} else {
System.out.println("输入错误");
showMall(commodities);
jiemian(cart, commodities);
}
} else if (n == 2) {
cart.print();
System.out.println("请选择你的操作");
System.out.println("1.返回商城");
System.out.println("2.继续操作购物车");
int n1 = sc1.nextInt();
if (n1 == 1) {
showMall(commodities);
jiemian(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.name.equalsIgnoreCase(n3))
{
e1.inventory++;
cart.delete(e1);
break;
}
}
showMall(commodities);
jiemian(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("输入错误");
showMall(commodities);
jiemian(cart, commodities);
}
sc1.close();
}
}
4.ShoppingCart
package com.twothirdsofzhugeliang;
import java.util.ArrayList;
import java.util.Scanner;
public class ShoppingCart {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Cart cart = new Cart();
ArrayList<Commodity> commodities = new ArrayList<>();
Commodity commodity1 = new Commodity("苹果14", 8848.88, 20, "紫色", 0);
Commodity commodity2 = new Commodity("华为mate50", 5648.66, 20, "黑色", 1);
Commodity commodity3 = new Commodity("小米11", 3200.25, 20, "蓝色", 2);
commodities.add(commodity1);
commodities.add(commodity2);
commodities.add(commodity3);
Mall.showMall(commodities);
Mall.jiemian(cart, commodities);
}
}
开发工具:IDEA、阿里巴巴代码规约IDE插件。