Java大作业——购物车

Java大作业 —— 面向对象设计(购物车)

人员分工

姓名分工
冯仁樟前期调查与功能设计、博客制作
陈文杰面向对象设计、代码编写

一、前期调查

在这里插入图片描述

首先对于商品需要有一个描述,提供商品信息,商品编号及价格,方便用户挑选,用户对于商品可进行加入购物车操作。购物车界面展示所选商品编号,名称,价格及商品数量,还可以进行预结算以及对所选商品进行操作。

二、系统功能结构图

在这里插入图片描述

三、系统描述

首先,进入系统的界面,界面上有系统的各种功能。接着创建一个货架,并对每一个商品进行初始化,每个商品都有名称,编号,价格。对于货架,有几个方法,首先是展示货架的商品,其次可以进行商品的搜索,通过商品的编号或者名称进行搜索。最后需要创建一个购物车,购物车中包含用户挑选的商品,其中也有方法:添加商品:用户可以挑选自己喜欢的商品,删除商品:用户可以删除商品,展示购物车:展示购物车的所有商品与总价,清空购物车:清除购物车的所有商品。

四、UML类图

(一).类的属性表示方式

1.商品类(Commodity)
在这里插入图片描述

2.货架类(Shelves)

在这里插入图片描述

3.购物车类(Car)

在这里插入图片描述

4.界面类(UI)
在这里插入图片描述

(二 )类与类之间的关系

在这里插入图片描述

在这里插入图片描述

五、面向对象封装性的体现

商品类中个每个对象属性都是设置为private,外部无法直接访问,只能通过getters函数进行访问,这就是封装性的体现。

六、项目包结构与关键代码

1.项目包结构

在这里插入图片描述

2.关键代码

购物车类(Car):

package shopping2;
	public class Car {
public static int[] payNumber = new int[100];

public static int[] getPayNumber() {
	return payNumber;
}

public static void setPayNumber(int[] payNumber) {
	Car.payNumber = payNumber;
}

public static int addGoods(int goodsId, int goodsAddNumber) {// 增加购物车商品

	for (int i = 0; i < Shelves.a; i++) {
		if (i == goodsId) {
			payNumber[i] += goodsAddNumber;
			return 1;
		}
	}
	return 0;
}

public static int  subGoods(int goodsId, int goodsSubNumber) {// 减少购物车商品

	for (int i = 0; i < Shelves.a; i++) {
		if (i == goodsId) {
			payNumber[i] = payNumber[i] - goodsSubNumber;
			if (payNumber[i] < 0)
				payNumber[i] = 0;// 保证数字不小于0
			return 1;
		}
	}
	return 0;
}

public static void showCart() {// 显示购物车中的商品
    double countCartPay = 0;
	System.out.println("———————————— 您的购物车 ————————————");
	System.out.println("商品ID" + "	" + "商品名" + "	" + "商品单价" + "  " + "购买数量");
	System.out.println();

    Shelves sc = new Shelves();

	for (int i = 0; i < Shelves.a; i++) {
		if (payNumber[i] != 0) {
			System.out.println(sc.s[i].getId() + "	" + sc.s[i].getName() + "	" + sc.s[i].getPrice() + "	*      " + payNumber[i]);
		}
		countCartPay = countCartPay + (payNumber[i] * sc.s[i].getPrice());
	}
	System.out.println();
	System.out.println("	您的账单估算 :  " + String.format("%.2f", countCartPay));
}

public static void showCart0()
{
    System.out.println("———————————— 您的购物车 ————————————");
	System.out.println("商品ID" + "	" + "商品名" + "	" + "商品单价" + "  " + "购买数量");
	System.out.println();

    Shelves sc = new Shelves();

	for (int i = 0; i < Shelves.a; i++) {
		if (payNumber[i] != 0) {
			System.out.println(sc.s[i].getId() + "	" + sc.s[i].getName() + "	" + sc.s[i].getPrice() + "	*      " + payNumber[i]);
		}
	}
}

public static void cleanGoods() {// 清空购物车商品
	for (int i = 0; i < Shelves.a; i++) {
		payNumber[i] = 0;// 保证数字不小于0

	}
}

商品类(Commodity):

package shopping2;

public class Commodity {
    private int id;
    private String name;
    private int price;
    
    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 int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public Commodity(int id, String name, int price)
    {
        this.id = id;
        this.name = name;
        this.price = price;
    }
}

七、总结

在此次的购物车程序的面向对象的设计中,对于private修饰符有了一个更好的了解,同时对于面向对象的分装性有了一定的认识与体验,同时在编程中通过查找JDK文档的方法也使编程的过程更加的方便与快速。


版权声明:本文为sk8GG原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。