图书管理系统(对象+集合)

基于java的图书管理系统设计与实现 基于Java的图书管理系统设计与实现的系统性能评估是一项重要的任务,旨在评估系统在特定工作负载下的响应速度和资源利用率。通过对系统的性能进行评估和分析,可以找出系统瓶颈和优化空间,提高系统的性能和稳定性。A、引言随着图书馆规模的不断扩大,图书管理工作的复杂性和难度也不断增加。基于Java的图书管理系统是一种基于Java语言开发的图书管理软件,旨在提高图书馆的图书管理和服务水平。系统性能评估是对系统在特定工作负载下的响应速度和资源利用率进行评估和分析,以验证系统是否能够满足用户在实际使用中的性能需求。 阅读详情

//图书类

package 对象和集合.图书管理系统;

public class Book {
    //  // 图书相关信息,最多只能存储6个图书信息
    //        String[] name = new String[6]; // 图书名称
    //        int[] state = new int[6]; // 借阅状态,0:可借阅 ;1:已借出
    //        int[] date = new int[6]; // 借出日期
    //        int[] count = new int[6]; // 借出次数
    private String name;
    private int state;
    private int date;
    private int count;

    public Book() {
    }

    public Book(String name, int state, int date, int count) {
        this.name = name;
        this.state = state;
        this.date = date;
        this.count = count;
    }


    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return state
     */
    public int getState() {
        return state;
    }

    /**
     * 设置
     * @param state
     */
    public void setState(int state) {
        this.state = state;
    }

    /**
     * 获取
     * @return date
     */
    public int getDate() {
        return date;
    }

    /**
     * 设置
     * @param date
     */
    public void setDate(int date) {
        this.date = date;
    }

    /**
     * 获取
     * @return count
     */
    public int getCount() {
        return count;
    }

    /**
     * 设置
     * @param count
     */
    public void setCount(int count) {
        this.count = count;
    }

    public String toString() {
        return "Book{name = " + name + ", state = " + state + ", date = " + date + ", count = " + count + "}";
    }



}

// 功能类

package 对象和集合.图书管理系统;

import java.util.List;
import java.util.Scanner;

public class Test {
    /**
     * 归还图书
     * @param books
     */
    public static final Scanner SC = new Scanner(System.in);
    public static void returnBook(List<Book> books) {
        see(books);
        System.out.println("请输入归还的图书名");
        String okName = SC.next();
        for (int i = 0; i < books.size(); i++) {
            if ( books.get(i).getName().equals(okName) && books.get(i).getState() == 0) {
                //可以
                System.out.println("图书还没有借出!!");
                System.out.println("是否继续(y/n)");
                String command = SC.next();
                switch (command) {
                    case "y":
                        returnBook(books);
                    default:
                        return;
                }
            } else if ( books.get(i).getName().equals(okName) && books.get(i).getState() == 1) {
                books.get(i).setState(0); // 将借阅状态修改为可借阅
                System.out.print("请输入归还日期:");
                int redate = SC.nextInt();
                while (redate < books.get(i).getDate() || redate > 31) { // 归还日期不能小于借出日期,也不能大于31
                    if (redate <books.get(i).getDate()) {
                        System.out.println("归还日期不能小于借出日期,请重新输入:");
                    } else {
                        System.out.println("一个月只有31天,请重新输入:");
                    }
                    redate = SC.nextInt();
                }
                books.get(i).setState(0);
              int change=redate-books.get(i).getDate();
                System.out.println("付租金:"+change+"元");
                see(books);
                return;
            }
        }
    }

