- 由于代码较多,不一 一介绍,主要是表述自己的思想然后直接上代码
- 该图书馆管理系统大体主要分为两个对象,一是管理员,二是普通用户。这里就可以用到多态,根据两个对象的不同调用不同的方法,所以他们就有一个公共的类user,里面有共同的名字,首先想到的就是名字。然后管理系统嘛,选择身份后出来的页面也互不相同,所以在user里面还有一个菜单方法,然后再在管理员和普通用户的类里面重写这个menu,首先用他们的父类构造对象,假若你选择的是管理员,返回的类型则为new Adminuser,用user构造的对象接收,这里就是一个向上转型,然后再主函数里面直接通过user.menu执行即可,调用的menu则是接收的什么对象,调用什么的menu。
- 然后就是关于书方面的,书有自己的名字,作者等等那些,所以这里会有一个类来描述书,book。不能图书馆就一本书吧,所以单独开一个类用来摆放图书,booklist,这里面就建了一个图书数组,我这里规定的十本书最大,这个booklist主要就是对书的各种操作,所以后面所有的操作都需要booklist,当年进入图书馆理系统的那一刻,书是确定的,所以在最开始就构造一个booklist对象,这里不讲具体的赋值啥的,构造方法赋值,创建的时候已经确定了这个booklist。
- 接下来就是关于操作的部分,回到前面,我们已经进入了两个不同用户的菜单,在这个菜单这里就是基于各种操作,所以我们这里的操作是放在两个不同的menu里面的。还是基于多态的使用,选择的操作不同,调用的work不同,一共七个操作,这里定义一个操作接口,每个操作都连接这个接口,重写里面的work方法。通过接口创建一个接口数组,它等于new 的这七个操作,这里相当于也是一种赋值,向上转型,然后选择不同,调用的work不同。
- 最后就是代码没有做到很严谨,主要是描述这个思想。代码按照我上面讲的顺序摆放。最前面的是主函数。
主函数 - package demo1;
import demo2.BookList;
import java.util.Scanner;
public class MainGui {
public static User userLogin(){
System.out.println(“请输入你的姓名”);
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();
System.out.println(“请输入你的身份:1,》管理员 2,》普通用户”);
int choice=scanner.nextInt();
User commonUser=new CommonUser(name);
User adminUser=new AdminUser(name);
if(choice1){
return adminUser;
}else if (choice2){
return commonUser;
}
return adminUser;
}
public static void main(String[] args){
User user=userLogin();
BookList bookList=new BookList();
while(true){
user.menu(bookList);
}
}
}
//user父类
- package demo1;
import demo2.BookList;
public abstract class User {
String name;
public User(String name){
this.name=name;
}
public abstract void menu(BookList bookList);
}
管理用户
- package demo1;
import demo2.BookList;
import opera.*;
import java.util.Scanner;
public class AdminUser extends User{
public AdminUser(String name){
super(name);
}
@Override
public void menu(BookList bookList) {
Ioperation[] ioperations=new Ioperation[5];
Scanner scanner=new Scanner(System.in);
Findoperation findoperation=new Findoperation();
Addoperation addoperation=new Addoperation();
Deloperation deloperation=new Deloperation();
Showoperation showoperation=new Showoperation();
Exitoperation exitoperation=new Exitoperation();
ioperations[1]=findoperation;
ioperations[2]=addoperation;
ioperations[3]=deloperation;
ioperations[4]=showoperation;
ioperations[0]=exitoperation;
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(“请输入你的操作:”);
int choice=scanner.nextInt();
ioperations[choice].work(bookList);
}
}
//普通用户
- package demo1;
import demo2.BookList;
import opera.*;
import java.util.Scanner;
public class CommonUser extends User{
public CommonUser(String name){
super(name);
}
@Override
public void menu(BookList bookList) {
Ioperation[] ioperations=new Ioperation[5];
Findoperation findoperation=new Findoperation();
Brrowedoperation brrowedoperation=new Brrowedoperation();
Returnoperation returnoperation=new Returnoperation();
Exitoperation exitoperation=new Exitoperation();
Showoperation showoperation=new Showoperation();
ioperations[1]=findoperation;
ioperations[2]=brrowedoperation;
ioperations[3]=returnoperation;
ioperations[4]=showoperation;
ioperations[0]=exitoperation;
Scanner scanner=new Scanner(System.in);
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(“请输入你的操作:”);
int choice=scanner.nextInt();
ioperations[choice].work(bookList);
}
}
//然后是书和书架
- package demo2;
public class Book {
private String name;//姓名
private String author;//作者
private int price;//价格
private String type;//小说类型
private boolean isBorrowed;//是否借出
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
//", isBorrowed=" + isBorrowed +
(isBorrowed == true ? " 已经被借出 ":" 未被借出 ") +
'}';
}
public Book(){};
public Book(String name, String author, int price, String type) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
}
public void setName(String name) {
this.name = name;
}
public void setAuthor(String author) {
this.author = author;
}
public void setPrice(int price) {
this.price = price;
}
public void setType(String type) {
this.type = type;
}
public void setBorrowed(boolean borrowed) {
isBorrowed = borrowed;
}
public String getName() {
return name;
}
public String getAuthor() {
return author;
}
public int getPrice() {
return price;
}
public String getType() {
return type;
}
public boolean isBorrowed() {
return isBorrowed;
}
}
//书架
package demo2;
public class BookList {
private Book[] books = new Book[10];
private int usedSize;//记录当前book的数量
public BookList(){
this.books[0]=new Book(“三义”,“张三”,99, “小说”);
this.books[1]=new Book(“红梦”,“王二”,99, “小说”);
this.books[2]=new Book(“白凶”,“麻子”,99, “小说”);
this.books[3]=new Book(“孙空”,“李四”,99, “小说”);
this.usedSize=4;
}
public Book getbook(int i){
return this.books[i];
}
public void addbooks(Book book,int i){
this.books[i]=new Book(book.getName(),book.getAuthor(),book.getPrice(),book.getType());
this.usedSize++;
}
public void Delectbook(int i,BookList bookList){
for (int j = i; j <bookList.usedSize-1 ; j++) {
this.books[j]=this.books[j+1];
}
this.usedSize–;
}
public int getUsedSize() {
return usedSize;
}
public void setUsedSize(int usedSize) {
this.usedSize = usedSize;
}
}
//接下来就是七个操作和他们的接口,接口放最前面的。
- package opera;
import demo2.BookList;
public interface Ioperation {
void work(BookList bookList);
}
- package opera;
import demo2.Book;
import demo2.BookList;
import java.util.Scanner;
public class Addoperation implements Ioperation {
@Override
public void work(BookList bookList) {
Scanner scanner=new Scanner(System.in);
Book book=new Book();
System.out.println(“请输入你所要填加的书名”);
String name =scanner.nextLine();
book.setName(name);
System.out.println(“请输入你所要填加的书的作者”);
String author =scanner.nextLine();
book.setAuthor(author);
System.out.println(“请输入你所要填加的书的类型”);
String type =scanner.nextLine();
book.setType(type);
System.out.println(“请输入你所要填加的书的价格”);
int price=scanner.nextInt();
book.setPrice(price);
bookList.addbooks(book,bookList.getUsedSize());
System.out.println("新增成功");
}
}
- package opera;
import demo2.BookList;
import java.util.Scanner;
public class Brrowedoperation implements Ioperation {
@Override
public void work(BookList bookList) {
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入所借书名:”);
String name=scanner.nextLine();
for (int i = 0; i <bookList.getUsedSize() ; i++) {
if(name.equals(bookList.getbook(i).getName())){
bookList.getbook(i).setBorrowed(true);
}
}
}
}
- package opera;
import demo2.BookList;
import java.util.Scanner;
public class Deloperation implements Ioperation {
@Override
public void work(BookList bookList) {
System.out.println(“请输入你所要删除的书名”);
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();
int lift=-1;
for (int i = 0; i < bookList.getUsedSize(); i++) {
if(name.equals(bookList.getbook(i).getName())){
lift=i;
}
}
bookList.Delectbook(lift,bookList);
System.out.println(“删除成功”);
}
}
- package opera;
import demo2.Book;
import demo2.BookList;
public class Exitoperation implements Ioperation {
@Override
public void work(BookList bookList) {
System.exit(0);
}
}
- package opera;
import demo2.BookList;
import java.util.Scanner;
public class Findoperation implements Ioperation {
@Override
public void work(BookList bookList) {
System.out.println(“请输入你要查找的书名”);
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();
for (int i = 0; i <bookList.getUsedSize(); i++) {
if(name.equals(bookList.getbook(i).getName())){
System.out.println(“查找成功”);
return;
}
}
}
}
- package opera;
import demo2.BookList;
import java.util.Scanner;
public class Returnoperation implements Ioperation {
@Override
public void work(BookList bookList) {
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入所还书名:”);
String name=scanner.nextLine();
for (int i = 0; i <bookList.getUsedSize() ; i++) {
if(name.equals(bookList.getbook(i).getName())){
bookList.getbook(i).setBorrowed(false);
}
}
}
}
- package opera;
import demo2.BookList;
public class Showoperation implements Ioperation {
@Override
public void work(BookList bookList) {
for (int i=0;i<bookList.getUsedSize();i++){
System.out.println(bookList.getbook(i));
}
}
}