书店管理系统设计与实现
设计实现一个简易的书店管理系统
核心功能
实时更新前三名最畅销的书籍及其销量。
使用多个类来实现,体现面向对象的设计思想。
提供简单的控制台交互界面,方便测试功能。
结构设计
Book类 - 基础类,包含书籍的基本属性和方法
BookStore类 - 核心业务逻辑,登记进店书籍,模拟用户销售行为,维持最畅销的前三本书的逻辑
BookStoreUI类 - 模拟用户交互
Book类
public class Book {
// 书刊号
private String bookISBN;
// 书名
private String bookName;
// 作者
private String bookAuthor;
// 出版社
private String bookPublisher;
// 描述
private String bookDescription;
// 类别
private String bookCategory;
// 价格
private double bookPrice;
// 销售数量
private int salesNums;
// 库存数量
private int bookQuantity;
public Book(String bookISBN, String bookName, String bookAuthor, String bookPublisher,
String bookDescription, String bookCategory, double bookPrice) {
this.bookISBN = bookISBN;
this.bookName = bookName;
this.bookAuthor = bookAuthor;
this.bookPublisher = bookPublisher;
this.bookDescription = bookDescription;
this.bookCategory = bookCategory;
this.bookPrice = bookPrice;
this.salesNums = 0;
this.bookQuantity = 0;
}
public String getBookISBN() {
return bookISBN;
}
public void setBookISBN(String bookISBN) {
this.bookISBN = bookISBN;
}
public void addSales(int quantity) {
salesNums += quantity;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAuthor() {
return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public String getBookPublisher() {
return bookPublisher;
}
public void setBookPublisher(String bookPublisher) {
this.bookPublisher = bookPublisher;
}
public String getBookDescription() {
return bookDescription;
}
public void setBookDescription(String bookDescription) {
this.bookDescription = bookDescription;
}
public String getBookCategory() {
return bookCategory;
}
public void setBookCategory(String bookCategory) {
this.bookCategory = bookCategory;
}
public double getBookPrice() {
return bookPrice;
}
public void setBookPrice(double bookPrice) {
this.bookPrice = bookPrice;
}
public int getSalesNums() {
return salesNums;
}
public void setSalesNums(int salesNums) {
this.salesNums = salesNums;
}
public int getBookQuantity() {
return bookQuantity;
}
public void setBookQuantity(int bookQuantity) {
this.bookQuantity = bookQuantity;
}
}
BookStore类
import java.util.*;
import java.util.stream.Collectors;
public class BookStore {
private String bookStoreName; //
private Map<String, Book> bookList; // 书店的书籍
public BookStore() {
this.bookList = new HashMap<>();
}
public void addBook(Book book) {
String bookISBN = book.getBookISBN();
if(bookList.containsKey(bookISBN)) {
Book bookExist = bookList.get(bookISBN);
book.setBookQuantity(bookExist.getBookQuantity() + 1);
bookList.put(book.getBookISBN(), book);
} else {
book.setBookQuantity(1);
bookList.put(book.getBookISBN(), book);
}
}
public void saleBook(String bookISBN) {
if (this.bookList.containsKey(bookISBN)) {
if (this.bookList.get(bookISBN).getBookQuantity() > 0){
Book book = this.bookList.get(bookISBN);
int salesNums = book.getSalesNums();
int bookQuantity = book.getBookQuantity();
book.setSalesNums(++salesNums);
book.setBookQuantity(--bookQuantity);
} else {
System.out.println(bookISBN + " is sold!");
}
} else {
System.out.println("Book Not Found");
}
}
/**
* 获取销售的前三的书籍
* @return
*/
public List<Book> getTop3Bestsellers() {
return bookList.values().stream()
.sorted((b1, b2) -> Integer.compare(b2.getSalesNums(), b1.getSalesNums()))
.limit(3)
.collect(Collectors.toList());
}
public String getInventoryList() {
return bookList.values().stream()
.map(b -> String.format("ISBN:%s, 书名:%s, 库存:%d", b.getBookISBN(), b.getBookName(), b.getBookQuantity()))
.collect(Collectors.joining("\n"));
}
public void showBestsellers() {
List<Book> bestsellers = getTop3Bestsellers();
System.out.println("\n=== 畅销榜 TOP3 ===");
for (int i = 0; i < bestsellers.size(); i++) {
Book book = bestsellers.get(i);
System.out.printf("%d. %s - 销量:%d 本\n",
i + 1, book.getBookName(), book.getSalesNums());
}
}
public void initBookStore(String bookStoreName) {
this.bookStoreName = bookStoreName;
System.out.printf("您成功创办了一家书店:%s\n", bookStoreName);
System.out.printf("目前该书店有%d本书\n", bookList.size());
}
}
BookStoreUI类
import java.util.Scanner;
public class BookStoreUI {
private Scanner scanner;
private BookStore bookStore;
public BookStoreUI() {
bookStore = new BookStore();
scanner = new Scanner(System.in);
}
public void start() {
bookStore.initBookStore("小明书店");
while (true) {
System.out.print("\n命令列表:\n0. 批量添加书籍\n1. 添加书籍\n2. 购买书籍\n3. 显示畅销榜\n4. 退出\n请选择操作:");
Integer answer = scanner.nextInt();
switch (answer) {
case 0:
batchAddBook();
break;
case 1:
addBook();
break;
case 2:
saleBook();
break;
case 3:
bookStore.showBestsellers();
break;
case 4:
System.out.println("系统已退出");
scanner.close();
return;
default:
System.out.println("test");
}
}
}
private void saleBook(){
System.out.print("请输入要购买的书籍ISBN号:");
String bookISBN = scanner.next();
bookStore.saleBook(bookISBN);
}
private void batchAddBook(){
System.out.print("请输入书籍的信息:");
if(scanner.hasNext()){
String[] books = scanner.next().split(",");
for (String book : books) {
addBook(book);
}
System.out.println("书籍添加成功!当前库存:\n" + bookStore.getInventoryList());
}
}
private void addBook(String bookDetails){
String[] bookSplit = bookDetails.split("\\|");
String bookISBN = bookSplit[0];
String bookName = bookSplit[1];
String bookAuthor = bookSplit[2];
String bookPublisher = bookSplit[3];
String bookDescription = bookSplit[4];
String bookCategory = bookSplit[5];
Double bookPrice = Double.valueOf(bookSplit[6]);
Book book = new Book(bookISBN, bookName, bookAuthor, bookPublisher, bookDescription, bookCategory, bookPrice);
bookStore.addBook(book);
}
private void addBook(){
System.out.print("请输入书籍的信息:");
if(scanner.hasNext()){
String bookDetails = scanner.next();
addBook(bookDetails);
System.out.println("书籍添加成功!当前库存:\n" + bookStore.getInventoryList());
}
}
public static void main(String[] args) {
BookStoreUI bookStoreUI = new BookStoreUI();
bookStoreUI.start();
}
}
实现效果
1.从启动类启动:
2.有批量添加书籍和单个添加书籍的功能
3.批量添加数据
4.展示畅销榜
测试使用的数据
9787111213826|Java编程思想|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213826|Java编程思想|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213826|Java编程思想|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213827|Python数据分析|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213827|Python数据分析|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213827|Python数据分析|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213827|Python数据分析|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213827|Python数据分析|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213828|计算机网络|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213828|计算机网络|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213829|数据结构与算法|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213829|数据结构与算法|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213829|数据结构与算法|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213829|数据结构与算法|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213829|数据结构与算法|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213829|数据结构与算法|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213829|数据结构与算法|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213830|MySQL必知必会|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213831|计算机组成原理|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213831|计算机组成原理|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213831|计算机组成原理|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213831|计算机组成原理|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213831|计算机组成原理|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5,9787111213831|计算机组成原理|埃克尔|机械工业出版社|本书赢得了全球程序员的广泛赞誉|编程技术|99.5
书店管理系统设计与实现
https://www.orioncoder.cn/archives/shu-dian-guan-li-xi-tong-she-ji-yu-shi-xian