图书管理系统(面向对象的编程练习)

ops/2024/9/20 3:52:22/ 标签: java

图书管理系统(面向对象的编程练习)

  • 1.系统演示
  • 2.设计框架讲解
  • 3.代码的详细讲解
    • 3.1 多本书籍的实现
    • 3.2 不同操作人员的实现
    • 3.3 不同work操作的实现

1.系统演示

下面主要展示系统的删除图书功能和显示图书功能,帮助大家在开始写代码前先了解图书管理系统的相关内容。
在这里插入图片描述

2.设计框架讲解

图书管理系统

  • 如上述演示可以看出图书管理系统中涉及到多本书籍的操作,如《小王子》、《人生海海》、《人间信》等,所以应该创建数组储存这些书籍。(book类以一本书为对象描述书的名字、作者、价格等等)
  • 不同的操作人员进行的操作是不同的,如上述演示中管理者有新增图书的操作,而使用者有借阅图书的操作。

在这里插入图片描述

3.代码的详细讲解

3.1 多本书籍的实现

由于这一部分比较简单,所以不在此赘述,直接上代码!!!

1、创建book类

java">public class book {protected String bookName;protected String author;protected int price;protected String type;protected boolean condition;public book(String bookName, String author, int price, String type, boolean condition) {this.bookName = bookName;this.author = author;this.price = price;this.type = type;this.condition = condition;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}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 isCondition() {return condition;}public void setCondition(boolean condition) {this.condition = condition;}}

2、创建booklist类

java">public class bookList {private book[] list=new book[10];private int number=3;public bookList() {this.list[0]= new book("小王子","安托万",17,"小说",true);this.list[2]= new book("人生海海","麦家",39,"小说",true);this.list[3]= new book("人间信","麦家",39,"小说",true);}}

3.2 不同操作人员的实现

1、创建父类people

在这里插入图片描述

2、创建子类manager
在这里插入图片描述
3、创建子类user

(和上述manager相似,不做过多解释)

在这里插入图片描述
4、目前为止的演示(主要检查不同操作人员的多态实现)

main函数

java">public class Main {public static people login() {Scanner scanner = new Scanner(System.in);System.out.println("请输入你的名字:");String name = scanner.nextLine();System.out.println("请选择:");System.out.println("******1.管理者**");System.out.println("******2.使用者**");int choice = scanner.nextInt();if (choice == 1) {return new managers(name);} else {return new user(name);}}public static void main(String[] args) {bookList b=new bookList();people p= login();p.menu();p.work();}
}

结果展现
在这里插入图片描述

3.3 不同work操作的实现

1、创建IOPeration接口

在这里插入图片描述
2、演示上述代码(重新顺一下思路)

在这里插入图片描述
3、具体功能的实现
(以删除图书和展示图书为例)

