目录
前言
原码:https://gitee.com/dai-wenxiao/java_-study/tree/master/20220731
这里利用类和对象、继承和多态、抽象类和接口知识点来做一个简单的图书管理系统,这里的重点不在于业务逻辑的实现,重点是使用面向对象的思想来实现,这有利用我们对知识点的深入理解。
每个人对业务逻辑的实现能力是不同的,这里的图书系统只是简单的实现,没有考虑到具体的业务逻辑的细节,下面的实现都是合法的。
一、图书管理系统的具体功能
图书系统中对每一本书都要有详细的介绍,方便管理员和用户查阅等其他的操作;图书管理系统对管理员和普通用户都开放了不同的权限。下面进行简单的说明:
书的属性:
1.书名
2.作者
3.价格
4.类型
5.是否借出
管理员:
1.查找图书
2.新增图书
3.删除图书
4.显示图书
0.退出系统
普通用户:
1.查找图书
2.借阅图书
3.归还图书
0.退出系统
二、抽象类和功能介绍
2.1 抽象书
我们对书抽象可以分为两个类:
1.书的属性
2.放书的书架,该书架里面应该具备特定的功能,下面进行描述(方法没有具体实现):
🚀通过下标可以返回该下标所指向的书籍,并打印
🚀给定一个位置,放入一本新书进去
🚀可以实时监控书架里面存放书籍的数量,并进行修改
🚀增删查改等等操作(但是呢为了规范,我们把这些增删查改等操作写在一个包里;因为在这个系统里,我们都是对Book[]数组进行操作,功能就是一个接口,标准的规范,我们自己定义一个标准的规范;上面三个不用写在一起)
我们定义一个book的包,在包下进行类的抽象:
下面具体的代码实现:
Book类的实现:
public class Book {
//为了代码的简洁,不占用大量的篇幅,这里的数据元素都设置为公开,
//private修饰,提供get、set方法即可
public String name;
public String author;
public int price;
public String type;
public boolean isBorrowed;//是否借出
public Book(String name, String author, int price, String type) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
//这里不用初始化,因为boolean的默认返回值是false和true
//我们用true表示一借出,false表示未借出。
//this.isBorrowed = isBorrowed;
}
//重写toString()方法
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
/*", isBorrowed=" + isBorrowed*/
((isBorrowed == true)?"已借出":"未借出")+//对isBorrowed赋值借出与否,这样更直观
'}';
}
}
BookList的代码实现:
//一个书架,用来存放书籍
public class BookList {
public Book[] books = new Book[10];//最多存放10本书
public int useSize;//实时当前Book[]里面存有多少本书
public BookList(){
//网上找的,不一定准确
//new BookList();时就会有三本书了
books[0] = new Book("数据结构c语言","严蔚敏",19,"专业书");
books[1] = new Book("操作系统","孟庆昌,牛欣源",29,"专业书");
books[2] = new Book("计算机组成原理","蒋本珊",39,"专业书");
useSize = 3;
}
//给定一个位置,返回该位置下对应的书籍
public Book getBook(int pos){
return books[pos];
}
//给定一个位置,放一本新书到改位置下
public void setBooks(int pos,Book data){
books[pos] = data;
}
//记录书架里面有多少本书
public int getUseSize(){
return useSize;
}
//修改书架里面的书籍数量
public void setUseSize(