目录
思维导图:
图书管理系统的创建:
第一步:搭建框架-------使用者
第二步:搭建框架------被使用者
第三步:操作方法
第四步: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 } }
结语:
现在我们就把图书管理系统的框架搭建完成了!接下来要做的就是实现图书管理系统的逻辑!