꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶
系列专栏:xiaoxie的JAVA系列专栏——CSDN博客●'ᴗ'σσணღ*
我的目标:"团团等我💪( ◡̀_◡́ ҂)"
( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝+关注(互三必回)!
一.Book类
首先我们需要先创建一个Book类
public class Book { private String name; private String author; private double price; private String type; private boolean isBorrowed; // 构造函数 public Book(String name, String author, double 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 double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getType() { return type; } public void setType(String type) { this.type = type; } public boolean isBorrowed() { return isBorrowed; } public void setBorrowed(boolean borrowed) { isBorrowed = borrowed; } // 重写toString方法 @Override public String toString() { return "Book{" + "name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + ", type='" + type + '\'' + ( (isBorrowed == true) ? ",已借出" : ",未借出" )+ //", isBorrowed=" + isBorrowed + '}'; } }
二.BookList类
public class BookList { public Book[] List; public int size; public BookList() { List = new Book[10]; List[0] = new Book("西游记", "吴承恩", 10.25, "小说"); List[1] = new Book("三国演义","罗贯中",20.50,"小说"); List[2] = new Book("红楼梦","曹雪芹",50.9,"小说"); List[3] = new Book("水浒传","施耐庵",15.5,"小说"); size = 4; } public boolean isFull() { return size >= List.length; } public boolean isEmpty() { return size == 0; } public void newLength() { List = new Book[size+10]; } public Book getList(int i) { return List[i]; } public int getSize() { return size; } public void setList(Book book , int pos) { List[pos] = book; } public void setSize(int size) { this.size = size; } }
三.User类
public abstract class User { public IOperation[] iOperations; public String name; public User(String name) { this.name = name; } public abstract int menu(); public void doOperation(int choice,BookList bookList) { IOperation operation = this.iOperations[choice]; operation.work(bookList); } }
四.管理员类
public class Admin extends User{ public Admin(String name) { super(name); this.iOperations = new IOperation[]{ new ExitOperation(), new FindOperation(), new AddOperation(), new DeleteOperation(), 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("************************"); System.out.println("请输入你的操作:"); Scanner scanner = new Scanner(System.in); int choice = scanner.nextInt(); return choice; } }
五.普通类
public class NormalUser extends User{ public NormalUser(String name) { super(name); this.iOperations = new IOperation[] { new ExitOperation(), new FindOperation(), new BorrowedOperation(), new ReturnOperation() }; } @Override 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("***************************"); System.out.println("请输入你的操作:"); Scanner scanner = new Scanner(System.in); int choice = scanner.nextInt(); return choice; } }
六.实现操作的接口
public interface IOperation { public void work(BookList bookList); }
七.各种操作类
import java.util.Scanner; // 添加图书的操作 public class AddOperation implements IOperation{ @Override public void work(BookList bookList) { if(bookList.isFull()) { bookList.newLength(); } Scanner scan = new Scanner(System.in); System.out.println("请输入你要添加的书名"); String name = scan.nextLine(); System.out.println("请输入你要添加图书的作者"); String author = scan.nextLine(); System.out.println("请输入你要添加图书的价格"); double price = scan.nextDouble(); scan.nextLine(); System.out.println("请输入你要添加图书的类型"); String type = scan.nextLine(); Book tmp = new Book(name,author,price,type); int count = bookList.getSize(); for (int i = 0; i < count; i++) { if(tmp.getName().equals(bookList.getList(i).getName())) { System.out.println("请勿重复添加"); System.exit(0); } } bookList.setList(tmp,count); bookList.setSize(count+1); } }
import java.util.Scanner; // 借出书籍 public class BorrowedOperation implements IOperation { @Override public void work(BookList bookList) { Scanner scan = new Scanner(System.in); int count1 = bookList.getSize(); System.out.println("以下是图书馆的书单: "); for (int i = 0; i < count1; i++) { if (bookList.getList(i) != null) { System.out.println(bookList.getList(i)); } } System.out.println("请输入你要借阅的图书名字:"); String name = scan.nextLine(); int count = bookList.getSize(); int i = 0; for (; i < count; i++) { if (bookList.getList(i).getName().equals(name) ) { if(bookList.getList(i).isBorrowed() ) { System.out.println("书已被借走,请等归还后再来借阅"); return; } bookList.getList(i).setBorrowed(true); System.out.println("借阅成功,请于7天时间内归还"); return; } } if(i == count) { System.out.println("没有找到这本书"); } } }
import java.util.Scanner; //删除书籍的操作 public class DeleteOperation implements IOperation { @Override public void work(BookList bookList) { if(bookList.isEmpty()) { throw new NullException("书架为空"); } Scanner san = new Scanner(System.in); System.out.println("请输入你要删除的图书名字"); String name = san.nextLine(); int count = bookList.getSize(); int i = 0; for (; i < count; i++) { if(bookList.getList(i).getName().equals(name)) { break; } } if(i == count) { System.out.println("没有找到这本书"); } else { while (i < count) { bookList.List[i++] = bookList.List[i+1]; } System.out.println("删除成功"); bookList.setSize(count-1); } } }
// 退出操作 public class ExitOperation implements IOperation{ @Override public void work(BookList bookList) { System.exit(0); } }
import java.util.Scanner; // 通过图书的名字来查找图书 public class FindOperation implements IOperation{ @Override public void work(BookList bookList) { Scanner scan = new Scanner(System.in); System.out.println("请输入你要查找的图书名字"); String name = scan.nextLine(); int count = bookList.getSize(); int i = 0; for (; i < count; i++) { if(bookList.getList(i).getName().equals(name)) { System.out.println("图书信息如下:"); System.out.println(bookList.getList(i)); break; } } if(i == count) { System.out.println("没有找到这本书"); } } }
//归还操作 public class ReturnOperation implements IOperation{ @Override public void work(BookList bookList) { Scanner scan = new Scanner(System.in); System.out.println("请输入你要归还的图书名字:"); String name = scan.nextLine(); int count = bookList.getSize(); int i = 0; for (; i < count; i++) { if (bookList.getList(i).getName().equals(name) && bookList.getList(i).isBorrowed()) { bookList.getList(i).setBorrowed(false); System.out.println("归还成功,欢迎下次光临"); return; } } if(i == count) { System.out.println("没有找到这本书"); } } }
//显示图书的操作 public class ShowOperation implements IOperation{ @Override public void work(BookList bookList) { int count = bookList.getSize(); System.out.println("图书信息如下: "); for (int i = 0; i < count; i++) { if (bookList.getList(i) != null) { System.out.println(bookList.getList(i)); } } } }
//异常 public class NullException extends RuntimeException { public NullException() { } public NullException(String message) { super(message); } }
八.主函数
public class Main { public static User menu() { int choice = 0; String possWord = "123456"; System.out.println("请输入你的身份:"); System.out.println("1.管理员 2.普通用户 "); Scanner scan = new Scanner(System.in); choice = scan.nextInt(); scan.nextLine(); if (choice == 1) { System.out.println("请输入密码:"); int count = 3; while (count > 0) { String MyPossWord = scan.nextLine(); if (MyPossWord.equals(possWord)) { count = -1; break; } else { --count; System.out.println("密码错误,你还有" + count + "次机会"); } } if (count != -1) { System.out.println("密码输入错误超过3次,请您24小时后在来"); System.exit(0); } return new Admin("admin"); } return new NormalUser("noraluser"); } public static void main(String[] args) { BookList bookList = new BookList(); User user = Main.menu(); while (true) { int choice = user.menu(); user.doOperation(choice,bookList); } } }
九.说明
以上就是java使用面向对象的知识来实现图书管理系统的全部内容了,此代码仅仅只是对初学Java的读者有帮助,可以通过借鉴此代码,再根据自己所学的知识自己构建一个图书管理系统,这个 图书管理系统也是差不多涵盖了JavaSE所有内容,博主相信你自己下去编写一个图书管理系统,会对Java的掌握更上一步。