图书系统小练习

news2024/11/25 22:59:55

1.对于任何系统,我们最先想到的就是普通用户和管理员,所以我们第一件事情就是创建一个包,里面包含

 

管理员   Admin(继承User)

普通用户  NormalUser(继承User)

abstract类的   User

 2.然后就是我们的菜单了

我们将管理员和用户分为两个不同的菜单

 3.我们姑且把管理员和用户的菜单做完了,现在来调用看看,我们写一个login()方法看看

这里我后面多写了一个String name,所以我修改了一下的User,Admin,NormalUser

 4.运行一下,看看能否出现管理员和普通用户的菜单(排错)

如果没有出错的话,运行结果如下

 5.接下来,我们就要优化一下

(不优化也没关系,我只是这里将向上转型练习一下)

对比

 实际上这里就是运用了一个向上转型

User us = login();
//实际上等于
User us = new Admin(name);
//或者是
User us = new NormalUser(name);
//看你是选择1管理员还是0普通用户

然后us.name又经过动态绑定就直接达成了和我们优化前一样的功能

(再次说明,可以不修改代码,我这里只是想练习一下向上转型)

6.下面我们就来创建   书,对于书我们给两个,一个是关于数的属性,一个是用来存储书的数据

 7.创建书的属性

 但是一般来说,我们对于这些都应该是private(封装,保护作用)

所以我们都需要在前面加上private

然后加上get和set方法,和constructor

 

代码太长,这里不放图,直接贴代码了

package Book;

public class Book {
    private String name;//书名
    private int price;//价格
    private String author;//作者
    private String type;//类型
    private boolean isBorrowed;//是否借出

    public Book(String name, int price, String author, String type) {
        this.name = name;
        this.price = price;
        this.author = author;
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public boolean isBorrowed() {
        return isBorrowed;
    }

    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }
}

 8.下面就是BookList

定义一个数组,每个数组对应一本书,然后在定义一个size

记住,private!!!(封装,保护作用,记得加get和set方法)

package Book;

public class BookList {
    private Book[] book = new Book[10];
    private int size = 0;
//下面是编译器自动生成的get和set方法

    public Book[] getBook() {
        return book;
    }

    public void setBook(Book[] book) {
        this.book = book;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }
}

然后我们加一些书本

 9.好了书和管理员已经弄好了,下面我们该来进行操作的实现了

我们一共有如下的操作

 其中接口Ioperation是用来让其他所有类使用,重写的

 10.下面我们将要调用他,首先我们将这些方法使用数组存储,比如下标0对应增加操作,1对应删除操作,所以我们需要在父类增加一个数组

 同时在Admin和NormalUser子类完成相应的操作

Admin和Normaluser的menu将其修改为返回int类型,这样我们就可以在main接受然后调用对应的方法了

 

 调用方法

结果如下:

11.实现各种方法

注意我们这里开始对书本进行操作,所以需要在所有的方法添加BookList属性

 

最后附上各类方法的实现

添加:

借书:

 

删除:

 

显示:

 

 退出系统:

查找:

 

 以上就是所有图书管理系统的小练习了

文末附上源码

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

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

相关文章

“云端”医学馆 | 平行云助力拜科打造医疗虚仿新模式

“云端”医学馆——拜科医疗虚仿新体验 当前,各个行业都正经历着一场深刻的数字化变革,医疗领域也没有例外,很多医疗厂商都在积极拥抱数字化技术的融入与应用。拜科数字生物科技(中国)有限公司正是医疗虚仿潮流中的领…

数字图像处理 使用C#进行图像处理八 Unsharp Masking

一、Unsharp Masking简述 Unsharp Masking是一种线性图像处理技术,用于锐化图像。清晰的细节被识别为两者之间的差异原始图像及其模糊版本。然后缩放这些细节, 并添加回原始图像: 增强图像 = 原始图像 + 数量 *(原始图像 - 模糊) 模糊步骤可以使用任何图像滤波方法,例如…

AI绘画设计师专用单词表;游戏业AI正在疯抢工作;使用AI工具翻译整本英文书;用GPT-4搞定调研报告 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『如果是皮克斯制作了哈利波特系列』又萌又暖还可爱,想 rua!! 皮克斯是美国顶级的电脑动画制作公司…

IMX6ULL裸机篇之DDR3实验总结

一. DDR实验 之前关于 IMX6ULL开发板,有关DDR实验。做了DDR内存芯片的初始化,校验与超频测试。 博文链接如下: IMX6ULL裸机篇之DDR3初始化_凌雪舞的博客-CSDN博客 IMX6ULL裸机篇之DDR3校验与超频测试_凌雪舞的博客-CSDN博客 经过了初始化…

修改linux中的grub和grub2.cfg文件重启服务器失败报错

文章目录 前言一、确认下root路径二、在引导界面进入grub 前言 修改了grub在服务器重启过程中发现系统起不来,且进入了紧急模式,相关报错如下: /dev/centos/root does not exist 总体原因就是找不到启动系统的文件位置导致的,解…

