• 面向对象设计(购物车)


    Git源码

    https://gitee.com/smyn77/caicai77.git

    前期调查

    系统功能结构图

    系统描述

    该购物车系统提供了注册登录、增减商品等功能。用户注册账号后,选择登录。登录成功后,系统显示菜单,菜单提供增加、删除、修改商品和清空购物车功能。用户通过菜单里的选项来完成相应功能。

    UML类图

    关键代码

    商品类————描述商品的属性(编号、名称、分类、单价)

    class Product {
    	private int productId;// 商品编号
    	private String productName;// 商品名称
    	private String category;// 商品分类
    	private double price;// 单价
    
    	public Product(int productId, String productName, String category, double price) {
    		this.productId = productId;
    		this.productName = productName;
    		this.category = category;
    		this.price = price;
    	}
    
    	public String toString() {
    		return "Product [productId=" + productId + ", productName=" + productName + ", category=" + category
    				+ ", price=" + price + "]";
    	}
    
    	public int getProductId() {// 获取商品编号
    		return productId;
    	}
    
    	public void setProductId(int productId) {
    		this.productId = productId;
    	}
    
    	public String getProductName() {// 获取商品名字
    		return productName;
    	}
    
    	public void setProductName(String productName) {
    		this.productName = productName;
    	}
    
    	public String getCategory() {
    		return category;
    	}
    
    	public void setCategory(String category) {// 设置种类
    		this.category = category;
    	}
    
    	public double getPrice() {
    		return price;
    	}
    
    	public void setPrice(double price) {// 设置价格
    		this.price = price;
    	}
    }
    

    商品信息类————描述商品数量、总价

    class ProductItem {
    	private Product product;// 购买的商品(包含商品编号,名称,分类,单价)
    	private int count;// 商品数量
    
    	public double totalMoney() {// 小计
    		double price = product.getPrice();// 获取商品单价
    		return price * count; // 获取这个商品的总的价格
    	}
    
    	public ProductItem(Product product, int count) {
    		this.product = product;
    		this.count = count;
    	}
    
    	public Product getProduct() {
    		return product;
    	}
    
    	public void setProduct(Product product) {
    		this.product = product;
    	}
    
    	public int getCount() {
    		return count;
    	}
    
    	public void setCount(int count) {
    		this.count = count;
    	}
    
    }
    

    购物车类————描述用户的购物车内容

    class ShoppingCart {// 购物车
    	private Map<Integer, ProductItem> map = new LinkedHashMap<Integer, ProductItem>();
    
    	// 集合
    	public void addProduct(Product p, int count) {// 添加商品
    		int productId = p.getProductId();
    		if (map.containsKey(productId)) {// 如果购物车存在同样的商品,则此对象的数量加一
    			ProductItem productItem = map.get(productId);
    			productItem.setCount(productItem.getCount() + count);
    		} else {
    			map.put(productId, new ProductItem(p, count));// 如果没有,则在map容器里新建一个ProductItem
    		}
    	}
    
    	public void showAll() {// 查看订单信息
    		Collection<ProductItem> productItems = map.values();
    		// 集合信息
    		Iterator<ProductItem> iterator = productItems.iterator();
    		// 迭代器
    		while (iterator.hasNext()) {
    			ProductItem productItem = iterator.next();
    			Product product = productItem.getProduct();
    			System.out.println("商品编号" + ":" + product.getProductId() + ",  商品名称:" + product.getProductName() + ",  单价:"
    					+ product.getPrice() + ",  数量:" + productItem.getCount() + ",  小计:" + productItem.totalMoney());
    		}
    	}
    
    	public boolean deleteProduct(int productId) {// 删除商品
    		if (map.containsKey(productId)) {
    			map.remove(productId);
    			return true;
    		}
    		return false;
    	}
    
    	public boolean modifyProduct(int productId, int count) {// 修改
    		if (map.containsKey(productId)) {
    			if (count >= 1) {
    				ProductItem productItem = map.get(productId);
    				productItem.setCount(count);
    				return true;
    			} else if (count == 0) {// 删除该商品
    				deleteProduct(productId);
    				return true;
    			}
    		}
    		return false;
    	}
    
    	public void clearCart() {// 清空购物车
    		map.clear();
    	}
    
    	public double totalAllMoney() {// 商品总钱数
    		double total = 0;
    		Collection<ProductItem> productItems = map.values();
    		Iterator<ProductItem> iterator = productItems.iterator();
    		while (iterator.hasNext()) {
    			ProductItem productItem = iterator.next();
    			double money = productItem.totalMoney();
    			total += money;
    		}
    		return total;
    	}
    
    	public Map<Integer, ProductItem> getMap() {
    		return map;
    	}
    
    	public void setMap(Map<Integer, ProductItem> map) {
    		this.map = map;
    	}
    
    }
    

    菜单类————登录界面

    class Menu {
    	private static Map<Integer, Product> map = new LinkedHashMap<Integer, Product>();
    	static {// 商品编号// 商品名称// 商品分类// 单价
    		Product p1 = new Product(1, "华硕笔记本", "笔记本", 4599);
    		Product p2 = new Product(2, "苹果", "水果", 5.9);
    		Product p3 = new Product(3, "彩电", "家电", 2799);
    		Product p4 = new Product(4, "秋裤", "服装", 128);
    		Product p5 = new Product(5, "华为手机", "手机", 2998);
    		map.put(p1.getProductId(), p1);
    		map.put(p2.getProductId(), p2);
    		map.put(p3.getProductId(), p3);
    		map.put(p4.getProductId(), p4);
    		map.put(p5.getProductId(), p5);
    
    	}
    
    	public static void showMenu() {
    		System.out.println("****欢迎来到青春有你514的购物系统****");
    		System.out.println("*      [4]输出商品菜单              *");
    		System.out.println("*      [5]输入所需商品              *");
    		System.out.println("*      [6]删除所需商品              *");
    		System.out.println("*      [7]修改所需商品              *");
    		System.out.println("*      [8]清空购物车                *");
    		System.out.println("*      [9]返回登录界面              *");
    		System.out.println("*************感谢光临****************");
    
    	}
    
    	public static void showOption() {
    		System.out.println("编号1:华硕笔记本,单价为:4599");
    		System.out.println("编号2:苹果,单价为:5.9");
    		System.out.println("编号3:彩电,单价为:2799");
    		System.out.println("编号4:秋裤,单价为:128");
    		System.out.println("编号5:华为手机,单价为:2998");
    	}
    
    	public static void inputOption(ShoppingCart cart) {
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入你想要购买的商品编号及个数(以end为结束标志):");
    		while (sc.hasNextLine()) {
    			String s = sc.nextLine();
    			if (s.equals("end")) {
    				break;
    			} else {
    				String[] strings = s.split(" ");
    				int id = Integer.parseInt(strings[0]);
    				int count = Integer.parseInt(strings[1]);
    				Product p = map.get(id);
    				cart.addProduct(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("请输入你想要删除的商品编号:(以end为结束标志)");
    		while (sc.hasNextLine()) {
    			String s = sc.nextLine();
    			if (s.equals("end")) {
    				break;
    			} else {
    				int id = Integer.parseInt(s);
    				boolean flag = cart.deleteProduct(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 modifyOption(ShoppingCart cart) {
    
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入你想要修改的商品编号及个数(以end为结束标志):");
    		while (sc.hasNextLine()) {
    			String s = sc.nextLine();
    			if (s.equals("end")) {
    				break;
    			} else {
    				String[] strings = s.split(" ");
    				int id = Integer.parseInt(strings[0]);
    				int count = Integer.parseInt(strings[1]);
    				boolean flag = cart.modifyProduct(id, count);
    				if (flag)
    					System.out.println("商品编号:" + id + "的商品修改成功!");
    				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());
    	}
    }
    
    

    用户类————用户登录的账号、密码、购物车

    class User {
    	private int userID;
    	private String passWord;
    	private ShoppingCart cart;
    	private static int nextId = 1;
    
    	{
    		this.cart = new ShoppingCart();
    		this.userID = nextId++;
    	}
    
    	@Override
    	public String toString() {
    		String s = String.valueOf(userID);
    		return "userId = " + s + ",passWord = " + passWord;
    	}
    
    	public int getUserID() {
    		return userID;
    	}
    
    	public String getPassWord() {
    		return passWord;
    	}
    
    	public ShoppingCart getCart() {
    		return cart;
    	}
    
    	public void setPassWord(String passWord) {
    		this.passWord = passWord;
    	}
    
    	public void setCart(ShoppingCart cart) {
    		this.cart = cart;
    	}
    
    }
    

    系统功能介绍

    用户注册界面

    用户登录界面

    商品菜单展示

    输入商品展示

    删除商品展示

    修改商品展示

    清空购物车展示

  • 相关阅读:
    加一---简单
    gcc/g++常用命令
    2.3 进程间通信
    js( Object类闭包)
    js构造函数,成员函数详解
    二维数组 冒泡排序
    js数组
    js函数的调用
    仿搜狐首页的布局
    JavaScript基本语法1
  • 原文地址:https://www.cnblogs.com/springxinxin/p/13818303.html
Copyright © 2020-2023  润新知