栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java.——详解图书管理系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java.——详解图书管理系统

目录

一,Book包

1.Book  书

2.BookList  书架

二,Operation 包

1.IOperation 接口

2.ExitOperation 退出系统

3.AddOperation 新增图书

4.DelOperation 删除图书

5.BorrowOperation  借阅图书

6.ReturnOperation  归还图书

7.DisplayOperation  展示图书

8.FindOperation 找到图书

三,User包

1.User 抽象类

2.AdminUser 管理员类

3.NormalUser  普通用户

四,Main类


一,Book包

定义一个Book包,其中含有 Book 和 booklist类

1.Book  书

Book类用来构造每一本书的参数

包含:

(1)变量:1.书名 2.作者 3.价格 4.类型 5.是否被借出

(2)构造方法 以便后续增添等操作

(3)Generate——>Getter and Setter来得到get和set的方法,因为各参数都是用private来修饰的,也因为使获得和修改方便,专门定义了get和set的方法

(4)toString 来打印书的每个参数

package Book;

public class Book {
    private String name;//书名
    private String author;//作者
    private int price;//价格
    private String type;//类型
    private boolean isBorrowed;//是否借出

    //Generate——>Constructor 构造方法
    //不构造isBorrowd 默认未被借出
    public Book(String name, String author, int price, String type){
        this.name=name;
        this.author=author;
        this.price=price;
        this.type=type;
    }

    //Generate——>toString() 方法的实现


