团队介绍
任务 | 姓名 |
面向对象、代码规范、shopMall类、menu类、Cart类、Commodity类 | 组长:林金楠 |
前期调查与功能设计、博客制作、Main类 | 周伟垲 |
本次作业内容
本次作业要求在观察某个网络商城后,经过调查,思索其构成,进行面向对象的设计,然后根据调查所得自制一个简易的购物车小程序。
本次作业目标
- 学会使用讲故事的方式找到系统中可能包含的类、属性、方法。
- 思考方法、属性应放在哪个类中,哪些属性与方法可以设置为static或非static。
- 理解类、封装、模块化之间的关系。
一、前期调查
1.我们以京东商城为例,进行了调查,如上图所示,进入页面时,有各种商品的展示。
2.并且有搜索商品的功能,通过搜索商品的名称可以找到商品,如下图所示。
3.在我们点进商品的界面时,有商品的信息,如价格,并且能够加入我们的购物车中。如下图所示。
4.我们从下方的小菜单中进入了购物车,购物车中有各个商品购买的数量,价格,商品总价等,同时用户能够增加或减少商品数量,删除商品。如下图所示。
总流程:顾客可以先浏览商品也可以直接进行商品的搜索,然后可以将浏览或者搜索的商品加入购物车中,最后通过购物车生成购物清单,并且可直接在购物车进行所购买商品的修改。
二、实现功能
经过讨论,我们将实现商品的浏览与搜索、商品加入购物车、购物清单的形成与商品增删。
三、系统功能设计
设计结构图
四、UML类图
五、介绍
1.数据存储方式:内存
2.界面:GUI
3.开发工具:Eclipse
六、功能测试
1.购物商品的浏览功能(程序运行商品就进行展示):
2.商品的搜索功能(通过输入商品的ID来进行商品的查询,并有查询后购买商品的功能)
3.商品的购买功能(用户可直接进行商品的购买,输入购买商品的ID与要购买的商品数量,若ID不存在则显示“无此商品”,同时购物车清单增加所购买商品信息)
4.购物车功能(购买商品的清单和总价、购买商品的增删、购买商品的清空)
(1)商品的清单和总价(可以看到购物车已有商品、数量、总价)(我又购买了数量为12的苹果)
(2)商品增减删(增减:输入商品ID及商品要变成的数量即可完成增减)(删:根据商品ID进行删除,若购物清单无输入ID则不能进行删除)
(3)商品的清空
七、关键代码
1.Cart类
package shopping;
import java.util.ArrayList;
public class Cart {
private ArrayList<ItemEntry> items = new ArrayList<>();//存放商品的容器
public ArrayList<ItemEntry> getItems() {
return items;
}
public void setItems(ArrayList<ItemEntry> items) {
this.items = items;
}
public boolean isEmpty()//判断购物车是否为空
{
return items.isEmpty();
}
private int findById(int id) {//通过id返回商品在数组中对应的下标
int index = -1;
if (items.size() > 0) {
for (int i = 0; i < items.size(); i++) {
if (items.get(i).item.getId() == id)
index = i;
}
}
return index;
}
public void add(Commodity item,int amount) {//把商品添加到购物车,且商品唯一确定
int flag=1;
for (ItemEntry e : items) {
if(e.item.getId()==item.getId())
{
flag=0;
}
}
if(flag==1)
{
items.add(new ItemEntry(item));
items.get(items.size()-1).piece=amount;
}
}
public boolean remove(int id) {//删除商品
int index = findById(id);
if (index == -1) {// 未找到
return false;
} else {
this.items.remove(index);
}
return true;
}
public void modifyCommodity(int id,int modifyAmount)
{
if(findById(id)==-1)
{
System.out.println("您输入的id不存在!!");
}
else
{
items.get(findById(id)).piece=modifyAmount;
}
}
public void clearCart()
{
items.clear();
}
public double checkout() {//结算
double x = 0;
for (ItemEntry e : items) {
x+=e.item.getPrice()*e.piece;
}
return x;
}
//展示购物车商品
public void show() {
System.out.println("**************************************************************************");
System.out.println("您购买的商品如下:");
for (ItemEntry e : items) {
System.out.printf("name: %-18s, price: %-15f,id: %-15d,amout: %-15d", e.item.getName(), e.item.getPrice(),e.item.getId(),e.piece);
System.out.println();
}
}
public class ItemEntry {//Cart 里的类
private Commodity item;
private int piece;
public ItemEntry(Commodity item) {
this.item = item;
piece = 1;
}
}
}
2.shopMall类
package shopping;
import java.util.ArrayList;
public class shopMall {
private ArrayList<Commodity> commodities = new ArrayList<>();
{// 初始化块
commodities.add(new Commodity("苹果", 2.3));
commodities.add(new Commodity("苹果", 10.48));
commodities.add(new Commodity("乒乓球拍", 100));
commodities.add(new Commodity("联想电脑", 7000));
commodities.add(new Commodity("充电宝", 100));
commodities.add(new Commodity("游戏机", 2000));
commodities.add(new Commodity("电脑支架", 30));
commodities.add(new Commodity("java教程", 300.99));
commodities.add(new Commodity("保温杯", 500));
commodities.add(new Commodity("牛仔裤", 200));
}
static {
System.out.println("Welcome to this app!");
}
public ArrayList<Commodity> getArr() {//setter.getter
return commodities;
}
public void setArr(ArrayList<Commodity> arr) {
this.commodities = arr;
}
public void disC() {//展示仓库的货物
for (Commodity e : commodities) {
System.out.printf("name: %-10s price: %-18f id: %-7d", e.getName(), e.getPrice(), e.getId());
System.out.println();
}
}
public void searchName(String name) {//按名称搜索并展示
int flag = -1;
for (Commodity e : commodities) {
if (name.equals(e.getName())) {
System.out.printf("name: %-18s price: %-18f id: %-7d", e.getName(), e.getPrice(), e.getId());
System.out.println();
flag = 1;
}
}
if (flag == -1) {
System.out.println("查无此商品");
}
}
public Commodity searchId(int n) {//按商品id搜索
for (Commodity e : commodities) {
if (e.getId() == n) {
return e;
}
}
return null;
}
}
3.Commodity类
package shopping;
public class Commodity {
private String name;
private double price;
private int id;
private static int count=0;
{
this.id=count;
Commodity.count++;
}
public Commodity(String name, double price) {
this.name = name;
this.price = 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 double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}