【JAVA】用Java实现简易图书管理系统

这篇具有很好参考价值的文章主要介绍了【JAVA】用Java实现简易图书管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 设计背景和系统功能和设计方法

1.1设计背景

图书馆作为每个大学或者城市必不可少的部分,其存放的海量书籍与文献使得其管理显得尤为困难,此时图书管理系统就起

到了一个重大的作用。

1.2系统功能

一种是面向管理员开启的菜单和功能,一种是面向所有普通用户来提供的菜单和功能。这些功能包括对于图书的借阅,归

还,增加,删除,查找以及显示。

1.3设计方法

利用 多态,继承,封装,接口 等知识点,来综合的设计和实现一个简易的图书管理系统。

2. 设计思路

①首先我们需要区分出管理员与普通用户,不同的用户所展示的界面不同,利用继承和多态可以实现这一思路;

普通用户:查找图书,借阅图书,归还图书,退出系统。

管理员:   查找图书,新增图书,删除图书,展示图书,退出系统。

②我们可以将各个操作都封装起来,单独的设计成一个类,且这些操作都需要遵循一定的规范,而接口实际上就是定义了一种规范,这里可以使用接口来进行实现。

③我们需要将书的属性进行封装,同时设立一个书架类,即存放的是书的数组。

3. 设计模块和代码实现

3.1 Book类的实现

【JAVA】用Java实现简易图书管理系统

这里书籍的属性有:书名,作者,价格,种类,是否被借出。

注意:是否被借出: private boolean isBorrowed,boolean的默认值是fasle。

我们结合封装性,为了安全起见,将属性设置为private权限,并提供相应的get方法和set方法,并需要提供对应的toString()方法的重写。

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() {
        String 未借出 = "未借出";
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ((isBorrowed==true)?"已借出":"未借出")+
                /*",isBorrowed=" + isBorrowed+ */
                '}';
    }
}

3.2 BookList类的实现(书架)

BookList类我们主要提供一个Book[ ]数组来进行Book的存储,数组大小先定为10,用privat修饰,便于后面对书籍的操作。

BookList类我们使用 usedSize:记录书架上目前有几本书先加入几本书籍,先加入三本书,并提供对应的get和set方法,

public class BookList {
    private Book[] books=new Book[10];
    private int usedSize;
    public BookList(){
        this.books[0]=new Book("三国演义","罗贯中",10,"小说");
        this.books[1]=new Book("红楼梦","曹雪芹",12,"小说");
        this.books[2]=new Book("西游记","吴承恩",13,"小说");
        this.usedSize=3;
    }

    public Book getBooks(int pos) {
        return books[pos];
    }

    public void setBooks(int pos, Book book) {
        books[pos] = book;
    }

    public int getUsedSize() {
        return usedSize;
    }

    public void setUsedSize(int usedSize) {
        this.usedSize = usedSize;
    }
}

3.3 User类的实现(用户类)

【JAVA】用Java实现简易图书管理系统

用户类中,我们需要定义用户的名字,同时定义一个抽象方法menu()来给子类管理员类和读者类重写(二者的目录不同)。

同时要提供set和get方法,并提供抽象Operation方法给子类重写使用(子类的目录不同,执行的操作就会存在差异。

并调用ioPerations类中的work方法,就可以实现不同用户有不同功能。

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

3.3.1 AdminUser(管理员类)

首先,管理员类需要继承于用户类,同时实现用户类中的抽象方法menu(),

同时实现抽象方法Operation(),这里可以利用接口的多态性来进行实现。

利用下标访问:0. 退出系统 ,1. 查找图书 ,2. 新增图书 ,3,删除图书 ,4.展示图书

public class AdminUser extends User{
    public AdminUser(String name) {
        super(name);
        this.ioPerations=new IOPeration[]{
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new ShowOperation()
        };
    }

    @Override
    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;
    }
}

3.3.2 NormalUser(普通用户类)

首先,普通用户类需要继承于用户类,同时实现用户类中的抽象方法menu(),

同时实现抽象方法Operation(),这里可以利用接口的多态性来进行实现。

利用下标访问:0. 退出系统 ,1. 查找图书 ,2. 借阅图书 ,3. 归还图书

public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
        this.ioPerations=new IOPeration[]{
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                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;
    }
}

3.4 Operation类的实现(操作类)

【JAVA】用Java实现简易图书管理系统

3.4.1 IOperation(操作接口的实现)

我们需要将操作类实现操作接口,同时为重写的方法提供书架类,便于进行操作。

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

3.4.2 AddOperation(增加图书)

我们需要将操作类实现操作接口,同时为重写的方法提供书架类,便于进行操作。代码实现如下:

