面向对象大作业(自主选题)-第一次提交

小组分工:

任务姓名
前期调查、博客制作、面向对象设计、功能设计吴石书

一、选题与前期调查

选题为购物车系统

前期调查:

 系统功能:

别人做到的:

链接:(5条消息) 第1次任务:购物车程序的面向对象设计_Gyuhow的博客-CSDN博客

我准备实现:首先一进入系统应先展示商品名称和单价及功能列表,其次要能输入商品序号数量,然后应当能实现向购物车内增添商品,从购物车里删除商品,从购物车内修改商品数量,对购物车内商品进行购物车内商品总价的计算清空购物车功能

二、系统功能设计

代码:

Main类

package shopping;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		ShoppingCart cart = new ShoppingCart();
		Entry e = new Entry();
		e.addGoods();
		
		while(true) {
			Goods goods = new Goods();
			Entry entry = new Entry();
			Menu menu = new Menu();
			menu.Print(e);
			int choice = sc.nextInt();
			switch(choice) {
			case 1:
				System.out.println("请依次输入要添加商品的编号和数量");
				cart.addGoods(e, sc.next(), sc.nextInt());
				break;
			case 2:
				System.out.println("请输入要删除的商品的编号");
				cart.deleteGoods(e, sc.next());
				break;
			case 3:
				System.out.println("请输入要修改的商品的编号及数量");
				cart.changeQty(e, sc.next(), sc.nextInt());
				break;
			case 4:
				cart.deleteAllGoods(e,0);
				break;
			case 5:
				cart.showCart();
				break;
			case 6:
				cart.pay(e);
				break;
			}
			
		}

	}

}

Goods类

package shopping;

public class Goods {
	private String id;
	private String name;
	private double price;
	private int stocks;
	
	public int getStocks() {
		return stocks;
	}

	public void setStocks(int stocks) {
		this.stocks = stocks;
	}

	public Goods(String id, String name, double price, int stocks) {
		this.id = id;
		this.name = name;
		this.price = price;
		this.stocks = stocks;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public String toString() {
		return "商品编号为:" + id + ", 商品名称为:" + name + ", 商品价格为:" + price;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public Goods() {
		
	}
	
	

}

Entry类

package shopping;

import java.util.ArrayList;

public class Entry {
	private Goods goods;
	private int qty;
	private ArrayList<Goods> list = new ArrayList<Goods>();
	
	Goods g1 = new Goods("001", "手机", 2999, 100);
	Goods g2 = new Goods("002", "电视", 6999, 75);
	Goods g3 = new Goods("003", "电脑", 8999, 400);
	Goods g4 = new Goods("004", "手表", 1999, 1024);
	
	public ArrayList<Goods> getList() {
		return list;
	}

	public void setList(ArrayList<Goods> list) {
		this.list = list;
	}
	
	public void addGoods() {
		list.add(g1);
		list.add(g2);
		list.add(g3);
		list.add(g4);
	}
	
	public Entry(Goods goods, int qty) {
		this.goods = goods;
		this.qty = qty;
	}
	
	public Entry() {
		super();
	}
	
	public Goods getGoods() {
		return goods;
	}
	public void setGoods(Goods goods) {
		this.goods = goods;
	}
	public int getQty() {
		return qty;
	}
	
	public String toString() {
		return goods + ", 数量为" + qty;
	}

	public void setQty(int qty) {
		this.qty = qty;
	}
	
	
	

}

Menu类

package shopping;

public class Menu {
	public void Print(Entry e) {
			System.out.println("***********************************************************************");
			System.out.println("**                本商场含有以下商品:**");
			System.out.println("**  编号: 001     名称: 手机    价格: 2999   库存:" + e.getList().get(0).getStocks());
			System.out.println("**  编号: 002     名称: 电视    价格: 6999   库存:" + e.getList().get(1).getStocks());
			System.out.println("**  编号: 003     名称: 电脑    价格: 8999   库存:" + e.getList().get(2).getStocks());
			System.out.println("**  编号: 004     名称: 手表    价格: 299    库存:" + e.getList().get(3).getStocks());
			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("**********************************************************************");
	}
}

ShoppingCart类

package shopping;

import java.util.ArrayList;

public class ShoppingCart {
	private ArrayList<Entry> list = new ArrayList<>();
	
	public ArrayList<Entry> getList() {
		return list;
	}

	public void setList(ArrayList<Entry> list) {
		this.list = list;
	}

	public void addGoods(Entry entry, String id, int qty){
		if(qty <= 0) {
			System.out.println("购买数量非法");
		}
		for(int i = 0; i < 4; i++) {
			Goods goods = entry.getList().get(i);
			if(goods.getId().equals(id)) {
				if(goods.getStocks()>=qty) {
					Entry e = new Entry(goods, qty);
					list.add(e);
					int stocks = entry.getList().get(i).getStocks() - qty;
					entry.getList().get(i).setStocks(stocks);
					System.out.println("添加成功!");
				}else {
					System.out.println("库存不足!");
				}
			}
		}
	}
	
	public void deleteGoods(Entry en, String id) {
		for(int i=0; i<list.size(); i++) {
			Entry entry = list.get(i);
			Goods goods = entry.getGoods();
			if(goods.getId().equals(id)) {
				en.getList().get(i).setStocks(list.get(i).getQty() + en.getList().get(i).getStocks());
				list.remove(i);
				System.out.println("删除成功!");
				break;
			}
		}
	}
	
	public void changeQty(Entry en, String id, int newQty) {
		if(newQty >= 0) {
			for(int i=0; i<list.size(); i++) {
				Entry entry = list.get(i);
				Goods goods = entry.getGoods();
				if(goods.getId().equals(id)) {
					en.getList().get(i).setStocks(list.get(i).getQty() + en.getList().get(i).getStocks() - newQty);
					list.get(i).setQty(newQty);
					System.out.println("修改成功!");
					break;
				}
			}
		}
		else
			System.out.println("输入的数量有误!");
	}
	
	public void deleteAllGoods(Entry en, int a) {
		while(list.size()>0) {
			int i = 0;
			en.getList().get(i).setStocks(list.get(0).getQty() + en.getList().get(i).getStocks());
			list.remove(0);
			i++;
		}
		if(a == 0)
			System.out.println("已清空购物车!");
	}
	
	public void showCart() {
		for(int i=0; i < list.size(); i++) {
			Entry entry = list.get(i);
			System.out.println(entry.toString());
		}
		if(list.size()==0)
			System.out.println("购物车为空!");
	}
	
	public void pay(Entry en) {
		int sum = 0;
		for(int i=0; i < list.size(); i++) {
			Entry entry = list.get(i);
			sum += entry.getQty() * entry.getGoods().getPrice();
		}
		System.out.println("结算成功,您需要支付" + sum + "元");
		deleteAllGoods(en,1);
	}
	

}

调试结果:

功能一:添加商品

 

功能二:删除商品

功能三:修改商品数量

功能四:清空购物车

功能五:显示购物车内商品

        当购物车为空时 

        当购物车内有商品时

功能六:结算商品

数据存储于内存

界面为控制台

开发工具使用 Eclipse

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值