    /**
     * 借书
     * @param books
     */
    public static void lendBook(List<Book> books) {
        //定义一个是否可以借
        see(books);
        System.out.println("请输入你要借的图书名:");
        String okName = SC.next();
        for (int i = 0; i < books.size(); i++) {
            if (books.get(i).getName().equals(okName) && books.get(i).getState() == 0) {
                //可以借了
                System.out.println("请输入你借书的日期(1-31)");
                int date =SC.nextInt();
                while (date<1||date>31){
                    System.out.println("输入错误请重新输入!");
                    date =SC.nextInt();
                }
                books.get(i).setState(1);
                books.get(i).setDate(date);
                System.out.println(books.get(i).getDate());
                books.get(i).setCount(books.get(i).getCount()+1);
                System.out.println("成功借"+"《"+books.get(i).getName()+"》");
                return;
            } else if (books.get(i) != null && books.get(i).getName().equals(okName) &&books.get(i).getState() == 1) {
                System.out.println("图书还在借阅中!");
                System.out.println("是否继续(y/n)");
                String command = SC.next();
                switch (command) {
                    case "y":
                        lendBook(books);
                    default:
                        return;
                }
            }
        }
    }
    /**
     * 删除数组
     * @param books
     */
    public static void deleteBook(List<Book> books) {
        //定义一个是否可以删除
        see(books);
        System.out.println("请输入你要删除的图书名:");
        String okName =SC.next();
        for (int i = 0; i < books.size(); i++) {
            if (books.get(i).getName().equals(okName)&&books.get(i).getState()==0){
                //可以删除了
                books.remove(i);
                System.out.println("删除成功!");
                break;
            }else if (books.get(i).getName().equals(okName)&&books.get(i).getState()==1){
                System.out.println("图书还在借阅中不能删除!");
                System.out.println("是否继续(y/n)");
                String command=SC.next();
                switch (command){
                    case "y":
                        continue;
                    default:
                        return;
                }
            }
        }
    }
    /**
     * 查看数组
     * @param books
     */
    public static void see(List<Book> books) {
        System.out.println("---------查看图书-------------");
        System.out.println("序号\t\t名称\t\t状态\t\t借出日期\t\t借出次数");
        for (int i = 0; i < books.size(); i++) {
                String state=books.get(i).getState()==0?"可借阅":"已借出";
                String date =books.get(i).getDate()+"日";
                String count =books.get(i).getCount()+"次";
                System.out.println((i+1)+"\t"+"《"+books.get(i).getName()+"》"+"\t"+state+"\t\t"+date+"\t\t"+count);
        }
    }

    /**
     * 新增图书
     * @param sc
     */
    public static void newBook(List<Book> books, Scanner sc)  {
        System.out.println("----------------新曾图书---------------");
        //遍历到空
        for (int i = 0; i < books.size(); i++) {
                //可以插入了
                System.out.println("请输入你要新增的书名:");
                String name=SC.next();
                for (int j = 0; j < books.size(); j++) {
                        if (books.get(j).getName().equals(name)) {
                            System.out.println("图书已存在!请重新输入!");
                            return;
                        }
                Book book =new Book(name,0,0,0);
                books.add(book);
                System.out.println("添加成功");
                return;
            }
        }
    }
}

// 主类
package 对象和集合.图书管理系统;

import java.util.ArrayList;
import java.util.List;

public class BookSystem {


    public static void main(String[] args) {
        //定义数组存book对象
        //  // 图书相关信息,最多只能存储6个图书信息
        //        String[] name = new String[6]; // 图书名称
        //        int[] state = new int[6]; // 借阅状态,0:可借阅 ;1:已借出
        //        int[] date = new int[6]; // 借出日期
        //        int[] count = new int[6]; // 借出次数
        Book book = new Book();
        List<Book> books = new ArrayList<>();
        books.add( new Book("金色花", 1, 1, 15));
        books.add( new Book("白色花", 0, 0, 9));
        books.add( new Book("红色花", 0, 0, 0));
        //循环条件
        int num = 1;
        do {
            System.out.println("----------------欢迎进入图书管理系统-------------");
            System.out.println("1.新增图书");
            System.out.println("2.查看图书");
            System.out.println("3.删除图书");
            System.out.println("4.借出图书");
            System.out.println("5.归还图书");
            System.out.println("6.退出图书");
            System.out.println("请选择:");
            int choose = Test.SC.nextInt();
            switch (choose) {
                case 1:
                    //新增图书
                    Test.newBook(books, Test.SC);
                    break;
                case 2:
                    //查看图书
                    Test.see(books);
                    break;
                case 3:
                    //删除图书
                    Test.deleteBook(books);
                    break;
                case 4:
                    Test.lendBook(books);
                    //借出图书

                    break;
                case 5:
                    Test.returnBook(books);
                    //归还图书
                    break;
                case 6:
                    //退出系统
                    System.out.println("谢谢您的使用欢迎下次光临!!");
                    return;
                default:
                    System.out.println("输入错误!");
            }
            System.out.print("输入0返回");
            num = Test.SC.nextInt();
            while (num != 0) {
                num = Test.SC.nextInt();
                System.out.println("输入错误重新输入!");
            }
        } while (num == 0);
    }
}


图书管理系统(ADO.NET&&SQL) ADO.NET做的图书管理系统,旨在熟练运用ADO.NET控件,学习交流! 立即下载

相关推荐

图书管理系统+C#+ADO。NET

C#+ADO.NT 面向对象的思想+三层架构模式

java--面向对象----->图书管理系统

。创建对象代码块里面执行。三.完整图书管理系统代码。

不会飞的小飞侠24 890

图书管理系统(集合)

不知道花费多少分数在这里下载的,拿出来和大家分享一下,分:ASP.net \VB.net\PB 等,喜欢就下吧

