目录
思维导图:
图书管理系统的创建:
第一步:搭建框架-------使用者
第二步:搭建框架------被使用者
第三步:操作方法
第四步:main函数
前言:
昨天学了一下使用Java语言来写一个图书管理系统,于是今天写一篇博客作为一个小笔记巩固一下自己学到的知识!博主也是刚学,可能写的不是很清楚,很明白……,希望大家谅解!
这个过程是最简单的,只要明确的知道自己的图书管理系统要面向的对象是谁!比如我写的,我面向的对象就是使用者:AdminUser与NormalUser,还有被使用的对象:Book与Booklist。
于是我的第一步便是创建了这几个类:
第一个:User(父类)
package User;
public class User {
protected String name;
public User(String name) {
// TODO Auto-generated constructor stub
this.name = name;
}
}
第二个:AdminUser(子类)
package User;
public class AdminUser extends User{
public AdminUser(String name) {
// TODO Auto-generated constructor stub
super(name);//先帮父类构造
this.name = name;//再自己构造
}
}
第三个:NormalUser(子类)
package User;
public class NormalUser extends User{
public NormalUser(String name) {
// TODO Auto-generated constructor stub
super(name);
this.name = name;
}
}
说明:
1.这三个类是在同一个包中的
2.至于为什么要多创建一个父类User呢?是因为这样方便向下转型! 毕竟两个子类在调用时不能统一类型,但是加一个父类就很好统一了!
这个项目里面的被使用者是谁?毫无疑问是我们的书以及书架!因为你要借的是书,而书在书架上。你要动书,自然就会动书架!!!所以我们的操作对象也就确定了。
于是我的第二步就创建了这两个对象:
第一个:Book类
package Library;
public class Book {
private String name;
private String type;
private String author;
private int price;
private boolean isBorrow;
public Book( String name,String type,String author, int price) {
this.name = name;
this.type = type;
this.author = author;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
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 boolean isBorrow() {
return isBorrow;
}
public void setBorrow(boolean isBorrow) {
this.isBorrow = isBorrow;
}
}
第二个类:Booklist
package Library;
public class Booklist {
Book[]books = new Book[10];//创建一个Book类型的数组来当书架
public Booklist(Book[]books) {//构造方法初始化数组
// TODO Auto-generated constructor stub
books[0] = new Book("三国演义", "古典小说", "罗贯中", 66);
books[1] = new Book("水浒传", "古典小说","施耐庵", 55);
books[2] = new Book("三体", "科幻小说", "刘慈欣", 88);
}
}
说明:
1.这两个类也是在同一个包里的
2.在Book类中使用private修饰符可以更好的封装并且能确保name,author这些变量不能随意改动。只能通过get与set方法来获取与更改。
3.在构造方法中之所以没有初始化isBorrow是因为它默认就是false。一开始我们的书架的书是没有被借出的,所以isBorrow就是false。
操作方法的功能是多种多样的,也就是说他是多态的。于是我们便可以多态的方法来想如何实现多态。
接口:IOperation
package Operation;
import Library.Booklist;
public interface IOperation {
public void work(Booklist booklist) ;//接口内的方法,操作的对象是Booklist。
}
第二个类:AddOperation
package Operation;
import Library.Booklist;
public class AddOperation implements IOperation{
public void work(Booklist booklist) {//重写方法,使这个方法变为Addoperation的方法
System.out.println("添加图书!");
}
}
第二个类:DelOperation
package Operation;
import Library.Booklist;
public class DelOperation implements IOperation {
public void work(Booklist booklist) {//重写方法,使work方法变成DelOperation的方法
System.out.println("删除图书!");
}
}
第三个类:FindOperation
package Operation;
import Library.Booklist;
public class FindOperation implements IOperation {
public void work(Booklist booklist){//重写work方法使之成为FindOperation的方法
System.out.println("查阅图书!");
}
}
第四个类:DisplayOperation
package Operation;
import Library.Booklist;
public class DisplayOperation implements IOperation {
public void work(Booklist booklist) {
System.out.println("显示图书!");
}
}
第五个类:isBorrowOperation
package Operation;
import Library.Booklist;
public class isBorrowOperation implements IOperation {
public void work(Booklist booklist) {
System.out.println("借阅图书!");
}
}
第六个类:returnOperation
package Operation;
import Library.Booklist;
public class returnOperation implements IOperation{
public void work(Booklist booklist) {
System.out.println("归还图书!");
}
}
说明:
1.这里的接口就是为了实现多态,方便以后的调用。
2.接口里的方法是只能定义不能写的。
3.每个继承接口的方法都要重写接口内的方法从而形成自己的方法
4.这些类和接口都在同一个包里面
就像我以前写C语言的小游戏有test.c源文件来实现游戏逻辑一样,用Java语言实现一个图书管理系统也要有一个单独的main函数来实现图书管理系统的逻辑!
在与User同样的包里创建main函数:
package User;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
结语:
现在我们就把图书管理系统的框架搭建完成了!接下来要做的就是实现图书管理系统的逻辑!