目录
User类
管理员和普通用户类
Book类
BookList类
Operate类
退出系统
addOperate 添加书籍(管理员)
展示所有图书(管理员)
修改图书 (管理员)
删除图书(管理员)
查找某一本书(普通用户)
借出图书(普通用户)
借出图书(普通用户)
User类
首先创建一个抽象类User,属性为姓名,提供了构造方法和get方法(因为本系统不需要修改名字,所以没有设置set方法),有一个able方法,让子类管理员和普通用户实现不同的界面和操作。
public abstract class User {
private String name;
public User(String name){
this.name=name;
}
abstract void able();
public String getName() {
return name;
}
}
管理员和普通用户类
这里定义了一个管理员和普通用户类继承User类,able方法里是菜单,可选择界面里的操作
public class AdminUser extends User{
public AdminUser(String name) {
super(name);
}
@Override
void able() {
BookList bookList=new BookList();
while (true) {
System.out.println("***********************");
System.out.println("欢迎 "+getName()+" 登录图书管理系统");
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);
int i=sc.nextInt();
Operate.operates[i].work(bookList);
}
}
}
public class normalUser extends User{
public normalUser(String name) {
super(name);
}
@Override
void able() {
BookList bookList=new BookList();
while (true) {
System.out.println("***********************");
System.out.println("欢迎 "+getName()+" 登录图书管理系统");
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);
int i=sc.nextInt();
Operate.operates[i].work(bookList);
}
}
}
Book类
书类,属性有:书名,价格,状态(已借出/未被借出)
告诉大家一个快速生成JavaBean的小技巧,点击右上角file->Settings-> Plugins->输入ptj,下载好之后,右键点击下面的PTJ to Javabean,就可以快速生成啦
package BOOK;
public class Book {
private String name;
private int prize;
private boolean isBorrowed;
public Book() {
}
public Book(String name, int prize) {
this.name = name;
this.prize = prize;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return prize
*/
public int getPrize() {
return prize;
}
/**
* 设置
* @param prize
*/
public void setPrize(int prize) {
this.prize = prize;
}
/**
* 获取
* @return isBorrowed
*/
public boolean IsBorrowed() {
return isBorrowed;
}
public void setNoBorrowed(){
isBorrowed=false;
}
public void setYesBorrowed(){
isBorrowed=true;
}
/**
* 设置
* @param isBorrowed
*/
public void setIsBorrowed(boolean isBorrowed) {
this.isBorrowed = isBorrowed;
}
public String toString() {
return "Book{name = " + name + ", prize = " + prize + ", isBorrowed = " +
(isBorrowed==false?"未被借出":"已借出")+"}";
}
}
BookList类
书架类,定义了一个能放10本书的数组,提供了一些操作方法,具体请看注释
package BOOK;
public class BookList {
private Book[] books=new Book[10];
private int size;//书的数量
\\构造方法,默认放三本书进去
public BookList() {
books[0]=new Book("三国", 100000);
books[1]=new Book("骆驼祥子", 10);
books[2]=new Book("西游记", 90);
this.size = 3;
}
\\添加方法
public void add(Book book){
books[size]=book;
size++;
}
\\获取有多少本书
public int getSize(){
return size;
}
\\获取书架
public Book[] getBooks(){
return books;
}
\\返回书架上索引为index的书
public Book getBook(int index){
return books[index];
}
\\往索引index插入已初始化的book
public void setBook(int index,Book book){
books[index]=book;
}
\\删除书架上索引为index的书
public void removeBook(int index){
books[index]=null;
}
\\改变书的数量为i
public void setSize(int i){
size=i;
}
}
Operate类
芝士一个管理员的操作类,作为其他操作的父类,里面初始化一个操作数组,按照管理员类里输入的数字,再比照数组里操作的索引来实现不同的功能
work方法让子类去重写,来实现不同的功能
package Ac;
import BOOK.BookList;
public class Operate {
static public Operate[] operates={
new exitOperate(),\\退出系统
new addOperate(),\\添加图书
new showOperate(),\\展示所有图书
new updateOperate(),\\修改某一本书
new removeOperate()\\删除图书
};
public void work(BookList bookList){
}
}
芝士一个普通用户的操作类,和上面的一样,不在此过多赘述
package Pc;
import BOOK.BookList;
public class Operate {
static public Operate[] operates={
new exitOperate(),\\退出系统
new findOperate(),\\查找图书
new borrowBook(),\\借书
new returnBook()\\归还图书
};
public void work(BookList bookList){
}
}
退出系统
我相信不用多讲,各位dddd
package Ac;
import BOOK.BookList;
public class exitOperate extends Operate{
@Override
public void work(BookList bookList) {
System.out.println("退出成功");
System.exit(0);
}
}
addOperate 添加书籍(管理员)
package Ac;
import BOOK.Book;
import BOOK.BookList;
import java.util.Scanner;
public class addOperate extends Operate{
@Override
public void work(BookList bookList) {
System.out.println("请输入书名");
Scanner sc=new Scanner(System.in);
String name=sc.next();
\\查找书名,相同则录入失败
for (int i = 0; i < bookList.getSize(); i++) {
Book[] books=bookList.getBooks();
if (bookList.getBook(i).getName().equals(name)){
System.out.println("已有此书,录入失败");
return;
}
}
System.out.println("请输入价格");
int prize=sc.nextInt();
\\把书放入书架
Book book=new Book(name,prize);
bookList.add(book);
System.out.println("录入成功");
}
}
展示所有图书(管理员)
很简单,遍历书架上所有书就完事了
package Ac;
import BOOK.BookList;
public class showOperate extends Operate{
@Override
public void work(BookList bookList) {
if (bookList.getSize()==0){
System.out.println("没有书");
}
for (int i = 0; i < bookList.getSize(); i++) {
System.out.println(bookList.getBook(i));
}
}
}
修改图书 (管理员)
package Ac;
import BOOK.Book;
import BOOK.BookList;
import java.util.Scanner;
public class updateOperate extends Operate{
@Override
public void work(BookList bookList) {
System.out.println("请输入您要修改的书的名字");
Scanner sc=new Scanner(System.in);
String name=sc.next();
\\查找录入的书
int i=findBook(bookList,name);
if (i!=-1){
\\录入书名,如果书名存在则录入失败
System.out.println("请输入修改后书名");
String newName=sc.next();
for (int j = 0; j < bookList.getSize(); j++) {
Book[] books=bookList.getBooks();
if (bookList.getBook(j).getName().equals(newName)){
System.out.println("已有此书,录入失败");
return;
}
}
System.out.println("请输入修改后价格");
int prize=sc.nextInt();
\\添加书到书架
Book book=new Book(newName,prize);
bookList.setBook(i,book);
System.out.println("修改成功");
return;
}
}
public int findBook(BookList bookList,String name){
for (int i = 0; i < bookList.getSize(); i++) {
Book[] books=bookList.getBooks();
if (bookList.getBook(i).getName().equals(name)){
return i;
}
}
System.out.println("没有此书!!修改失败");
return -1;
}
}
删除图书(管理员)
与修改差不多,在此不过多赘述
package Ac;
import BOOK.Book;
import BOOK.BookList;
import java.util.Scanner;
public class removeOperate extends Operate{
@Override
public void work(BookList bookList) {
System.out.println("请输入要删除的图书");
Scanner sc=new Scanner(System.in);
String name=sc.next();
int i=findBook(bookList,name);
if(i!=-1){
for (int j = i; j < bookList.getSize()-1; j++) {
Book book=bookList.getBook(j+1);
bookList.setBook(j,book);
}
bookList.setSize(bookList.getSize()-1);
bookList.removeBook(bookList.getSize());
System.out.println("删除成功");
}
}
public int findBook(BookList bookList,String name){
for (int i = 0; i < bookList.getSize(); i++) {
Book[] books=bookList.getBooks();
if (bookList.getBook(i).getName().equals(name)){
return i;
}
}
System.out.println("没有此书!!删除失败");
return -1;
}
}
查找某一本书(普通用户)
package Pc;
import BOOK.Book;
import BOOK.BookList;
import java.util.Scanner;
public class findOperate extends Operate{
@Override
public void work(BookList bookList) {
System.out.println("请输入您要查找的书名");
Scanner sc=new Scanner(System.in);
String name=sc.next();
findBook(bookList,name);
}
public void findBook(BookList bookList,String name){
for (int i = 0; i < bookList.getSize(); i++) {
Book[] books=bookList.getBooks();
if (bookList.getBook(i).getName().equals(name)){
System.out.println("找到了!!");
System.out.println(bookList.getBook(i));
return;
}
}
System.out.println("没有此书!!");
}
}
借出图书(普通用户)
借书原理很简单,芝士把某一本书拿出来修改状态再塞回书架
package Pc;
import BOOK.Book;
import BOOK.BookList;
import java.util.Scanner;
public class borrowBook extends Operate{
@Override
public void work(BookList bookList) {
System.out.println("请输入您要借书的书名");
Scanner sc=new Scanner(System.in);
String name=sc.next();
int i=findBook(bookList,name);
if (i!=-1){
bookList.getBook(i).setYesBorrowed();;
System.out.println("成功借出");
return;
}
}
public int findBook(BookList bookList,String name){
for (int i = 0; i < bookList.getSize(); i++) {
Book[] books=bookList.getBooks();
if (bookList.getBook(i).getName().equals(name)){
return i;
}
}
System.out.println("没有此书!!");
return -1;
}
}
归还图书(普通用户)
与上面的借书操作原理相同
package Pc;
import BOOK.Book;
import BOOK.BookList;
import java.util.Scanner;
public class returnBook extends Operate{
@Override
public void work(BookList bookList) {
System.out.println("请输入您要归还的书名");
Scanner sc=new Scanner(System.in);
String name=sc.next();
int i=findBook(bookList,name);
if (i!=-1){
bookList.getBook(i).setNoBorrowed();;
System.out.println("成功归还");
return;
}
}
public int findBook(BookList bookList,String name){
for (int i = 0; i < bookList.getSize(); i++) {
Book[] books = bookList.getBooks();
if (bookList.getBook(i).getName().equals(name)) {
return i;
}
}
System.out.println("没有此书!!");
return -1;
}
}