在图书管理系统中为了方便管理图书,将图书划分为几个类别。每个类别 下有很多图书,每本图书都有相对应的类别,这就具备了一对多的关系映 射,即一个类别对应多本图书。 在这种情况下就可以使用 Map 映射来存储类别和图书信息,其键为 Category(类别)类型,值为 List 类型(BookInfo 类为图书类)。 现有如下操作: 查询所有图书类别 添加图书类别 修改图书类别信息 查询全部图书 根据图书类别查询图书(根据类别编号、根据类别名称) 根据图书名字查询图书 根据图书编号修改图书信息 根据图书编号删除图书信息 根据图书价格查找图书(可以指定具体价格,也可以指定区间价格) 根据图书作者查找图书(注意,一个作者可能有多个图书)
时间: 2023-12-04 17:05:08 浏览: 126
好的,我可以为您提供一个简单的Java实现,实现上述操作。
首先,我们定义一个类BookInfo来表示图书的信息,包括编号、名称、类别、价格、作者等等。
```java
public class BookInfo {
private int id;
private String name;
private String category;
private double price;
private String author;
// 其他信息
public BookInfo(int id, String name, String category, double price, String author) {
this.id = id;
this.name = name;
this.category = category;
this.price = price;
this.author = author;
}
// getter和setter方法
}
```
然后,我们可以创建一个map,将每个图书类别映射到一个包含该类别所有书籍的List中。
```java
Map<String, List<BookInfo>> booksByCategory = new HashMap<>();
```
接下来,我们可以定义一些方法来对图书信息进行操作。
添加图书类别:
```java
public void addCategory(String category) {
if (!booksByCategory.containsKey(category)) {
booksByCategory.put(category, new ArrayList<>());
}
}
```
修改图书类别信息:
```java
public void updateCategory(String oldCategory, String newCategory) {
if (booksByCategory.containsKey(oldCategory)) {
List<BookInfo> list = booksByCategory.remove(oldCategory);
booksByCategory.put(newCategory, list);
}
}
```
查询全部图书:
```java
public List<BookInfo> getAllBooks() {
List<BookInfo> list = new ArrayList<>();
for (List<BookInfo> books : booksByCategory.values()) {
list.addAll(books);
}
return list;
}
```
根据图书类别查询图书:
```java
public List<BookInfo> getBooksByCategory(String category) {
if (booksByCategory.containsKey(category)) {
return booksByCategory.get(category);
} else {
return new ArrayList<>();
}
}
public List<BookInfo> getBooksByCategoryId(int categoryId) {
String category = getCategoryById(categoryId);
return getBooksByCategory(category);
}
public List<BookInfo> getBooksByCategoryName(String categoryName) {
return getBooksByCategory(categoryName);
}
```
根据图书名字查询图书:
```java
public List<BookInfo> getBooksByName(String name) {
List<BookInfo> list = new ArrayList<>();
for (List<BookInfo> books : booksByCategory.values()) {
for (BookInfo book : books) {
if (book.getName().equals(name)) {
list.add(book);
}
}
}
return list;
}
```
根据图书编号修改图书信息:
```java
public boolean updateBookById(int id, BookInfo newBook) {
for (List<BookInfo> books : booksByCategory.values()) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getId() == id) {
books.set(i, newBook);
return true;
}
}
}
return false;
}
```
根据图书编号删除图书信息:
```java
public boolean deleteBookById(int id) {
for (List<BookInfo> books : booksByCategory.values()) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getId() == id) {
books.remove(i);
return true;
}
}
}
return false;
}
```
根据图书价格查找图书:
```java
public List<BookInfo> getBooksByPrice(double price) {
List<BookInfo> list = new ArrayList<>();
for (List<BookInfo> books : booksByCategory.values()) {
for (BookInfo book : books) {
if (book.getPrice() == price) {
list.add(book);
}
}
}
return list;
}
public List<BookInfo> getBooksByPriceRange(double minPrice, double maxPrice) {
List<BookInfo> list = new ArrayList<>();
for (List<BookInfo> books : booksByCategory.values()) {
for (BookInfo book : books) {
if (book.getPrice() >= minPrice && book.getPrice() <= maxPrice) {
list.add(book);
}
}
}
return list;
}
```
根据图书作者查找图书:
```java
public List<BookInfo> getBooksByAuthor(String author) {
List<BookInfo> list = new ArrayList<>();
for (List<BookInfo> books : booksByCategory.values()) {
for (BookInfo book : books) {
if (book.getAuthor().equals(author)) {
list.add(book);
}
}
}
return list;
}
```
注意,这只是一个简单的实现,实际应用中可能需要更加完善的功能和更加严密的数据校验。
阅读全文