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

news2024/9/20 0:10:42

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

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

1.系统演示

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

2.设计框架讲解

图书管理系统

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

在这里插入图片描述

3.代码的详细讲解

3.1 多本书籍的实现

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

1、创建book类

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类

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函数

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、具体功能的实现
(以删除图书和展示图书为例)

//删除图书
public class Del implements IOPeration{
    @Override
    public 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("删除成功");
    }
}

//展示图书
public class Show implements IOPeration{
    @Override
    public 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.coloradmin.cn/o/2147369.html

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

相关文章

秦时明月6.2魔改版+GM工具+虚拟机一键端

今天给大家带来一款单机游戏的架设&#xff1a;秦时明月。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;绝对是完整可运行…

【自动化测试】常见的自动化遍历工具以及如何选择合适的自动化遍历工具

引言 自动化遍历测试通常依赖于特定的工具来实现应用的自动操作和测试 文章目录 引言一、常见的自动化遍历工具1.1 Appium1.2 Selenium1.3 Calabash1.4 Robot Framework1.5 Espresso1.6 XCTest1.7 Macaca1.8 TestComplete1.9 UiAutomator1.10 总结 二、如何选择合适的自动化遍历…

SaltStack自动化运维部署

一.什么是SaltStack SaltStack是一个服务器基础设施管理工具&#xff0c;它具有配置管理&#xff0c;远程执行&#xff0c;监控等功能&#xff0c;SaltStack由Python语言编写&#xff0c;是非常简单易用和轻量级的管理工具。 二.为什么使用SaltStack 为同时管理多台机器&…

BUUCTF-MISC-easycap

题目文件下载下来解压之后获得了一个流量包 用Wireshark打开 点击分析--追踪流--TCP--Stream 直接就获得了flag FLAG:385b87afc8671dee07550290d16a8071

乐队排练看谱软件有哪些 乐队排练编曲软件哪个好

提起乐队&#xff0c;人们想到的大多是乐队的主唱&#xff0c;乐队主唱是听众最能够直观感受到一支乐队演奏水平的部分。但是严格意义上来说&#xff0c;乐队的组成部分并不只有主唱&#xff0c;在整个乐队中除了主唱&#xff0c;恐怕吉他手或贝斯手就是最重要的组成部分了。乐…

如何看待IBM中国的裁员?

前言 IBM 作为一家全球知名的科技公司&#xff0c;在不同的历史时期都进行了不同程度的结构调整&#xff0c;包括在中国市场的裁员行动。这类事件通常反映了公司在面对全球经济环境变化和技术发展趋势时所作出的战略调整。 从宏观整体分析 1. 全球经济环境的影响 全球经济环境…

前海桂湾的海边免费停车场

​前海很多打工人晚上加班前海边散步的地方。相信很多前海打工人都曾经路过这个免费的停车场。坐标出于滨海大道的断头路区域。 看卫星地图可以发现&#xff0c;是个断头路&#xff0c;但是面积还是很大&#xff0c;停个几十辆车没问题。我就停过一次&#xff0c;周末带娃来这里…

ROS 设置dhcp option 6 多个地址格式

ROS routeOS 手工设置 dhcp 服务 option 6 多个dns 地址格式。字符串方式

erlang学习:Linux常用命令1

Linux的概念 Linux&#xff0c;一般指GNU/Linux&#xff08;单独的Linux内核并不可直接使用&#xff0c;一般搭配GNU套件&#xff0c;故得此称呼&#xff09;&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦&#xff08;Linus…

AI技术好书推荐:《AI系统-原理与架构》

今年1月份在B站发现了一个B站宝藏博主&#xff0c;发布的一系列AI技术类科普视频内容很干&#xff0c;逻辑清晰&#xff0c;很多知识点讲的深入浅出&#xff0c;非常有用&#xff0c;被直接种粉。 后来这一系列的课程内容博主有了出书的计划&#xff0c;机缘巧合有幸参与部分章…

今日所学啊

ArcGIS打不开焦点统计如何解决_arcgis焦点统计打不开-CSDN博客 好吧其实最后焦点统计还是不行&#xff0c;我就去ArcGIS Pro里做焦点统计了哈哈哈哈哈哈哈 visual studio多工程项目管理_visual studio 的模块管理-CSDN博客 1.今天成功#include <QNetworkReply>不画红线…

软件验收测试报告模版分享?专业软件验收测试公司推荐

在现代软件开发中&#xff0c;软件验收测试报告是开发与交付过程中的重要环节&#xff0c;它不仅是对软件产品质量的把关&#xff0c;也是确保客户满意度的关键文档。 在验收测试过程中&#xff0c;测试团队会对软件的各项功能进行全面的测试&#xff0c;识别潜在的问题并进行…

pycv实时目标检测快速实现

使用python_cv实现目标实时检测 python 安装依赖核心代码快速使用实现结果展示enjoy python 安装依赖 opencv_python4.7.0.72 pandas1.5.3 tensorflow2.11.0 tensorflow_hub0.13.0 tensorflow_intel2.11.0 numpy1.23.5核心代码快速使用 # 使用了TensorFlow Hub和OpenCV库来实…

【AI大模型】LLM主流开源大模型介绍

目录 &#x1f354; LLM主流大模型类别 &#x1f354; ChatGLM-6B模型 2.1 训练目标 2.2 模型结构 2.3 模型配置(6B) 2.4 硬件要求 2.5 模型特点 2.6 衍生应用 &#x1f354; LLaMA模型 3.1 训练目标 3.2 模型结构 3.3 模型配置&#xff08;7B&#xff09; 3.4 硬件…

探索RESTful风格的网络请求:构建高效、可维护的API接口【后端 20】

探索RESTful风格的网络请求&#xff1a;构建高效、可维护的API接口 在当今的软件开发领域&#xff0c;RESTful&#xff08;Representational State Transfer&#xff09;风格的网络请求已经成为构建Web服务和API接口的标配。RESTful风格以其简洁、无状态、可缓存以及分层系统等…

YOLOv8的GPU环境搭建方法

首先说明这个环境搭建教程是基于电脑已经安装好CUDA和CUDNN的情况下&#xff0c;去搭建能够正确运行YOLOv8代码的Pytorch的GPU版本。具体安装方法可见&#xff1a;最适合新手入门的CUDA、CUDNN、Pytorch安装教程_cuda安装-CSDN博客 第一步&#xff1a;需要在cmd中创建虚拟环境c…

Mybatis缓存实现

01-一级缓存 演示案例首先创建sql查询语句 在对应接口中声明方法参数是Dept因为sql语句中的参数在Dept pojo类中都有所有声明pojo对象 由于返回的数量不知道是多少条所以用list接收,<>由于返回的是dept类数据所以泛型里传入Dept 一级缓存的介绍如下图 失效情况详细介绍…

【移动端开发】“明日头条APP”

文章目录 1 系统概述1.1研究背景1.2研究意义 2 系统设计2.1 关键技术2.2 系统设计2.2.1 系统功能模块2.2.2 数据库设计 3 系统实现3.1 数据模型3.1.1 NewsURL3.1.2 NewsType3.1.3 NewsInfo 3.2 数据库操作3.2.1 DBOpenHelper3.2.2 DBManager 3.3 适配器类3.3.1 AddItem3.3.2 In…

Python+PyCharm安装(最新)

目录 1.Python和PyCharm简介 2.环境检测 3.Python下载与安装 3.1Python下载 3.2Python安装 3.3python测试 4.PyCharm下载与安装 4.1PyCharm下载 4.2PyCharm安装 4.3PyCharm测试 4.4PyCharm应用 5.注意事项 5.1更新pip 5.2安装库 ​5.3查看已安装的库 6.总结 1.Py…

HAL库中的三种延时函数HAL_Delay、vTaskDelay和vTaskDelayUntil的区别

1、HAL_Delay() 阻塞型延时&#xff0c;实现方式是通过死循环方式实现的&#xff0c;不会释放掉cpu&#xff0c;会造成其他低优先级任务无法执行 2、vTaskDelay() 相对延时函数 void vTaskDelay(TickType_t xTicksToDelay); 相对延时函数:相对延时是指每次延时都是从任务执行…