编写一个Java 应用程序,实现使用集合存储数据的图书销售管理子系统。

时间: 2023-06-17 17:08:56 浏览: 50
好的,下面是一个简单的Java应用程序,它使用集合存储数据的图书销售管理子系统。具体实现如下: 1. Book类:表示一本书,包含以下属性和方法: ```java public class Book { private String title; private String author; private String publisher; private double price; private int quantity; public Book(String title, String author, String publisher, double price, int quantity) { this.title = title; this.author = author; this.publisher = publisher; this.price = price; this.quantity = quantity; } // getters and setters // toString method } ``` 2. BookStore类:表示一个图书店,包含以下属性和方法: ```java import java.util.ArrayList; import java.util.List; public class BookStore { private List<Book> books; public BookStore() { books = new ArrayList<Book>(); } public void addBook(Book book) { books.add(book); } public void removeBook(Book book) { books.remove(book); } public List<Book> searchBooksByTitle(String title) { List<Book> result = new ArrayList<Book>(); for (Book book : books) { if (book.getTitle().equals(title)) { result.add(book); } } return result; } public List<Book> searchBooksByAuthor(String author) { List<Book> result = new ArrayList<Book>(); for (Book book : books) { if (book.getAuthor().equals(author)) { result.add(book); } } return result; } public List<Book> searchBooksByPublisher(String publisher) { List<Book> result = new ArrayList<Book>(); for (Book book : books) { if (book.getPublisher().equals(publisher)) { result.add(book); } } return result; } public List<Book> getAllBooks() { return books; } } ``` 3. BookStoreApp类:表示一个图书销售管理子系统的应用程序,包含以下方法: ```java import java.util.List; import java.util.Scanner; public class BookStoreApp { private static Scanner scanner = new Scanner(System.in); private static BookStore bookStore = new BookStore(); public static void main(String[] args) { boolean isRunning = true; while (isRunning) { 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("7. 退出"); int choice = scanner.nextInt(); scanner.nextLine(); // consume the newline character switch (choice) { case 1: addBook(); break; case 2: removeBook(); break; case 3: searchBooksByTitle(); break; case 4: searchBooksByAuthor(); break; case 5: searchBooksByPublisher(); break; case 6: getAllBooks(); break; case 7: isRunning = false; break; default: System.out.println("无效的选择!"); break; } } } private static void addBook() { System.out.println("请输入书名:"); String title = scanner.nextLine(); System.out.println("请输入作者名:"); String author = scanner.nextLine(); System.out.println("请输入出版社:"); String publisher = scanner.nextLine(); System.out.println("请输入价格:"); double price = scanner.nextDouble(); System.out.println("请输入数量:"); int quantity = scanner.nextInt(); scanner.nextLine(); // consume the newline character Book book = new Book(title, author, publisher, price, quantity); bookStore.addBook(book); System.out.println("添加成功!"); } private static void removeBook() { System.out.println("请输入书名:"); String title = scanner.nextLine(); List<Book> booksToRemove = bookStore.searchBooksByTitle(title); if (booksToRemove.isEmpty()) { System.out.println("没有找到该书!"); } else { System.out.println("找到以下书籍:"); for (int i = 0; i < booksToRemove.size(); i++) { System.out.println((i+1) + ". " + booksToRemove.get(i).toString()); } System.out.println("请选择要删除的书籍编号:"); int choice = scanner.nextInt(); scanner.nextLine(); // consume the newline character if (choice < 1 || choice > booksToRemove.size()) { System.out.println("无效的选择!"); } else { Book bookToRemove = booksToRemove.get(choice-1); bookStore.removeBook(bookToRemove); System.out.println("删除成功!"); } } } private static void searchBooksByTitle() { System.out.println("请输入书名:"); String title = scanner.nextLine(); List<Book> books = bookStore.searchBooksByTitle(title); if (books.isEmpty()) { System.out.println("没有找到该书!"); } else { System.out.println("找到以下书籍:"); for (Book book : books) { System.out.println(book.toString()); } } } private static void searchBooksByAuthor() { System.out.println("请输入作者名:"); String author = scanner.nextLine(); List<Book> books = bookStore.searchBooksByAuthor(author); if (books.isEmpty()) { System.out.println("没有找到该作者的书籍!"); } else { System.out.println("找到以下书籍:"); for (Book book : books) { System.out.println(book.toString()); } } } private static void searchBooksByPublisher() { System.out.println("请输入出版社:"); String publisher = scanner.nextLine(); List<Book> books = bookStore.searchBooksByPublisher(publisher); if (books.isEmpty()) { System.out.println("没有找到该出版社的书籍!"); } else { System.out.println("找到以下书籍:"); for (Book book : books) { System.out.println(book.toString()); } } } private static void getAllBooks() { List<Book> books = bookStore.getAllBooks(); if (books.isEmpty()) { System.out.println("暂无书籍!"); } else { System.out.println("当前库存:"); for (Book book : books) { System.out.println(book.toString()); } } } } ``` 这个程序提供了以下功能: 1. 添加书籍 2. 删除书籍 3. 按书名查询 4. 按作者查询 5. 按出版社查询 6. 查看全部 7. 退出 用户可以选择相应的操作。当用户选择添加书籍时,程序会要求用户输入书籍信息,并将其添加到图书店的库存中。当用户选择删除书籍时,程序会先按书名查询出相应的书籍,然后让用户选择要删除的书籍。当用户选择查询时,程序会按指定的条件查询出相应的书籍并显示出来。当用户选择查看全部时,程序会列出当前库存中的所有书籍。当用户选择退出时,程序会结束运行。

