本次就将使用java语言中的多态,继承,封装,接口,数组,动态绑定等知识点,来综合性的设计与实现出一个简易的图书管理系统.

package Book;public class Book {private String name;private String author;private int price;private String type;private boolean isBorrowed = false;//默认未被借出public Book(String name, String author, int price, String type) {this.name = name;this.author = author;this.price = price;this.type = type;}public String getName() {return name;}public void setName(String name) {this.name = name;}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 String getType() {return type;}public void setType(String type) {type = type;}public boolean isBorrowed() {return isBorrowed;}public void setBorrowed(boolean borrowed) {isBorrowed = borrowed;}@Overridepublic String toString() {return "book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", Type='" + type + '\'' +", 是否被借出:" + isBorrowed +'}';}
}
package Book;public class BookList {private int BooksNum;//图书种类数private static final int BOOKSNUM = 10;private Book[] book = new Book[BOOKSNUM];public BookList(){book[0]=new Book("三国演义","罗贯中",89,"名著");book[1]=new Book("斗破苍穹","天蚕土豆",10,"玄幻小说");book[2]=new Book("高等数学上","同济大学",45,"教科书");this.BooksNum=3;}public int getBooksNum() {return BooksNum;}public void setBooksNum(int booksNum) {BooksNum = booksNum;}public Book getBook(int x) {return book[x];}public void setBook(Book book,int pos) {this.book[pos] = book;}}
package Method;
import Book.BookList;public interface IOperation {void work(BookList bookList);
}
package Method;
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 newbook = new Book(name,author,price,type);int tmp=bookList.getBooksNum();for (int i = 0; i < tmp; i++) {if(bookList.getBook(i).getName().equals(name)){System.out.println("该书已经存在,不可重复添加!");return ;}}bookList.setBook(newbook,tmp);bookList.setBooksNum(tmp+1);}
}
package Method;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);String name = sc.nextLine();for(int i=0;iif(bookList.getBook(i).getName().equals(name)){int j=0;for (j = i; j < bookList.getBooksNum()-1; j++) {bookList.setBook(bookList.getBook(j+1),j);}bookList.setBooksNum(bookList.getBooksNum()-1);bookList.setBook(null,j);System.out.println("删除成功!");return ;}}System.out.println("删除失败,未找到该图书!");}
}
package Method;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);String name = sc.nextLine();int tmp= bookList.getBooksNum();for (int i = 0; i < tmp; i++) {if (bookList.getBook(i).getName().equals(name) ) {System.out.println(bookList.getBook(i));return;}}System.out.println("查找失败!");}
}
package Method;import Book.BookList;public class ShowOperation implements IOperation{@Overridepublic void work(BookList bookList) {System.out.println("藏书展示!");for(int i=0;i< bookList.getBooksNum();i++) {System.out.println(bookList.getBook(i));}}
}
package Method;import Book.Book;
import Book.BookList;
import java.util.Scanner;public class BrrowOperation implements IOperation{@Overridepublic void work(BookList bookList) {Scanner sc = new Scanner(System.in);System.out.println("借阅图书:");System.out.println("请输入你要借阅的图书:");String name = sc.nextLine();for(int i=0;i< bookList.getBooksNum();i++){if(bookList.getBook(i).getName().equals(name)&&(!bookList.getBook(i).isBorrowed())){bookList.getBook(i).setBorrowed(true);System.out.println("借阅成功!");return ;}}System.out.println("借阅失败,未找到该图书,可能是已经被借出导致!");}
}
package Method;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);String name = sc.nextLine();for (int i = 0; i < bookList.getBooksNum(); i++) {if (bookList.getBook(i).getName().equals(name) && (bookList.getBook(i).isBorrowed())) {bookList.getBook(i).setBorrowed(false);System.out.println("归还成功!");return;}}System.out.println("归还失败!");}
}
package Method;import Book.BookList;public class Exit implements IOperation{@Overridepublic void work(BookList bookList) {System.out.println("退出系统");System.exit(-1);}
}
package User;import Book.BookList;
import Method.IOperation;public abstract class User {protected String name ;protected IOperation[] iOperations;public abstract int menu();public User(String name) {this.name = name;}public void DoWork(int choice, BookList bookList){this.iOperations[choice].work(bookList);}
}
package User;
import Method.*;
import Method.IOperation;import java.util.Scanner;public class AdminUser extends User{public AdminUser(String name) {super(name);this.iOperations = new IOperation[]{new Exit(),new FindOperation(),new Addoperation(),new DelOperation(),new ShowOperation()};}@Overridepublic int menu() {System.out.println("****************************");System.out.println("hello "+name+" 欢迎来到图书小练习");System.out.println("1.查找图书!");System.out.println("2.新增图书!");System.out.println("3.删除图书!");System.out.println("4.显示图书!");System.out.println("0.退出系统!");System.out.println("****************************");System.out.println("请输入你的操作:");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();return choice;}
package User;import Method.*;
import Method.IOperation;import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);this.iOperations = new IOperation[]{new Exit(),new FindOperation(),new BrrowOperation(),new ReturnOperation(),new DelOperation()};}public int menu() {System.out.println("****************************");System.out.println("hello "+name+" 欢迎来到图书小练习");System.out.println("1.查找图书!");System.out.println("2.借阅图书!");System.out.println("3.归还图书!");System.out.println("0.退出系统!");System.out.println("****************************");System.out.println("请输入你的操作:");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();return choice;}
}
package Main;import Book.BookList;
import User.AdminUser;
import User.NormalUser;
import User.User;import java.util.Scanner;public class Main {public static User func() {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) {User user = func();BookList bookList = new BookList();while (true) {int choice = user.menu();user.DoWork(choice, bookList);}}
}
具体功能较多,就不一一演示了,我们给出部分运行结果如下:
