用Java实现 图书管理系统 使用类,抽象类,封装,继承,多态,接口等知识点

分析:


此时分为3部分:

一.书的内容和存取书

二.用户登录,分为管理员和普通用户

三.书相关操作

分别可以创建三个包  package book   package operation   package user

book包中可以用 Book类来表示一本书 BookList类来表示N本书

user包中可以使用 User类来表示用户,其中User又有 普通用户 可以用NomalUser类来表示 管理员用Admin类来表示

Operation包中分别用

AddOperation类来表示增添图书

DelOperation类来表示删除图书

FindOperation类来表示查找图书

DisplayOperation类来表示显示图书

BorrowOperation类来表示显示图书

ReturnOperation类来表示归还图书

ExitOperation类来表示退出图书

各个类的实现


1.Book类

package book;

public class Book {

private String name ;//书的书名

private String author;//书的作者

private int price;//书的价格

private String type;//书的类型

private boolean isBorrowed;

public Book(String name, String author, int 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 int getPrice() {

return price;

}

public void setPrice(int 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;

}

@Override

public String toString() {

return “Book{” +

“name='” + name + ‘’’ +

“, author='” + author + ‘’’ +

“, price=” + price +

“, type='” + type + ‘’’ +

", " +((isBorrowed==true)?“被借出”:“未被借出”)+

‘}’;

}

}

2.BookList类

package book;

public class BookList {

private Book[] books = new Book[100];//用顺序表的方式存书

private int usedSize;

public BookList(){

//给3本书在图书管理系统里

books[0] = new Book(“Java SE”,“博哥”,2000,“专业知识”);

books[1] = new Book(“Java EE”,“大博哥”,3000,“专业知识”);

books[2] = new Book(“数据结构”,“博哥哥”,4000,“理论知识”);

usedSize=3;

}

public Book getBook(int pos) {

return this.books[pos];

}

public void setBooks(int pos,Book book) {

this.books[pos] = book;

}

public int getUsedSize() {

return usedSize;

}

public void setUsedSize(int usedSize) {

this.usedSize = usedSize;

}

}

3.因为Operation包中各个操作都需要用到book,所以创建一个接口IOperation

package Operation;

import book.BookList;

import java.util.Scanner;

public interface IOperation {

public void work(BookList bookList);

Scanner sc = new Scanner(System.in);

}

4.User类

package user;

import Operation.IOperation;

import book.BookList;

abstract public class User {

protected String name ;//用户名

protected IOperation[] iOperations;//对书的操作

public User(String name){

this.name = name;

}

abstract public int menu();

public void doOperation(int choice, BookList bookList) {

this.iOperations[choice].work(bookList);

}

}

5.Admin类

package user;

import Operation.*;

import book.BookList;

import java.util.Scanner;

public class Admin extends User {

public Admin(String name) {

super(name);

this.iOperations = new IOperation[]{

new ExitOperation(),//下标为0

new FindOperation(),//下标为1

new AddOperation(),//下标为2

new DelOperation(),//下标为3

new DisplayOperation()//下标为4

};

}

@Override

public int menu() {

System.out.println(“======================================”);

System.out.println(“hello “+this.name+” 欢迎来到图书馆里系统”);

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 choice = sc.nextInt();

return choice;

}

}

6.Normal类

package user;

import Operation.*;

import java.util.Scanner;

public class NormalUser extends User{

public NormalUser(String name) {

super(name);

this.iOperations = new IOperation[]{

new ExitOperation(),//下标为0

new FindOperation(),//下标为1

new BorrowOperation(),//下标为2

new ReturnOperation()//下标为3

};

}

@Override

public int menu() {

System.out.println(“======================================”);

System.out.println(“hello “+this.name+” 欢迎来到图书馆里系统”);

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 choice = sc.nextInt();

return choice;

}

}

7.Main类

import book.BookList;

import user.Admin;

import user.NormalUser;

import user.User;

import java.util.Scanner;

public class Main {

public static User login(){

System.out.println("请输入你的姓名: ");

Scanner sc = new Scanner(System.in);

String name = sc.nextLine();

System.out.println(“请选择你的身份: 1. 管理员 2. 普通用户”);

int choice = sc.nextInt();

if(choice==1){

return new Admin(name);

}else{

return new NormalUser(name);

}

}

public static void main(String[] args) {

BookList bookList = new BookList();

User user = login();//返回的是子类对象,父类引用 引用 子类对象 发生向上转型

while(true) {

int choice = user.menu();//父类引用调用了同名的覆盖方法 此时发生动态绑定

user.doOperation(choice,bookList);

}

}

}

8.实现DisplayOperation

package Operation;

import book.Book;

import book.BookList;

public class DisplayOperation implements IOperation{

@Override

public void work(BookList bookList) {

System.out.println(“显示图书”);

for (int i = 0; i < bookList.getUsedSize(); i++) {

Book book = bookList.getBook(i);

System.out.println(book);

}

}

}

9.实现FindOperation

package Operation;

import book.Book;

import book.BookList;

public class FindOperation implements IOperation{

最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了

.BookList;

public class DisplayOperation implements IOperation{

@Override

public void work(BookList bookList) {

System.out.println(“显示图书”);

for (int i = 0; i < bookList.getUsedSize(); i++) {

Book book = bookList.getBook(i);

System.out.println(book);

}

}

}

9.实现FindOperation

package Operation;

import book.Book;

import book.BookList;

public class FindOperation implements IOperation{

最后

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了

[外链图片转存中…(img-hm1Ezvxd-1714761282757)]

[外链图片转存中…(img-oPtxjiNM-1714761282758)]

[外链图片转存中…(img-j0u6q8RM-1714761282758)]

[外链图片转存中…(img-u9JVw4qj-1714761282759)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值