Java实现图书系统

首先实现一个图书管理系统,我们要知道有哪些元素?

1.用户分成为管理员和普通用户

2.书:书架   书

3.操作的是: 书架

目录

第一步:建包

第二步:搭建框架

首先:完成book中的方法

其次:完成BookList

然后:完成管理员界面和普通用户界面

最后:Main

第三步:细分方法

1.退出系统

2.查找图书

3.借阅图书

​编辑4.归还图书

5.显示图书

6.增加图书

7.删除图书

8.IOperation


第一步:建包

首先:我们要生成三个包; 一个:Book; 一个:User;  一个:ioperations;

Book:  包中包含Book类BookList类和Main类,其中Book类用来实现Book的初始化,运用get和set取得属性的值和给属性赋值,调用constructor:创建对象时初始化 ,使用Tostring方法,BookList类用于展示当前图书系统的书籍,Main类:具体的方法实现;

User:包中包含AdminUser类,NomalUser类和User类;AdminUser用于实现管理员下的方法,NomalUser用于实现普通用户的方法,User:是一个抽象类,用于存放AdminUser和NomalUser共性的东西;

ioperations:相当于一个接口,当中存放着AdminUser和NomalUser中将调用的方法:例如:增加图书,删除图书,退出系统等...

第二步:搭建框架

首先:完成book中的方法

其中需要主要的是:

\

isBorrowed是判断书是否被借出,是不需要创建对象时初始化的

其次:完成BookList

其中需要注意的是:我们要创建一个数组进行书的存储,设置好有效长度,方便后面书的增删查改,同时也定义原有书架上的书

然后:完成管理员界面和普通用户界面

首先;我们要明白:管理员和普通用户使用的界面不一样,因此调用的方法也不一样,所以我们需要创建一个AdminUser和一个NomalUser来区分,也同时方便后面的调用;

与此同时,在这两个的管理系统上面也存在一定的共性,我们要进行总和,所以也需要创建一个User,这里的User就相当于是AdminUser和NomalUser的父类;并且这里的User没有具体的实现,相当于一个抽象类;    在抽象类中我们要知道,父类是抽象类,子类必须重写抽象方法

其中想同的点:使用着的名字,初始化 , 同一个书架,menu方法,doIoperation方法:通过数组下标调用对应的方法实现功能

普通用户和管理员只是对应的方法不同

User:

最后:Main

我们需要实现这个内容;

用login这个方法去实现,最后在main方法中调用,

其中我们需要注意的是,在身份选择的时候我们需要去判断是进入AdminUser还是NomalUser

基本框架就实现完了

第三步:细分方法

1.退出系统

2.查找图书

首先我们要明白:说的查找图书就相当于在书架上找书,书架相当于一个数组!

3.借阅图书

其中需要注意到:找到书后需要修改书的状态,判断书是否被借出



4.归还图书

5.显示图书

使用for循环调取数组的下标

6.增加图书

按照4步的方法一次解决

注意:

如果先输入整型在输入类型的话,它会将回车读入类型当中去;

7.删除图书

步骤:

1.找到书是否存在

2.然后再删除

注意:

面向过程时:bookList[j] = bookList[j+1];是这样的思路;

而我们在面向对象时:

最后将currentSize-1;

实现的全过程:

8.IOperation

用来调用对应方法的接口;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring—Spring配置文件概念及应用(实现一个图形验证码)

文章目录 配置文件配置文件作用配置文件的格式配置文件优先级说明配置文件书写代码的格式yml文件代码的格式 Value注解 properties 缺点分析properties VS yml实现一个验证码程序 配置文件 配置文件作用 整个项目的重要信息我们都会配置在配置文件中,比如说我们数…

视频拼接融合产品的产品与架构设计(四)分布式GPU运算合并单元

上一篇如下 视频拼接融合产品的产品与架构设计(三)内存和显存单元数据迁移 视频合并单元说明 对下面这张图做些说明,视频接入是比较常见,可以说是普通,但是做到接入后随即进行比较重的算法运算,这个在视频领域并不多…

软件项目详细设计说明书实际项目参考(word原件下载及全套软件资料包)

系统详细设计说明书案例(直接套用) 1.系统总体设计 2.性能设计 3.系统功能模块详细设计 4.数据库设计 5.接口设计 6.系统出错处理设计 7.系统处理规定 软件开发全文档下载(下面链接或者本文末个人名片直接获取):软件开发全套资料-…

C++ 常用UI库

AWTK github gitee doc scons 类似RT-Thread element github C Cross platfrom C GUI libraries,QT可替代方案。调试包 SDL GUI cegui 创作不易, 小小的支持一下吧!

泛型...

定义&#xff1a;在编译过程中约束操作的数据类型。&#xff08;统一数据类型&#xff09; 格式&#xff1a;<数据类型> 泛型中不能写基本数据类型。 泛型类 在一个类中&#xff0c;某个变量的数据类型不确定时&#xff0c;可以定义带有泛型的类。 泛型的底层是Obje…

电量计量芯片HLW8110的前端电路设计与误差分析校正.pdf 下载

电量计量芯片HLW8110的前端电路设计与误差分析校正.pdf 下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1vlCtC3LGFMzYpSUUDY-tEg 提取码&#xff1a;8110

十四天学会Vue——Vue核心(理论+实战)(第一天)上篇

