【JavaSE语法】图书管理系统实现详解

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

图片出处:The world's biggest drone photo and video sharing platform | SkyPixel.com 

 导言

        在学完JavaSE语法后,我们就可以去尝试写一个简单的图书管理系统来进一步提升我们面对对象编程的思想。在该系统中会涉及到数组,接口,封装,继承,多态等等语法知识,希望能够帮助到大家!


目录

 导言

1,需求分析

(1)找对象

(2)功能设计

2,创建对象

(1)使用包对类进行管理

(2)对象的创建

(1)aboutTheBook包

(2)operations包

(3)aboutUsers包 

3,代码框架搭建

(1)login方法

(2)main方法 ==> 代码总逻辑

(3)框架测试

4,具体功能实现 

(1)Show类

(2)Add类 

(3)Delete类

(4)Borrow类 和 Return类

(5)Find类

(6)Modify类

(7)Top类 

(8)Exit类


1,需求分析

(1)找对象

        在开始编写代码之前,我们需要先找到该系统可能涉及的对象,如下:

书 

书架 

管理员

普通用户

(2)功能设计

        我将根据使用者访问权限的不同,计划分为两个使用者类,如下:

管理员:

  • 上架图书
  • 下架图书
  • 查找图书
  • 显示所有图书
  • 修改图书状态
  • 退出系统

普通用户:

  • 借阅图书
  • 归还图书
  • 查找图书
  • 图书借阅排行榜
  • 退出系统

        可以看出,上述所有功能都是依赖于书架进行操作的,但是由于需要区分使用权限,故将所有功能统一放在一个包中,再在用户类中以转移表的方式进行调用,此操作在后续会进行详细讲解。

2,创建对象

        当找到对象后,就可以开始创建对象,我们可以先将所想到的属性详尽地描述,后续再查漏补缺。同时,在创建对象时需要注意类的封装性。

(1)使用包对类进行管理

        在创建对象之前,先按照对象的类型创建三个包:

aboutTheBook --关于书的包,存放书架,书等类

aboutUsers      --关于用户的包,存放管理员,普通用户等类

operations        --关于操作方法的包 

【JavaSE语法】图书管理系统实现详解,java,开发语言

(2)对象的创建

(1)aboutTheBook包

<1>Book类

        对于Book类而言,可根据具体需求对其添加属性,并且由于它是本系统中最基础的操作单位,故要对其进行封装。

【JavaSE语法】图书管理系统实现详解,java,开发语言

<2>BookShelf

        BookShelf类主要用来存放书,并对书进行管理。此处我使用的是数组结构,如下:【JavaSE语法】图书管理系统实现详解,java,开发语言

(2)operations包

<1>IOperation类

        在operation包中存放的是所有和图书管理有关的操作方法类,故我创建了接口IOperation,并让每个类都实现该接口。由此便可使用 IOperation类型数组对所有的方法进行组织。

      目前IOPeration接口代码如下:

        (因为所有的操作都是围绕书架进行的,故work的参数列表中应当传递BookShelf)【JavaSE语法】图书管理系统实现详解,java,开发语言

        

<2>操作方法类

        操作方法在后文中会详细地讲到,目前只是代码框架的搭建,以Add类为例,目前每个类的实现如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

(3)aboutUsers 

<1>User类

  在aboutTheBook包中,我定义了三个类,分别是抽象类User,普通类AdminUser,普通类NormalUser,其中AdminUser类和NormalUser类均继承于User类。

  那么为什么需要定义一个抽象类呢?如下:【JavaSE语法】图书管理系统实现详解,java,开发语言

   上图是目前User类的全部代码,可以看到在该类中声明了两个抽象方法,分别是:

public abstract int menu();  -->打印菜单,并且返回所输入的值
public abstract void doOperation(int choose, BookShelf bookShelf); -->转移表操作

        AdminUser类 和 NormalUser类 继承 User类,并且重写 User类 的抽象方法,那后续就可以直接使用父类类型去实例化子类对象,再调用重写方法,此时就会发生动态绑定,直接调用所引用的子类的重写方法,从而实现多态性。

        届时,我们只需要根据用户选择的登录方法返回相应的实例化对象交给User类型接收,直接使用User类型变量去调用方法即可。

<2>AdminUser类 与 NormalUser类

AdminUser类:

