基础版-图书管理系统
现在我们用面向对象编程,首先我们要明确这个图书管理系统的对象有哪些?
图书管理需要管理图书(对象1),在哪管理图书呢?书架(对象2)上
然后由谁来管呢?有两类人,一类是:图书管理员(对象3)。另一类:普通用户人员(对象4)。
不同的人的权限不一样。
管理员的权限:
1.查找图书(对象5)
2.新增图书(对象6)
3.删除图书(对象7)
4.显示图书(对象8)
0,退出系统(对象9)
普通用户的权限:1.查找图书
2.借阅图书(对象10)
3.归还图书(对象11)
0,退出系统
一个对象就是一个类:
1.先实现书和书架:
book类:
public class Book {private String name;//书的名字private String author;//书作者的名字private int price;//书的价格private String type;//书的类型private boolean isBorrowed;//书的状态@Overridepublic String toString() {//book中的toString方法,用来显示书的相关信息return "Book{" +"书名:'" + name + '\'' +", 作者:'" + author + '\'' +", 价格:" + price +", 类型:'" + type + '\'' +(isBorrowed==true?" 已借出":" 未借出") +'}';}public Book(String name, String author, int price, String type) {//构造方法,用来初始化bookthis.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;}//得到书的是否借出的状态
}
bookList类:
public class bookList {private Book[] books=new Book[10];//用一个数组用来储存书本private int usesize;//书架上的有效书的本数public bookList(){//初始化书架上的书,最开始有三本默认的书books[0]=new Book("三国演义","罗贯中",10,"小说");books[1]=new Book("西游记","吴承恩",59,"小说");books[2]=new Book("红楼梦","曹雪芹",16,"小说");this.usesize=3;}public Book getBooks(int pos) {return books[pos];}//取得书架上对应下标的书public int getUsesize() {return usesize;}//取得书架上有效书本的数量public void setBooks(int i,Book book) {this.books[i] = book;}//修改书架上对应下标的书public void setUsesize(int usesize) {this.usesize = usesize;}//修改书架上有效书的数量public Book[] getBooks() {//取得数组,方便遍历书架上的所有书return books;}public int getInstance(String book) {//for (int i = 0; i <usesize ; i++) {if(book.equals(books[i].getName())){return i;}}return -1;}public void swap(Book n1,Book n2){//交换对应下标n1和n2的书n1.setName(n2.getName());n1.setAuthor(n2.getAuthor());n1.setPrice(n2.getPrice());n1.setType(n2.getType());n1.setBorrowed(n2.isBorrowed());}
}
2.实现用户类:
User(父类,抽象类):
public abstract class User {protected String name;protected Listoperation[] operation;public User(String name){this.name=name;}public abstract int menu();public abstract void dooperation(int choice,bookList booklist);
}
User中menu的抽象方法用来打印菜单的,因为对应不同的用户有不同的权限。
administorUser类(管理员类):
1.第一类用户是管理员:
public class administorUser extends User{public administorUser(String name) {super(name);operation=new Listoperation[]{new exitoperation(),new FIndoperation(),new Addoperation(),new Deletoperation(),new Showoperation()};}public int menu(){System.out.println("欢迎"+name+"来到图书管理系统");System.out.println("1.查找图书");System.out.println("2.新增图书");System.out.println("3.删除图书");System.out.println("4.显示图书");System.out.println("0,退出系统");Scanner scanner =new Scanner(System.in);System.out.println("请输入你的操作:");int x=scanner.nextInt();return x;}public void dooperation(int choice, bookList booklist) {operation[choice].work(booklist);}
}
nomalUser类:
2.第二类用户是普通用户:
public class nomalUser extends User{public nomalUser(String name) {super(name);operation=new Listoperation[]{new exitoperation(),new FIndoperation(),new Borrowoperation(),new returnoperation()};}public int menu(){System.out.println("欢迎"+name+"来到图书管理系统");System.out.println("1.查找图书");System.out.println("2.借阅图书");System.out.println("3.归还图书");System.out.println("0,退出系统");Scanner scanner =new Scanner(System.in);System.out.println("请输入你的操作:");int x=scanner.nextInt();return x;}@Overridepublic void dooperation(int choice, bookList booklist) {operation[choice].work(booklist);}
}
3.实现对应的所有方法:
1.创建一个接口:Listoperation
public interface Listoperation {void work(bookList booklist);
}
2.增添图书:Addoperation
public class Addoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("增添图书...");Scanner sc=new Scanner(System.in);if(booklist.getBooks().length==booklist.getUsesize()){System.out.println("书架已满,放不下了");return ;}System.out.println("请输入书名:");String name=sc.nextLine();for (int i = 0; i < booklist.getUsesize(); i++) {if(name.equals(booklist.getBooks(i).getName())){System.out.println("书架上已经有这本书");return ;}}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);booklist.setBooks(booklist.getUsesize(),newbook);booklist.setUsesize(booklist.getUsesize()+1);System.out.println("插入成功");return ;}
}
3.借阅图书:Borrowoperation
public class Borrowoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("借阅图书...");System.out.println("请输入你要借阅的图书的名字:");Scanner sc=new Scanner(System.in);String name=sc.nextLine();for (int i = 0; i < booklist.getUsesize(); i++) {Book book=booklist.getBooks(i);if(book.isBorrowed()==true){System.out.println("该书已经被借出");return ;}if(book.getName().equals(name)){book.setBorrowed(true);System.out.println("借阅成功");return ;}}System.out.println("未找到你要借阅的书");return ;}
}
4.删除图书:Deletoperation
public class Deletoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("删除图书...");Scanner sc=new Scanner(System.in);if(booklist.getUsesize()==0){System.out.println("书架上没有书,删除失败");return ;}System.out.println("请输入要删除的书名:");String name=sc.nextLine();int x= booklist.getInstance(name);for (int i = x; i < booklist.getUsesize()-1; i++) {booklist.swap(booklist.getBooks(i),booklist.getBooks(i+1));}booklist.setUsesize(booklist.getUsesize()-1);System.out.println("删除成功");}
}
5.退出系统:exitoperation
public class exitoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("退出系统...");System.exit(0);}
}
6.查找图书:FIndoperation
public class FIndoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("查找图书...");System.out.println("请输入你要查找的图书的名字:");Scanner sc=new Scanner(System.in);String name=sc.nextLine();for (int i = 0; i < booklist.getUsesize(); i++) {Book book=booklist.getBooks(i);if(book.getName().equals(name)){System.out.println("找到了");System.out.println(book);return ;}}System.out.println("未找到此书");return ;}
}
7.归还图书:returnoperation
public class returnoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("归还图书...");System.out.println("请输入你要归还的图书的名字:");Scanner sc=new Scanner(System.in);String name=sc.nextLine();for (int i = 0; i < booklist.getUsesize(); i++) {Book book=booklist.getBooks(i);if(book.getName().equals(name)){book.setBorrowed(false);System.out.println("归还图书成功");return ;}}System.out.println("未找到需要归还的书");return ;}
}
8.展示图书:Showoperation
public class Showoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("显示图书...");for (int i = 0; i < booklist.getUsesize(); i++) {Book book=booklist.getBooks(i);System.out.println(book);}}
}