实时频谱-2.1实时频谱分析仪的工作方式

现代实时频谱分析仪 现代实时频谱分析仪可以采集分析仪输入频率范围内任何地方的传输频带或频宽。这一功能的核心是RF 下变频器,后面跟有一个宽带中间频率(IF)段。ADC数字化IF信号,系统以数字方式执行所有进一步的步骤。DSP算法执行所有信号调节和分析功…

如何提炼出优质的Prompt

基于大模型实现优质Prompt开发 1. 引言1.1 大规模预训练模型 2. Prompt开发2.1 Prompt基本定义:2.2 为什么优质Prompt才能生成优质的内容2.3 如何定义优质的Prompt 3. Prompt优化技巧3.1 迭代法3.1.1 创作评估3.1.2 基础创作3.1.3 多轮次交互 3.2 Trick法3.2.1 戴高…

如何使用SolVES 模型与多技术融合实现生态系统服务功能社会价值评估?

生态系统服务是人类从自然界中获得的直接或间接惠益,可分为供给服务、文化服务、调节服务和支持服务4类,对提升人类福祉具有重大意义,且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目(Millennium Ecosystem Asse…

明朝第一才子杨慎十首诗词

杨慎(1488~1559),公认为明朝三大才子之首。“相如赋,太白诗,东坡文,升庵科第。”前面的几个大家可能都猜得出来,司马相如的赋,李白的诗,苏东坡的文,而所谓的“升庵科第”…

ELK相关软件下载安装

一、Windows安装elasticsearch 1、安装JDK,至少1.8.0_73以上版本,验证:java -version 2、下载和解压缩Elasticsearch安装包,查看目录结构 下载地址:https://www.elastic.co/cn/downloads/elasticsearch 目录结构&am…

centos虚拟机中装openssl解决报错问题

第一个报错提示从这个命令开始: ./config --prefix/usr/local 详细信息如下: Can’t locate IPC/Cmd.pm in INC (INC contains: /home/smile/openssl-openssl-3.0.2/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_…

Unity + HybridCLR,近乎完美的新热更方案,从零开始(一)——Hello World

Unity HybridCLR,近乎完美的新热更方案,从零开始(一)——Hello World 前言一、HybridCLR是什么?二、使用步骤环境配置创建项目创建 HotUpdate 热更新模块安装和配置HybridCLR配置HybridCLR创建热更脚本加载热更新程序…

档案室漏水检测控制的类型和感应漏水线的规格

一、漏水绳的类型 漏水绳的类型有两种,一种是区域式漏水绳,搭配漏水控制器,对漏水异常秒级反应、报警。但是仅仅是对有漏水的情况进行监控,无法给出具体的位置,还需要工作人员的进一步排查。 还有一种是定位式漏水检…

SolVES模型在生态系统服务社会价值评估中的运用

SolVES模型(Social Values for Ecosystem Services)全称为生态系统服务社会价值模型,是由美国地质勘探局和美国科罗拉多州立大学联合开发的一款地理信息系统应用程序,开发该模型的目的主要是对生态系统服务功能中的社会价值进行空…

vue3前台查询使用多个字典项并且和后台交互

目录 一、前端使用 1.前台vue3接口使用 dictManege.ts 2.前台使用该接口地方 3.前台反显地方 其他几个都一样,这里使用在state中定义的idTypeList,在上面赋值,在这里使用 二、后端使用 4.后端controller接口实现 其中使用字典String[]来接收 放…

多线程环境下Java怎么从线程返回信息?

1. 问题描述 习惯了传统单线程过程式模型的程序员在转向多线程环境时,最难掌握的一点就是如何从线程返回信息。从结束的线程获得信息,这是多线程编程中最常被误解的方面之一。run()方法和start()方法不返回任何值。 2. 使用存储方法返回结果 如下面程…

自动化档案档案库房库房温湿度调节的好处

档案库房环境温湿度不合适,那么会造成供配电系统、网络设备不稳定,机房无法正常运行、资料老化。仓库温湿度不合适,储藏货物就会霉变、腐烂,给企业带来经济损失。所以环境温湿度必须实时处于可视、可控的范围,因此要安…

从零开始 Spring Boot 34:日志 II

从零开始 Spring Boot 34:日志 II 图源:简书 (jianshu.com) 在从零开始 Spring Boot 10:日志 - 红茶的个人站点 (icexmoon.cn)中,我简单介绍过如何在Spring Boot中整合SLF4J日志。实际上,如果没有特殊需求&#xff0c…

开发一套pacs系统主要解决的问题有哪些?

PACS的定义 PACS(picture archiving and communication system)意为影像归档和通信系统。它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,各种X光机&…

MySQL---锁机制

1. 锁的分类 从对数据操作的粒度分 : 表锁:操作时,会锁定整个表。 行锁:操作时,会锁定当前操作行。 从对数据操作的类型分: 读锁(共享锁):针对同一份数据&#xff…