项目介绍:此项目的业务代码方面比较简单,实现的功能也比较简单,只有查找,删除,增加,借阅,归还书籍这些简单的操作。而借阅,归还等等也只是用书籍的一个boolean数据成员来保存。练习此项目的主要目的是学习巩固Java的接口,类和对象,多态,动态绑定等面向对象的知识。
大致分为几个模块:
1. book包,存储Book.java 和 BookList.java 它的作用从名字就可以看出了
2. operation包,以一个IOperation接口为根本,将那些操作封装为类,这些类都implements那个IOperation接口。主要就是提供那些增,删,查,借阅,归还的操作。详细见下文。
3. user包,User.java GeneralUser.java Administrator.java 用到了继承和多态,细节见下文。
最后就是一个main.cpp 文件,作为以上三个包的对象的汇总,实现这个图书馆管理系统。
注: 此项目的实现逻辑并不一定是最好的,也不一定是合理的,旨在学习面向对象编程。
book包
Book.java
package book;
/**
* Created with IntelliJ IDEA.
* Description:
* User: yangzilong
* Date: 2022-07-03
* Time: 15:38
*/
public class Book {
private String bookName;
private String authorName;
private double price;
private String type;
private boolean isBorrowed;
public Book(String bookName, String authorName, double price, String type) {
this.bookName = bookName;
this.authorName = authorName;
this.price = price;
this.type = type;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookName() {
return bookName;
}
public void setAuthorName(String authorName) {
this.authorName = authorName;
}
public String getAuthorName() {
return authorName;
}
public void setPrice(double price) {
this.price = price;
}
public double getPrice() {
return price;
}
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
}
public boolean isBorrowed() {
return isBorrowed;
}
public void setBorrowed(boolean borrowed) {
isBorrowed = borrowed;
}
@Override // 重写Object类的toString方法。
public String toString() {
return "Book{" +
"bookName='" + bookName + '\'' +
", authorName='" + authorName + '\'' +
", price=" + price +
", type='" + type + '\'' +
", isBorrowed:" + (isBorrowed ?"Yes":"No") +
'}';
}
}
一个Java文件,建议只写一个类。这个Book类存储了书籍的基本信息,以及构造函数。剩余的就是对于每个数据成员的setter和getter方法。以及为了方便打印Book类对象信息而重写Object类的toString方法。其中的getter和setter方法,是为了实现后面在BookList类的功能而准备的接口,将数据成员封装起来,对外使用接口对这些数据成员进行操作。只有几个是后面用到的。当然,如果你后面想要扩展这个管理系统的功能,剩余的方法也会用到。
BookList.java
package book;
/**
* Created with IntelliJ IDEA.
* Description:
* User: yangzilong
* Date: 2022-07-03
* Time: 15:53
*/
public class BookList {
private Book[] books;
private int numOfBook;
publ