图书管理系统(Java)

Java 图书管理系统 使用JavaSE的语法来写一个图书管理系统的小项目。 阅读详情

思路

全部代码我会放最下面

兄弟们,我又回来了,我们上文聊了聊Java的抽象类和接口,再前面我们聊了封装,继承,多态,我们就基本把Java语法聊的差不多了(重点的内容),所以我们来写一个小项目,通过这个小项目把我们前面聊内容总体复习一遍。好下面我们开始。

我们Java是一门面向对象的语言,因此我们设计的时候,也是以对象为主,因此我们再设计的时候可以先把对象设计出来,再对这个对象来进行一系列的操作(因为我是之前学了c语言,所以这是我认为Java和c语言在设计上最大的区别,我之前在学c语言的时候,写一个小项目,就比如大家可以看看,这个是我之前写的扫雷)我妈给我一巴掌说你为什么要玩游戏我看了眼扫雷。结果有人回应了我看了一眼和我几分相似。我问他你是谁。他说如果你现在不玩以后你怎么写出来。-优快云博客(在写之前我得到了一个写代码的思路。首先知道你要他做什么他的用法,之后再根据他的用法来推断他的功能。再把功能细分(当然这个是大项目的思路,小项目的就不用想直接写)各个突破。)这句话是我在写扫雷的时候写的,这个就明确的体现了,我在写c语言的项目的时候,我的思路是通过用法来推断功能,我们在去实现这个功能就行了,但是在Java中就不一样了,项目要优先考虑对象,而为什么我们要优先考虑对象呢。这个可以看我上一篇,就可以找到答案。(我感觉这个是语言决定的,毕竟每个语言都有他们的特点,不然怎么有存在的必要呢)所以外面写Java项目的时候是先把我们的对象写出来,我们再通过操作这个对象从而来实现一系列的操作,就像你制作了一个傀儡,你通过操作傀儡来进行一系列的操作,因此把这个思想代入图书管理系统,就是我们先创建一个对象,但是这个对象的什么呢,你想我们是不是要通过客户来操作,所以这个对象就是客户,那还有谁呢,是不是还需要一个管理的人员,来进行管理,后面我们要进行什么操作就通过我们创建好的对象来操作就行了。我们把思路整理完了,就可以开始写了

正片开始

对象:普通用户和管理员

我们先创建一个对象,再上面我们也是明白了我们创建两个对象,一个是普通用户(客户),还有一个是管理员,但是这两个虽然有不同,但是还是有很多的共通之处,所以我们可以写一个父类User,我们就先写这个User,我们首先要一个名字,所以我们定义一个String,以及他的构造方法,

以及name的get和set,如果还需要别的功能,我们后面再加。我们把父类创建好了,就可以写子类我们先写普通用户(NormalUser)以下内容都是NormalUser的,没有管理员的

我们先让普通用户继承至父类,因为我们普通用户和管理员要做的不一样,所以我们要再各自的子类中写出他们的菜单,就是选择要进行什么操作,就比如普通用户,我们就有这些功能

如果你还有别的,我就不加,嘻嘻。

所以我们就先写菜单,但是因为我们普通用户和管理员都需要菜单,所以我们可以把菜单写在父类里面(作为一个抽象类,让子类一定要重写)

所以我们就可以在子类里面写了

应该有人发现了最下面,我们让用户输入了一个数,而这个数就是用户要进行第几个操作的数,而我们怎么操作这个数可以使程序进行正确的操作呢,目前我知道最方便的方法是我创建一个数组,而这个数组里面的内容就是一个方法,我们就可以通过访问数组的第几个元素来实现我们需要访问的方法,而因为不管是管理员还是普通用户,都是需要的,所以我们把这个创建在父类中

而在子类中我们就按照在菜单写的顺序创建一个又一个的方法,因为这个是必要的,所以我们就可以直接写在构造方法里面

