文章目录
一.功能介绍
我们需要实现一个可以进行管理员操作和用户操作的图书管理系统,其中包括了管理员操作(查找,添加,删除,显示,退出系统);用户操作(查找,借阅,归还,退出系统).
管理员操作实例:
用户操作实例:
二.JAVA面向对象思想 包的分装
java面向对象的思想,让我们可以分装出来许多的包,包中也可以包含许多需要的类
在图书馆里系统中,我们需要准备3个包,分别是,book包(用来创建书这个对象的属性,同时创建一个书架用来存放书),user包(包含了管理员和普通用户),operation接口包(用来具体实现查找添加等逻辑)。
1.book包
2.user包 较复杂
3.operation包(接口包)
三.代码框架的搭建
1.book包 Book类
首先我们需要创建一个Book类,用来创建书的属性,同时面向对象的思想,我们需要对类中的成员属性进行分装(private修饰符),让他只能在类内使用不能再类外使用,如果要使用,需要get和set成员方法(set初始化成员属性,get返回成员属性,原本只能在类内访问,现在可以通过方法的引用来实现在类外的使用) ,同时使用构造方法来初始化对象的内容和属性。
注:get set方法和tostring方法在IDEA编译器中可以自动生成 鼠标右键然后进行选择
Book类 代码实现
package book;
//Book成员属性的创建 private修饰
public class Book {
private String name;//书名
private String author;//作者
private int price;//价格
private String type;//类型
private boolean isBorrowed;//是否被借出
/**
*构造方法 用来创建对象 初始化对象的内容和属性
*/
public Book(String name, String author, int price, String type) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
}
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 isBorrowed;
}
public void setBorrowed(boolean borrowed) {
isBorrowed = borrowed;
}
//toString方法
@Override
/**
* 重写toString的isBorrowed
*/
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price='" + price + '\'' +
", type='" + type + '\'' +
((isBorrowed == true) ? "已经借出":"未借出")+//三目运算符
'}';
}
2.book包 BookList类
我们需要准备一个书架来存放我们的书,我们可以把这个书架设为Book类型的数组,同时需要一个成员属性来记录此时我的书架中放了多少本书,同时构造方法也是不能少的,用来初始化对象的属性和内容,构造方法时可以在书架中先放入几本书。
代码如下:
public class BookList {
Book[] books = new Book[10];//可以存放十本书
private int usedSize;//记录当前的books这个数组里有多少本书
//构造方法
public BookList(){
books[0] = new Book("你的名字","新海诚",20,"轻小说");
books[1] = new Book("老人与海","海明威",25,"小说");
books[2] = new Book("天气之子","新海诚",22,"轻小说");
usedSize = 3;
}
在BookList书架中,我们要做到可以拿出书,也可以在书架中放入书,在你拿出书或者放入书的时候,还需要来实时的记录书架现存的书。
翻译为代码就是,需要一个方法来找到书的下标,需要一个方法来在合适的位置放入书,还需要get set方法来实时获取书架中书的个数。
代码如下:
//pos 位置是合法的 返回下标为pos的books数组里的书 拿到书
public Book getBook(int pos){
return books[pos];
}
/**
* book是你要放入的书(添加)
* pos位置是合法的
*/
public void setBooks(int pos,Book book) {
books[pos] = book;
}
/**
* 实时获取或修改Size的值
* @return
*/
public int getUsedSize() {
return usedSize;
}
public void setUsedSize(int size) {
usedSize = size;
}
}
BookList类完整代码:
package book;
public class BookList {
Book[] books = new Book[10];//可以存放十本书
private int usedSize;//记录当前的books这个数组里有多少本书
//构造方法
public BookList(){
books[0] = new Book("你的名字","新海诚",20,"轻小说"