【JavaSE语法】图书管理系统实现详解,java,开发语言

NormalUser类:【JavaSE语法】图书管理系统实现详解,java,开发语言 

        通过上述代码可以看到,AdminUser类与NormalUser类只需对父类中的抽象方法进行实现即可,并无其它自有的属性。唯一的区别在于:由于操作权限的不同,导致菜单与转移表的内容不同。

  menu方法逻辑注解:

        (以NormalUser为例)【JavaSE语法】图书管理系统实现详解,java,开发语言

doOperation方法逻辑注解:

        (以NormalUser为例)【JavaSE语法】图书管理系统实现详解,java,开发语言

3,代码框架搭建

         在前文中,我们已经完成找对象与使用对象这两个步骤,接下来我们利用对象之间的交互来实现代码框架的代码,通过Main类中的main函数将所有类、方法、接口串联起来。

(1)login方法

        在运行程序之初,我们需要完成用户登录这一操作,故封装login方法,代码如下:【JavaSE语法】图书管理系统实现详解,java,开发语言

(2)main方法 ==> 代码总逻辑

        main方法代码如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

        代码逻辑如下(假设login返回的是NormalUser的实例对象):

(每个函数具体的实现逻辑在上文均有详细讲解,图中黄线为主逻辑,红线为所调用的代码)【JavaSE语法】图书管理系统实现详解,java,开发语言

 (3)框架测试

【JavaSE语法】图书管理系统实现详解,java,开发语言

        (实际测试了很多情况,上图为最基本的使用场景)      

        至此,代码框架均已搭建完毕,而操作方法的具体实现会在下文中进行详细讲解。

4,具体功能实现 

        对于一些接口的方法会在下面类中重复使用到,我仅对其第一次出现时进行解答,后续再出现将不再赘述

        (1)Show类

        为了能够更好地展示后续对图书的上架,下架等操作,故先实现Show类。

        Show的功能设定为展示所有图书,顾名思义就是将打印顺序表中的所有有效元素。分两个步骤:判空和打印。考虑到后续其它类的实现也会使用到判空,故我创建了ICheckIsEmpty接口用于判空。

        不过直接使用 System.out.println 打印对象其真实打印的是对象的地址,故我们还需要先在Book类中重写 toString 方法,如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

       

        代码实现如下:【JavaSE语法】图书管理系统实现详解,java,开发语言

        控制台示例输出如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

         (2)Add类 

        Add的功能设定为上架图书,即是增加元素。既然是增加元素,那么就需要考虑空间是否已经满了,若是满了则需要扩容后再添加元素。为此,我创建了ICheckCapacity接口用于检查内存。

        由于其需要在书架中添加书,所以需要先在BookShelf类中新增一个 设置pos位置数据 的对外方法,如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

       

        Add类代码如下:【JavaSE语法】图书管理系统实现详解,java,开发语言

        控制台示例输出如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

        (3)Delete类

        Delete类的功能设定为下架图书,实际就是在书架中删除该图书。在删除之前需要判断两个前置条件:     

        1:书架不能为空

        2:待删除的书不能不存在

        故我们除去判空接口之外,还需要创建一个查找接口,用于查找特定的元素,并返回其下标,具体实现如下:【JavaSE语法】图书管理系统实现详解,java,开发语言

        控制台示例输出如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

         (4)Borrow类 和 Return类

        Borrow类的功能设定是借阅图书,而Return类的功能设定是归还图书。由于两者代码逻辑高度相似,故为了避免重复啰嗦,于是我将这两个类放在一起讲解。

        在图书馆里系统中,无论是借阅还是归还,只需修改其书籍借阅状态即可,在本系统中我还添加了书籍借阅次数,所以在每次借阅成功之后,借阅次数需要+1。

        代码实现如下:

Borrow类(借阅图书)

【JavaSE语法】图书管理系统实现详解,java,开发语言

Return类(归还图书)   【JavaSE语法】图书管理系统实现详解,java,开发语言        控制台输出示例如下:

(借阅)

【JavaSE语法】图书管理系统实现详解,java,开发语言 (归还)

【JavaSE语法】图书管理系统实现详解,java,开发语言

        (5)Find类

        Find类的功能设定为查找图书,逻辑较为简单。

        代码实现如下:【JavaSE语法】图书管理系统实现详解,java,开发语言

               控制台输出示例如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

         (6)Modify类

        Modify类的功能设定为修改指定下标元素的信息。

        代码实现如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

        控制台输出示例如下:        