Java面向对象——图书管理系统(小白也能看的懂!)

面向对象,代码详情,简单易懂

m0_61761695的博客 2440

Java图书管理系统(基于Java常用集合实现)

Java,图书管理系统,集合

JAVA基于集合(List)的简单图书管理系统

基于List的图书管理系统,非界面,控制台输出,含管理图书(增删改查),管理管理员(增删改查)功能

Java开发实现图书管理系统(超详细)

创建book包首先在book中要创建Book类和BookList类,进行封装图书,在Book类中要有书名,作者,价格,类型和是否被借出图书。在BookList类中是书架对图书的封装,进行图书初始化和对图书设置的各种方法。Book类的实现BookList类的实现。

xyk:的博客 8707

从零到一:用Python打造你的智能交互桌宠,附完整源码与打包指南

本文详细介绍了如何从零开始使用Python开发智能交互桌宠,涵盖环境配置、窗口创建、动图加载、交互功能实现及打包发布全流程。教程特别适合零基础开发者,通过完整源码和分步指南,帮助读者快速掌握桌面宠物开发技巧,打造个性化AI伴侣。

weixin_29094539的博客 296

Java模拟实现图书管理系统

首先创建BookList类型的对象,此时书架中的三本书已经加载好,再在while循环中调用登录方法,登录方法的返回值类型为User,在登录方法中,如果操作者选择管理员,则创建一个管理员类型(AdminUser类型)的对象,如果选择读者,则创建一个普通用户类型(NormalUser类型)的对象,这时会调用相应类的构造方法,User类中操作接口类型的数组就会被初始化,各种操作类的对象也会被创建好,数组元素被初始化为相应类型用户的各种操作类的对象。找不到要归还的书,则要归还的书不属于图书馆,不用归还。

zhanlongsiqu的博客 828

Docker容器n8n中 read/write files from disk 无法读取容器内文件解决方案

《n8n文件读写Docker部署常见问题解决方案》摘要:针对n8n 1.90.2版本在Docker环境下文件读写失败问题,本文分析常见错误包括路径错误(ENOENT)、权限不足(EACCES)及节点误用问题。核心解决方案为:1)通过-v参数挂载宿主机目录到容器(如/files);2)使用新版Read/WriteFilesfromDisk节点操作文件;3)确保权限设置正确。提供可直接导入的示例工作流JSON,演示从CSV读取到结构化数据处理的全流程。特别强调已部署用户需重新挂载卷的正确操作方式,并附解决方案对

m0_74822402的博客 2185

软件工程:数据字典

数据字典

永远怀着至诚之心拥抱世界 4279

Java图书管理系统:面向对象与集合框架实战

面向对象编程(OOP)是Java语言的核心范式,通过封装、继承和多态三大特性构建健壮的软件系统。集合框架作为Java SE的重要组成部分,提供了ArrayList、HashMap等高效容器实现数据存储与操作。本文以图书管理系统为例,演示如何运用OOP思想设计Book类,结合ArrayList实现CRUD功能,并处理输入验证、异常防护等工程实践问题。项目采用三层架构设计,即使后续扩展文件存储或数据库也易于维护,是初学者掌握Java基础编程和集合框架操作的经典案例。通过防御性编程和Stream API的应用,开

weixin_33563728的博客 223

xilinx 暑期学校项目(二) 通过HLS实现二维傅里叶变换(2Dfft)及图像数据读入读出方法

