跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 卖家故事 > 【java】图书管理系统

【java】图书管理系统

时间:2024-04-03 12:05:42 来源:网络cs 作者:利杜鹃 栏目:卖家故事 阅读:

标签: 系统  管理  图书 
阅读本书更多章节>>>>

        有了前几篇文章关于封装、继承、多态、接口等的介绍,想必各位读者对java面向对象的思想有了一定的认识。接下来这篇文章就让我们趁热打铁,利用所学知识做一个小项目图书管理系统吧

目录

一、图书类

1、book类

2、bookList类

二、功能实现

1、IOperation接口

2、查找图书

3、借阅图书

4、归还图书

5、新增图书

6、删除图书

7、显示图书

8、退出系统

三、用户类

四、主函数逻辑实现

总结


一、图书类

        图书管理系统,顾名思义,起码要先有书被管理。因此我们应当先定义好于书相关的类。

1、book类

        先定义一下单本书的特性,一本书肯定会包含书名、作者、价格等信息,我们可以建立一个book类来描述每本书的特性:

package book;public class Book {    private String name;    private String author;    private int price;    private boolean IsBorrowed;    public Book(String name, String author, int price) {        this.name = name;        this.author = author;        this.price = price;    }    public String getName() {        return name;    }        public boolean isBorrowed() {        return IsBorrowed;    }    public void setBorrowed(boolean borrowed) {        this.IsBorrowed = borrowed;    }    @Override    public String toString() {        return "name='" + name + '\'' +                ", author='" + author + '\'' +                ", price=" + price +                (IsBorrowed?", 已借出":", 未借出");    }}

2、bookList类

        既然要做管理系统,那就不可能只处理一本书了,我们需要管理的是许多本特性各异的书。那么如何来存储这些信息呢?我们可以建立一个列表类来记录我们的图书信息:

package book;public class BookList {    private Book[] books=new Book[20];    private int userSize;    public BookList() {        books[0]=new Book("海贼王","尾田荣一郎",17);        books[1]=new Book("火影忍者","尾田荣一郎",19);        books[2]=new Book("红楼梦","曹雪芹",45);        books[3]=new Book("西游记","吴承恩",40);        books[4]=new Book("三国演义","罗贯中",37);        this.userSize=5;    }    public int getUserSize() {        return userSize;    }    public void setUserSize(int userSize) {        this.userSize = userSize;    }    public boolean isFull(){        if(this.userSize==books.length){            return true;        }else{            return false;        }    }    public Book getBook(int pos){        return books[pos];    }    public void setBook(int pos,Book book){        books[pos]=book;    }}

二、功能实现

       已经存储好书本信息后, 我们就要明确我们究竟要实现哪些功能?

具体实现就由小编来带大家一一介绍吧

1、IOperation接口

为了功能实现的方便,我们通过接口来实现各个功能,先定义一个接口IOperation:

public interface IOperation {    void work(BookList bookList);}

接着就可以通过重写接口中的work方法来实现各个的功能了,并且由于多态性,我们可以将各种不同功能的接口按顺序放在一个数组里,通过数组访问来实现不同功能,大大提高了效率。

如果你不知道多态是什么的话,可以看看小编之前的文章面向对象三大特性之多态 哦

2、查找图书

public class FindOperatino implements IOperation{    @Override    public void work(BookList bookList) {        System.out.println("查找图书………………");        System.out.println("请输入你要查找的书名:");        Scanner in =new Scanner(System.in);        String bookname=in.nextLine();        int Size= bookList.getUserSize();        for(int i=0;i<Size;i++){            Book book=bookList.getBook(i);            if(book.getName().equals(bookname)){                System.out.println("找到了这本书:");                System.out.println(book);                return;            }        }        System.out.println("没有你要找的书!");    }}

3、借阅图书

