第1次任务:购物车程序的面向对象设计
团队介绍
姓名 | 负责任务 |
---|---|
林仕峰 | 面向对象、博客制作、功能设计、ShoppingMall类、Commodity类、 Main类 |
吴双 | 前期调查、 代码规范、CartShow类、 Menu类、ShoppingCart类 |
1.前期调查与功能设计
通过浏览京东商场可知,用户购物的流程应该为顾客先在商城(ShoppingMall)中浏览商品(Commidity),将浏览的商品加入购物车(ShoppingCart),最后通过购物车生成订单,购买结束
2.系统功能结构图
3.UML类图
4.系统描述
(用户)在商城中可以[搜索]、[浏览](商品),看到想买的商品可以将商品[放入](购物车),可以放进多个,并且可以对购物车中的物品进行[添加]和[删减]。可以在购物车中获得所有商品价格,最后选择[结算]可以生成并打印(账单)
封装性的体现:商品类中个每个对象属性都是设置为private,外部无法直接访问,只能通过getters函数进行访问
5.代码以及流程图
运行结果
代码以及部分流程图
Commodity类
内含商品的属性(名称、价格、数量、ID)
package shopping;
public class Commodity {//商品
private String goodsName;//商品名称
private double goodsPrice;//商品单价
private int goodsID;//商品id
private int goodsNumber;//商品数量
public int getGoodsNumber() {
return goodsNumber;
}
public void setGoodsNumber(int goodsNumber) {
this.goodsNumber = goodsNumber;
}
private double payNumber;
public double getPayNumber() {
return payNumber;
}
public void setPayNumber(double payNumber) {
this.payNumber = payNumber;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public double getGoodsPrice() {
return goodsPrice;
}
public void setGoodsPrice(double goodsPrice) {
this.goodsPrice = goodsPrice;
}
public int getGoodsID() {
return goodsID;
}
public void setGoodsID(int goodsID) {
this.goodsID = goodsID;
}
}
ShoppingMall类
存储商城中拥有的商品的信息,以及搜索功能
package shopping;
import java.util.*;
public class ShoppingMall {//商场
private static ArrayList<Commodity> goodsList = new ArrayList<>();
static Scanner sc = new Scanner(System.in);
public static ArrayList<Commodity> getGoodsList() {
return goodsList;
}
public static void setGoodsList(ArrayList<Commodity> goodsList) {
ShoppingMall.goodsList = goodsList;
}
//初始化商场商品
public static void List() {
for (int i = 0; i < 10; i++) {
Commodity e = new Commodity();
switch(i)
{
case 0:
e.setGoodsID(0);
e.setGoodsName("纸巾");
e.setGoodsPrice(1.0);
goodsList.add(e);
break;
case 1:
e.setGoodsID(1);
e.setGoodsName("可口可乐");
e.setGoodsPrice(3.0);
goodsList.add(e);
break;
case 2:
e.setGoodsID(2);
e.setGoodsName("雨伞");
e.setGoodsPrice(30.0);
goodsList.add(e);
break;
case 3:
e.setGoodsID(3);
e.setGoodsName("水杯");
e.setGoodsPrice(20.0);
goodsList.add(e);
break;
case 4:
e.setGoodsID(4);
e.setGoodsName("蓝牙耳机");
e.setGoodsPrice(100.0);
goodsList.add(e);
break;
case 5:
e.setGoodsID(5);
e.setGoodsName("铅笔");
e.setGoodsPrice(1.5);
goodsList.add(e);
break;
case 6:
e.setGoodsID(6);
e.setGoodsName("纸巾");
e.setGoodsPrice(1.0);
goodsList.add(e);
break;
case 7:
e.setGoodsID(7);
e.setGoodsName("矿泉水");
e.setGoodsPrice(2.0);
goodsList.add(e);
break;
case 8:
e.setGoodsID(8);
e.setGoodsName("芦荟胶");
e.setGoodsPrice(10.0);
goodsList.add(e);
break;
case 9:
e.setGoodsID(9);
e.setGoodsName("衣架");
e.setGoodsPrice(15.0);
goodsList.add(e);
break;
}
}
}
public static void show() {
System.out.println("商品ID 商品名 商品价格");
for (int i = 0; i < goodsList.size(); i++) {
System.out.println(goodsList.get(i).getGoodsID() + " " + goodsList.get(i).getGoodsName() + " " + goodsList.get(i).getGoodsPrice());
}
}
public static int searchByName(String name) {
for (int i = 0; i < goodsList.size(); i++) {
if(goodsList.get(i).getGoodsName().equals(name)){
System.out.println("已找到该商品:");
System.out.println("商品ID 商品名 商品价格");
System.out.println(goodsList.get(i).getGoodsID() + " " + goodsList.get(i).getGoodsName() + " " + goodsList.get(i).getGoodsPrice());
System.out.println("是否添加到购物车?[是(1)/否(0)] :");
int choice = sc.nextInt();
if (choice == 1) {
System.out.print("添加数量?:");
int number = sc.nextInt();
if (ShoppingCart.addGoods(name, number) == 1)
System.out.println("添加成功!");// 在购物车单中添加商品
else
System.out.println("添加失败!");
}
return 1;
}
}
return 0;
}
public static int searchByID(int ID) {
for (int i = 0; i < goodsList.size(); i++) {
if(ID==goodsList.get(i).getGoodsID()){
System.out.println("已找到该商品:");
System.out.println("商品ID 商品名 商品价格");
System.out.println(goodsList.get(i).getGoodsID() + " " + goodsList.get(i).getGoodsName() + " " + goodsList.get(i).getGoodsPrice());
System.out.println("是否添加到购物车?[是(1)/否(0)] :");
int choice = sc.nextInt();
if (choice == 1) {
System.out.print("添加数量?:");
int number = sc.nextInt();
if (ShoppingCart.addGoods(goodsList.get(i).getGoodsName(), number) == 1)
System.out.println("添加成功!");// 在购物车单中添加商品
else
System.out.println("添加失败!");
}
return 1;
}
}
return 0;
}
}
shoppingCart类
package shopping;
import java.util.*;
public class ShoppingCart {//购物车
private static ArrayList<Commodity> cartList = new ArrayList<>();
public static ArrayList<Commodity> getCartList() {
return cartList;
}
public static void setCartList(ArrayList<Commodity> cartList) {
ShoppingCart.cartList = cartList;
}
//添加商品到购物车
public static int addGoods(String goodsName,int goodsAddNumber)
{
for(int i =0; i<ShoppingMall.getGoodsList().size();i++) {
if(goodsName.equals(ShoppingMall.getGoodsList().get(i).getGoodsName())) {
if(cartList.size()==0) {
int tempID = ShoppingMall.getGoodsList().get(i).getGoodsID();
String tempName = ShoppingMall.getGoodsList().get(i).getGoodsName();
double tempPrice = ShoppingMall.getGoodsList().get(i).getGoodsPrice();
Commodity e = new Commodity();
e.setGoodsID(tempID);
e.setGoodsName(goodsName);
e.setGoodsPrice(tempPrice);
e.setGoodsNumber(goodsAddNumber);
cartList.add(e);
return 1;
}
else {
for (int j = 0; j < cartList.size(); j++) {
if(!(goodsName.equals(cartList.get(j).getGoodsName()))){
int tempID = ShoppingMall.getGoodsList().get(i).getGoodsID();
String tempName = ShoppingMall.getGoodsList().get(i).getGoodsName();
double tempPrice = ShoppingMall.getGoodsList().get(i).getGoodsPrice();
Commodity e = new Commodity();
e.setGoodsID(tempID);
e.setGoodsName(goodsName);
e.setGoodsPrice(tempPrice);
e.setGoodsNumber(goodsAddNumber);
cartList.add(e);
return 1;
}
else {
int tempNum = cartList.get(j).getGoodsNumber();
tempNum = tempNum + goodsAddNumber;
cartList.get(j).setGoodsNumber(tempNum);
return 1;
}
}
}
}
}
return 0;
}
//删除购物车中商品
public static int deleteGoods(String goodsName,int goodsdeleteNumber)
{
for(int i =0; i<cartList.size();i++) {
if(goodsName.equals(ShoppingMall.getGoodsList().get(i).getGoodsName())) {
int temp=cartList.get(i).getGoodsNumber();
temp=temp-goodsdeleteNumber;
if(temp<0)
cartList.get(i).setGoodsNumber(0);
else
cartList.get(i).setGoodsNumber(temp);
return 1;
}
}
return 0;
}
//显示购物车中的商品
public static void showCart() {
double countCartPay = 0;
System.out.println("———————————— 您的购物车 ————————————");
System.out.println("商品ID" + " " + "商品名" + " " + "商品单价" + " " + "购买数量" + " " + "本款商品总价");
System.out.println();
for (int i = 0; i < cartList.size(); i++) {
if (cartList.get(i).getGoodsNumber() != 0) {
System.out.println(cartList.get(i).getGoodsID() + " " + cartList.get(i).getGoodsName() + " "
+ cartList.get(i).getGoodsPrice() + " " + cartList.get(i).getGoodsNumber() + " "
+(double)cartList.get(i).getGoodsPrice()*cartList.get(i).getGoodsNumber());
}
countCartPay = countCartPay + (1.0*cartList.get(i).getGoodsPrice()*cartList.get(i).getGoodsNumber());
}
System.out.println();
System.out.println(" 您的账单估算 : " + String.format("%.2f", countCartPay));
}
//清空购物车
public static void cleanGoods() {
cartList.clear();
}
}
其中添加商品到购物车流程图为
cartShow类
展示购物车中所有信息并给出结算价格
package shopping;
import java.util.*;
public class CartShow {//展示购物车
public static void show() {
double totalPay = 0;
System.out.println("");
System.out.println("----------------------------------");
System.out.println("商品ID" + " " + "商品名" + " " + "商品单价" + " " + "购买数量" + " " + "本款商品总价");
System.out.println("----------------------------------");
for (int i = 0; i < ShoppingCart.getCartList().size(); i++) {
if (ShoppingCart.getCartList().get(i).getGoodsNumber() != 0) {
System.out.println(ShoppingCart.getCartList().get(i).getGoodsID() + " " + ShoppingCart.getCartList().get(i).getGoodsName() + " "
+ ShoppingCart.getCartList().get(i).getGoodsPrice() + " " + ShoppingCart.getCartList().get(i).getGoodsNumber() + " "
+(double)ShoppingCart.getCartList().get(i).getGoodsPrice()*ShoppingCart.getCartList().get(i).getGoodsNumber());
}
totalPay = totalPay + (1.0*ShoppingCart.getCartList().get(i).getGoodsPrice()*ShoppingCart.getCartList().get(i).getGoodsNumber());
}
System.out.println("----------------------------------");
System.out.println(" 实 际 应 付 : " + String.format("%.2f", totalPay));
System.out.println("----------------------------------");
}
}