java基础-Test03:图书管理系统 超详细注释

本项目是一个简单的图书管理系统,使用Java编程语言实现。它具有以下主要功能:

  1. 添加图书: 用户可以输入图书的标题、作者和价格,然后将图书添加到系统中。
  2. 显示图书列表: 用户可以查看系统中所有图书的列表,包括标题、作者、价格和可借状态。
  3. 借阅图书: 用户可以输入要借阅的图书标题,如果图书可借,系统会将其标记为已借出。
  4. 归还图书: 用户可以输入要归还的图书标题,如果该图书已借出,系统会将其标记为可借。
  5. 退出系统: 用户可以选择退出系统,结束图书管理程序的运行。
  6. import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    // 图书类
    class Book {
        private String title; // 图书标题
        private String author; // 图书作者
        private double price; // 图书价格
        private boolean available; // 图书是否可借状态
    
        // 构造方法
        public Book(String title, String author, double price) {
            this.title = title;
            this.author = author;
            this.price = price;
            this.available = true; // 新书默认可借
        }
    
        // 获取图书标题
        public String getTitle() {
            return title;
        }
    
        // 获取图书作者
        public String getAuthor() {
            return author;
        }
    
        // 获取图书价格
        public double getPrice() {
            return price;
        }
    
        // 获取图书是否可借状态
        public boolean isAvailable() {
            return available;
        }
    
        // 设置图书是否可借状态
        public void setAvailable(boolean available) {
            this.available = available;
        }
    }
    
    // 图书管理系统类
    public class LibrarySystem {
        private List<Book> books; // 存储图书的列表
    
        // 构造方法
        public LibrarySystem() {
            this.books = new ArrayList<>();
        }
    
        // 添加图书
        public void addBook(String title, String author, double price) {
            Book book = new Book(title, author, price);
            books.add(book);
            System.out.println("图书添加成功:" + title);
        }
    
        // 显示图书列表
        public void displayBooks() {
            System.out.println("图书列表:");
            for (Book book : books) {
                System.out.println(book.getTitle() + " - " + book.getAuthor() + " - 价格:" +
                        book.getPrice() + " - " + (book.isAvailable() ? "可借" : "已借出"));
            }
        }
    
        // 借阅图书
        public void borrowBook(String title) {
            for (Book book : books) {
                if (book.getTitle().equals(title) && book.isAvailable()) {
                    book.setAvailable(false);
                    System.out.println("借阅成功:" + title);
                    return;
                }
            }
            System.out.println("未找到或该书已借出:" + title);
        }
    
        // 归还图书
        public void returnBook(String title) {
            for (Book book : books) {
                if (book.getTitle().equals(title) && !book.isAvailable()) {
                    book.setAvailable(true);
                    System.out.println("归还成功:" + title);
                    return;
                }
            }
            System.out.println("未找到或该书未借出:" + title);
        }
    
        public static void main(String[] args) {
            LibrarySystem library = new LibrarySystem(); // 创建图书管理系统对象
            Scanner scanner = new Scanner(System.in); // 创建输入扫描器对象
            boolean running = true; // 控制系统运行状态的变量
    
            // 主循环,运行图书管理系统
            while (running) {
                System.out.println("\n图书管理系统");
                System.out.println("1. 添加图书");
                System.out.println("2. 显示图书列表");
                System.out.println("3. 借阅图书");
                System.out.println("4. 归还图书");
                System.out.println("5. 退出");
                System.out.print("请选择操作:");
    
                int choice = scanner.nextInt(); // 获取用户输入的操作选项
                scanner.nextLine(); // 消耗换行符
    
                // 根据用户选择执行相应的操作
                switch (choice) {
                    case 1:
                        System.out.print("请输入书名:");
                        String title = scanner.nextLine();
                        System.out.print("请输入作者:");
                        String author = scanner.nextLine();
                        System.out.print("请输入价格:");
                        double price = scanner.nextDouble();
                        library.addBook(title, author, price); // 添加图书
                        break;
                    case 2:
                        library.displayBooks(); // 显示图书列表
                        break;
                    case 3:
                        System.out.print("请输入要借阅的书名:");
                        String borrowTitle = scanner.nextLine();
                        library.borrowBook(borrowTitle); // 借阅图书
                        break;
                    case 4:
                        System.out.print("请输入要归还的书名:");
                        String returnTitle = scanner.nextLine();
                        library.returnBook(returnTitle); // 归还图书
                        break;
                    case 5:
                        running = false; // 退出系统
                        System.out.println("谢谢使用!");
                        break;
                    default:
                        System.out.println("无效的选项,请重新输入。");
                }
            }
    
            scanner.close(); // 关闭输入扫描器
        }
    }
    

    该项目的目的是模拟一个简单的图书管理系统,让用户可以对图书进行基本的管理操作,包括添加、查看、借阅和归还。通过这个项目,用户可以学习和练习使用Java编程语言构建简单的控制台应用程序,并了解基本的面向对象编程概念,例如类、对象、方法和属性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue-router(v4.0) 基础3

