Java大作业:购物车

1、小组成员以及任务分配

班级姓名任务
网络2014兰苏瑀负责编写代码相关的工作:编码规范,面向对象设计,功能设计
网络2014刘宇恒负责编写博客相关的工作:前期调查,博客制作

2、前期调查(以京东商城界面为例)

2.1 主界面

在这里插入图片描述

2.2 商品界面

在这里插入图片描述

2.3购物车界面

在这里插入图片描述
由观察京东商城可知:主界面要有分类,使购买者更有目的性。商品展示时主要信息含商品的名称描述和单价。购物车显示的信息有:商品名称和单价,每种商品的预购数量和金额小计,所有商品的总金额。购物车的功能操作按键有:增加或者减少某种商品的预购数量,删除某种商品,清空购物车。

3、系统描述

用户进入到商城的主界面,可以看到搜索商品功能的框,以及商品的分类选项。然后点击商品,可以看到商品的名称、单价,可以选择将商品加入购物车。进入购物车,能看到商品的名称介绍、数量、某种商品的小计金额,可以进行增加或减少某种商品的数量、删除某种商品的操作,还可以直接清空购物车

4、系统功能结构图和主要功能流程图

功能结构图

在这里插入图片描述

5、类的设计和UML类图

5.1类的设计

5.1.1商品

在这里插入图片描述

5.1.2菜单

在这里插入图片描述

5.1.3清单

在这里插入图片描述

5.1.4清单

在这里插入图片描述

5.2UML类图

在这里插入图片描述

6、关键代码

6.1主界面

package shoppingcart;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

public class Menu{
	private static Map<Integer, Commodity> map = new LinkedHashMap<Integer, Commodity>();
static{//类别// 货物编号// 货物名称// 单价//属性
		Commodity good1 = new Commodity(1, "苹果", 3.0,"水果");
		Commodity good2 = new Commodity(2, "芒果", 7.0,"水果");
		map.put(good1.getId(), good1);
		map.put(good2.getId(), good2);
	}

public static void showMenu(){
	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("		[0]退出		");
}



public static void inputOption(ShoppingCart cart) {

	System.out.println("请输入你要添加的货物编号及个数:");
	Scanner sc = new Scanner(System.in);
	if (sc.hasNextLine()) {
		String s = sc.nextLine();
			String[] strings = s.split(" ");
			int id = Integer.parseInt(strings[0]);
			int count = Integer.parseInt(strings[1]);
			Commodity p = map.get(id);
			cart.addGood(p, count);
	}
	System.out.println("——————————————————————【用户总预购货物】——————————————————————");
	cart.showAll();
	System.out.println("货物总价钱为:" + cart.totalAllMoney()+"¥");
	System.out.println("—————————————————————————————————————————————————————");
}
public static void deleteOption(ShoppingCart cart) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入你想要删除的货物编号:");
	if (sc.hasNextLine()) {
		String s = sc.nextLine();
			int id = Integer.parseInt(s);
			boolean flag = cart.deleteGood(id);
			if (flag) {
				System.out.println("货物编号:" + id + "的货物删除成功!");
			} else {
				System.out.println("货物编号" + id + "删除失败,购物车没有该货物!!!");
			}
	}
	System.out.println("——————————————————————【用户总预购货物】——————————————————————");
	cart.showAll();
	System.out.println("货物总价钱为:" + cart.totalAllMoney()+"¥");
	System.out.println("—————————————————————————————————————————————————————");
}
public static void reduceOption(ShoppingCart cart) {
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入你想要减少的货物编号及个数:");
	if (sc.hasNextLine()) {
		String s = sc.nextLine();
			String[] strings = s.split(" ");
			int id = Integer.parseInt(strings[0]);
			int count = Integer.parseInt(strings[1]);
			boolean flag = cart.reduceGood(id,count);
			if (flag) {
				System.out.println("货物编号:" + id + "的货物减少"+count+"个!");
			} else {
				System.out.println("减少失败!");
			}
	}
	System.out.println("——————————————————————【用户总预购货物】——————————————————————");
	cart.showAll();
	System.out.println("货物总价钱为:" + cart.totalAllMoney()+"¥");
	System.out.println("—————————————————————————————————————————————————————");
}
public static void clearOption(ShoppingCart cart) {
	cart.clearCart();
	System.out.println("——————————————————————【清空购物车】————————————————————————");
	cart.showAll();
	System.out.println("预购货物总价钱为:" + cart.totalAllMoney()+"¥");
	System.out.println("—————————————————————————————————————————————————————");
}
}