所以这些就是一个子类的全部内容

现在你先把上面的全部全部理解一下,我认为啊,上面的全部理解了,你自己就可以把管理员写出来了,所以我直接把代码展示出来

对象:书

以上我们就把对象创建好了。我们就要开始对对象进行操作了。你想我们要管理书籍,所以我们肯定要把书籍书籍创建出来吧。所以我们来想想书籍有哪些基本元素,首先书名要吧,我们在加一个作者,书籍价格,还要什么,在来一个分类吧,就差不多了,噢,还要一个是否借出(还有别的你要加就加呗,反正我不加了),我们把这些属性设计好了,接下来就是写这些的set和get方法就行了,但是不要忘记我们还要写构造方法噢,这样就是我们一本书的全部内容,我们写图书管理也不可能是只有一本书,我们需要一个书的列表,所以我们在创建一个类叫Book List,而这个类的核心就是把书全部存储在这里面,所以我们在Book List里面创建一个Book的数组,而这个数组我们要创建多大啊,这个看你自己噢(你说不是有动态的数据管理吗,嘻嘻,我不会),因此我们就先创建一个固定的就好了,但是还要一个要注意的,就是我们需要一个数来记录我们一共存储了多少本书,我们在Book List里面再加一个int size,我们就来写列表的功能了,首先的最基础的加书和减书,我们大体就把列表做好了,这个放书还是要说一句的,就是我把书放在第二个位子,那这个书的序号是第几个啊,对,第二个,知道的话就应该没有什么问题了, 同时,我们最好是在写列表的时候,先加几个元素,这样有助于我们后面的调试,不然每一次都要输入怎么多,肯定觉得烦。所以我们的BookList就是

写到这里,我们大体就写完了,现在,我们把书和用户都表现出来了,就是问你要的两个对象都出来了,现在我们就是对这两个对象进行一系列的操作了,但是我们先看看这个程序什么样子,所以我们现在来写main方法,首先就是先打印一个像菜单的东西,让用户选择是普通用户还是管理员

假设我们输入1(你问我为什么一直都是写普通用户,因为爱),就是应该来到

我们再看代码Normal User,上面有图片,一直走下去就会发现,我们就是返回了一个int choice,而这个又是怎么调用方法的呢,其实我们上面讲了,就是把方法放在一个数组里面,再通过数组的元素来进行访问,那假如我要进行第一个操作(查看书籍列表),因为我们还没有写,所以什么都不会有,甚至会报错,因为这些操作方法,我先定义了 一个接口(我为什么要定义一个接口,为什么不直接写呢,就可以看我之前写的抽象类和接口),而接口里面就一个抽象方法,所以我没有重写就报错,所以我们现在就写这样查看书籍列表(因为这些就是太基本了,所以很多就直接附代码了)

这里就是有一个book.toString,嘻嘻,这个是我偷偷再book类里面写的,就是为了再打印书籍的时候好看

这些真正实现的写法,就是没有什么理解问题了,就是看就好了,所以我就直接全部放代码了

package objectzj.Operation;

import objectzj.Book;
import objectzj.BookList;

import java.util.Scanner;

public class AddOperation implements IOperation{
    @Override
    public void Operation(BookList bookList) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入书名");
        String name = scanner.next();
        System.out.println("请输入作者");
        String author = scanner.next();
        System.out.println("请输入价格"  );
        int price = scanner.nextInt();
        System.out.println("请输入分类");
        String type = scanner.next();
        int size = bookList.getSize();
        Book book = new Book(name,author,price,type);
        bookList.setBookList(book);
    }
}
package objectzj.Operation;

import objectzj.Book;
import objectzj.BookList;

import javax.xml.namespace.QName;
import java.util.Scanner;