编程式导航 除了使用 <router-link> 创建 a 标签来定义导航链接&#xff0c;我们还可以借助 router 的实例方法&#xff0c;通过编写代码来实现。导航到不同的位置 示例该方法的参数可以是一个字符串路径&#xff0c;或者一个描述地址的对象。例如&#xff1a; // 字符串…

Panasonic松下PLC如何数据采集?如何实现快速接入IIOT云平台?

在工业自动化领域&#xff0c;数据采集与远程控制是提升生产效率、优化资源配置的关键环节。对于使用Panasonic松下PLC的用户来说&#xff0c;如何实现高效、稳定的数据采集&#xff0c;并快速接入IIOT云平台&#xff0c;是摆在他们面前的重要课题。HiWoo Box工业物联网关以其强…

fs方法举例

fs.readFile() 读取文件 const fs require(node:fs) const path require(node:path) const s path.resolve(__dirname, ./hello.txt) const buf fs.readFileSync(s) console.log(buf.toString())输出的Buffer对象 用toString()方法转字符串之后 fs.appendFile() 创建新…

景联文科技:提供通用多模态数据,助力AI多模态领域实现飞跃式发展

回顾2023年&#xff0c;以ChatGPT为代表的通用人工智能大模型在全球范围内掀起了新一轮人工智能产业发展浪潮&#xff0c;我国人工智能大模型市场呈现百“模”争鸣、日新月异的迅猛发展态势。 根据大模型之家、钛媒体数据&#xff0c;2023年中国大模型市场规模达到147亿人民币&…

CMU 10-414/714: Deep Learning Systems --hw3

实现功能 在ndarray.py文件中完成一些python array操作 我们实现的NDArray底层存储就是一个一维向量&#xff0c;只不过会有一些额外的属性&#xff08;如shape、strides&#xff09;来表明这个flat array在维度上的分布。底层运算&#xff08;如加法、矩阵乘法&#xff09;都…

《优化接口设计的思路》系列:第九篇—用好缓存,让你的接口速度飞起来

一、前言 大家好&#xff01;我是sum墨&#xff0c;一个一线的底层码农&#xff0c;平时喜欢研究和思考一些技术相关的问题并整理成文&#xff0c;限于本人水平&#xff0c;如果文章和代码有表述不当之处&#xff0c;还请不吝赐教。 作为一名从业已达六年的老码农&#xff0c…

