> 技术文档 > Java 图书管理系统

Java 图书管理系统


文章目录

  • 图书管理系统
  • 接口(Operation)
    • ShowOperation
    • FindOperation
    • AddOperation
    • ExitOperation
    • DelOperation
    • BorrowOperation
    • ReturnOperation

图书管理系统

  1. 图书包里面有书籍信息和书架信息,操作的接口
  2. 功能包里面有查找图书,删除图书,退出系统,增加图书,展示图书,借阅图书,归还图书等功能

普通用户和管理员看到的菜单是不一样的,需要对菜单进行重写

Java 图书管理系统
定义成数组,可以更好地组织数据,数组里面存储的是各种类,可以调用的1,2,3,4方法

Java 图书管理系统
框架:
先构造一个bookList对象,在构造一个user对象,返回登入的是管理员对象还是普通用户对象,循环里面是每次的(choice)选择,menu对应的是两个对象的动态绑定,doOperation每次调用对应选项的work方法

Java 图书管理系统

Java 图书管理系统
现在Main函数中调用doOperation方法,再用接口数组调用choice选择的接口对象,用对象调用每个对象中的work方法
Java 图书管理系统

Java 图书管理系统

接口(Operation)

把实现的功能写到一个接口中,在Operation这个包下面写各种操作的类,来实现接口中的work方法

package operation;import book.BookList;public interface IOPeration { public void work(BookList bookList);}
package operation;import book.BookList;public class FindOperation implements IOPeration{ public void work(BookList bookList) { System.out.println(\"查找图书!\"); }}

ShowOperation

  1. 显示图书:把书的信息打印出来,得到有效书的本数,然后遍历书架,得到每本书的信息
package operation;import book.Book;import book.BookList;public class ShowOperation implements IOPeration{ public void work(BookList bookList) { System.out.println(\"打印图书!\"); int useSize = bookList.getUsedSize(); for(int i = 0;i < useSize;i++){ Book book = bookList.getBook(i); System.out.println(book); // book重写了toString方法 } }}

FindOperation

查找图书:遍历书架,将要找的图书的名字和书架上的书名进行比对,如果有就找到了,并打印信息,最后返回

package operation;import book.Book;import book.BookList;import java.util.Scanner;public class FindOperation implements IOPeration{ public void work(BookList bookList) { System.out.println(\"查找图书!\"); Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); int useSize = bookList.getUsedSize(); for(int i = 0;i < useSize;i++){ Book book = bookList.getBook(i); if(name.equals(book.getName())) { System.out.println(\"找到了这本书,信息如下:\"); System.out.println(book); return; } } System.out.println(\"没有找到这本书!\"); }}

AddOperation

新增图书:从键盘上输入书的信息,把它放入到书的对象中,最后放到书架的最后一个位置
如果书架满了就放不了数,如果有了同样的书也放不了

package operation;import book.Book;import book.BookList;import user.User;import java.util.Scanner;public class AddOperation implements IOPeration{ public void work(BookList bookList){ System.out.println(\"新增图书!\"); Scanner scanner = new Scanner(System.in); System.out.println(\"请输入书名:\"); String name = scanner.nextLine(); System.out.println(\"请输入作者:\"); String author = scanner.nextLine(); System.out.println(\"请输入类型:\"); String type = scanner.nextLine(); // 把价格放在最后输入,因为价格会有一个回车, // 会被下一个scanner读到,造成没有输入下一个数据 System.out.println(\"请输入价格:\"); int price = scanner.nextInt(); // 检查数组当中有没有这本书 int useSize = bookList.getUsedSize(); for(int i = 0;i < useSize;i++){ Book book = bookList.getBook(i); if(name.equals(book.getName())){ System.out.println(\"有这本书了,不进行存放了!\"); return; } } if(useSize == bookList.getBooks().length){ System.out.println(\"书架满了!\"); } else { Book book = new Book(name, author, price, type); bookList.setBook(useSize, book); // useSize要改变,要加1 bookList.setUsedSize(useSize+1); } }}

ExitOperation

  1. 退出系统:直接写exit(0)
package operation;import book.BookList;public class ExitOperation implements IOPeration{ public void work(BookList bookList) { System.out.println(\"退出系统!\"); System.exit(0); }}

DelOperation

  1. 删除图书:
    找到有没有这本书
    从后往前覆盖删除这本书
    将最后一本书置空
package operation;import book.Book;import book.BookList;import java.util.Scanner;public class DelOperation implements IOPeration{ public void work(BookList bookList) { System.out.println(\"删除图书!\"); // 输入这本书 System.out.println(\"请输入要删除的书:\"); Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); // 如果没有这本书就直接返回 // 如果有这本书就把它的下标记录下来 int useSize = bookList.getUsedSize(); int k = 0; int i = 0; for(i = 0;i < useSize;i++){ Book book = bookList.getBook(i); if(book.getName().equals(name)){ k = i; break; } } if(i == useSize) { System.out.println(\"没有你要删除的图书!\"); return; } // 从后往前覆盖删除 // 1 2 3 4 Book[] books = bookList.getBooks(); for(int j = k;j < useSize - 1;j++){ books[j] = books[j + 1]; } books[useSize - 1] = null; // 将最后一本书置为空,并且有效书的个数减一 bookList.setUsedSize(useSize - 1); System.out.println(\"删除成功!\"); }}

BorrowOperation

  1. 借阅图书:
    你要借阅哪本书
    你借阅的书有没有
    借阅的方式是什么:只需要把isborrow修改为true表示借阅成功,false表示没有借阅
package operation;import book.BookList;import book.Book;import java.util.Scanner;public class BorrowOperation implements IOPeration{ @Override public void work(BookList bookList) { System.out.println(\"借阅图书!\"); /* 1. 你要借阅哪本书? 2.你借阅的图书在不在? 3.在的话置为true */ System.out.println(\"输入你要借阅的图书:\"); Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); int useSize = bookList.getUsedSize(); int i = 0; for(i = 0;i < useSize;i++){ Book book = bookList.getBook(i); if(name.equals(bookList.getBook(i).getName()) && book.isBorrowed() == false){ book.setBorrowed(true); System.out.println(\"借阅成功!\"); System.out.println(book); return; } } if(i == useSize) { System.out.println(\"你借阅的图书不存在!\"); } }}

ReturnOperation

  1. 归还图书:和借阅图书的思路基本一样,就是修改一下输入的文字信息
package operation;import book.Book;import book.BookList;import java.util.Scanner;public class ReturnOperation implements IOPeration{ public void work(BookList bookList) { System.out.println(\"归还图书!\"); Scanner scanner = new Scanner(System.in); System.out.println(\"请输入你要归还的图书:\"); String name = scanner.nextLine(); int useSize = bookList.getUsedSize(); int i = 0; for(i = 0;i < useSize;i++){ Book book = bookList.getBook(i); if(name.equals(bookList.getBook(i).getName()) && book.isBorrowed() == true){ book.setBorrowed(false); System.out.println(\"归还成功!\"); System.out.println(book); return; } } if(i == useSize) { System.out.println(\"你归还的图书不存在!\"); } }}

缺点:

  1. 没有做到持久化存储
    可以存储到文件中,或者存储到数据库中
  2. 当前用到的只是数组
  3. 交互的页面是命令行的
    以后可以做成是网页的交互

图书最难的点就是框架问题
gitee全部代码