public class AddOperation implements IOPeration{
    public void work(BookList bookList){

        System.out.println(" 新增图书!");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入书名:");
        String name=scanner.nextLine();

        System.out.println("请输入作者名:");
        String author=scanner.nextLine();

        System.out.println("请输入价格:");
        int price=scanner.nextInt();
        scanner.nextLine();

        System.out.println("请输入类型:");
        String type=scanner.nextLine();

        Book book=new Book(name,author,price,type);
        int currentSize= bookList.getUsedSize();

        for(int i=0;i<currentSize;i++){
            Book book1=bookList.getBooks(i);
            if(book1.getName().equals(name)){
                System.out.println("书架已存在这本书,不用再添加了!");
                return;
            }
        }
        bookList.setBooks(currentSize,book);
        bookList.setUsedSize(currentSize+1);
    }
}

3.4.3 FindOperation(查找图书)

public class FindOperation implements IOPeration{
    public void work(BookList bookList) {
        System.out.println(" 查找图书!");
        Scanner scanner=new Scanner(System.in);
        System.out.println(" 请输入您要查找的图书: ");
        String name=scanner.nextLine();

        int currentSize=bookList.getUsedSize();

        for(int i=0;i<currentSize;i++){
            Book book=bookList.getBooks(i);
            if(book.getName().equals(name)){
                System.out.println("找到了");
                System.out.println(book);
                return;
            }
        }
        System.out.println(" 很抱歉,没有找到!");
    }
}

3.4.4 DelOperation(删除图书)

public class DelOperation implements IOPeration{
    @Override
    public void work(BookList bookList) {
        System.out.println(" 删除图书!");
        int currentSize=bookList.getUsedSize();

        if(currentSize==0){
            System.out.println("书架为空,不能删除!");
            return;
        }

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

        int index=-1;
        for(int i=0;i<currentSize;i++){
            Book book1=bookList.getBooks(i);
            if(book1.getName().equals(name)){
                index=i;
                break;
            }
        }
        if(index==-1){
            System.out.println("没有你要删除的图书!");
        }
        for(int i=index;i<currentSize-1;i++){
            Book book1=bookList.getBooks(i+1);
            bookList.setBooks(i,book1);
        }

    }
}

3.4.5 ShowOperation(显示图书)

public class ShowOperation implements IOPeration{

    @Override
    public void work(BookList bookList) {
        System.out.println(" 显示图书!");

        int currentSize=bookList.getUsedSize();

        for (int i = 0; i <currentSize ; i++) {
            Book book=bookList.getBooks(i);
            System.out.println(book);
        }
    }
}

3.4.6 BorrowOperation(借阅图书)

public class BorrowOperation implements IOPeration{

    @Override
    public void work(BookList bookList) {
        System.out.println(" 借阅图书!");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入书名:");
        String name=scanner.nextLine();
        int currentSize= bookList.getUsedSize();

        for(int i=0;i<currentSize;i++){
            Book book1=bookList.getBooks(i);

            //如果有这本书,则不要再添加
            if(book1.getName().equals(name)){
                if(!book1.isBorrowed()){
                    System.out.println("借阅成功!");
                }else{
                    System.out.println("已被借走!");
                }
                return;
            }
        }
        System.out.println("没有你要借阅的图书!");

    }
}

3.4.7 ReturnOperation(归还图书)

public class ReturnOperation implements IOPeration{

    @Override
    public void work(BookList bookList) {
        System.out.println(" 归还图书!");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入书名:");
        String name=scanner.nextLine();
        int currentSize= bookList.getUsedSize();
        //如果有这本书,则不要再添加
        for(int i=0;i<currentSize;i++){
            Book book1=bookList.getBooks(i);
            if(book1.getName().equals(name)){
                book1.setBorrowed(false);
                System.out.println("归还成功!");
                return;
            }
        }
        System.out.println("没有你要归还的图书!");
    }

}

3.4.8 ExitOperation(退出系统)

public class ExitOperation implements IOPeration{

    @Override
    public void work(BookList bookList) {
        int currentSize= bookList.getUsedSize();
        for(int i=0;i<currentSize;i++){
            bookList.setBooks(i,null);
        }
        bookList.setUsedSize(0);
        System.exit(0);
    }
}

3.7 Test类

【JAVA】用Java实现简易图书管理系统

此时,我们所有的框架都已经搭建好了,只需要在Test类中添加main方法进行测试即可,代码如下:

public class Test{
    //可以利用返回值 的向上转型 达到发挥的一致性
    public static User login() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入你的身份:1-》管理员  0-》普通用户");
        int choice = scanner.nextInt();
        if(choice == 1) {
            /*AdminUser adminUser = new AdminUser(name);
            return adminUser;*/
            return new AdminUser(name);
        }else {
            /*NormalUser normalUser = new NormalUser(name);
            return normalUser;*/
            return new NormalUser(name);
        }
    }

    public static void main(String[] args) {

        BookList bookList = new BookList();

        User user = login();
        while (true) {
            int choice = user.menu();
            //user是哪个对象? choice是几? ---》 能够确定:我能够操作哪个对象的哪个方法?
            //通过这两个变量 可以确定了 但是怎么联系起来??
            /**
             * 1. 先让双方 存好 对应自己的操作
             * 2. 就是调用对应的操作!
             */
            user.doOperation(choice, bookList);

           /* System.out.println(choice);
            System.out.println(user);*/
        }
    }
}

