꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
本文由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的掌握更上一步。