public class BorrowOperation implements IOperation{
    @Override
    public void Operation(BookList bookList) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要借的书籍名称");
        String name = scanner.next();
        for(int i = 0;i<bookList.getSize();i++){
            Book book = bookList.getBookList(i);
            if(name.equals(book.getName())){
                if(!book.isBorrow()){
                    book.setBorrow(true);
                    System.out.println("已成功借阅");
                    return;
                }else {
                    System.out.println("该书已被借出");
                    return;
                }
            }
        }
        System.out.println("该书查找不到");
    }
}
package objectzj.Operation;

import objectzj.Book;
import objectzj.BookList;

import java.util.Scanner;

public class DelOperation implements IOperation{
    @Override
    public void Operation(BookList bookList) {
        System.out.println("请输入要删除书籍的书名");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.next();
        for(int i = 0;i<bookList.getSize();i++){
            Book book = bookList.getBookList(i);
            if(name.equals(book.getName())){
                if(i == bookList.getSize()- 1){
                    bookList.setSize(bookList.getSize() - 1);
                    System.out.println("删除成功");
                    return;
                }
                else {
                    Book booklast =bookList.getBookList(bookList.getSize() - 1);
                    bookList.setBookList(i, booklast);
                    bookList.setSize(bookList.getSize() - 2 );
                    System.out.println("删除成功");
                    return;
                }
            }
        }
        System.out.println("查找不到该书籍");
    }
}
package objectzj.Operation;

import objectzj.Book;
import objectzj.BookList;

public class ExitOperation implements IOperation{
    @Override
    public void Operation(BookList bookList) {
        System.out.println("再见");
        System.exit(0);
    }
}
package objectzj.Operation;

import objectzj.Book;
import objectzj.BookList;

import java.util.Scanner;

public class FindOperation implements IOperation{
    @Override
    public void Operation(BookList bookList) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要查找的书籍名字");
        String name = scanner.next();
        for (int i = 0;i<bookList.getSize();i++){
            Book book = new BookList().getBookList(i);
            if(name.equals(book.getName())){
                System.out.println("找到了,小标为"+i);
                return;
            }
        }
        System.out.println("查找不到你要的书籍");
    }
}
package objectzj.Operation;
import objectzj.Book;
import objectzj.BookList;
public class ListOperation implements IOperation{
    @Override
    public void Operation(BookList bookList) {
        System.out.println("查看书籍列表");
        for(int i = 0;i<bookList.getSize();i++){
            Book book = bookList.getBookList(i);
            System.out.println("["+i+"] "+book.toString());
        }
    }
}
package objectzj.Operation;

import objectzj.Book;
import objectzj.BookList;

import java.util.Scanner;

public class ReturnOperation implements IOperation{
    @Override
    public void Operation(BookList bookList) {
        System.out.println("请输入你要还书的书名");
        Scanner scanner = new Scanner(System.in);
        String name  = scanner.next();
        for(int i = 0;i<bookList.getSize();i++){
            Book book = bookList.getBookList(i);
            if(name.equals(book.getName())){
                if(book.isBorrow()){
                    book.setBorrow(false);
                    System.out.println("已成功还书");
                    return;
                }else {
                    System.out.println("该书还未被借阅");
                    return;
                }
            }
        }
        System.out.println("该书查找不到");
    }
}

 这个是接口

package objectzj.Operation;

import jdk.dynalink.Operation;
import objectzj.BookList;

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

 这些就是这些操作方法的实现

好了,拜拜

JAVA实现简易的图书管理系统(含过程) JAVA实现简易的图书管理系统,过程超详细! 阅读详情

相关推荐

JAVA图书管理系统详细代码

java图书管理系统

qq_59723690的博客 9442

Java图书管理系统

