目录
一、框架的搭建
1.1功能展示
1.这里我们先来展示一下最后的功能,根据所需要的功能我们来搭建需要的大致框架
管理员界面:
当你输入1时,进入管理员的系统目录,输入相应的数字来实现对应的需求,书架上现在有两本书,《三国演义》、《西游记》,我们从第一个功能开始演示
1).查找图书
2).新增图书
3).删除图书
4).展示图书
展示书架上现有的图书,因为刚才新增的java图书被删除掉了,所以在书架上就不会有java,如果没有删掉则书架上就会出现java图书,例如:
看这里是不是有显示java图书了呢
2.展示一下普通用户的目录界面:
当我们输入0的时候就进入到了普通用户的目录!
1).查找图书
● 这个功能跟管理员界面里的查找图书是一样的,所以我在这就不展示这个了,见谅。
2).借阅图书
在这里,输入想要借的书的名字就,如果书架里有这本书,就可以借书成功。当然,别的情况呢我们后续再说,这里先提一个大致的。
3).归还图书
当然,虽然只是显示归还成功,但肯定没有这么简单哈哈,后续我们再来慢慢去琢磨它。
4).退出图书
这个没什么好说的,输入0,程序结束就是退出图书系统了。在这里就不演示了。
大致介绍完毕,接下来我们正式开始这个小小的程序 。
1.2 book包的构建
当我们在完成这个程序的时候,可能你会觉得这个功能实现的有一些别扭,但是我们现在只关注设计本身,不关注业务本身,每个人对业务的理解都不一样,可以根据自己的想法对代码进行修改。
我们要做的事图书系统,所以最重要的是要先有书,我们先创建一个book包,在包里创建一个Book类,对于一本书来
说,肯定要有自己的各种属性,
package book;
public class Book {
//书的属性都被private封装,这样保证了安全性!!!!
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;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
((isBorrowed == true)?"已借出":"未借出")+
//", isBorrowed=" + isBorrowed +
'}';
}
}
这里我们创建好了书这个类,我们是不是需要将书放在书架上,对吧?那么书架在哪里?我们就可以抽象一个书架出
来!这个书架是一个数组,里面每个元素都是一本书,首先我们就创建一个书架类
具体的操作在下面代码进行展示:
package book;
//书架
public class BookList {
//在这里我们依旧是将BookList的属性定义为private类,体现其封装性
private Book[] books = new Book[10];//最多放10本书
private int usedSize;//数组放了几本书?
public BookList()//构造函数,先在书架上放几本书
{
books[0] = new Book("三国演义","罗贯中",90,"小说");
books[1] = new Book("西游记","吴承恩",78,"小说");
this.usedSize = 2;//刚开始放了基本,那么就将usedSzie定义为多少,后续如果需要添加的话再更改这个数字
}
// 获取当前数组当中元素的个数!!
public int getUsedSize() {
return usedSize;
}
//修改当前数组元素的个数
public void setUsedSize(int usedSize) {
this.usedSize = usedSize;
}
//可以在这里面写所有对数组的操作,借书、还书。。。。。等等,但是我们不在这里实现,后续后说!
}
我们在写完这个书架类后会发现,我们书架里的书其实就是放在数组里,那么以后的功能和操作肯定会涉及到对这个数
组的获取和改变,因此在原有的基础上写下另外的方法来方便以后对这个数组进行调用
●具体的我会在代码中写下注释
package book;
//书架
public class BookList {
private Book[] books = new Book[10];//最多放10本书
private int usedSize;//数组放了几本书?
public BookList(){
books[0] = new Book("三国演义","罗贯中",90,"小说");
books[1] = new Book("西游记","吴承恩",78,"小说");
this.usedSize = 2;
}
// 获取当前数组当中元素的个数!!
public int getUsedSize() {
return usedSize;
}
//修改当前数组元素的个数
public void setUsedSize(int usedSize) {
this.usedSize = usedSize;
}
//每本书对应的都是数组的下标其中之一,所以我们肯定会获取每个下标的那本书
//获取pos下标的书
public Book getPos(int pos){
return books[pos];
}
//我们肯定会增加或者删除一些书,所以我们就会针对数组的某个下标的书进行修改
//给数组的pos位置放一本书
public void setBooks(int pos,Book book){
books[pos] = book;
}
}
代码写到这里呢,关于book这个包的内容基本上就差不多了,里面包含了(书)Book类和(书架)BookList类,并完成了书
和书架的一些基本属性,接下来所有的操作啊借书还书之类的都可以在书架类中完成,因为你的其他操作其实就是对书
架中的数组进行操作,但是我们不这么做,我们把每一个方法写成一个单独的类,至于为什么呢,后面会告诉你
1.3 operation包的构建
我们在这里将所有的需要实现功能的类都