相关推荐

最新推荐

recommend-type

2024年全国职业院校技能大赛集成电路应用开发赛项竞赛试题(04 卷)

2024年全国职业院校技能大赛集成电路应用开发赛项竞赛试题(04 卷)
recommend-type

Bihl+Wiedemann BWU376024 ASi-3 PROFINET 网关,单主站 GSD文件

Bihl+Wiedemann BWU376024 ASi-3 PROFINET 网关,单主站 GSD文件
recommend-type

植物大战僵尸.docx

《植物大战僵尸》是一款由美国宝开游戏公司(PopCap Games)开发的益智策略类塔防游戏,于2009年5月5日正式发售。这款游戏以其独特的玩法和丰富的角色设定吸引了大量玩家。 首先,游戏的核心玩法是玩家通过种植不同的植物来防御入侵的僵尸。游戏中植物种类繁多,每种植物都有其独特的攻击方式和功能,如豌豆射手、向日葵、樱桃炸弹等。其中,豌豆射手作为玩家的第一道防线,能够发射豌豆攻击僵尸;向日葵则是收集阳光的重要来源,为种植更多植物提供能量;樱桃炸弹则能一次性炸飞一片区域内的所有僵尸。 其次,游戏中的僵尸种类也非常丰富,从最基本的普通僵尸到拥有各种特殊能力的僵尸,如路障头僵尸、撑杆跳僵尸、铁桶头僵尸等,每种僵尸都有其独特的特性和攻击方式。玩家需要根据不同僵尸的特点,合理安排植物的种植位置和种类,以达到最佳的防御效果。 此外,游戏还设置了多种游戏模式,如冒险模式、小游戏、解密模式等,让玩家在游戏中体验不同的挑战和乐趣。同时,游戏还支持多人合作玩法,玩家可以与朋友一起合作抵御僵尸的入侵。 总的来说,《植物大战僵尸》以其独特的玩法、丰富的角色设定和多样化的游戏模式,成为了一款备受欢迎的游
recommend-type

2024年全国职业院校技能大赛集成电路应用开发赛项竞赛试题(03卷)

2024年全国职业院校技能大赛集成电路应用开发赛项竞赛试题(03卷)
recommend-type

(人事)档案室安全设备明细表.docx

(人事)档案室安全设备明细表.docx
recommend-type

STC89C51 简单时钟

STC89C51 简单时钟,叫你从基础开始学习单片机,
recommend-type

管理建模和仿真的文件

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

MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?

![MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?](https://www.finebi.com/wp-content/uploads/2019/11/FineBI%E8%A1%8C%E4%B8%9A%E9%A9%BE%E9%A9%B6%E8%88%B1-1024x510.png) # 1. MATLAB归一化概述 归一化是一种数据预处理技术,用于将数据缩放到特定范围内,从而消除不同特征之间的尺度差异。在MATLAB中,有各种归一化方法可用于不同类型的数据和应用程序。 归一化的主要目的是: - 提高模型的训练效率和准确性,通过消除特征之间的尺度差异,使模型能够更有效地学习
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

Linux系统常用操作命令大全手册

附件是Linux系统常用操作命令大全手册,是 markdown格式,其中覆盖了Linux系统管理、文件操作、网络配置等多个方面,都是日常工作中非常常用的命令,欢迎大家下载学习使用!