基于Java实现的图书管理系统_基于java的图书管理系统,零基础入门到精通,收藏这篇就够了

前言:该图书管理系统实现了查找、添加、删除、显示、借阅、归还等功能,分为两个用户群体:管理者和普通用户。使用了类与对象,封装继承多态,抽象类和接口等Java基础知识。

一.思路

面向对象三部曲:找对象,创建对象,使用对象。

1.找对象

图书馆管理系统中的对象有书和人。人通过一些方法操作书。操作方法是一个集合。

2.创建对象

这里可用使用包将它们整合在一起,人、书和功能各一个包。

书是一个类,还一个类是书架。书中是定义书的各种属性,书架是放书的地方,也是操作书的地方。

人分为两种,一种是管理员,一种是普通用户。创建一个父类将两人共有的属性放在这里,另外创建两个子类扩展父类。

功能这个包里放着各种各样我们实现的包,

3.脉络

public static void main(String[] args) { BookList bookList=new BookList();//实例化书架,形象的理解为创建了一个图书馆 Person person=logic(); //判断这个人是哪一个类,是管理员还是普通用户 while(true){ int choice=person.menu(); person.doFunction(choice,bookList); } }

这是main方法的全部。

我们可以看到,我们先实例化了书架,相当于建立起了一个书架,我们可以在这个书架上对书进行操作。

第二步,通过一个logic方法判断出用户是哪一类。

书架有了,身份有了,接下来就是书架进行操作,也就是下面while循环里的内容。

二.框架的具体实现

1.logic方法的实现

先上代码:

public static Person logic(){ System.out.println("欢迎来的图书管理系统"); System.out.println("请输入您的姓名:"); Scanner scanner=new Scanner(System.in); String name=scanner.nextLine(); System.out.println("输入1:管理员 2:普通用户"); int choice=scanner.nextInt(); if(choice==1){ return new Manager(name); }else{ return new Normal(name); } }

返回值是我们定义的父类Person。通过输入的选择,用if分出两种情况(这里不是很严谨,没有判别输入其他数字的情况),直接new一个对象返回,new完类也实例化完了。

这样我们就得到了我们要用户身份。

2.person.menu方法的实现

person现在是某一个具体的身份,可以调用其类里的menu方法。

//普通用户 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("请输入你的操作:"); Scanner scanner=new Scanner(System.in); int choice= scanner.nextInt(); return choice; }
//管理员 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("请输入你的操作:"); Scanner scanner=new Scanner(System.in); int choice= scanner.nextInt(); return choice; }

通过输入数字来选择我们要进行的操作,并将刚输入的数字作为返回值去返回。

获得具体数字后我们可以进行下面的操作来进行具体的实现。

3.person.doFunction方法的实现

public IFunction[] iFunctions; public void doFunction(int choice, BookList bookList){ iFunctions[choice].work(bookList); }

这是Person类中的内容,可以看到我们先定义了一个接口数组,使用了这个接口中的某一个方法。在一开始实例化两种用户时我们就用构造方法来实现了数组的“赋值”:

//普通用户 public Normal(String name) { super(name); this.iFunctions = new IFunction[]{ new Exit(), new Seek(), new Borrow(), new Back() }; }
//管理员 public Manager(String name) { super(name); this.iFunctions=new IFunction[]{ new Exit(), new Seek(), new Add(), new Del(), new Show() }; }

这里的顺序对应了menu方法里的顺序,大家可以去上面查看。

4.接口的实现

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

在接口里写了一个work方法,这个就是上面调用的方法。参数是书架,目的是为了操作书架。

三.功能的具体实现

0.前置内容

每一个具体的功能都通过接口连上了IFunction,都要再次实现work方法

iFunctions[choice].work(bookList);

另外在书架上定义一个int变量来记录书的数量

int size = 0;

1.查阅图书

public void work(BookList bookList) { System.out.println("查找图书"); System.out.println("请输入想要查找书的名称:"); Scanner scanner=new Scanner(System.in); String name=scanner.nextLine(); int size=bookList.getSize(); //利用BookList类的方法来获得书架上书的数量 for(int i=0;i<size;i++){ String bname=bookList.getname(i); if(bname.equals(name)){ //比较字符串 System.out.println("书找到了"); return ; } } System.out.println("没有这本书"); }

bookList.getSize()这个方法是获取现在书架上书的数量,然后进入循环去寻找是否有这本书,比较简单。

2.借阅图书

public void work(BookList bookList) { System.out.println("借阅图书"); System.out.println("输入要借阅书的名称:"); Scanner scanner=new Scanner(System.in); String name=scanner.nextLine(); int choice=bookList.getSize(); for(int i=0;i<choice;i++){ String bname= bookList.getname(i); if(bname.equals(name)){ bookList.changeType(i,true); //用人方法要说哪一个 bookList.changeSize(-1); System.out.println("借阅成功"); return ; } } System.out.println("没有这本书无法借阅"); }

借阅图书要实现的细节:

1.把书的属性设置为已借出;2.书架上书的数量减一。

3.归还图书

public void work(BookList bookList) { System.out.println("归还图书"); System.out.println("输入要归还书的名称:"); Scanner scanner=new Scanner(System.in); String name=scanner.nextLine(); int choice=bookList.getSize(); for(int i=0;i<choice;i++){ String bname= bookList.getname(i); if(bname.equals(name)){ bookList.changeType(i,false); //用人方法要说哪一个 bookList.changeSize(1); System.out.println("归还成功"); return ; } } System.out.println("没有这本书无法归还"); }

细节方面与上面的借阅相反。

4.新增图书

public void work(BookList bookList) { System.out.println("添加书籍"); int choice=bookList.getSize(); if(choice==10){ System.out.println("书架已满无法继续添加"); return; } Scanner scanner=new Scanner(System.in); System.out.println("请输入新增书的名称:"); String name=scanner.nextLine(); System.out.println("请输入新增书的作者:"); String author=scanner.nextLine(); System.out.println("请输入新增书的类型:"); String type=scanner.nextLine(); System.out.println("请输入新增书的价格:"); int price=scanner.nextInt(); Book newbook=new Book(name,author,price,type); for (int i = 0; i < choice; i++) { String name2=bookList.getname(i); if(newbook.equals(name2)){ System.out.println("书架上已经有这本书了"); return ; } } bookList.setBooks(choice,newbook); bookList.setSize(choice+1); System.out.println("添加成功"); }

5.删除图书

public void work(BookList bookList) { System.out.println("删除书籍"); Scanner scanner=new Scanner(System.in); System.out.println("输入要删除的书的名称"); String name=scanner.nextLine(); int choice=bookList.getSize(); int i = 0; int flag=-1; for (; i < choice; i++) { String bname=bookList.getname(i); if(bname.equals(name)){ flag=i; break; } } if(i==choice){ System.out.println("没有这本书"); return ; } for (int j = flag; j < choice-1; j++) { Book book = bookList.getBooks(j+1); bookList.setBooks(j,book); } bookList.setBooks(choice-1,null); bookList.setSize(choice-1); System.out.println("删除成功"); }

6.退出系统

public void work(BookList bookList) { System.out.println("成功退出系统"); System.exit(0); }

四.总结

以上功能的实现不是最主要的,代码的框架是最主要的。怎么实现一个图书管理系统,它的整个脉络是怎样的,这是重要的。上述功能代码的实现可能有不严谨的地方,大家可以自行修改。

Java开发的就业市场正在经历结构性调整,竞争日益激烈

传统纯业务开发岗位(如仅完成增删改查业务的后端工程师)的需求,特别是入门级岗位,正显著萎缩。随着企业技术需求升级,市场对Java人才的要求已从通用技能转向了更深入的领域经验(如云原生、微服务)或前沿的AI集成能力。这也导致岗位竞争加剧,在一、二线城市,求职者不仅面临技术内卷,还需应对学历与项目经验的高门槛。

大模型为核心的AI领域正展现出前所未有的就业热度与人才红利

2025年,AI相关新发岗位数量同比激增543%,单月增幅最高超过11倍,大模型算法工程师位居热门岗位前列。行业顶尖人才的供需严重失衡,议价能力极强,跳槽薪资涨幅可达30%-50%。值得注意的是,市场并非单纯青睐算法研究员,而是急需能将大模型能力落地于复杂业务系统的工程人才。这使得具备企业级架构思维和复杂系统整合经验的Java工程师,在向“Java+大模型”复合人才转型时拥有独特优势,成为企业竞相争夺的对象,其薪资天花板也远高于传统Java岗位。

说真的,这两年看着身边一个个搞Java、C++、前端、数据、架构的开始卷大模型,挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis,稳稳当当过日子。

结果GPT、DeepSeek火了之后,整条线上的人都开始有点慌了,大家都在想:“我是不是要学大模型,不然这饭碗还能保多久?”

先给出最直接的答案:一定要把现有的技术和大模型结合起来,而不是抛弃你们现有技术!掌握AI能力的Java工程师比纯Java岗要吃香的多。

即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地!大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇!

如何学习AGI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

四、大模型项目实战

学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享

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

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

相关文章

HY-MT1.5-7B推理速度优化:TensorRT加速部署完整指南

HY-MT1.5-7B推理速度优化&#xff1a;TensorRT加速部署完整指南 1. 背景与技术挑战 随着多语言交流需求的快速增长&#xff0c;高质量、低延迟的翻译模型成为智能应用的核心组件。腾讯开源的混元翻译大模型 HY-MT1.5 系列&#xff0c;包含 HY-MT1.5-1.8B 和 HY-MT1.5-7B 两个版…

腾讯开源翻译模型HY-MT1.5:民族语言支持实战

腾讯开源翻译模型HY-MT1.5&#xff1a;民族语言支持实战 1. 引言 随着全球化进程的加速&#xff0c;跨语言沟通需求日益增长&#xff0c;尤其是在多民族、多方言并存的社会环境中&#xff0c;传统通用翻译模型往往难以满足特定语言群体的精准表达需求。腾讯近期开源的混元翻译…

d3d11.dll文件丢失找不到问题 彻底的解决方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

基于RaNER的智能标注系统:教育行业文本处理部署案例

基于RaNER的智能标注系统&#xff1a;教育行业文本处理部署案例 1. 引言&#xff1a;AI 智能实体侦测服务在教育场景中的价值 随着教育信息化进程的加速&#xff0c;海量非结构化文本数据&#xff08;如教学资料、学生作文、学术论文、新闻阅读材料&#xff09;不断积累。如何…

测试工程师面试问题大全

面向人群&#xff1a;软件测试工程师、自动化测试开发、QA负责人 一、基础理论与流程篇 测试基础概念 解释黑盒/白盒/灰盒测试的区别&#xff08;附应用场景案例&#xff09; 边界值分析 vs 等价类划分&#xff1a;电商价格字段如何设计用例&#xff1f; 回归测试范围如何科学…

基于工业机器人长条形工件冲压系统设计

2长条形工件夹紧设计方案 2.1末端执行器的可行要求 机器人末端执行器是根据机器人作业要求来设计的&#xff0c;一个新的末端执行器的出现&#xff0c;就可以增加一种机器人新的应用场所。因此&#xff0c;根据作业的需要和人们的想象力而创造的新的机器人末端执行器&#xff0…

Qwen3-VL图片反推保姆教程:云端WebUI一键使用,小白也能玩

Qwen3-VL图片反推保姆教程&#xff1a;云端WebUI一键使用&#xff0c;小白也能玩 引言 你是否遇到过这样的困扰&#xff1a;拍了一段精彩的短视频&#xff0c;却绞尽脑汁也想不出合适的描述文案&#xff1f;或者看到一张有趣的图片&#xff0c;却不知道如何用文字准确表达它的…

代码大模型全景指南:从模型构建到落地应用的全景技术版图

本文由多家顶尖机构联合撰写的代码大模型百科全书&#xff0c;系统介绍了代码大模型的发展历程、架构演进与训练方法。内容涵盖开源与闭源模型对比、多模态应用、智能体技术、推理能力提升等前沿方向&#xff0c;从基础模型构建到实际落地应用&#xff0c;为开发者提供了从理论…

AI智能实体侦测服务资源占用优化:内存管理实战教程

AI智能实体侦测服务资源占用优化&#xff1a;内存管理实战教程 1. 引言&#xff1a;AI 智能实体侦测服务的工程挑战 随着自然语言处理&#xff08;NLP&#xff09;技术在信息抽取领域的广泛应用&#xff0c;AI 智能实体侦测服务已成为内容分析、舆情监控、知识图谱构建等场景…

Qwen3-VL开箱即用:预置镜像解决环境问题,3步开始体验

Qwen3-VL开箱即用&#xff1a;预置镜像解决环境问题&#xff0c;3步开始体验 1. 为什么你需要Qwen3-VL预置镜像 如果你曾经尝试从GitHub下载Qwen3-VL并自行搭建环境&#xff0c;很可能遇到过各种依赖冲突、CUDA版本不匹配、Python包安装失败等问题。这些问题对于技术小白来说…

AI智能实体侦测服务前端交互优化:WebUI用户体验改进建议

AI智能实体侦测服务前端交互优化&#xff1a;WebUI用户体验改进建议 1. 背景与问题定义 随着自然语言处理技术的普及&#xff0c;命名实体识别&#xff08;NER&#xff09;已成为信息抽取、知识图谱构建和智能搜索等应用的核心组件。基于达摩院 RaNER 模型 的中文命名实体识别…

d3d12.dll文件丢失找不到问题 彻底解决办法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

Python自动化测试体系化成长路径

——基于2026年主流技术栈的实战方法论一、突破认知误区&#xff1a;自动化测试的本质重构# 经典反模式示例&#xff1a;脆弱的录制回放脚本 from selenium import webdriver driver webdriver.Chrome() driver.get("https://login_page") driver.find_element(&quo…

AI智能实体侦测服务定时任务:自动化批处理部署教程

AI智能实体侦测服务定时任务&#xff1a;自动化批处理部署教程 1. 引言 1.1 业务场景描述 在信息爆炸的时代&#xff0c;非结构化文本数据&#xff08;如新闻、社交媒体内容、企业文档&#xff09;呈指数级增长。如何从海量文本中快速提取关键信息&#xff0c;成为企业知识管…

SQL Server 2025数据库安装图文教程(附SQL Server2025数据库下载安装包)

SQL Server是由微软推出的关系型数据库管理系统&#xff0c;它提供了可靠的数据存储、数据管理和数据分析功能。SQL Server支持多种数据处理功能&#xff0c;包括事务处理、数据分析、报表生成和数据挖掘等&#xff0c;因此在企业和组织中得到广泛应用。 演示系统&#xff1a;…

JAVA的Set集合_java set 差集,零基础入门到精通,收藏这篇就够了

在 Java 中&#xff0c;Set 是一种不允许存储重复元素的集合接口&#xff0c;它继承自 Collection 接口。Set 通常用于需要确保元素唯一性的场景&#xff0c;例如去重操作或数学集合运算。以下是关于 Set 的详细介绍&#xff1a; 一、核心特性 元素唯一性&#xff1a;不允许存…

Qwen3-VL学术研究方案:学生专属优惠,1块钱体验3小时

Qwen3-VL学术研究方案&#xff1a;学生专属优惠&#xff0c;1块钱体验3小时 1. 为什么研究生需要Qwen3-VL&#xff1f; 作为一名研究生&#xff0c;你可能正在为论文实验发愁&#xff1a;需要大量测试多模态模型对图像的理解能力&#xff0c;但实验室GPU配额有限&#xff0c;…

HY-MT1.5医疗翻译实战:病历术语标准化输出部署教程

HY-MT1.5医疗翻译实战&#xff1a;病历术语标准化输出部署教程 在医疗信息化快速发展的今天&#xff0c;跨语言病历数据的准确转换成为国际医疗协作、远程诊疗和医学研究的关键环节。然而&#xff0c;通用翻译模型在面对专业医学术语、结构化病历格式和混合语言表达时&#xf…

RaNER模型领域迁移:医疗文本实体识别微调部署案例

RaNER模型领域迁移&#xff1a;医疗文本实体识别微调部署案例 1. 引言&#xff1a;从通用场景到垂直领域的挑战 随着自然语言处理技术的成熟&#xff0c;命名实体识别&#xff08;Named Entity Recognition, NER&#xff09;已成为信息抽取、知识图谱构建和智能问答系统的核心…

‌如何提升测试领导力:软件测试从业者的全面指南

在软件测试领域&#xff0c;领导力远不止于管理任务——它是推动质量文化、激发团队潜能和应对复杂挑战的关键。随着技术迭代加速&#xff08;如DevOps和AI测试的兴起&#xff09;&#xff0c;测试领导者需具备战略视野、沟通能力和技术专长。本文基于行业实践&#xff0c;系统…