    //Generate——>Getter and Setter
    public void setName(String name) {
        this.name = name;
    }
    public String getName(){
        return 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  书架

类如其名,就是用来放置书的

(1)构造方法中,放置基础的3本图书

(2)定义得到书和设置书的方法

(3)定义得到现在总书数和修改书数的方法

package Book;

public class BookList {
    //最多可以放十本书
    private Book[] books=new Book[10];
    //记录当前books数组中还有多少本书
    private int usedSize;
    public BookList(){
        books[0]=new Book("三国演义","罗贯中",19,"小说");
        books[1]=new Book("西游记","吴承恩",29,"小说");
        books[2]=new Book("红楼梦","曹雪芹",9,"小说");
        usedSize=3;
    }

    //给一个下标,返回该下标的对应的书值,此时pos位置一定是合法的
    public Book getBook(int pos){
        return books[pos];//返回的类型和Book类无关
    }
    //把一本书放到books数组指定下标中
    public void setBooks(int pos,Book book){
        books[pos]=book;
    }
    //实时获取当前书的个数
    public int getUsedSize(){
        return usedSize;
    }
    //用来实时修改当前书架上的书的个数
    public void setUsedSize(int size){
        usedSize=size;
    }


    public void add(){

    }


}

二,Operation 包

1.IOperation 接口
让子类去实现接口,重写接口定义的work方法,扩展新功能
package Operation;
import Book.BookList;

public interface IOperation {
     //通过接口,实现
     default void work(BookList booklist){
     //子类去实现接口,重写接口定义的work方法,扩展新功能
     }
}

2.ExitOperation 退出系统

使用System.exit(); 方法终止Java虚拟机

状态代码为零表示正常退出,而状态代码为非零表示异常代码。

package Operation;

import Book.BookList;

public class ExitOperation implements IOperation{
    @Override
    public void work(BookList booklist) {
        System.out.println("退出系统!");
        
        System.exit(0);//是一个状态码
    }
}

3.AddOperation 新增图书

记得改变书架上书的个数

package Operation;
import Book.*;
import java.util.Scanner;

public class AddOperation implements IOperation {

    public void work(BookList booklist) {
        System.out.println("新增图书!");
        Scanner input =new Scanner(System.in);
        System.out.println("请输入书名:");
        String name=input.nextLine();
        System.out.println("请输入图书的作者:");
        String author= input.nextLine();
        System.out.println("请输入图书的价格:");
        int price=input.nextInt();
        System.out.println("请输入图书的类型:");
        String type=input.nextLine();

        //将新书的参数,录入到书架之中,并且书的个数加一
        Book book=new Book(name,author,price,type);
        int currentSize= booklist.getUsedSize();
        booklist.setBooks(currentSize,book);
        booklist.setUsedSize(currentSize+1);

        System.out.println("新增书籍成功");

    }
}

4.DelOperation 删除图书
import Book.Book;
import Book.BookList;

public class DelOperation implements IOperation{
    @Override
    public void work(BookList booklist) {
        System.out.println("删除图书!");

        Scanner input = new Scanner(System.in);
        String name = input.nextLine();

        int currentSize = booklist.getUsedSize();

        for (int i = 0; i < currentSize; i++) {
            Book book = booklist.getBook(i);
            //第一个循环找到所删书,并判断是否存在
            if(book.getName().equals(name)){
                //第二个循环实现删除
                for (int j = i; j < currentSize; j++) {
                    booklist.setBooks(j,booklist.getBook(j+1));
                    //j——>所删书位置, getBook(j+1)——>所删书其后元素
                    //把需删除书元素后一个元素覆盖掉所删书,实现删除
                }

                //实时修改书架上的个数,减1
                booklist.setUsedSize(currentSize-1);

                System.out.println("删除成功!");
                return;
            }
        }
        System.out.println("没有你要找的书");

    }
}

5.BorrowOperation  借阅图书
import Book.BookList;

import java.util.Scanner;

public class BorrowOperation implements IOperation{
    @Override
    public void work(BookList booklist) {
        System.out.println("借阅图书!");

        Scanner input =new Scanner(System.in);
        System.out.println("请输入借阅书名:");
        String name=input.nextLine();

        int currentSize= booklist.getUsedSize();

        for (int i = 0; i < currentSize; i++) {
            Book book=booklist.getBook(i);
            if(book.getName().equals(name)){
                book.setBorrowed(true);
                System.out.println("借阅成功!");
                return;
            }
        }
        System.out.println("没有你要找的这本书");
    }
}

6.ReturnOperation  归还图书
package Operation;

import Book.Book;
import Book.BookList;

import java.util.Scanner;

public class ReturnOperation implements IOperation{
    @Override
    public void work(BookList booklist) {
        System.out.println("归还图书!");

        Scanner input =new Scanner(System.in);
        System.out.println("请输入归还书名:");
        String name=input.nextLine();

        //确定现在有多少本书,需要遍历多少次
        int currentSize= booklist.getUsedSize();

        for (int i = 0; i < currentSize; i++) {
            Book book=booklist.getBook(i);
            if(book.getName().equals(name)){

                book.setBorrowed(false);//book
                System.out.println("归还成功!");
                return;
            }
        }

    }
}

7.DisplayOperation  展示图书
package Operation;

import Book.Book;
import Book.BookList;

public class DisplayOperation implements IOperation {
    @Override
    public void work(BookList booklist) {
        System.out.println("显示图书!");
        int currentSize= booklist.getUsedSize();
        for (int i = 0; i < currentSize; i++) {
            System.out.println(booklist.getBook(i));
        }
    }
}

8.FindOperation 找到图书
package Operation;
import Book.Book;
import Book.BookList;

import java.util.Scanner;

public class FindOperation implements IOperation {
    public void work(BookList booklist){
        System.out.println("查找图书!");

        Scanner input =new Scanner(System.in);
        System.out.println("请输入书名:");
        String name=input.nextLine();

        int currentSize= booklist.getUsedSize();

        for (int i = 0; i < currentSize; i++) {
            Book book=booklist.getBook(i);
            if(book.getName().equals(name)){
                System.out.println("找到了这本书!");
                System.out.println(book);
                return;
            }
        }

        //没有找到
        System.out.println("没有你要找的这本书");

    }
}

三,User包

1.User 抽象类
package User;

import Book.BookList;
import Operation.IOperation;

public abstract  class User {
    protected String name;//用户名 protected 可以用在不同包子类中
    protected IOperation[] iOperations;

    //构造方法,用来初始化对象姓名
    public User(String name){
        this.name=name;
    }

    //抽象类,在子类中实现具体的方法——重写,发生动态绑定
    public abstract int menu();

    public void doOperation (int choice, BookList bookList){
        this.iOperations[choice].work(bookList);
        //通过choice确定对象       调用指定方法
    }

}

2.AdminUser 管理员类
package User;

import Book.BookList;
import Operation.*;

import java.util.Scanner;

public class AdminUser extends User {

    public AdminUser(String name){
        super(name);
        this.iOperations=new IOperation[]{
                new ExitOperation(),//0 退出
                new FindOperation(),//1 查找
                new AddOperation(),//2 新增
                new DelOperation(),//3 删除
                new DisplayOperation()//4 显示
        };
    }
    public int menu(){
        System.out.println("hello"+this.name+"欢迎来到图书小练习");

        System.out.println("0.退出系统");
        System.out.println("1.查找图书");
        System.out.println("2.新增图书");
        System.out.println("3.删除图书");
        System.out.println("4.显示图书");
        System.out.println("请输入你的操作");

        //根据你的选择,返回你的选择
        Scanner input =new Scanner(System.in);
        int choice=input.nextInt();
        return choice;
    }


}

3.NormalUser  普通用户
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 归还
        };
    }

    public int menu(){
        System.out.println("hello"+this.name+"欢迎来到图书小练习");

        System.out.println("0.退出系统");
        System.out.println("1.查找图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("请输入你的操作");

        Scanner input =new Scanner(System.in);
        int choice=input.nextInt();
        return choice;
    }

}

四,Main类

import Book.BookList;
import User.*;

import java.util.Scanner;

public class Main {
    //在login方法中实现一个登录
    //以User为返回类型,发生向上转型
    public static User login(){
        Scanner input =new Scanner(System.in);

        System.out.println("请输入你的姓名:");
        String name=input.nextLine();

        //根据返回类型,新建一个不同的对象
        System.out.println("请输入你的身份:");
        System.out.println("1-> 管理员");
        System.out.println("0-> 普通用户");
        int choice =input.nextInt();
        if(choice==1){
            return new AdminUser(name);
        }else{
            return new NormalUser(name);
        }
    }

    public static void main(String[] args) {
        //准备图书
        BookList bookList=new BookList();
        //通过login()确定产生user这个对象引用User包里哪个类
        User user=login();
        while(true){
        int choice =user.menu();

            //超级重要的一句,对应User中的doOperation
            // user 对应管理员或者普通用户,取决于login()的返回类型
        user.doOperation(choice,bookList);

        //联系User类中,doOperation方法
        

            }
    }


}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/918639.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号