学习要学以致用,于是写了一个粗糙的java图书管理系统,实现了图书的增删改查的基本操作,在写的过程中遇到了很多问题,不过也都通过暴力解决了。大晚上的脑仁不够用了, 直接上图吧。主界面:增加图书:查找图书:修改图书:删除图书:源代码:package success; import java.util.Scanner; ​ public class Library { Scanner inpu...

qq_40265501的博客 4万+

JAVA WEB实现图书管理系统 —— 登录、注册页面

本文章要实现的功能如下: 1、首页未登录状态: 2、首页已登录状态: (这篇文章先不涉及下方图书信息的显示,该部分内容将在后续文章进行) 3、登录: 4、注册:

qq_42197887的博客 1万+

Java项目——图书管理系统

功能:系统分管理员界面与用户界面 管理员:实现对图书的增、删、改、查,对所有借阅历史的搜索及所有账户的信息,用户的权限与管理,设定密码,借阅图书及对自己账户的资料修改 用户:实现对图书的借阅功能、查看自己的借阅历史,在用户账户方面实现修改密码以及修改个人信息功能 另外:当数据库中用户表为空,则第一个注册的用户默认为管理员

K.X的博客 8万+

Java——简单图书管理系统

数据类型变量iffor数组方法类和对象封装继承多态抽象类和接口今天就是把上述知识点全部都用起来 图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理系统图书管理

m0_74100417的博客 3926

从HSPICE到Spectre:手把手教你搞定不同SPICE仿真器的网表转换(附避坑指南)

本文详细介绍了从HSPICE到Spectre的SPICE仿真器网表转换方法,包括核心语法差异、分步转换流程和常见问题排查。通过实战案例和避坑指南,帮助工程师高效解决不同SPICE仿真器间的兼容性问题,提升集成电路设计效率。

weixin_29745609的博客 366

Java实现简单图书管理系统

目录 利物浦是冠军! 一、图书管理系统的功能 二、图书管理系统的基本实现思路 1、Book包 2、user包 3、operation包 4、利用Main函数来连接所有包 三、图书管理系统的具体实现 1、Book包 (1)book类 (2)bookList类 2、operation包 (1)IOperation接口的实现 (2)图书管理系统功能实现 3、User包 (1)User类 (2)AdminUser(管理员)与Normal(普通用户)类 4、Main 四、总...

weixin_64448174的博客 2万+

【chatgpt代码系列】磁导航纠偏算法推导

例如,可以根据AGV偏离路径的方向和距离,计算出需要进行的修正角度和移动距离,然后通过控制算法实现对AGV的纠偏。具体来说,磁导航AGV的行驶是通过磁场传感器感知地面磁场信号,然后根据信号的强度和方向来确定AGV的位置和方向,进而控制AGV的行驶。但是,在实际应用中,由于地面磁场信号的变化和干扰等因素,磁导航AGV可能会出现偏离路径的情况,导致行驶不稳定甚至出现误差。磁导航AGV纠偏公式是通过对AGV行驶中偏离路径的原因进行分析,结合磁导航AGV的工作原理和控制算法,推导出来的。假设AGV的目标方向为。

少磊的博客 2807

【java】图书管理系统

从这个项目中我们可以看到,在父类User中实例化了iOperations对象,建立了一个以IOperation为元素的数组,接着在子类中按顺序建立创建好的功能接口,从而可以直接用下标来访问相应接口,这利用继承、多态、接口等思想,可谓是对面向对象思想的深度诠释。作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊。

acm_pn的博客 7343

【Excel VBA 编程】表格内自动生成进度条

在表格中生成进度条,进度条需要自适应单元格的宽度,根据不同进度区间变换颜色,并且按照进度数据大小显示其长短

wei1019的专栏 1518

狂神说docker(最全笔记)

一.Docker入门 1. Docker 为什么会出现 2. Docker的历史 3.Docker最新超详细版教程通俗易懂 Docker是基于Go语言开发的!开源项目 官网 官方文档Docker文档是超详细的 仓库地址 4. 虚拟化技术和容器化技术对比 4.1. 虚拟化技术的缺点 资源占用十分多 冗余步骤多 启动很慢 2.2. 容器化技术 比较Docker和虚拟化技术的不同 传统虚拟机, 虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软.

qq_21197507的博客 5万+

图书管理系统【java】

🌈今天我们来做一个小东西,目标就是使用学过的知识来实现——《》小练习。 ​ 📝图书馆作为每个大学或者城市必不可少的部分,其存放的海量书籍与文献使得其管理显得尤为困难,此时图书管理系统就起到了一个重大的作用。本次就将使用java语言中的异常处理,多态,继承,封装,接口等知识点,来综合性的设计与实现出一个简易的图书管理系统。

m0_72161237的博客 1万+

MemSeg:一种差异和共性来检测图像表面缺陷的半监督方法

本文认为人为创建类内差异和保持类内共性可以帮助模型实现更好的缺陷检测能力,从而更好地区分非正常图像。如图一所示。差异(differences):MemSeg引入人工模拟的异常图像在训练阶段使模型能够区分正常和异常的图像,减轻了半监督学习只能用正常样本进行训练的不足,然后在推理阶段可以直接输入图像无需做任何后处理。共性(commonalities):MemSeg引入了一个记忆池来记录正常样本的通用模式,在训练和推理阶段,比较输入图像和记忆池中的样本之间的差异,为异常区域的定位提供有用的信息。

斯人若彩虹,遇上方知有! 4839

Java+MySQL图书管理系统

正在学习Java就花了两个星期写了一个1000行左右的代码,仿照大一上学期老师让我们在控制台下写的图书管理系统系统,用Java容器和数据库写一个带图形界面的图书管理系统,一开始以为可以写个两三千行,结果写到1094行就结束了,实训马上开始,所以就不对这份代码进行扩充。 功能介绍:菜单----常用功能 ----个人中心 ----系统维护 ----帮助 ...

Caeser110的博客 3万+

从 0 到 1 玩转小智 AI 智能音箱:开发教程 + 实战项目全攻略

如果说 MCP 是工具箱,那 SDK 就是 “技能模板”—— 小智音箱的自定义技能本质是 “意图识别 + 逻辑响应” 的组合,就像给嵌入式设备写驱动程序,只要按规则调用接口,就能实现各种功能。小智 AI 音箱的开发门槛并不高,核心是利用 MCP SDK 封装好的接口,结合嵌入式开发的 “硬件对接 + 逻辑编程” 思维,就能实现各种自定义功能。从环境搭建到技能开发,再到实战项目落地,每一步都是对 “软件控制硬件” 的实践 —— 而这正是嵌入式开发的核心魅力。

weixin_42300449的博客 1193

微信公众号 - 最新详细实现H5网页接入微信支付功能,开发移动端、PC端网站集成使用微信支付流程及示例代码,公众号网页利用JS-SDK/JSAPI/H5支付授权唤起微信支付,可脱离微信环境支付或内置浏

微信公众号,微信支付,网页,移动端,h5,扫码支付,二维码付款,手机网页,电脑pc网页生成支付二维码,js-sdk,jsapi,外部浏览器调起微信支付,脱离微信环境,在微信内置浏览器如何进行微信支付,前端H5微信支付,web网站,vue2,vue3,nuxt2,nuxt3,jquery,微信公众号h5支付流程,如何实现,怎么做,回调报错,redirect_uri参数错误,必须部署才能调试吗,怎么不打包发布就能在本机测试,微信H5支付能力,uniapp微信支付,h5页面调起支付,支付没反应,无效,失败,H5页

🏆 前端领域优质创作者 6102

用JAVA实现图书管理系统

然后在 User 的子类 Adminiopeartion 和 Normalioperation 上分别对他进行实例化(

2302_76924750的博客 9681

Centos 7 Linux 离线安装使用 MySQL 5.7:下载、安装、配置、使用

本文详细介绍了在 CentOS 7 系统下离线安装 MySQL 5.7 的完整流程,包括环境准备、安装包下载、用户与目录配置、数据库初始化、服务启动与自启设置、root 密码修改、远程访问开启及防火墙配置等关键步骤,并提供了本地与远程客户端(如 Navicat、DBeaver)的连接使用方法,适合无网络环境下的数据库部署参考。

寒水馨 · 轻量级技术文档 · hanshuixin.org 6111

Java篇图书管理系统

相信大家都有去过图书馆吧,那么在借阅图书和归还的时候,都有一个系统来记录并操作这些过程,所以今天就带着大家利用之前的所学知识来简单实现一下图书管理系统的基本逻辑构造!!

技术不止是工具,也是探索世界的方式 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Java 基础篇】Java 图书管理系统详解

图书管理系统是一种用于管理图书信息、借阅记录、用户信息等的软件系统。它可以帮助图书馆、书店或个人管理和组织图书资源,提供了方便的借阅和查询功能。在这篇博客中,我们将详细介绍如何使用Java编程语言创建一个简单的图书管理系统。通过本博客,我们详细介绍了如何使用Java编程语言创建一个简单的图书管理系统。系统包括用户管理模块、图书管理模块和借阅管理模块,以及相应的数据模型、数据访问对象和服务类。此外,我们还提供了一个简单的命令行用户界面,允许用户与系统进行交互。

繁依Fanyi的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java GUI实现图书管理系统

目 录 1 绪论… 1 1.1 项目概述… 1 1.2 项目意义… 1 2 开发工具和相关技术简介… 2 2.1 Eclipse简介… 2 2.2 Java语言介绍… 3 2.3 MySQL简介… 3 2.4 JDBC技术简介… 4 3 系统需求分析… 5 3.1 系统可行性分析… 5 3.2 系统需求分析… 5 3.2.1 登录、注册界面需求分析… 5 3.2.2 用户功能需求分析… 6 3.2.3 管理员功能需求分析… 6 3.3 组内成员分工… 7 3.4 进度安排… 7 4 系统设计… 9 4.1

qq_45077046的博客 9519

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

用java实现图书管理系统。

在学完java基础篇的时候,安排做了一个综合版的java基础项目,可以把之前学到的知识综合运用。 图书管理系统。一.项目设计到的知识1.MVC设计模式思想(分包)>项目分包>MVC简单介绍2.GUI(图形化界面)3.JDBC连接MySql数据库4.I/O流5.面向对象思想项目运行效果登录界面主界面读者信息管理读者信息添加读者信息查询和修改读者信息查询读者信息修改图书信息管理图书信息添加图书信息查询图书信息修改图书借阅管理图书借阅图书归还基础信息维护图书类别设置读者类别设置罚金设置用户管理修改.

Burial_DH的博客 1万+

如何用Java实现一个简易的图书管理系统

简单实现图书管理系统,巩固Java SE的语法知识

weixin_71020872的博客 5441

Java实现图书管理系统

今天与大家分享的是一个图书管理系统,这里我们运用的是的语法其中包括类和对象、继承、封装、多态、抽象类、接口还有数组等。我们需要实现一个可以进行管理员操作和用户操作的图书管理系统,其中包括了管理员操作(查找,添加,删除,显示,退出系统);用户操作(查找,借阅,归还,退出系统).

Brenda_Bestow的博客 2734

Java——图书管理系统

本篇文章来带大家做一个简单的练习:图书管理系统。到此图书管理系统就全部介绍完毕了,希望大家看完之后也能对Java类和对象有更深层次的理解,我也知道这个管理系统并不完备,还有许多bug,且只实现了主要的功能,这只是真正图书管理系统的一小部分而已,但是就是这一小部分也花费了我十分长的时间,有机会的话我会在后面继续完善这个系统。

2301_80817503的博客 1956
上一篇: 一些对面向对象的理解
下一篇: 二叉树的性质和实现
star050913
博客等级 码龄3年 277粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值