java综合实验-图书管理系统

news2024/9/19 2:35:15

二、实验项目内容(实验题目)

1. 使用Java编程语言进行实验。

2. 采用面向对象的思想进行系统设计。

3. 实现基本的图书管理功能,包括添加图书、删除图书、查询图书信息等。

4. 要求有良好的用户交互界面。

步骤参考:

步骤一:需求分析

1. 确定系统的基本功能和界面设计。

2. 定义图书类(Book)及其属性和方法。

3. 定义图书管理系统类(LibrarySystem)及其属性和方法。

步骤二:系统设计与实现

1. 创建一个图书类(Book),包含图书名称、作者、出版社等属性,并实现相关的get和set方法。

2. 创建一个图书管理系统类(LibrarySystem),包含添加图书、删除图书、查询图书信息等方法。

3. 在LibrarySystem类中,使用集合(如ArrayList)来存储图书信息。

4. 实现用户交互界面,可以使用命令行或者图形界面。

步骤三:测试与优化

1. 编写测试代码,验证图书管理系统的功能是否正常。

2. 运行程序,进行测试,并根据测试结果进行优化和修改。

参考效果如下:

四、源程序调试过程和(或)实验分析

完整的代码

Book

package Two;

public class Book {

    private String name;

       private String author;

       private String publisher;

     

       private boolean borrowed;

       public Book(String name, String author, String publisher, double price) {

       this.name = name;

       this.author = author;

       this.publisher = publisher;

      

       this.borrowed = false;

   }

   public String getName() {

       return name;

   }

   public String getAuthor() {

       return author;

   }

   public String getPublisher() {

       return publisher;

   }

  

   public boolean isBorrowed() {

       return borrowed;

   }

   public void setBorrowed(boolean borrowed) {

       this.borrowed = borrowed;

   }

   @Override

   public String toString() {

       return "名称:" + name + ",作者:" + author + ",出版社:" + publisher + ",状态:" + (borrowed ? "借出" : "未借出");

   }

   }

LibrarySystem

package Two;

import java.util.ArrayList;

import java.util.Scanner;

public class LibrarySystem {

    private static ArrayList<Book> books = new ArrayList<Book>();

    private static Scanner input = new Scanner(System.in);

   private static Object name;

   private static boolean found;

    public static void main(String[] args) {

        boolean running = true;

        while (running) {

            System.out.println("\n欢迎使用图书管理系统");

          

            System.out.print("请选择操作:");

            System.out.println("1. 添加书籍");

            System.out.println("2. 删除书籍");

            System.out.println("3. 查询书籍");

            System.out.println("4. 查看所有书籍");

           

            System.out.println("0. 退出系统");

            int choice = input.nextInt();

            input.nextLine();

            switch (choice) {

                case 1:

                    addBook();

                    break;

                case 2:

                    removeBook();

                    break;

                case 3:

                    searchBook();

                    break;

                case 4:

                    borrowBook();

                    break;

                case 0:

                    running = false;

                    System.out.println("感谢使用图书管理系统!");

                    break;

                default:

                    System.out.println("无效的选择,请重新选择!");

                    break;

            }

        }

    }

    private static void addBook() {

        System.out.print("请输入书名:");

        String name = input.nextLine();

        System.out.print("请输入作者:");

        String author = input.nextLine();

        System.out.print("请输入出版社:");

        String publisher = input.nextLine();

       

        Book book = new Book(name, author, publisher, 0);

        books.add(book);

        System.out.println("添加成功!");

    }

    private static void removeBook() {

        System.out.print("请输入要删除的书名:");

        String name = input.nextLine();

        boolean found = false;

        for (Book book : books) {

            if (book.getName().equals(name)) {

                books.remove(book);

                found = true;

                System.out.println("删除成功!");

                break;

            }

        }

        if (!found) {

            System.out.println("未找到该图书!");

        }

    }