【JavaSE语法】图书管理系统实现详解,java,开发语言

        (7)Top类 

        Top类的功能设定为图书借阅次数排行榜,但是由于作者还未学习数据库相关知识,暂时不能实现代码持久化,故借阅次数会随着程序的关闭而清除,请您见谅...

        代码实现如下:【JavaSE语法】图书管理系统实现详解,java,开发语言

         控制台输出示例如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言

        (8)Exit类

        在mian方法中,当我们输入零时,便会结束运行本次程序。在结束之前,还会运行Exit类中的work方法,目前我仅设置其功能为 输出提示。

        代码实现如下:

【JavaSE语法】图书管理系统实现详解,java,开发语言


        本系统目前只是初具雏形,在以后,我会随着自己技术的提升不断对该系统进行优化,希望这一天能够尽快到来!

        感谢大家的观看,希望这篇文章能让您有所收获!文章来源地址https://www.toymoban.com/news/detail-810076.html

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

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

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

相关文章

  • SpringBoot项目----图书管理系统(详解)

    目录 项目业务  技术栈 数据库表的设计  数据库表关系图 关于字典表  前后端接口实现 1.初始化数据库、表、数据 2.数据库连接池配置 3.统一响应封装  4.统一异常处理 5.实现统一会话管理(登录)  5.通过Mybatis生成工具,生成mapper接口,xml文件,实体类  6.准备所有的Co

    2024年02月09日
    浏览(33)
  • 图书管理系统(Java简单版)(完整代码+详解)

    目录 详解:  BookList类: InOperation接口  User类(父类) 和 Main类(这俩要一起看) 完整代码  book包  Book类  BookList类 operation包   AddBook类 BorrowBook类 DeleteBook类 FindBook类 PrintBook类 ReturnBook类 Exit类 InOperation接口 user包  Domestic类 Administrator类 User类  Main类  按照上图逻辑来写

    2024年02月08日
    浏览(31)
  • 【Java 基础篇】Java 图书管理系统详解

    图书管理系统是一种用于管理图书信息、借阅记录、用户信息等的软件系统。它可以帮助图书馆、书店或个人管理和组织图书资源,提供了方便的借阅和查询功能。在这篇博客中,我们将详细介绍如何使用Java编程语言创建一个简单的图书管理系统。 在设计图书管理系统之前

    2024年02月05日
    浏览(32)
  • Java面向对象编程实战详解(图书管理系统示例)

    Java面向对象编程(Object-Oriented Programming,OOP)是Java语言的核心特性之一,它提供了一种组织代码的方法,将现实世界中的事物抽象为对象,并通过对象之间的交互来构建程序。Java面向对象编程包含以下主要概念: 类和对象(Class and Object): 类是面向对象编程的基本构建块

    2024年02月15日
    浏览(35)
  • 图书管理系统|基于Springboot的图书管理系统设计与实现(源码+数据库+文档)

    图书管理系统目录 目录 基于Springboot的图书管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、个人中心 2、管理员管理 3、用户管理 4、图书出版社管理 四、数据库设计 1、实体ER图 五、核心代码  六、论文参考 七、最新计算机毕设选题推荐 八、源码获取:

    2024年03月26日
    浏览(78)
  • 【Java】实现图书管理系统

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

    2024年02月20日
    浏览(46)
  • 图书管理系统——链表实现

    实验要求: 定义一个包含图书信息(书号、书名、价格)的顺序表或者链表。要求实现下面功能: 读入相应的图书数据来完成图书信息表的创建。然后,输出图书表中的图书个数,同时逐行输出每本图书的信息。 由于某种原因物价上涨,书店计划提高图书价格,要求计算所有

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

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

    2024年02月08日
    浏览(62)
  • 图书管理系统(C语言实现)

    设计并实现一个简单的图书管理系统 本次实训内容主要在于训练学生的C语言的基本编程能力,通过C语言输入输出、循环语句、子函数设计、数组、结构体等知识点,完成一个简单图书管理系统的设计开发。实现录入图书、删除指定图书、修改指定图书和查询指定图书的基本

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

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

    2024年02月12日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包