Android14音频进阶:AudioFlinger究竟如何混音?(六十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

开源离线语音识别输入工具CapsWriter v1.0——支持无限时长语音、音视频文件转录字幕。

分享一款开源离线语音识别输入工具&#xff0c;支持无限时长语音、音视频文件转录字幕。 软件简介&#xff1a; CapsWriter是一款免费开源且可完全离线识别的语音输入工具&#xff0c;无需担心因在线版本识别带来的各种隐私泄露问题。支持win7及以上的系统&#xff0c;已经更…

洛谷_P1104 生日_python写法

P1104 生日 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 知识点&#xff1a; 还是自定义规则的排序&#xff0c;然后这里还有python中如何在一行中输入多种类型的数据。 n int(input()) data [] num 1 for i in range(n):img list(input().split())s img[0]y int(img…

Axure RP10汉化版获取:低成本高效率操作!

作为市场份额最高的专业原型设计工具&#xff0c;Axure RP10 毫无疑问&#xff0c;功能的强大性和灵活性也受到许多产品经理和设计师的青睐。许多世界百强公司也在使用Axure进行原型设计 RP10。但对于许多本土设计师来说&#xff0c;Axure RP10 全英语界面和陡峭的学习曲线让人…

图解CodeWhisperer的安装使用

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; CodeWhisperer简介 &#…

CCIE-04-Layer2_WAN_TS

目录 实验条件网络拓朴 路由器配置开始排错&#xff0c; 要求R11可以访问R17的telnet检查R12和R11的e0/0口&#xff0c;有发现检查R17和R12的S4/0口&#xff0c; 有发现ping R17环回口地址&#xff0c;发现不通telnet R17环回口IP 实验条件 网络拓朴 路由器配置 R11 4组以太网…

qt-pdf-viewer-library 编译过程记录

1.qtpdfviewerinitializer.h 中 类模板问题需要修改为下面代码: https://github.com/develtar/qt-pdf-viewer-library 下载代码&#xff1a; 编译出现错误 修改代码&#xff0c;如下: 2.无法触发onViewerLoaded 事件&#xff0c;就是界面无法显示PDF文件 修改下面代码&#…

【技巧】ChatGPT Prompt 提示语大全

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 主要来自&#xff1a;https://github.com/f/awesome-chatgpt-prompts ChatGPT SEO prompts ChatGPT SEO提示 Contributed by: StoryChief AI Reference: 7 Powerful ChatGPT Prompts to Create SEO Content Faste…

RabbitMQ问题

如何实现顺序消费&#xff1f; 消息放入到同一个队列中消费 如何解决消息不丢失&#xff1f; 方案&#xff1a; 如上图&#xff1a;消息丢失有三种情况&#xff0c;解决了以上三种情况就解决了丢失的问题 1、丢失1--->消息在到达交换机的时候&#xff1b;解决&#xff1…

RabbitMQ 安装保姆级教程

目录 1.MQ引言 1.1 什么是MQ 1.2 MQ有哪些 1.3 不同MQ特点 2.RabbitMQ 的引言 2.1 RabbitMQ 2.2 RabbitMQ 的安装 2.2.1 下载 2.2.2 下载的安装包 2.2.3 安装步骤 3. RabiitMQ 配置 3.1RabbitMQ 管理命令行 3.2 web管理界面介绍 3.2.1 overview概览 3.2.2 Admin用…

整型数组按个位值排序 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 给定一个非空数组(列表)&#xff0c;其元素数据类型为整型&#xff0c;请按照数组元素十进制最低位从小到大进行排序&#xff0c;十进制最低位相同的元素&#xf…

wireshark windows 抓包https

windows下 1.配置环境变量以生成ssl协商会话密钥日志记录 系统设置-》高级设置-》环境变量 新增环境变量 SSLKEYLOGFILE C:\Users\Public\Documents\SSLKEY\sslkey.log 打开公用共享文档创建SSLKEY文件夹用于后续系统存放协商密钥日志 2.配置Wireshark选项进行抓包 点击…

计算机二级(Python)真题讲解每日一题:《方菱形》

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬ 请写代码替换横线&#xff0…

【2024最新版,redis7】redis底层的10种数据结构

前言&#xff1a;本文redis版本&#xff1a;7.2.4 本文语雀原文地址&#xff08;首发更新&#xff09;&#xff1a;https://www.yuque.com/wzzz/redis/xg2cp37kx1s4726y 本文CSDN转载地址&#xff1a; https://blog.csdn.net/u013625306/article/details/136842107 1. 常见的数…
最新文章