怎么上网站做简易注销的步骤,百度怎么推广自己的作品,网站免费空间哪里申请,清远做网站的目录
1.前言
2.正文
2.1思路
2.2Book包
2.3people包
2.4operation包
2.5主函数
3.小结 1.前言
哈喽大家好吖#xff0c;今天来给前面Java基础的学习来一个基础的实战#xff0c;做一个简单的图书管理系统#xff0c;这里边综合利用了我们之前学习到的类和对象…
目录
1.前言
2.正文
2.1思路
2.2Book包
2.3people包
2.4operation包
2.5主函数
3.小结 1.前言
哈喽大家好吖今天来给前面Java基础的学习来一个基础的实战做一个简单的图书管理系统这里边综合利用了我们之前学习到的类和对象继承与多态以及抽象类和接口等许多重要的概念以及知识事不宜迟让我们开始吧。
2.正文
2.1思路
在正式开始图书管理系统的代码完成前我们需要先对一系列所需要创建的对象各个对象之间的关系如何实现这种关系都要有一个提前的规划下面我通过PlantUML生成了图书管理系统的基础框架我据图一一解释。 在图书管理系统里面会参与各种行为的对象都有哪些呢有书本借阅者管理员具体的借阅功能等所以我们一共有四个包分别为 Book包 operation包 people 主函数所在包 我们把各个模块把它分成各个包来进行封装是代码的条理性更好。 2.2Book包
在Book包中我们创建了俩个对象一个是book对象另一个书用于存放书的bookshelf对象具体实现如下
package Book;public class Book {private String bookName;private String writer;private String classification;private Boolean borrow;public Book(String bookName, String writer, String classification, Boolean borrow) {this.bookName bookName;this.writer writer;this.classification classification;this.borrow borrow;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName bookName;}public String getWriter() {return writer;}public void setWriter(String writer) {this.writer writer;}public String getClassification() {return classification;}public void setClassification(String classification) {this.classification classification;}public Boolean getBorrow() {return borrow;}public void setBorrow(Boolean borrow) {this.borrow borrow;}
}
因为成员的访问权限我们设置为private所以我们需要各种getter和setter方法来调用成员变量其中getter和setter方法是可以通过系统快速生成的即按住altinsert可以快速实现该方法。
下面是Bookshelf对象
package Book;public class bookShelf {private Book[] books new Book[10];private int bookNum 0;public bookShelf() {this.books[0] new Book(三国演义,罗贯中,历史演义,null);this.books[1] new Book(三体,刘慈欣,科幻小说,null);this.books[2] new Book(西游记,吴承恩,小说,null);this.bookNum 3;}public Book getBooks(int pos) {return books[pos];}public void setBooks(Book book,int pos) {this.books[pos] book;}public int getBookNum() {return bookNum;}public void setBookNum(int bookNum) {this.bookNum bookNum;}
}
我们在bookshelf的构造方法中提前初始化里三个对象即可以理解为图书馆中原本就存放的书。创建一个bookNum变量用于记录当前所存放的图书数量。
2.3people包
在people包中我们通过继承来实现首先创建了一个person抽象类用于抽取管理员和借阅者的共同属性以及方法再分别实现子类Admin与normalUser。
person类
package People;import operation.*;
import Book.*;public abstract class Person {public String name;public Operation[] iOperations;public Person(String name) {this.name name;}public abstract int menu();public void finishOPerations(int choice,bookShelf bookShelf) {iOperations[choice].work(bookShelf);}
}
共同属性姓名不必多说还额外创建了一个功能数组另外创建一个菜单方法用于打印各自的菜单最后还有finishOPeration方法通过这个功能数组即可实现输入菜单对应选项进入对应功能的操作。
Admin类
package People;import operation.*;import java.util.Scanner;public class Admin extends Person {public Admin(String name) {super(name);this.iOperations new Operation[]{new edit(),new showBook(),new findBook(),new addBook(),new delBook()};}Overridepublic int menu() {System.out.println(*******************);System.out.println(**欢迎来到管理员菜单**);System.out.println(******0.退出系统*****);System.out.println(******1.显示图书*****);System.out.println(******2.寻找图书*****);System.out.println(******3.增加图书*****);System.out.println(******4.减少图书*****);System.out.println(*******************);Scanner scanner new Scanner(System.in);int choice scanner.nextInt();return choice;}}
在这个构造方法中需要对功能数组中添加功能方法下文同样。
normalUser类
package People;import operation.*;import java.util.Scanner;public class normalUser extends Person {Overridepublic int menu() {System.out.println(*******************);System.out.println(***欢迎来到用户菜单***);System.out.println(******0.退出系统*****);System.out.println(******1.显示图书*****);System.out.println(******2.寻找图书*****);System.out.println(******3.借阅图书*****);System.out.println(******4.归还图书*****);System.out.println(*******************);Scanner scanner new Scanner(System.in);int choice scanner.nextInt();return choice;}public normalUser(String name) {super(name);this.iOperations new Operation[]{new edit(),new showBook(),new findBook(),new borrowBook(),new returnBook()};}}
2.4operation包
在这个包里面我们尝试把各种人物的行为全都各个创建成对象来进行分别实现这里我们采用了接口即在这个包里接了这个接口的其他对象都需要将接口中的方法重写来达到方法都得到实现的目的。
首先是接口
package operation;import Book.bookShelf;public interface Operation {public void work(bookShelf bookShelf);
}接口中的方法不需要具体实现。
接下来就是各种需要实现的对象与对象之间的逻辑了如借阅图书归还图书查询图书退出系统等我一一进行讲解
findBook类
package operation;import Book.Book;
import Book.bookShelf;
import java.util.Scanner;//找书先要判断是否有书若有则借若无则直接返回
public class findBook implements Operation{public void work(bookShelf bookShelf){Scanner scanner new Scanner(System.in);System.out.println(查找图书);String name scanner.nextLine();for(int i 0;i bookShelf.getBookNum();i){if(name.equals(bookShelf.getBooks(i).getBookName())){System.out.println(找到了《 name 》书);return;}}System.out.println(未找到 《 name 》);}
}通过遍历来实现若遍历到有此书则打印找到了并返回若能走完遍历则未找到。
showBook类
package operation;import Book.bookShelf;public class showBook implements Operation{public void work(bookShelf bookShelf) {System.out.println(显示图书);//遍历书架for (int i 0; i bookShelf.getBookNum(); i) {System.out.println(bookShelf.getBooks(i));}}}
这个遍历打印即可没什么特殊。
addBook类
//新增图书先判断该书是否存在,再实例化一个书对象添加进bookshelf并将bookNum增加package operation;import Book.Book;
import Book.bookShelf;
import java.util.Scanner;public class addBook implements Operation {Overridepublic void work(bookShelf bookShelf) {Scanner scanner new Scanner(System.in);System.out.println(请输入添加的图书名字);String name scanner.nextLine();System.out.println(请输入添加的图书作者名字);String writer scanner.nextLine();System.out.println(请输入添加的图书分类);String classfication scanner.nextLine();//遍历判断是否有相同书for(int i 0;i bookShelf.getBookNum();i){if(name.equals(bookShelf.getBooks(i).getBookName())){System.out.println(书库里已有该书);return;}}//新增图书bookShelf.setBooks(new Book(name,writer,classfication,false), bookShelf.getBookNum());bookShelf.setBookNum(bookShelf.getBookNum() 1);//新增图书加1System.out.println(书《 name 》已添加成功);}
}
新增图书是属于Admin对象的类方法先输入要添加的书的各个成员变量的信息再遍历寻找有无相同书若没有则添加。
delBook类
//删除一本书现需要查找是否有该书删书即使后一个覆盖前一个即可package operation;import Book.Book;
import Book.bookShelf;
import java.util.Scanner;public class delBook implements Operation{Overridepublic void work(bookShelf bookShelf) {Scanner scanner new Scanner(System.in);System.out.println(请输入你需要删除的书);String name scanner.nextLine();for(int i 0;i bookShelf.getBookNum();i){if(name.equals(bookShelf.getBooks(i).getBookName())){for(int j i;j bookShelf.getBookNum() - 1;j){bookShelf.setBooks(bookShelf.getBooks(j 1),j);}bookShelf.setBookNum(bookShelf.getBookNum() - 1);System.out.println(该书已删除完毕);return;}}System.out.println(不存在该书);}
}
也是遍历寻找输入的书若找到删除的书则将后面的书一一往前覆盖即可实现删除功能最后不要忘了bookNum要进行减一操作。
borrowBook类
package operation;import Book.Book;
import Book.bookShelf;
import java.util.Scanner;public class borrowBook implements Operation{Overridepublic void work(bookShelf bookShelf) {Scanner scanner new Scanner(System.in);System.out.println(请输入要借阅书的名字);String name scanner.nextLine();for(int i 0;i bookShelf.getBookNum();i){if(name.equals(bookShelf.getBooks(i).getBookName())){bookShelf.getBooks(i).setBorrow(true);//设置借阅状态System.out.println(书《 name 》借阅成功);return;}}System.out.println(不存在该书借阅失败);}
}
还是先遍历找书若有则改变图书的借阅状态若无则借阅失败。
returnBook类
package operation;import Book.bookShelf;import java.util.Scanner;public class returnBook implements Operation{Overridepublic void work(bookShelf bookShelf) {Scanner scanner new Scanner(System.in);System.out.println(请输入要归还书的名字);String name scanner.nextLine();for(int i 0;i bookShelf.getBookNum();i){if(name.equals(bookShelf.getBooks(i).getBookName())){bookShelf.getBooks(i).setBorrow(false);//设置借阅状态System.out.println(书《 name 》归还成功);return;}}System.out.println(不存在该书归还失败);}
}和借书操作如出一辙唯一的区别就是状态改变的true与false不同。
edit类
package operation;import Book.bookShelf;public class edit implements Operation{Overridepublic void work(bookShelf bookShelf) {for(int i 0;i bookShelf.getBookNum();i){bookShelf.setBooks(null,i);}bookShelf.setBookNum(0);System.exit(0);}
} 实现退出功能先将储存的图书删除将bookNum清零最后退出系统。
2.5主函数
在主函数中同样我们把登陆即选择自己是管理员还是借阅者身份的选择的login功能也通过单独的类方法来进行实现。
Login类
package System;import People.Admin;
import People.Person;
import People.normalUser;import java.util.Scanner;public class Login{public Person loginIn(){System.out.println(*欢迎来到图书管理系统**);Scanner scanner new Scanner(System.in);System.out.println(请输入你的名字);String name scanner.nextLine();System.out.println(*******************);System.out.println(******1.管理员******);System.out.println(******2.普通用户****);System.out.println(请输入你的身份);if(scanner.nextInt() 1){return new Admin(name);}else{return new normalUser(name);}}
}
最后就是主函数这个时候主函数就会比较整洁明了记得要分别实例化书架bookShelf对象以及Login登陆对象了。
package System;import Book.*;
import People.*;public class system {public static void main(String[] args) {bookShelf bookShelf new bookShelf();Login login new Login();Person person login.loginIn();while(true){int choice person.menu();person.finishOPerations(choice,bookShelf);}}}
这样我们图书管理系统就完成了
3.小结
今天的图书管理系统的分享到这里就结束了喜欢的小伙伴不要忘了点一手关注再走哦欢迎大家在评论区多多交流哦。