面向对象大作业

目标及任务

大作业任务

目标:

  • 学会使用讲故事的方式找到系统中可能包含的类、属性、方法。
  • 思考方法、属性应放在哪个类中,哪些属性与方法可以设置为static或非static。
  • 理解类、封装、模块化之间的关系。

步骤:

  • 前期调查与功能设计:调查京东商城或者亚马逊商城中的购物车,体验从搜索商品、加入购物车、操作购物车、下单全过程,思考该过程可能包含的类。演示中要求图多字少。
  • 面向对象设计:以面向对象的方法编写购物车代码。先考虑有什么类,再考虑哪些功能、哪些数据、功能放到哪个类中合适。具体的,可完善课件中的中购物车代码。并增加商城类、菜单类等你需要的类。。注意学习类与类之间的关系(先重点掌握关联关系与依赖关系)。类的设计详见参考资料2、3。
  • 编码规范检查:使用英文对类、方法、包进行命名(查英文词典,不得出现拼音)。参考JAVA编码规范,进行类命名,方法命名、包命名,合适的缩进,有意义的变量名。见参考资料1中的1.1-1.4。
  • PPT制作或博客制作并上台演示:演示前,请务必自己在同学面前预演一遍。

小组人员及分工

人员分工
聂闽鹭购物车的增删及总价格,博客的编写
郑钧商品展示和查询,类的构造,购物车删除改进,前期调查

前期调查

1.商品界面

自行车商品界面
如图商品界面有商品名称,价格及介绍

2.购物车界面

在这里插入图片描述
如图购物车界面,有所选商品,价格,购买数量,总价

3.流程

浏览商品,查询商品,往购物车中添加所想商品,删去你不需要的商品或减少数量,查看购物车,清空购物车或结算,退出程序

功能设计

Commodity商品类

public class Commodity {
	private String name;
	private int price;
	private int number;
	private int no;
	private Integer id;

	public Commodity(String name, int price,  Integer id) {
		this.name = name;
		this.price = price;
		//this.number = number;
		this.id = id;
	}