java">//删除图书
public class Del implements IOPeration{@Overridepublic void work(bookList b) {Scanner scanner=new Scanner(System.in);System.out.println("请输入您要删除的图书的名字:");String name=scanner.nextLine();int pos=-1;int i=0;//找书for ( ; i < b.number; i++) {if(b.list[i].getBookName().equals(name)){pos=i;break;}}if(b.number==i){System.out.println("这里没有你要找的书");return;}//删书for (int i1 = pos; i1 < b.number-1; i1++) {b.list[pos]=b.list[pos+1];}b.number--;System.out.println("删除成功");}
}
java">//展示图书
public class Show implements IOPeration{@Overridepublic void work(bookList b) {System.out.println("显示图书.....");for (int i = 0; i < b.number; i++) {System.out.println(b.list[i].getBookName()+"  "+b.list[i].getAuthor()+"  " +b.list[i].getType()+"  "+b.list[i].getPrice()+"  "+b.list[i].isCondition());}}
}

这里以删除和展示图书为例,大家可以自行实现其他功能,有什么问题大家可以评论区交流呦~~~


http://www.ppmy.cn/ops/113238.html

相关文章

85-MySQL怎么判断要不要加索引

在MySQL中&#xff0c;决定是否为表中的列添加索引通常基于查询性能的考量。以下是一些常见的情况和策略&#xff1a; 查询频繁且对性能有影响的列&#xff1a;如果某个列经常用于查询条件&#xff0c;且没有创建索引&#xff0c;查询性能可能会下降。 在WHERE、JOIN和ORDER B…

AI应用开发平台Dify本地Ubuntu环境部署结合内网穿透远程管理大模型

文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署大语言模型应用开发平台Dify,并结合cpolar内网穿透工具实现公网环境远程访问…

系统 IO

"裸奔"层次&#xff1a;不带操作系统的编程 APP(应用程序) -------------------------------- Hardware(硬件) 特点&#xff1a;简单&#xff0c;应用程序直接操作硬件(寄存器) 缺点&#xff1a; 1. 搞应用开发的必须要了解硬件的实现细节&#xff0c;能够看懂原理图…

【数据结构】十大经典排序算法总结与分析

文章目录 前言1. 十大经典排序算法分类2. 相关概念3. 十大经典算法总结4. 补充内容4.1 比较排序和非比较排序的区别4.2 稳定的算法就真的稳定了吗&#xff1f;4.3 稳定的意义4.4 时间复杂度的补充4.5 空间复杂度补充 结语 前言 排序算法是《数据结构与算法》中最基本的算法之一…

QtConcorrent学习、以及与QThread之间的联系

目录 一、QtConcorrent 概述 1、功能 2、特点 3、使用场景 4、QtConcurrent::run 5、应用示例 5、挑战和解决方案 6、QtConcurrent的重要性和价值 二、QFuture 1、主要特点和功能 2、应用示例 三、QtConcorrent与QThread 1、抽象级别和易用性 2. 线程管理和资源利…

C++速通LeetCode简单第6题-环形链表

快慢指针真的很好用&#xff01; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:bool hasCycle(ListNode *head) {//快慢指针ListNode* fast…

2024.9.19

[ABC266F] Well-defined Path Queries on a Namori 题面翻译 题目描述 给定一张有 N N N 个点、 N N N 条边的简单连通无向图和 Q Q Q 次询问&#xff0c;对于每次询问&#xff0c;给定 x i , y i x_i,y_i xi​,yi​&#xff0c;表示两点的编号&#xff0c;请你回答第 x i …

微信小程序开发第三课

1 wxml语法 1.1 模版语法 # 1 在页面 xx.js 的 Page() 方法的 data 对象中进行声明定义 # 2 在xx.wxml 中使用 {{}} 包裹&#xff0c;显示数据 # 3 可以显示如下&#xff0c;不能编写js语句或js方法-变量-算数运算-三元运算-逻辑判断# 4 只是单纯通过赋值&#xff0c;js中…

跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例

在数字化时代&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术正以其独特的空间分析和可视化能力&#xff0c;为游戏产业带来革命性的变革。《黑神话&#xff1a;悟空》作为中国首款3A级别的动作角色扮演游戏&#xff0c;不仅在游戏设计和技术上取得了突破&#xff0c…

【华为杯】第二十一届中国研究生数学建模竞赛

“华为杯”第二十一届中国研究生数学建模竞赛即将开始&#xff0c;梦想科研社给大家整理一些比赛信息&#xff0c;在正式开赛后&#xff0c;我们也会持续分享一些课题的分析以及代码&#xff0c;有需要的可以联系我们获取资料信息哦 一、时间节点 1.加密赛题开始下载时间&…

大数据新视界 --大数据大厂之SaaS模式下的大数据应用:创新与变革

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

计算机三级网络技术总结(二)

RPR使用统计复用的方法传输IP分组IEEE802.16a用于固定结点接入ADSL技术为速率非对称型&#xff0c;上行速率为64kbps~640kbpsRAID是磁盘阵列技术在一定程度上可以提高磁盘存储容量但不能提高容错能力中继器工作在物理层VTP有三种工作模式:VTP Server、VTP Client 和VTP Transpa…

Spring4-IoC2-基于注解管理bean

目录 开启组件扫描 使用注解定义bean Autowired注入 场景一&#xff1a;属性注入 场景二&#xff1a;set注入 场景三&#xff1a;构造方法注入 场景四&#xff1a;形参注入 场景五&#xff1a;只有一个构造函数&#xff0c;无注解 场景六&#xff1a;Autowired和Quali…

通信工程学习:什么是HSS归属用户服务器

HSS&#xff1a;归属用户服务器 HSS&#xff08;归属用户服务器&#xff0c;Home Subscriber Server&#xff09;是IP多媒体子系统&#xff08;IMS&#xff09;中控制层的一个重要组成部分&#xff0c;它扮演着存储和管理用户相关信息的核心角色。以下是关于HSS归属用户服务器的…

计算机毕业设计选题推荐-校园车辆管理系统-Java/Python项目实战(亮点:数据可视化分析、账号锁定)

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

while循环及简单案例

//循环是流程控制中的一个重要分支 //流程控制 条件判断 循环 逻辑处理 //循环的目的和意义 //循环的目的是为了执行一块代码 //循环的意义是为了简化代码。增加代码的复用性 /* //例如输出0-100的数…

Pytorch是如何做显存管理的

参考资料&#xff1a; GPT的回答 自己的实验结果 之前自己在用Pytorch跑模型训练的时候产生了如下一系列问题&#xff1a;1)Pytorch使用的cuda显存什么时候释放 2)什么时候会导致显存堆积 3)如何监控显存的使用。经过查找资料后找到了这些问题的答案&#xff0c;现在记录在此&a…

Node.js快速入门

【图书介绍】《Node.jsMongoDBVue.js全栈开发实战》-CSDN博客 《Node.jsMongoDBVue.js全栈开发实战&#xff08;Web前端技术丛书&#xff09;》(邹琼俊)【摘要 书评 试读】- 京东图书 (jd.com) Node.js运行环境搭建-CSDN博客 本节将介绍如何快速入门Node.js。 1.3.1 Node.…

C++——给出一个不多于5位的正整数,要求:(1)求出它是几位数 (2)分别打印出每一位数字 (3)按逆序打印出各位数字,例如原数为321,应输出123。

没注释的源代码 #include <iostream> using namespace std; int main() { int x,a,b,c,d,e,f,len; cout<<"请输入一个不多于5位的正整数:"; cin>>x; if (x>999999) cout<<"输入错误&#xff01;"<<en…

linux服务器配置及服务器资源命令使用查看

在做性能压测之前&#xff0c;需要对被测服务器有所了解&#xff0c;常用的服务器资源有&#xff1a;CPU、内存、硬盘、网络、进程等 sysstat百度网盘&#xff1a;sysstat 提取码: 0000 一、查看系统服务器配置信息 常用命令&#xff1a;cat /proc/cpuinfo或者lscpu、pidsta…