在临沂做网站,西安网站建设公司哪家好,百色高端网站建设,wordpress 主题框架前言#xff1a;为了巩固之前学习的java知识点#xff0c;我们用之前学习的java知识点#xff08;方法#xff0c;数组#xff0c;类和对象#xff0c;封装#xff0c;继承#xff0c;多态#xff0c;抽象类#xff0c;接口#xff09;来实现一个简单的图书管理系统… 前言为了巩固之前学习的java知识点我们用之前学习的java知识点方法数组类和对象封装继承多态抽象类接口来实现一个简单的图书管理系统 目录
一. 创建文件的目录
二. 源码
book包
Book类
BookList类
operation包
IOeration接口
AddOperation类
DelOperation类
FindOperation类
ShowOperation类
BorrowOperation类
ReturnOperation类
ExitOperation类
user包
User类
AdminUser类
NormalUser类
Main类
三. 操作实例
1. 管理员
2. 用户
四. 补充说明 一. 创建文件的目录
使用Java开发工具IDEA创建一个Project工程命名为TestBook并在这个TestBook工程下的src下创建如下文件book、opreation、user这三个包Package以及这三个包下的类class 和 接口interface并创建一个 Main 类。 二. 源码
book包
创建一个book包book包下面创建两个类Book类表示 图书类和BookList类表示 书架类
Book类 描述书的有关信息构造方法和各种gettersetter方法 package user;import operation.*;import java.util.Scanner;public class NormalUser extends User{public NormalUser(String name) {super(name);this.ioPerations new IOperation[] {new ExitOperation(),new FindOperation(),new BorrowOperation(),new ReturnOperation()};}public int menu() {System.out.println(**********普通用户*****);System.out.println(1. 查找图书);System.out.println(2. 借阅图书);System.out.println(3. 归还图书);System.out.println(0. 退出系统);System.out.println(**********************);Scanner sc new Scanner(System.in);System.out.println(请输入你的操作);int choice sc.nextInt();return choice;}}BookList类 作为书架利用数组存放书籍。 package book;public class BookList {private Book[] books; //定义数组存储书架上的书籍private int usedSize; //记录当前书架上 实际存放的书的 数量private static final int DEFAULT_CAPACITY 10; //书架的初始容量是 10本书public BookList() {this.books new Book[DEFAULT_CAPACITY];this.books[0] new Book(三国演义,罗贯中,10,小说);this.books[1] new Book(西游记,吴承恩,9,小说);this.books[2] new Book(红楼梦,曹雪芹,19,小说);this.usedSize 3;}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize usedSize;}// 通过下标获取对应书籍的getter方法public Book getBook(int pos) {return books[pos];}public void setBooks(int pos,Book book) {books[pos] book;}public Book[] getBooks(){return books;}
}operation包
在operation包下面创建IOperation接口图书操作 接口和图书操作相关类AddOperation表示 添加图书类DelOperation表示 删除图书类FindOperation表示 查找图书类ShowOperation显示图书类BorrowOperation表示 借阅图书类ReturnOperation归还图书类ExitOperation退出系统类。
IOeration接口 后续使用所有与图书操作相关都要实现这个接口对bookList对象进行相关工作。 package operation;import book.BookList;public interface IOperation {void work(BookList bookList);
}AddOperation类 添加图书类 package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class AddOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(新增图书!);Scanner sc new Scanner(System.in);System.out.println(请输入书名);String name sc.nextLine();System.out.println(请输入作者);String author sc.nextLine();System.out.println(请输入类型);String type sc.nextLine();System.out.println(请输入价格);int price sc.nextInt();Book book new Book(name,author,price,type);//检查 数组当中 有没有这本书int currentSize bookList.getUsedSize();for(int i0;icurrentSize;i) {Book book1 bookList.getBook(i);if(book1.getName().equals(name)) {System.out.println(有这本书不进行存放了);return;}}if(currentSizebookList.getBooks().length) {System.out.println(书架满了);}else {bookList.setBooks(currentSize,book);bookList.setUsedSize(currentSize1);}}}DelOperation类 删除图书类 package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class DelOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(删除图书);Scanner sc new Scanner(System.in);System.out.println(请输入你要删除的图书);String name sc.nextLine();int pos -1;int currentSize bookList.getUsedSize();int i 0;for(;icurrentSize;i) {Book book bookList.getBook(i);if(book.getName().equals(name)) {pos i;break;}}if(i currentSize) {System.out.println(没有你要删除的图书);return;}//开始删除int j pos;for(;jcurrentSize;j) {Book book bookList.getBook(j1);bookList.setBooks(j,book);}bookList.setBooks(j,null);bookList.setUsedSize(currentSize-1);}
}FindOperation类 查找图书类 package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class FindOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(查找图书);Scanner sc new Scanner(System.in);System.out.println(请输入你要查找的图书);String name sc.nextLine();// 遍历这个数组int currentSize bookList.getUsedSize();for(int i0;icurrentSize;i) {Book book bookList.getBook(i);if(book.getName().equals(name)) {System.out.println(找到了这本书信息如下);System.out.println(book);return;}}System.out.println(没有找到这本书);}
}ShowOperation类 显示图书类 package operation;import book.Book;
import book.BookList;public class ShowOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(显示图书);int currentSize bookList.getUsedSize();for(int i0;icurrentSize;i) {Book book bookList.getBook(i);System.out.println(book);}}
}BorrowOperation类 借阅图书类 package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class BorrowOperation implements IOperation {Overridepublic void work(BookList bookList) {System.out.println(借阅图书);Scanner sc new Scanner(System.in);System.out.println(请输入你要借阅的图书);String name sc.nextLine();int currentSize bookList.getUsedSize();for(int i0;icurrentSize;i) {Book book bookList.getBook(i);if(book.getName().equals(name)) {book.setBorrowed(true);System.out.println(借阅成功);System.out.println(book);return;}}System.out.println(你借阅的书 不存在);}
}ReturnOperation类 归还图书类 package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class ReturnOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(归还图书);Scanner sc new Scanner(System.in);System.out.println(请输入你要归还的图书);String name sc.nextLine();int currentSize bookList.getUsedSize();for(int i0;icurrentSize;i) {Book book bookList.getBook(i);if(book.getName().equals(name)) {book.setBorrowed(false);System.out.println(归还成功!);System.out.println(book);return;}}System.out.println(你归还的图书 不存在);}
}ExitOperation类 退出系统类 package operation;import book.BookList;public class ExitOperation implements IOperation{Overridepublic void work(BookList bookList) {System.out.println(退出系统);System.exit(0);}
}user包
user包下创建三个类抽象类User类表示所有用户类父类AdminUser类管理员类子类NormalUser普通用户类子类类
User类 所有用户类包含基本属性姓名菜单menu方法的声明执行方法操作doOperation方法的声明 package user;import book.BookList;
import operation.IOperation;public abstract class User {protected String name;protected IOperation[] ioPerations;public User(String name) {this.name name;}public abstract int menu();public void doOperation(int choice, BookList bookList) {ioPerations[choice].work(bookList);}
}AdminUser类 管理员类包含管理员使用方法的数组和管理员菜单 package user;import operation.*;import java.util.Scanner;public class AdminUser extends User {public AdminUser(String name) {super(name);this.ioPerations new IOperation[] {new ExitOperation(),new FindOperation(),new AddOperation(),new DelOperation(),new ShowOperation(),};}public int menu() {System.out.println(**********管理员用户*****);System.out.println(1. 查找图书);System.out.println(2. 新增图书);System.out.println(3. 删除图书);System.out.println(4. 显示图书);System.out.println(0. 退出系统);System.out.println(**********************);Scanner sc new Scanner(System.in);System.out.println(请输入你的操作);int choice sc.nextInt();return choice;}
}NormalUser类 普通用户类包含普通用户使用方法的数组和普通用户菜单 package user;import operation.*;import java.util.Scanner;public class NormalUser extends User{public NormalUser(String name) {super(name);this.ioPerations new IOperation[] {new ExitOperation(),new FindOperation(),new BorrowOperation(),new ReturnOperation()};}public int menu() {System.out.println(**********普通用户*****);System.out.println(1. 查找图书);System.out.println(2. 借阅图书);System.out.println(3. 归还图书);System.out.println(0. 退出系统);System.out.println(**********************);Scanner sc new Scanner(System.in);System.out.println(请输入你的操作);int choice sc.nextInt();return choice;}}Main类 主要的操作逻辑 import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;import java.util.Scanner;public class Main {public static User login() {System.out.println(请输入你的姓名);Scanner sc new Scanner(System.in);String name sc.nextLine();System.out.println(请输入你的身份1. 管理员 2. 普通用户 -);int choice sc.nextInt();if(choice 1) {// 管理员return new AdminUser(name);}else {// 普通用户return new NormalUser(name);}}public static void main(String[] args) {BookList bookList new BookList();//user 指向哪个对象 就看返回值User user login();while(true) {int choice user.menu();//根据choice 的选择 来决定调用的是哪个方法user.doOperation(choice, bookList);}}
}三. 操作实例
1. 管理员 2. 用户 四. 补充说明 由于目前所学知识有限这个图书管理系统目前存在的缺点 1. 没有做到持久化存储。以后可以进行升级将数据存储到数据库或者文件夹中 2. 当前用到的只是数组。后期可以做成网页交互。