	public Integer getId() {
		return id;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

	public void setId(Integer 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(int price) {
		this.price = price;
	}

	public int getNo() {
		return no;
	}

	public void setNo(int no) {
		this.no = no;
	}

	@Override
	public String toString() {
		return "Commodity [name=" + name + ", price=" + price  + ", id=" + id + "]";
	}

}

ShoppingMall商场货物清单

public class shoppingMall {
	List<Commodity> commodities = new ArrayList<>();
	{
		commodities.add(new Commodity("苹果", 100,  0));
		commodities.add(new Commodity("电脑", 10000,  1));
		commodities.add(new Commodity("书", 50,  2));
	    commodities.add(new Commodity("耐克臭鞋", 3999, 3));
	    commodities.add(new Commodity("非洲棉花", 3599, 4));
	    commodities.add(new Commodity("苹果iPhone 14", 8699, 5));
	    commodities.add(new Commodity("联想拯救者Y9000", 7499, 6));
	}

	public List<Commodity> showCommodities() {
		return this.commodities;
	}

	public List<Commodity> searchCommodities(String searchName) {
		int flag = 1;
		List<Commodity> list = new ArrayList<>();
		for (int i = 0; i < commodities.size(); i++) {
			if (commodities.get(i).getName().equals(searchName)) {
				list.add(commodities.get(i));
				flag = 0;
			}
		}

		return list;
	}

}

shoppingCart购物车

package shopping;

import java.util.ArrayList;
import java.util.List;

public class ShoppingCart {
	private List<ItemEntry> itemList = new ArrayList<>();

	public void addList(Commodity e) {

		int index = findById(e.getId());
		if (index == -1) {
			itemList.add(new ItemEntry(e));

		} else {
			itemList.get(index).increase();
		}
	}

	public void decreaseList(Commodity e) {
		int index = findById(e.getId());
		if (index == -1) {
			return;
		} else {
			itemList.get(index).decrease();
		}
	}

	@Override
	public String toString() {

		return "ShoppingCart [itemList=" + itemList + "]";

	}

	public List<ItemEntry> getItemList() {
		return itemList;
	}

	public List<ItemEntry> emptyCart() {
		itemList.clear();
		return itemList;
	}

	public List<ItemEntry> seeMyCart() {
		return itemList;
	}

	public void myRemove(Integer id) {
		if (id == null)
			System.out.println("没找到该id");
		int index = findById(id);
		if (index == -1) {// 未找到
			System.out.println("购物车中无此物品");
		} else {
			ItemEntry entry = this.itemList.get(index);
			if (entry.getnum() <= 1) {
				this.itemList.remove(index);
				System.out.println("删除成功");
			} else {
				entry.decrease();
				System.out.println("商品数量减一");
			}
		}
	}

	public double getprice(Integer id) {
		return itemList.get(id).num * itemList.get(id).item.getPrice();
	}

	private int findById(Integer id) {
		int index = -1;
		if (itemList.size() > 0) {
			for (int i = 0; i < itemList.size(); i++) {
				if (itemList.get(i).getitem().getId() == id)
					index = i;
			}
		}
		return index;
	}
}

ItemEntry购物车内置类

class ItemEntry {
    Commodity item;
    Integer num;

    public ItemEntry(Commodity item) {
        this.item = item;
       num = 1;
    }
    
    public int getnum() {
		// TODO Auto-generated method stub
		return num;
	}

	public Commodity getitem() {
		// TODO Auto-generated method stub
		return item;
	}

	public void increase() {
        num++;
    }

    public void decrease() {
    	if(num<=0)	
    	{
    		return;
    	}
    	else num--;
    }
    /*......*/ 
    public String toString() {
        return "ItemEntry [item=" + item + ", num=" + num + "]";
    }

}

Main主函数

import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Scanner pause = new Scanner(System.in);
		ShoppingMall str = new ShoppingMall();
		ShoppingCart str1 = new ShoppingCart();
		List<Commodity> list = str.showCommodities();
		while (true) {
			Menu.beginMenu();
			System.out.println("输入你的选择");
			int choose = sc.nextInt();
			switch (choose) {
			case 1:// 商品展示
				for (Commodity temp : list) {
					System.out.println(temp);
				}
				System.out.println("输入任意数字,按回车返回主界面");
				String Pause = pause.next();
				break;
			case 2:// 商品查询
				System.out.println("输入你要查询商品名字");
				String searchName = sc.next();
				System.out.println(str.searchCommodities(searchName));
				Pause = pause.next();
				break;
			case 3:
				System.out.println("输入你想要添加到购物车的商品id,输入0则结束添加产品");
				int count = sc.nextInt();
				//while (true) {
				
					if (count == -1) {
						System.out.println("返回界面");
						Pause = pause.next();
					} 
					else  if(count<=6&&count>=0){
						str1.addList((Commodity)list.get(count));
				         System.out.println(str1);
				         Pause = pause.next();
					}
					else
					{
						 System.out.println("没有这件商品,请重新选择");
					}
				//}
				break;
			case 4:
				System.out.println("输入你想要删去到购物车的商品id,输入0则结束删去产品");
				int count2=sc.nextInt();
				if(count2==-1)
				{
					System.out.println("返回界面");
					Pause = pause.next();
				}
				else if(count2<=6&&count2>=0)
				{
					
						str1.decreaseList((Commodity)list.get(count2));
						System.out.println(str1);
					Pause = pause.next();
				}
				else
				{
					System.out.println("没有这件商品,请重新选择");
				}
                  break;
			case 5:
				if(str1.getItemList().isEmpty())
				{
					System.out.println("购物车为空");
				}
				else
				{System.out.println(str1.getItemList());}
				Pause = pause.next();
				break;
			case 6:
				str1.emptyCart();
				System.out.println("购物车已经清空");
				Pause = pause.next();
				break;
			case 7:
				int a,b;
				double money=0;
				System.out.println("选择需要购买的商品类型数量及id:");
				a=sc.nextInt();
				for(int j=0;j<a;j++)
				{
					b=sc.nextInt();
				}
				for(int i=0;i<a;i++)
				{
					money+=str1.getItemList().get(i).num*str1.getItemList().get(i).item.getPrice();
				}
				System.out.println(money);
				Pause = pause.next();
				break;
			case 8:
				System.out.println("欢迎下次光临!");
				System.exit (0);
			}

		}

	}

}

Menu选择菜单

package shopping;

public class Menu {
	public static void beginMenu() {
		System.out.println("  **********************************");
		System.out.println("  ******       欢迎光临!           *****");
		System.out.println("  **********************************");
		System.out.println("您有什么需要?");
		System.out.println("1)商品展示");
		System.out.println("2)商品查询(类型)");
		System.out.println("3)添加商品至购物车");
		System.out.println("4)减少购物车商品的数量");
		System.out.println("5)查看购物车");
		System.out.println("6)清空购物车");
		System.out.println("7)购物车预结算");
		System.out.println("8)退出");
	}

	public static void endMenu() {
		System.out.println("  **************************************");
		System.out.println("  ****      谢谢惠顾,欢迎下次光临!    ****");
		System.out.println("  **************************************");
	}

}

业务流程图

在这里插入图片描述

功能结构图

在这里插入图片描述

UML图

需要
包含
内置
依赖
Commodity
String name
int price
int number
int no
int id
ShoppingMall
showCommodities
searchCommodities
List commodities = new ArrayList<>()
ItemEntry
Commodity item
Integer num
increase()
decrease()
ShoppingCart
private List itemList = new ArrayList<>
addList(Commodity e)
decreaseList(Commodity e)
remove(Integer id)

运行结果

  • 界面
    在这里插入图片描述

  • 商品展览
    在这里插入图片描述

  • 商品查询
    在这里插入图片描述

  • 购物车添加商品
    在这里插入图片描述

  • 购物车删除
    在这里插入图片描述
    在这里插入图片描述

  • 查看购物车
    在这里插入图片描述

  • 结算
    在这里插入图片描述

  • 清空购物车

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值