要进行维纳滤波,首先就是要将图像矩阵通过二维fft变换到频域。 但是hls_fft.h中只有一维fft的函数,因此我们采用对行逐行进行一维fft,再对列逐行进行一维fft来实现二维fft的效果。 文章目录自带的fft例程二维fft的实现数据的读入和读出读入读出维纳滤波操作 自带的fft例程 自带的fft例程中包括有如下四个函数 void dummy_proc_fe( bool direction, config_t* config, cmpxData in[FFT_LENGTH],

战斗果冻的训练中心 2329

图书管理系统

一、需求分析 1、项目功能结构图 分析:图书管理系统分为五个模块每个模块下包含了增删改查的功能,主要使用IO流实现,可以把每个实体类看作一个对象,把这个对象存储到一个集合里进行操作,然后再把这个集合作为一个对象进行序列化,这样便实现了多个对象的数据存储。在需要使用这些数据时,再把文件里的内容(集合)反序列化出来,通过遍历集合得到文件中的数据,整个图书馆里系统均在使用对象序列化,所以我们可以把序列化以及反序列化封装成方法,直接调用,大大提高了代码的复用性和效率。 ...

shmilyche的博客 2万+

别再死记硬背公式了!用ADS手把手教你仿真一个4GHz镜像抑制混频器(附完整工程文件)

本文详细介绍了使用Keysight ADS软件设计和仿真4GHz镜像抑制混频器的完整流程。从理论分析到实际工程实现,涵盖分支线耦合器设计、二极管建模、噪声系数仿真及性能优化等关键步骤,帮助工程师摆脱公式死记硬背,掌握实用的射频电路设计技能。附完整工程文件,可直接应用于实际项目开发。

weixin_28683391的博客 498

『MaxKB 2.x 开发环境搭建』在Windows下运行最新源码的完整步骤

本文将详细介绍如何在Windows系统中完成MaxKB最新版(2.x)开发环境的搭建,包括前端、后端以及数据库的配置,确保开发者能够顺利启动项目。

老陈聊架构 589

Java学习:集合练习

Java练习:用集合重写图书管理系统和吃货联盟系统

cj1555640的博客 387

锂电池SOH估计 | 锂电池SOH基础计算与可视化(Python)

锂电池SOH估计 | 锂电池SOH基础计算与可视化(Python)

前程算法屋的博客 900

ArrayList集合综合练习

在方法中,先使用键盘录入获取用户录入的id信息,调用方法判断id是否存在,如果存在,重新录入,如果不存在,再依次获取图书的其他信息,创建图书对象,并将图书对象存入集合中,输出添加成功的提示。键盘录入图书编号,查询该编号是否存在,如果存在,再依次录入图书的修改后信息,创建新的图书对象,存入集合,将原对象覆盖,给出成功的提示,否则提示该编号图书不存在。如果集合长度为0,给出提示,结束方法,否则遍历集合,获取每个图书对象,再调用对象的get方法,获取所有信息展示即可。图书的属性有:编号,书名,作者,价格。

小丁的博客 1247

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# 图书管理系统:从面向过程到面向对象,三种实现方式详解

本文介绍一个基于C# 面向对象编程的图书管理系统控制台应用程序。该系统实现了图书的增删改查、借阅归还等核心功能,适合作为 C# 入门或课程设计参考。技术点说明面向对象使用Book类封装图书数据,实现数据与行为的结合数组存储使用Book[]数组作为数据容器,简单直观空值判断通过null判断数组位置是否占用索引查找FindBook()方法复用,避免代码重复状态管理使用字符串"可借""已借出"管理图书状态。

2302_80380469的博客 519

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

图书管理系统(ArrayList和LinkedList)--versions3.0

本文使用了变量,数据类型,顺序,选择,循环,对象及属性的封装,使用ArrayList和LinkedList集合,实现了一个简单的小项目--图书管理系统,其中包括用户管理,图书管理,不同权限管理的内容不同。

@南初的博客 1554

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java返回object对象怎么取值

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNJava 返回 Object 对象的取值及实际应用 在 Java 编程中,涉及到对象的操作是非常普遍的。在实际开发中,我们经常需要通过方法返回一个对象,然后从这个对象中取出具体的值。本文将...

weixin_41294847的博客 170

Java课程设计详解:图书管理系统,零基础入门到精通,收藏这篇就够了

Java是一种广泛使用的高级编程语言,由Sun Microsystems公司于1995年发布。Java的设计理念是“一次编写,到处运行”,它的核心就是跨平台的特性,使得Java编写的程序能在任何安装了Java虚拟机(JVM)的设备上运行。这为开发者提供了一种便捷的方式来构建一次程序,并部署在不同操作系统上,无需修改源代码。用户需求是系统的外部用户对系统的期望和要求。管理员:负责管理图书馆的书籍、用户和借阅记录。图书管理员:负责维护书籍库存、归还和借出书籍。读者:能够搜索、借阅和归还书籍。

Libra1313的博客 1009

图书管理系统(反射,注解)与基础知识的梳理

这种方法可扩展性低,如果确定了此类的比较固定不变,建议写在类中Comparator:传入比较器,比较器实现。

2401_84009215的博客 958

用python写图书管理系统_简单图书管理系统

[python]代码库'''2.16 作业定义类,图书特征:XXXXX...行为:打印信息编写一段代码让用户通过控制台,输入图书的各种信息,由此创建图书对象将图书对象保存到一个集合中()可以查询集合中所有的图书信息可以通过图书名,找到指定图书的信息1.添加2.查询所有3.书名查询'''class Book:name = Noneauthor = Noneprice = 0def out(self)...

weixin_39608300的博客 579
上一篇: 吃货联盟订餐系统(对象+集合)
下一篇: 汽车租赁系统(对象+集合)
有你是我的福气Love
博客等级 码龄4年 40粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值