public class BorrowedOperation implements IOperation{    @Override    public void work(BookList bookList) {        System.out.println("借阅图书………………");        System.out.println("请输入你要借阅的书名:");        Scanner in =new Scanner(System.in);        String bookname=in.nextLine();        int Size= bookList.getUserSize();        for(int i=0;i<Size;i++){            Book book=bookList.getBook(i);            if(book.getName().equals(bookname)){                System.out.println("借阅成功!");                book.setBorrowed(true);                //System.out.println(book);                return;            }        }        System.out.println("没有你要借阅的书!");    }}

4、归还图书

public class ReturnOperation implements IOperation{    @Override    public void work(BookList bookList) {        System.out.println("归还图书………………");        System.out.println("请输入你要归还的图书:");        Scanner in =new Scanner(System.in);        String bookname=in.nextLine();        int Size= bookList.getUserSize();        for(int i=0;i<Size;i++){            Book book=bookList.getBook(i);            if(book.getName().equals(bookname)&&book.isBorrowed()){                System.out.println("归还成功!");                book.setBorrowed(false);                //System.out.println(book);                return;            }        }        System.out.println("没有你要归还的书!");    }}

5、新增图书

public class AddOperation implements IOperation{    @Override    public void work(BookList bookList) {        System.out.println("新增图书………………");        Scanner in=new Scanner(System.in);        if(bookList.isFull()){            System.out.println("书架满了,无法新增图书了!");            return;        }        System.out.println("请输入图书的名称:");        String name=in.nextLine();        System.out.println("请输入图书的作者:");        String author=in.nextLine();        System.out.println("请输入图书的价格:");        int price=in.nextInt();        Book book=new Book(name,author,price);        int pos= bookList.getUserSize();        bookList.setBook(pos,book);        bookList.setUserSize(pos+1);    }}

6、删除图书

public class DeleteOperation implements IOperation{    @Override    public void work(BookList bookList) {        System.out.println("删除图书………………");        System.out.println("请输入你要删除的图书:");        Scanner in =new Scanner(System.in);        String bookname=in.nextLine();        int Size= bookList.getUserSize();        for(int i=0;i<Size;i++){            Book book=bookList.getBook(i);            if(book.getName().equals(bookname)){                for(int j=i;j<Size;j++){                    Book bookl=bookList.getBook(j+1);                    bookList.setBook(j,bookl);                }                bookList.setUserSize(Size-1);                System.out.println("删除成功!");                //System.out.println(book);                return;            }        }        System.out.println("没有你要删除的书!");    }}

7、显示图书

public class ShowOperation implements IOperation{    @Override    public void work(BookList bookList) {        System.out.println("显示图书………………");        int Size= bookList.getUserSize();        for(int i=0;i<Size;i++){            Book book=bookList.getBook(i);            System.out.println(book);        }    }}

8、退出系统

public class ExitOperation implements IOperation {    @Override    public void work(Bookshelf bookshelf) {        System.out.println("退出图书...");        int sz=bookshelf.getBooknum();        // 遍历置为 null        for (int i = 0; i <sz ; i++) {            bookshelf.setBooks(i,null);        }        System.out.println("图书系统正在退出中...");        // 系统退出        System.exit(-1);    }}


        这时我们就可以用如下方法来整合了:

super(name);        this.iOperations=new IOperation[]{                new ExitOperation(),                new FindOperatino(),                new AddOperation(),                new DeleteOperation(),                new ShowOperation()        };

这样就可以通过数组的不同下标来实现功能了,会变得方便许多。

三、用户类

        作为一个图书管理系统,我们应当设置不同的用户特性,如增删书籍应该是管理员才有的权限,借阅书籍是普通用户需要实现的功能,但同时他们又有许多的共性,如姓名等信息,这时我们就可以利用继承的思想先定义一个父类User来记录用户的共性:

abstract public class User {    protected String name;    protected IOperation[] iOperations;    public User(String name) {        this.name = name;    }    public void doIoperation(int choice, BookList bookList){        this.iOperations[choice].work(bookList);    }    public abstract int menu();}

接着我们就可以写出各个具体的子类用户了

管理员用户:

public class AdminUser extends User {    public AdminUser(String name) {        super(name);        this.iOperations=new IOperation[]{                new ExitOperation(),                new FindOperatino(),                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 in=new Scanner(System.in);        int choice=in.nextInt();        return choice;    }}

普通用户:

public class NormalUser extends User{    public NormalUser(String name) {        super(name);        this.iOperations=new IOperation[]{                new ExitOperation(),                new FindOperatino(),                new BorrowedOperation(),                new ReturnOperation()        };    }    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 in=new Scanner(System.in);        int choice=in.nextInt();        return choice;    }}

四、主函数逻辑实现

public class Main {    public static User login(){        Scanner in =new Scanner(System.in);        System.out.println("欢迎来到图书管理系统");        System.out.println("请输入你的名字:");        String name=in.nextLine();        System.out.println("请输入你的身份:");        String identity=in.nextLine();        if(identity.equals("管理员")){            AdminUser adminUser=new AdminUser(name);            return adminUser;        }else{            NormalUser normalUser=new NormalUser(name);            return normalUser;        }    }    public static void main(String[] args) {        BookList bookList=new BookList();        User user=login();        while(true){            int choice=user.menu();            user.doIoperation(choice,bookList);        }    }}

通过主函数逻辑来整合我们写过的各个模块,从而实现最终功能。


总结

        从这个项目中我们可以看到,在父类User中实例化了iOperations对象,建立了一个以IOperation为元素的数组,接着在子类中按顺序建立创建好的功能接口,从而可以直接用下标来访问相应接口,这利用继承、多态、接口等思想,可谓是对面向对象思想的深度诠释。

那么本篇文章就到此为止了,如果觉得这篇文章对你有帮助的话,可以点一下关注和点赞来支持作者哦。作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/gushi/2024-04-03/153216.html,文章来源:网络cs,作者:利杜鹃,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论