    private static void searchBook() {

        System.out.print("请输入要查找的书名:");

        String name = input.nextLine();

        boolean found = false;

        for (Book book : books) {

            if (book.getName().equals(name)) {

                System.out.println("信息如下:");

                System.out.println(book);

                found = true;

                break;

            }

        }

     

        if (!found) {

            System.out.println("无信息!");

        }

    }

//所有

   private static void borrowBook() {

       System.out.print("书名\t"+"作者\t"+"出版社\t");

       for (Book book : books) {

             if (book.getName().equals(name)) {

                 System.out.println("信息如下:");

                 System.out.println(book);

                 found = true;

                 break;

             }

         }

 

if (!found) {

      System.out.println("无信息!");

   }

       

      

        

 

}

}

   

 

效果

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

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

相关文章

亚信科技AntDB数据库——深入了解AntDB-M元数据锁的实现(二)

5.5 防止低优先级锁饥饿 AntDB-M按照优先级将锁又分了两类&#xff0c;用于解决低优先级锁饥饿问题。 ●独占型(hog): X, SNRW, SNW; 具有较强的不兼容性&#xff0c;优先级高&#xff0c;容易霸占锁&#xff0c;造成其他低优先级锁一直处于等待状态。 ●暗弱型(piglet): SW; …

Vue3-18-侦听器watch()、watchEffect() 的基本使用

什么是侦听器 个人理解&#xff1a;当有一个响应式状态&#xff08;普通变量 or 一个响应式对象&#xff09;发生改变时&#xff0c;我们希望监听到这个改变&#xff0c;并且能够进行一些逻辑处理。那么侦听器就是来帮助我们实现这个功能的。侦听器 其实就是两个函数&#xff…

2 - Electron 核心概念

Electron 核心概念 主进程 通过Node.js、Electron提供的API与系统底层打交道启动项目时运行的 main.js 脚本就是我们说的主进程。在主进程运行的脚本可以以创建 Web 页面的形式展示 GUI。主进程只有一个 渲染进程 每个 Electron 的页面都在运行着自己的进程&#xff0c;这样…

java SSM火车票务管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM火车票务管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

51单片机的外部中断的以及相关寄存器的讲解

中断系统 本文主要涉及8051单片机的中断系统的讲解与使用 其中包括中断相关寄存器的介绍与使用以及外部中断初始化的代码分析。 文章目录 中断系统一、 中断的介绍二、 中断结构及相关寄存器2.1 中断源 2.2 中断请求控制器2.2.1 TCON寄存器2.2.2 SCON寄存器2.2.3 中断允许寄存器…

【算法小技巧】如何判断奇偶

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

LLM(七)| Mamba:LLM新架构的浅探

目前大型语言模型&#xff08;LLM&#xff09;领域发展如火如荼&#xff0c;本文将重点探索在单个消费级GPU上可以有效运行的小型模型&#xff08;≤7B个参数&#xff09;。 我们将从以下几个方面重点介绍基于新架构的语言模型&#xff1a;&#x1f40d;Mamba模型&#xff08;h…

图-数据结构

图的介绍 如果你有学过《离散数学》&#xff0c;那么对图的概念一定不陌生&#xff0c;在计算机科学中&#xff0c;一个图就是一些顶点的集合&#xff0c;这些顶点通过一系列边连接&#xff08;结对&#xff09;。顶点用圆圈表示&#xff0c;边就是这些圆圈之间的连线。注意&a…

webGL开发数字孪生项目的流程

数字孪生是指使用数字模型来模拟和仿真现实世界的实体或系统。WebGL&#xff08;Web Graphics Library&#xff09;是一种用于在Web浏览器中进行高性能图形渲染的JavaScript API。将数字孪生与WebGL结合起来&#xff0c;可以实现在Web环境中呈现和交互数字模型的目标。北京木奇…

不完全伽马函数-Incomplete Gamma Function

REFERENCES Abramowitz, M. and Stegun, I. A. (Eds.). Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, 9th printing. New York: Dover, p. 260, 1972. Arfken, G. “The Incomplete Gamma Function and Related Functions.” 10.5 in…

