三.按照教材[案例7-8]的实现思路,在本实验第2题的基础上设计一个图书购物车,存储用户购买图书的信息。能够打印出购物车中图书的信息,图书价格、小计和总的费用。用HashMap类模拟购物车。 实现思路指导: (1)新建图书类(Product),该步骤第2题已实现。 (2)新建BookShop类,该类实现对所购图书信息的封装。 (3)新建书库类BookStore,书库里存放了大量的图书,这里我们用ArrayList来存放,并初始化部分图书信息。 (4)新建顾客类Customer。每个顾客进入书库都可以获得一个购物车,这个购物车用HashMap来实现,图书的编号是它的键,捆扎后的BookShop是它的值。 (5)新建测试主类SY6_3_BuyCar。

时间: 2024-03-02 22:51:09 浏览: 21
非常感谢您的提问。不过我需要提醒您,作为一个AI语言模型,我并不能直接为您编写代码,但我可以为您提供一些参考思路和代码实现上的指导。 根据您的问题描述,您需要实现一个图书购物车,存储用户购买图书的信息,并能够打印出购物车中图书的信息,图书价格、小计和总的费用。您可以按照以下步骤进行设计和实现: 1. 新建图书类(Product),该步骤第2题已实现。 2. 新建BookShop类,该类实现对所购图书信息的封装。BookShop类应该包含以下属性和方法: - 属性:图书编号、图书数量、图书单价、图书名称、小计 - 方法:计算小计、获取图书编号、获取图书数量、获取图书单价、获取图书名称、获取小计 3. 新建书库类BookStore,书库里存放了大量的图书,这里我们用ArrayList来存放,并初始化部分图书信息。 4. 新建顾客类Customer。每个顾客进入书库都可以获得一个购物车,这个购物车用HashMap来实现,图书的编号是它的键,捆扎后的BookShop是它的值。Customer类应该包含以下属性和方法: - 属性:购物车 - 方法:添加商品到购物车、删除购物车中的商品、计算购物车总价、打印购物车中的商品信息 5. 新建测试主类SY6_3_BuyCar,用于测试上述类的方法和功能。 以下是一个简单的代码实现示例,仅供参考: ``` //图书类 class Product { private int id; //图书编号 private String name; //图书名称 private double price; //图书单价 //构造方法 public Product(int id, String name, double price) { this.id = id; this.name = name; this.price = price; } //getter方法 public int getId() { return id; } public String getName() { return name; } public double getPrice() { return price; } } //购物车中的商品信息类 class BookShop { private int id; //图书编号 private int num; //图书数量 private double price; //图书单价 private String name; //图书名称 private double subtotal; //小计 //构造方法 public BookShop(int id, int num, double price, String name) { this.id = id; this.num = num; this.price = price; this.name = name; this.subtotal = num * price; } //计算小计 public void calculateSubtotal() { this.subtotal = num * price; } //getter方法 public int getId() { return id; } public int getNum() { return num; } public double getPrice() { return price; } public String getName() { return name; } public double getSubtotal() { return subtotal; } } //书库类 class BookStore { private ArrayList<Product> products; //存放图书信息的ArrayList //构造方法,初始化部分图书信息 public BookStore() { products = new ArrayList<Product>(); products.add(new Product(1, "Java编程思想", 79.0)); products.add(new Product(2, "Thinking in Java", 108.0)); products.add(new Product(3, "Head First 设计模式", 72.0)); products.add(new Product(4, "Java核心技术", 99.0)); } //根据图书编号获取图书信息 public Product getProductById(int id) { for (Product p : products) { if (p.getId() == id) { return p; } } return null; } } //顾客类 class Customer { private HashMap<Integer, BookShop> cart; //购物车 //构造方法,创建购物车 public Customer() { cart = new HashMap<Integer, BookShop>(); } //添加商品到购物车 public void addItem(int id, int num, BookStore store) { Product p = store.getProductById(id); if (p != null) { BookShop item = new BookShop(id, num, p.getPrice(), p.getName()); cart.put(id, item); } } //删除购物车中的商品 public void removeItem(int id) { cart.remove(id); } //计算购物车总价 public double getTotalPrice() { double total = 0.0; for (BookShop item : cart.values()) { item.calculateSubtotal(); total += item.getSubtotal(); } return total; } //打印购物车中的商品信息 public void printCart() { System.out.println("购物车中的商品信息:"); System.out.println("编号\t名称\t单价\t数量\t小计"); for (BookShop item : cart.values()) { item.calculateSubtotal(); System.out.println(item.getId() + "\t" + item.getName() + "\t" + item.getPrice() + "\t" + item.getNum() + "\t" + item.getSubtotal()); } System.out.println("总计:" + getTotalPrice()); } } //测试主类 public class SY6_3_BuyCar { public static void main(String[] args) { BookStore store = new BookStore(); //创建书库 Customer customer = new Customer(); //创建顾客 customer.addItem(1, 2, store); //向购物车中添加商品 customer.addItem(2, 1, store); customer.printCart(); //打印购物车中的商品信息 customer.removeItem(1); //从购物车中移除商品 customer.printCart(); } } ``` 注意,这只是一个简单的示例,您可以根据自己的需求进行修改和完善。同时,为了确保代码的正确性和可靠性,建议您在开发过程中采用适当的代码注释和单元测试。

相关推荐

最新推荐

recommend-type

JavaWeb后台购物车类实现代码详解

主要介绍了JavaWeb后台购物车类实现代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
recommend-type

vue实现购物车功能(商品分类)

主要为大家详细介绍了vue实现购物车功能,商品分类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Android实现商城购物车功能的实例代码

最近公司项目做商城模块,需要实现购物车功能,主要实现了单选、全选,金额合计,商品删除,商品数量加减等功能,这篇文章主要介绍了Android实现商城购物车功能,需要的朋友可以参考下
recommend-type

基于JavaScript实现添加到购物车效果附源码下载

而今天我给大家介绍一个更友好的解决方案。 查看演示 下载源码 默认情况下,购物车是隐藏不可见的,当用户点击添加到购物车按钮后,商品信息会添加到购物车,购物车会以按钮的形式出现在页面右下角,点击按钮则会...
recommend-type

eclipse的web项目实现Javaweb购物车的方法

主要介绍了eclipse的web项目实现Javaweb购物车的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。