6.2购物车

package shoppingcart;

import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class ShoppingCart {
	public static final String add = null;
	private Map<Integer, GoodItem> map = new LinkedHashMap<Integer, GoodItem>();
	// 集合
	public void addGood(Commodity p, int count) {// 添加货物
		int goodID = p.getId();
		if (map.containsKey(goodID)) {// 如果购物车已经存在同样的货物,则的数量增加
			GoodItem goodItem = map.get(goodID);
			goodItem.setCount(goodItem.getCount() + count);
		} else {
			map.put(goodID, new GoodItem(p, count));// 如果没有,则新建一个商品信息
		}
	}
	public  void showAll() {// 查看购物车所有信息
		Collection<GoodItem> GoodItems = map.values();
		Iterator<GoodItem> iterator = GoodItems.iterator();
		while (iterator.hasNext()) {
			GoodItem GoodItem = iterator.next();
			Commodity Good = GoodItem.getGood();
			System.out.println("货物编号" + ":" + Good.getId() + ",  货物名称:" + Good.getName() + ",  单价:"
					+ Good.getPrice() + "¥,  数量:" + GoodItem.getCount() + ",  小计:" + GoodItem.totalMoney()+"¥");
		}
	}
	public boolean deleteGood(int goodID) {// 删除货物
		if (map.containsKey(goodID)) {
			map.remove(goodID);
			return true;
		}
		return false;
	}
	public boolean reduceGood(int goodId,int count) {// 减少货物
		GoodItem goodItem = map.get(goodId);
		if (map.containsKey(goodId)) {
			if(count>goodItem.getCount()) {
				System.out.println("不能把货物数量减少成负数哦");
				return false;
			}else if (count < goodItem.getCount()) {
				goodItem.setCount(goodItem.getCount()-count);//数量设置成原数量-count
				return true;
			} else if (count == goodItem.getCount()) {// 删除该商品,数量减到0
				deleteGood(goodId);
				return true;
			}
		}
		else System.out.println("购物车中没有该货物");
		return false;
	}
	public void clearCart() {// 清空购物车
		map.clear();
	}
	public double totalAllMoney() {// 货物总价格
		double total = 0;
		Collection<GoodItem> GoodItems = map.values();
		Iterator<GoodItem> iterator = GoodItems.iterator();
		while (iterator.hasNext()) {
			GoodItem GoodItem = iterator.next();
			double money = GoodItem.totalMoney();
			total += money;
		}
		return total;
	}
	public Map<Integer, GoodItem> getMap() {
		return map;
	}
	public void setMap(Map<Integer, GoodItem> map) {
		this.map = map;
	}
}

7、总结

  • 这是第一次Java面向对象设计的大作业,购物车。我们小组进行了前期调查、类与对象的设计、代码结构的设计等等工作。由于较为生疏,对作业要求认真研究后,
  • 编写代码时我们会注意变量名,函数名,类名,方法名的定义,也就是重视代码的规范性。做好代码命名规范,使得代码可读性更强,便于读者阅读。
  • 在编写代码的过程中,我们不可避免的遇到各类问题,比如编写好的代码意外出现错误、对类中该包含的属性和方法不清楚等。我们通过向高手请教、百度借鉴相似的项目、一步一步尝试新思路等等方法解决问题。
  • 本次的作业在多次修改以后依旧存在较多问题,我们将会在往后继续更新。
  • 13
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值