FRP 内网穿透工具部署

FRP 介绍 frp 是一个专注于内网穿透的高性能反向代理应用&#xff0c;支持 TCP、UDP、HTTP、HTTPS 等多种协议&#xff0c;且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 官方网站&#xff1a;https://gofrp.org/zh-cn/ 项目地…

KylinV10 将项目上传至 Github

KylinV10 将项目上传至 Github 银河麒麟操作系统 V10 是在 Ubuntu 的基础上开发的&#xff0c;所以适用于 Ubuntu 的也适用于 KylinV10 一般上传至 GitHub&#xff0c;有两种方式&#xff0c;一种是 HTTPS&#xff0c;一种是 SSH&#xff0c;但是在 KylinV10 操作系统 HTTPS 的…

Gradio入门详细教程

常用的两款AI可视化交互应用比较&#xff1a; Gradio Gradio的优势在于易用性&#xff0c;代码结构相比Streamlit简单&#xff0c;只需简单定义输入和输出接口即可快速构建简单的交互页面&#xff0c;更轻松部署模型。适合场景相对简单&#xff0c;想要快速部署应用的开发者。便…

设计模式详解---抽象工厂模式

继续前言&#xff0c;工厂模式中抽象工厂模式的讲解&#xff1a; 1. 前面的工厂模式有啥问题&#xff1f; 前面的工厂模式有这么个问题&#xff1a;一个产品就给了一个工厂&#xff0c;这样子如果产品变多&#xff0c;系统就会很复杂&#xff1a; 2. 解决方法 我们可以按照手…

如何利用Python爬取网络上的图片

在当今数字化时代&#xff0c;网络上蕴藏着丰富的图片资源。对于开发者和研究者来说&#xff0c;从网络上获取图片数据是十分常见的需求。而Python作为一种强大的编程语言&#xff0c;提供了丰富的工具和库&#xff0c;使得爬取网络上的图片变得简单和高效。本文将介绍如何利用…

扫描电镜中的信号-噪声比(SNR)参数如何优化

在扫描电镜&#xff08;SEM&#xff09;中&#xff0c;信号-噪声比&#xff08;SNR&#xff09;的优化对于获得高质量的图像和可靠的数据分析至关重要。以下是一些优化SNR的方法&#xff1a; 选择适当的检测器&#xff1a;SEM通常配备了不同类型的检测器&#xff0c;如二次电子…

cmake 最基础示例

C 代码 文件名&#xff1a;first_cmake.cpp #include <iostream> using namespace std;int main() {cout<< "A" << endl;return 0; }CMakeLists.txt 文件 #CMakeLists.txt # 设置:版本 cmake_minimum_required(VERSION 3.20)# 定义 :项目名称 …

小红书种草和抖音传播区别是什么?

目前品牌较为关注的2大平台小红书和抖音&#xff0c;两者在种草方面存在一些明显的区别。本次就存量竞争、种草形式和种草策略这三个方面入手进行分析&#xff0c;今天和大家分享下小红书种草和抖音传播区别是什么&#xff1f; 一、存量竞争下的2大平台 2个都是属于存量竞争下的…

Point A的配置方式

Point A是5g中进行资源分配的参考点&#xff0c;所以UE驻留在小区上时&#xff0c;必须要知道Point A的位置&#xff0c;才能进一步根据参数确定属于自己的资源&#xff0c;这里就整理下协议上告知UE PointA的2种方式。 先看38.211中的描述&#xff0c;Point A是RB grids的公共…

Mysql - 常用插入数据的三种方法详解及练习

目录 &#x1f959;8.1.1 mysql中常用的三种插入数据的语句 1. insert into - 插入数据 2. replace into - 插入替换数据 3. insert ignore - 如果已存在&#xff0c;忽略当前新数据 &#x1f959;8.1.2 以上三种方法的练习及区分 &#x1f959;8.1.3 说明 &#x1f959…