&#xff01;&#xff01;&#xff01;声明必看&#xff1a;由于本篇开始就写了Vue&#xff0c;内容过多&#xff0c;本篇部分内容还有待完善&#xff0c;小编先去将连续更新的js高阶第四天完成~本篇部分待完善内容明日更新 一、Vue核心&#xff08;上篇&#xff09; 热身top…

vue3+electron+typescript 项目安装、打包、多平台踩坑记录

环境说明 这里的测试如果没有其他特别说明的&#xff0c;就是在win10/i7环境&#xff0c;64位 创建项目 vite官方是直接支持创建electron项目的&#xff0c;所以&#xff0c;这里就简单很多了。我们已经不需要向开始那样自己去慢慢搭建 yarn create vite这里使用yarn创建&a…

外企也半夜发布上线吗?

0 别把问题想得太复杂 如果有灰度发布的能力&#xff0c;最好白天发布&#xff1b;如果没有灰度发布&#xff0c;只能在半夜发布。 即使有灰度发布能力&#xff0c;也不要沾沾自喜&#xff0c;好好反思一下你们的灰度发布是否真的经得起考验&#xff0c;还是仅仅是装装样子。…

golang创建式设计模式---工厂模式

创建式设计模式—工厂模式 目录导航 创建式设计模式---工厂模式1)什么是工厂模式2)使用场景3)实现方式4)实践案例5)优缺点分析 1)什么是工厂模式 工厂模式(Factory Method Pattern)是一种设计模式&#xff0c;旨在创建对象时&#xff0c;将对象的创建与使用进行分离。通过定义…

深度学习中的多GPU训练(Pytorch 20)

一 多GPU训练 下面详细介绍如何从零开始并行地训练网络&#xff0c;这里需要运用小批量随机梯度下降算法。后面我还讲介绍如何使用高级API并行训练网络。 我们从一个简单的计算机视觉问题和一个稍稍过时的网络开始。这个网络有多个卷积层和汇聚层&#xff0c;最后可能 有几个…

picamera配opencv做发现移动物体后录像50秒

本来是想配合上一篇写的测距传感器数据打开摄像头录制个50秒实时画面&#xff0c;后来这个测距传感器&#xff08;因为我是歪用&#xff0c;用来识别范围内的移动物体&#xff09;给的数据&#xff0c;false alarming还是太高了。于是想到使用本人之前深恶痛绝的opencv来试一试…

【编译原理--- 汇编、编译、解释系统】

汇编、编译、解释系统 1.编译方式和解释方式 程序种类是否生成目标程序是否参与程序的运行过程程序执行速度可移植性编译程序生成不参与快差解释程序不生成参与慢好 编译方式过程&#xff1a;词法分析、语法分析、语义分析、&#xff08;中间代码生成、代码优化、&#xff0…

如何解决mfc110udll丢失的问题,7个方法可解决mfc110udll丢失

mfc110u.dll是一个动态链接库文件&#xff0c;属于Microsoft Visual C 2012 Redistributable Package的一部分。它是Microsoft Foundation Classes (MFC) 库的一个版本&#xff0c;专门用于支持基于MFC开发的应用程序运行。MFC是一个用于Windows操作系统上使用C进行本机应用程序…

VS+QT连接mysql

1.将mysql安装目录中的库文件拷贝到qt的bin目录下&#xff0c;windows下拷贝dll后缀&#xff0c;linux拷贝lib后缀 2.在qt模块中添加sql模块 或者在.pri文件中加上 QT sql 3.代码连接数据库 #include <QtSql>QSqlDatabase DB; DB QSqlDatabase::addDatabase(&…

反弹shell详细易懂讲解,看这一篇就够了

文章目录 反弹shell详细易懂讲解&#xff0c;看这一篇就够了一: 基础shell知识什么是shell&#xff0c;bash与shell的区别?通俗解释类型功能常见命令 二: 什么是反弹shell三: 反弹shell类型bash反弹shellNetcat 一句话反弹curl反弹shell正确姿势 wget方式反弹awk反弹 Shellsoc…

车载电子电器架构 —— 应用软件开发(下)

车载电子电器架构 —— 应用软件开发(下) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证…

WWW 2024最佳论文|大型语言模型的机制设计

【摘要】我们研究拍卖机制以支持人工智能生成内容的新兴格式。我们特别研究如何以激励兼容的方式聚合多个法学硕士。在这个问题中&#xff0c;每个代理对随机生成的内容的偏好被描述/编码为 LLM。一个关键动机是为人工智能生成的广告创意设计一种拍卖格式&#xff0c;以结合不同…

《计算机网络微课堂》1-4 计算机网络的定义和分类

本节课我们介绍计算机网络的定义和分类。 首先来看计算机网络的定义&#xff1a;计算机网络的精确定义并未统一&#xff0c;换句话说&#xff0c;全世界没有一个对计算机网络的公认的唯一定义。 这里我们给出一个计算机网络的最简单定义&#xff0c;即计算机网络是一些互相连接…

【LeetCode刷题】滑动窗口思想解决:最大连续1的个数 III、将x减到0的最小操作数

【LeetCode刷题】Day 8 题目1&#xff1a;1004.最大连续1的个数 III思路分析&#xff1a;思路1&#xff1a;暴力枚举zero计数器思路2&#xff1a;滑动窗口zero计数器 题目2&#xff1a;1658. 将x减到0的最小操作数思路分析&#xff1a;思路1&#xff1a;暴力枚举思路2&#xff…