4.总体效果展示

【JAVA】用Java实现简易图书管理系统

5. 总结

这个图书管理系统,更多的是对于构建一个系统框架的理解,并且利用了多态和继承,还有接口以及 抽象的应用,可以更好

的学习Java的语法知识。

💓 感谢阅读!文章来源地址https://www.toymoban.com/news/detail-437957.html

到了这里,关于【JAVA】用Java实现简易图书管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JAVA】 图书管理系统(javaSE简易版 内含画图分析) | 期末大作业&课程设计

    作者主页:paper jie 的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVA》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将javaSE基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《算法详

    2024年02月09日
    浏览(39)
  • 【Java】实现图书管理系统

    随着社会的发展和科技的进步,图书馆的规模和藏书量都在不断扩大,图书的管理和维护变得越来越复杂。传统的图书管理方式已经无法满足现代图书馆的需求,因此需要开发一种高效、便捷的图书管理系统来提高图书管理效率和读者的借阅体验。 在这种背景下,我们设计了

    2024年02月20日
    浏览(47)
  • 用python实现简易图书管理系统

    很多图书馆都有自己的图书管理系统,它主要担负的功能有 借书和还书 ,以及图书管理员对图书的操作等。 用户登录/注册—借书/还书/查看图书----(管理员)添加、修改图书信息 txt文件 首先,在任意位置创建一个文件夹,创建以下几个txt文件: bookISDN,ISDN.txt :存储书籍的

    2024年02月08日
    浏览(37)
  • 图书管理系统(借还图书)--Java实现(附源码)

    目录 图书管理系统权限 图书管理系统程序框图 图书管理系统架构 管理员执行流程 学生执行流程 详细代码 源码获取 毕设专栏 图书管理系统权限 管理员:具有  1、查找图书 2、增加图书 3、删除图书 4、显示图书 等功能 学生:具有  1、查找图书 2、借阅图书 3、归还图书

    2024年02月08日
    浏览(63)
  • Java 实现图书馆管理系统

    目录 一:创建对象 1.学生类对象Student : 2.图书类对象book : 3.管理员类对象OP: 二.创建主要交互界面MainMenu,并实现主界面功能 1.创建交互界面: 2.实现主界面功能: 三:创建OP管理界面: 1.创建主要交互界面及实现\\\"管理学生\\\"功能OPmenu: (1).交互界面: (2):实现\\\"管理学生\\\"功能: 2.实现\\\"管理

    2024年02月12日
    浏览(33)
  • 图书管理系统(Java实现)[附完整代码]

    作者:爱塔居的博客_CSDN博客-JavaSE领域博主 专栏:JavaSE 作者专栏:大三学生,希望跟大家一起进步! wx:csy1330748830 需要可以加,免费给。我是女孩子,别叫我哥,呜呜。 文章目录 目录 文章目录 一、图书管理系统菜单 二、实现基本框架  三、实现业务 3.1 打印所有图书  

    2023年04月23日
    浏览(30)
  • Java开发实现图书管理系统(超详细)

    本文用Java代码实现图书代码管理系统,有些地方可能会有纰漏,希望各位大佬鉴赏!! 文章目录 一、Java实现图书管理系统 1.1创建book包 二、创建图书管理系统的操作包 2.1创建Operation接口 三、创建User包 3.1创建User类 四、主函数的实现 首先在book中要创建Book类和BookList类,进

    2024年02月03日
    浏览(43)
  • java web + mysql 实现图书管理系统

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)   要使用Java Web和MySQL实现图书管理系统,你可以按照以下步骤进行操作: 数据库设计: 创建一个MySQL数据库,并命名为图书管理系统。

    2024年02月03日
    浏览(39)
  • 用Java语言实现一个简单的图书管理系统

    这个系统有两个登录选项:用户和管理员,选择两者进入都需要输入账号和密码进行审核。 用户有查看图书列表,借阅图书,归还图书这些选项,管理员有查看图书列表,增加图书,删除图书,修改图书这些选项。 我们先建一个Book类,用来存放图书名称以及借阅状态,图书

    2024年02月09日
    浏览(33)
  • 基于JAVA图书馆管理系统设计与实现

    【后台管理员功能】 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信息,支持删除 资讯分类:录入、修改、查看、删除资讯分类 录入资讯:录入资讯标题、内容等信息 管理资讯:查看已录入资讯列

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包