设计一个简单的图书管理系统
1.需求分析:
该系统需要实现以下功能:
1.1 图书入库:管理员可以将新的图书添加到系统中,并且需要记录图书的基本信息(如书名、作者、出版社、出版日期、价格等)。
1.2 图书借阅:用户可以通过系统查询图书信息,并借阅自己需要的图书。借阅成功后,需要记录借阅信息(如借阅人、借阅日期、归还日期等)。
1.3 图书归还:用户需要在规定日期内归还借阅的图书,归还成功后需要更新借阅信息。
1.4 图书查询:用户可以通过系统查询图书信息,包括图书基本信息以及借阅情况。
2.类设计:
根据上述需求,我们可以设计以下类:
2.1 Book类:用于记录图书的基本信息。
属性:书名、作者、出版社、出版日期、价格等。
方法:构造方法、toString方法等。
2.2 BorrowRecord类:用于记录图书的借阅信息。
属性:借阅人、借阅日期、归还日期等。
方法:构造方法、toString方法等。
2.3 Library类:用于实现图书管理系统的主要功能。
属性:存储所有图书的列表、存储所有借阅记录的列表等。
方法:添加图书、借阅图书、归还图书、查询图书等。
3.类图:
根据上述类设计,我们可以得到以下类图:
![image-20211214154055436](C:\Users\86186\AppData\Roaming\Typora\typora-user-images\image-20211214154055436.png)
4.代码实现:
4.1 Book类的代码实现:
```java
public class Book {
private String title;
private String author;
private String publisher;
private String publishDate;
private double price;
public Book(String title, String author, String publisher, String publishDate, double price) {
this.title = title;
this.author = author;
this.publisher = publisher;
this.publishDate = publishDate;
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"title='" + title + '\'' +
", author='" + author + '\'' +
", publisher='" + publisher + '\'' +
", publishDate='" + publishDate + '\'' +
", price=" + price +
'}';
}
}
```
4.2 BorrowRecord类的代码实现:
```java
public class BorrowRecord {
private String borrower;
private String borrowDate;
private String returnDate;
public BorrowRecord(String borrower, String borrowDate, String returnDate) {
this.borrower = borrower;
this.borrowDate = borrowDate;
this.returnDate = returnDate;
}
@Override
public String toString() {
return "BorrowRecord{" +
"borrower='" + borrower + '\'' +
", borrowDate='" + borrowDate + '\'' +
", returnDate='" + returnDate + '\'' +
'}';
}
}
```
4.3 Library类的代码实现:
```java
import java.util.ArrayList;
public class Library {
private ArrayList<Book> books;
private ArrayList<BorrowRecord> records;
public Library() {
books = new ArrayList<>();
records = new ArrayList<>();
}
// 添加图书
public void addBook(Book book) {
books.add(book);
}
// 借阅图书
public boolean borrowBook(String title, String borrower, String borrowDate, String returnDate) {
for (Book book : books) {
if (book.getTitle().equals(title)) {
records.add(new BorrowRecord(borrower, borrowDate, returnDate));
return true;
}
}
return false;
}
// 归还图书
public boolean returnBook(String title) {
for (BorrowRecord record : records) {
if (record.getTitle().equals(title)) {
records.remove(record);
return true;
}
}
return false;
}
// 查询图书
public Book searchBook(String title) {
for (Book book : books) {
if (book.getTitle().equals(title)) {
return book;
}
}
return null;
}
// 查询借阅记录
public ArrayList<BorrowRecord> searchRecord(String borrower) {
ArrayList<BorrowRecord> result = new ArrayList<>();
for (BorrowRecord record : records) {
if (record.getBorrower().equals(borrower)) {
result.add(record);
}
}
return result;
}
}
```
5.测试代码:
```java
public class Test {
public static void main(String[] args) {
Book book1 = new Book("Java基础教程", "张三", "清华出版社", "2021-01-01", 29.9);
Book book2 = new Book("Python基础教程", "李四", "人民邮电出版社", "2022-01-01", 39.9);
Library library = new Library();
library.addBook(book1);
library.addBook(book2);
boolean borrowResult = library.borrowBook("Java基础教程", "张三", "2022-01-01", "2022-02-01");
if (borrowResult) {
System.out.println("借阅成功!");
} else {
System.out.println("借阅失败!");
}
boolean returnResult = library.returnBook("Java基础教程");
if (returnResult) {
System.out.println("归还成功!");
} else {
System.out.println("归还失败!");
}
Book searchResult = library.searchBook("Java基础教程");
if (searchResult != null) {
System.out.println(searchResult);
} else {
System.out.println("没有找到该图书!");
}
ArrayList<BorrowRecord> recordResult = library.searchRecord("张三");
if (recordResult.size() > 0) {
for (BorrowRecord record : recordResult) {
System.out.println(record);
}
} else {
System.out.println("没有找到该用户的借阅记录!");
}
}
}
```
6.运行结果:
```
借阅成功!
归还成功!
Book{title='Java基础教程', author='张三', publisher='清华出版社', publishDate='2021-01-01', price=29.9}
BorrowRecord{borrower='张三', borrowDate='2022-01-01', returnDate='2022-02-01'}
```