纯Java代码模拟简单购物车功能

1.Product类


import java.util.Objects;public class Product implements Comparable{private Integer id;private String name;private double price;public Product() {}public Product(Integer id, String name, double price) {this.id = id;this.name = name;this.price = price;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Product product = (Product) o;return Double.compare(product.price, price) == 0 &&Objects.equals(id, product.id) &&Objects.equals(name, product.name);}@Overridepublic int hashCode() {return this.id/10;}public Integer getId() {return id;}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(double price) {this.price = price;}@Overridepublic String toString() {return "{" +"商品编号:" + id +", 商品名称:" + name + '\'' +", 商品单价:" + price +'}'+"\n";}@Overridepublic int compareTo(Object o) {Product product = (Product)o;int this_id = this.id;int p_id = product.getId();return this_id > p_id?1:-1;}
}

2.ShoppingCar类

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;public class ShoppingCar  {private Map<Product,Integer> cars;private double totalPrice;public ShoppingCar(){cars = new HashMap<>();}//对外提供添加多个一类商品的方法public void addProducts(Product p,Integer num){if (num<=0){System.out.println("商品数量不能小于1!");return;}if (cars.containsKey(p)){//如果能执行到这里说明购物车已经包含此商品了 这时需要累加 商品的数量int productcount_before = cars.get(p);int productcount_after = productcount_before + num;cars.put(p,productcount_after);System.out.println("添加商品成功!");}else {//程序执行到这里说明购物车中没有此商品 则添加cars.put(p,num);System.out.println("添加商品成功!");}double price = (p.getPrice())*num;totalPrice = totalPrice + price;}//提供添加一个商品的方法public void addProducts(Product product){addProducts(product,1);System.out.println("添加一个商品成功!");}//删除一类商品(指定数量)public void removeProducts(Product product,Integer deletenum){if (!cars.containsKey(product)){System.out.println("您要删除的商品不存在!");return;}//获取这个商品此时的数量 要删除的数量不能大于这个数量int productNum = cars.get(product);if (deletenum>productNum){System.out.println("删除的商品数量不能大于已有的数量!");return;}//程序能执行到这里说明满足上面的条件//key重复 value覆盖int afterDelete = productNum - deletenum;//判断删除的数量是否的存在的数量相等 如果相等 则应连同商品删除if (productNum == deletenum){cars.remove(product);System.out.println("删除商品成功!");}else {cars.put(product,afterDelete);System.out.println("删除商品成功!");}//删去对应的价格double price = (product.getPrice()) * deletenum;totalPrice = totalPrice - price;}//某类商品全部删除public void deleteClassProduct(Product product){if (!cars.containsKey(product)){System.out.println("该类商品不存在!");return;}cars.remove(product);System.out.println("该类删除商品成功!");}//删除某类商品其中的一个public void deleteAproduct(Product product){this.removeProducts(product,1);}//清空购物车public void clearShoppingCar(){if (cars.size()<=0){System.out.println("您的购物车里没有任何商品哦~"+"\n");return;}cars.clear();totalPrice = 0.0;System.out.println("清空购物车成功!");}//结账public void checkOut() throws Exception{if (cars.size()<=0){System.out.println("您的购物车里没有任何商品哦~"+"\n");return;}else {System.out.println("正在结账请稍后··········");Thread.sleep(3000);StringBuilder sb = new StringBuilder();sb.append("\t\t购物详单:"+"\n\n");sb.append("へへへへへへへへへへへへへへへへへへへへへへへへへへへへへへへへへへへへへ\n");for (Map.Entry<Product,Integer> me : cars.entrySet()){int num = me.getValue();Product product = me.getKey();int pid = product.getId();String pname = product.getName();double price = product.getPrice();sb.append("\t\t商品编号:"+pid+"\t商品名称:"+pname+"\t商品单价:"+price+"\t商品数量:"+num+"\n");}sb.append("\n");sb.append("\t\t\t\t\t总价:"+totalPrice+"\n\n");sb.append("\t\t祝您购物愉快,欢迎下次光临!");System.out.println(sb.toString());clearShoppingCar();}}//查看购物车public void lookCars(){if (cars.size()<=0){System.out.println("您的购物车里没有任何商品哦~"+"\n");return;}else {StringBuilder sb = new StringBuilder();sb.append("\t\t您的购物车↓ ↓ ↓ ↓ ↓:"+"\n\n");for (Map.Entry<Product,Integer> me : cars.entrySet()){int num = me.getValue();Product product = me.getKey();int pid = product.getId();String pname = product.getName();double price = product.getPrice();sb.append("\t\t商品编号:"+pid+"\t商品名称:"+pname+"\t商品单价:"+price+"\t商品数量:"+num+"\n");}System.out.println(sb.toString());}}public Map<Product, Integer> getCars() {return cars;}public void setCars(Map<Product, Integer> cars) {this.cars = cars;}public double getTotalPrice() {return totalPrice;}public void setTotalPrice(double totalPrice) {this.totalPrice = totalPrice;}@Overridepublic String toString() {return "Shoppcar{" +"cars=" + cars +", totalPrice=" + totalPrice +'}';}}

3.Test类

import java.util.Scanner;public class Test {static {}public static void main(String[] args)throws  Exception{Product[] products = new Product[4];Product p1 = new Product(100,"可比克",5.6);Product p2 = new Product(200,"麦当劳",7.8);Product p3 = new Product(300,"果粒橙",3.2);Product p4 = new Product(400,"果橙",3.2);products[0] = p1;products[1] = p2;products[2] = p3;products[3] = p4;Scanner scanner = new Scanner(System.in);System.out.println("是否开始购物?(Y/N)");String confirm = scanner.nextLine();if (confirm.equals("Y") || confirm.equals("y")){ShoppingCar shoppcar = new ShoppingCar();System.out.println("\t\t商品信息如下:");show();while (true){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:退出购物");int choose = scanner.nextInt();if (choose == 1){System.out.println("请输入您要添加的商品的编号");int productNum = scanner.nextInt();Product p =  getProduct(productNum,products);if (p != null){System.out.println("请输入要该类商品的添加数量");int addCount = scanner.nextInt();shoppcar.addProducts(p,addCount);}else {System.out.println("输入的商品编号有误!");}}if (choose == 2){System.out.println("请输入您要删除的商品的编号");int productNum = scanner.nextInt();Product p =  getProduct(productNum,products);if (p != null){System.out.println("请输入要该类商品的删除数量");int delCount = scanner.nextInt();shoppcar.removeProducts(p,delCount);}else {System.out.println("输入的商品编号有误!");}}if (choose == 3){shoppcar.clearShoppingCar();}if (choose == 4){shoppcar.lookCars();}if (choose == 5){shoppcar.checkOut();}if (choose == 6){System.out.println("您已退出购物,祝您生活愉快!");break;}}}else {System.exit(0);}}public static void show(){Product p1 = new Product(100,"可比克",5.6);Product p2 = new Product(200,"麦当劳",7.8);Product p3 = new Product(300,"果粒橙",3.2);Product p4 = new Product(400,"果橙",3.2);System.out.println(p1);System.out.println(p2);System.out.println(p3);System.out.println(p4);}//传入一个商品编号 返回一个商品public static Product getProduct(int num,Product[] products){for (int i=0 ;i<products.length;i++){int id = products[i].getId();if (id == num){return products[i];}}return null;}}

Java 代码简单模拟商城购物车相关推荐

  1. 基于Java的简单零食商城管理系统

    标题# 基于Java的简单零食商城管理系统 专业团队开发,接受定制 联系VX:Alfalfa-cx 专属源码网站欢迎浏览:http://www.eqicode.com/Code/Index.html ...

  2. 五子棋游戏Java代码简单实现(含活动图和类图设计)

    五子棋游戏Java代码简单实现(含活动图和类图设计) 文章目录 五子棋游戏Java代码简单实现(含活动图和类图设计) 活动图设计 类图设计 代码实现 总结 OOA和OOD设计 代码设计 可改进部分 活 ...

  3. java代码人为模拟股票的变动

    用Java代码模拟股票的变动情况,不是预测股票走势,和股票没有关系,模拟只是模拟数字每秒的变动.就拿1来举例,代码运行开始金额为1,根据股票原理,让其金额实现变动.每次变动都是在本次金额的基础上实现的 ...

  4. 购物车及商品php代码_php实现商城购物车的思路和源码分析

    本文介绍一个php实现的购物车代码,功能实现完整,具有一定的参考价值 这里我们为你提供个简单的php购物车代码,从增加购物产品与发生购买了,在商城开发中,这个功能是少不了的 具体分析如下: 对购物车里 ...

  5. 上传图片的表单java代码_java模拟post方式提交表单实现图片上传(示例代码)

    转自:http://blog.csdn.net/5iasp/article/details/8669644 模拟表单html如下: java代码如下: [java] view plain copy p ...

  6. 购物车及商品php代码_php购物车代码_php网上商城购物车代码一例

    摘要 腾兴网为您分享:php网上商城购物车代码一例,有信,英语字典,携程,网赚招聘等软件知识,以及迅雷vip补丁,全能素描,苏酒门户,inshort视频剪辑,北京地铁高清大图,监控上网,云播搜,维融打 ...

  7. 使用java来简单模拟肯德基快餐店的收银系统实现一些功能

    一.题目要求 请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算 ...

  8. 【JSP学习笔记】JSP session对象的应用 模拟商城购物车

    前言: 下面贴出的实现代码核心部分摘抄了xiufeng大佬的代码 正文 session对象简介: session对象的主要用途也是保存信息,当用户第一次到达网站时,系统为其分配一个session.se ...

  9. Java代码简单模仿银行ATM功能

    1.首先要了解的是,这个ATM程序本身是一个简单,只为了完成一些ATM具备的一些方法,并非是真正完成一个ATM的全部功能和需求.(效果如下图) 1.这个下面演示的成功的功能: 2.这张图是输入错误的解 ...

最新文章

  1. Nessus扫描器的使用
  2. Chapter 1 First Sight——25
  3. 人类一败涂地显示服务器,人类一败涂地怎么开服务器 | 手游网游页游攻略大全...
  4. iPad2泄密 责任只在“内鬼”吗?
  5. java上传永久图文素材_Java-微信开发上传永久素材(支持所有文件类型)
  6. db2 版本发布历史_数据库各厂商的发展历史(2. DB2 of IBM)
  7. var radioname = new array();_兰帕德:引进VAR是为了回放关键时刻的情况,他们的行为令我困惑...
  8. Java logging整理
  9. android studio 登录与注册,Android Studio登录/注册系统构想
  10. 启动程序时提示缺少mfc.dll
  11. 简单聊聊离散数学是什么
  12. 【VulnHub靶场】——HARRYPOTTER第二部: NAGINI
  13. python调用微信截图_Python调用微信截图工具
  14. 生意的本质:低买高卖
  15. Unity MVC实现背包系统(2)
  16. 编程之美学习笔记——数字相关(一)
  17. MySQL数据库修改名称的三种方法
  18. 性能测试怎么做?性能测试指标,常用性能测试工具
  19. Echarts中折线图Y轴数据值太长显示不全-解决办法
  20. 01.分布式框架-Dubbox

热门文章

  1. Oracle的表结构:纵向和横向
  2. echarts柱状图如何从纵向改为横向
  3. ASP.NET-酒店管理系统
  4. 新颖的自我介绍_比较新颖的自我介绍
  5. Camtasia2023官方中文版免费下载
  6. 尚硅谷JavaScript高级教程(javascript实战进阶)学习笔记
  7. 【转】Linux 里有/lib和/usr/lib,这两个目录下的库文件有什么区别吗?如果没区别为什么又要分开放呢
  8. Linux显卡驱动安装
  9. Python依赖管理和打包工具poetry
  10. java 发送邮件(SSL加密方式,含附件)