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版权协议,转载请附上原文出处链接和本声明。