前言
在信息时代,图书馆作为知识传播的重要场所,其管理和服务效率直接影响到读者的体验和获取信息的能力。一个高效的图书馆管理系统不仅能够提高书籍的管理效率,还能提升用户的借阅体验。因此,开发一个功能全面、易于使用的图书馆管理系统显得尤为重要。
一、系统结构MBS
图书管理系统(MBS)的核心分为三个部分:书籍的属性、人的操作(管理员和用户)、书籍的操作(操作:借书,还书)
所以我们将上述三个主要部分分为三个包:Book、operation、user。下面是实现各个部分的操作:

二、图书管理系统基础(MBS)
1.1 Book
创建book包时我需要思考,MBS含有什么信息,含有book信息以及存放book的地方,所以我们创建Book、Booklist两个类,Book用来描述书籍的各种基本信息,Booklist用来存放书籍,在图书馆中相当于书架,用来保存书籍。

1.2Book类
在Book类中我们需要定义成员变量来赋值书籍的基本信息,以及定义基础书籍信息的模板:
private String name;//书名
private String author;//作者
private int price;//价格
private String type;//书的类型
private boolean borrowed;//是否被借出
当我们新增一本书时,我们需要对书的信息进行赋值进行变量保存,还有一点是新增的图书是默认没有借出的状态,默认boolean值为false,所以在构造方法中不用进行初始化,这里我们需要注意的是this的用法,this能调用成员变量的值,当然这里可不添加,我们平时还是添加好一点:
public Book(String name, String auther, int price, String type) {
this.name = name;
this.author = auther;
this.price = price;
this.type = type;
}
然而在上述的private代码中,我们定义的成员变量是用private访问修饰限定符修饰的变量,是私有的,不能直接调用,不能被其他类进行访问,所以我们需要建立set与get方法进行间接的访问。这些我们的idea可以直接帮我进行生成,如下:
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isBorrowed() {
return borrowed;
}
public void setBorrowed(boolean borrowed) {
this.borrowed = borrowed;
}
书籍的基本信息都会被记录,如果我们想查看书籍的基本信息,怎么做呢,我们可以进行tostring重写进行打印:
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", auther='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
", borrowed=" + borrowed +
'}';
}
2.1Booklist类
书籍的信息记录我们完成了,那么图书馆有书了还不行,还要有书架吧,所以我们创建一个书架类,进行书籍的存放,并且能够记录书籍的数量以及书籍的“借还”状态,当然书架的大小也是我们需要考虑的,我们创建的这个书架可以放多少本输,以及可不可以通过管理员的前台操作进行对书架的扩张。这些都是可以的实现的,这里我们先不实现。
public class Booklist {
private Book[ ]books;//存放书的数量
private static final int DEFAULT_SIZE=10;
private int deposit;//存放了几本书
这个也是使用了private修饰符,所以也需要set与get方法来间接访问,才能访问出Booklist的信息:
public int getDeposit() {
return deposit;
}
public void setDeposit(int deposit) {
this.deposit = deposit;
}
public Book getBook(int pos){
return books[pos];
}
public void setBook(int pos,Book book){
books[pos]=book;
}
那么下面进行一些书籍的默认进行存放,写Booklist的构造方法:
public Booklist(){
this.books = new Book[DEFAULT_SIZE];
this.books[0]=new Book("三国演义","罗贯中",20,"武侠 ");
this.books[1]=new Book("西游记","吴承恩",21,"神话");
this.books[2]=new Book("钢铁怎样炼成的","奥斯特诺夫斯基",52,"小说");
this.deposit=3;
}
3.1user用户类
在图书管理系统上我们需要有两中用户,一种是借书的人,另一种是管理员,两种用户都拥有共同的属性就是有名字,那么我们可以定义一个父类,如何供于管理员与借书员的使用:
public abstract class User {
public String name;
public User(String name){
this.name=name;
}
}
3.2用户类(NomUser)
在上面我们已经定义了用户的父类,所以我们只需要调用父类的构造方法就好了:
public class NomUser extends User {
public NomUser(String name){
super(name);
}
}
3.3管理员类(Administrator)
所以同理,我们也只需要调用父类的构造方法就好了:
public class AdminUser extends User {
public AdminUser(String name) {
super(name);
}
}
以上就是我们用户类的User的基础框架。
4.图书管理系统的操作菜单
用户类菜单如下所示:
1.查找图书
2.借阅图书
3.归还图书
0.退出系统
管理类菜单如下所以:
1.查找图书
2.新增图书
3.删除图书
4.显示图书
0.推出系统
4.2操作包(operation)
创建这个包是为了实现上述操作,如何在包中创建个个类实现,下面是我们创建的实现各个功能的类:

Addbook类:
public class AddBook implements IOPeration{
public void work(Booklist books){
System.out.println("新增图书");
}
}
BorrowedBook类:
public class BorrowedBook implements IOPeration {
public void work(Booklist books){
System.out.println("借阅图书");
}
}
DelBook类:
public class DelBook implements IOPeration{
public void work(Booklist books){
System.out.println("删除图书");
}
}
ExitBook类:
public class ExitBook implements IOPeration{
public void work(Booklist books){
System.out.println("退出系统");
}
}
FindBook类:
public class FindBook implements IOPeration {
public void work(Booklist books){
System.out.println("查找图书");
}
}
ReturnBook类:
public class ReturnBook implements IOPeration{
public void work(Booklist books)
{
System.out.println("归还图书");
}
}
ShowBook类:
public class ShowBo implements IOPeration{
public void work(Booklist books){
System.out.println("显示图书");
}
}
以上是我们对操作菜单实现的类,然而我们发现我们用户菜单与管理员菜单有很多相同的属性,我们怎么区分呢怎么使用呢这里我们就可以创建一个接口把他们整合起来进行类型的统一,这样我们就可以实现多态,这样可以减小代码的负担以及代码的沉浮。
IOPerate接口:
public interface IOPeration {//统一类型
void work(Booklist books);
}
这样通过建立IOPerate的连接,组成了图书管理系统的基本框架。后续的代补充。
3987

被折叠的 条评论
为什么被折叠?



