java+mysql图书管理系统

news2024/10/6 22:24:45

完整代码地址

1.运行效果图

2.主要代码

2.1.连接数据库

package com.my.homework.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCUtils {
    public static Connection getConnection() throws Exception {

        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");//全路径
        //2.获取数据库连接
        String url="jdbc:mysql://localhost:3306/library-management?useUnicode=true&useSSL=false&characterEncoding=gbk&serverTimezone=Asia/Shanghai" ;
        Connection c = DriverManager.getConnection(url,"root","root");
        //3.返回给调用者
        return c;

    }
}

2.2.实体类

package com.my.homework.entity;

public class Book {

    private int id;
    private String name;
    private String author;
    private String isBorrowed;

    private String type;

    private String price;

    public Book() {
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getAuthor() {
        return author;
    }

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

    public String getIsBorrowed() {
        return isBorrowed;
    }

    public void setIsBorrowed(String isBorrowed) {
        this.isBorrowed = isBorrowed;
    }

    public String getType() {
        return type;
    }

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

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }
    public String toString() {
        //重写toString方法
        return "Book{" +
                "书名:'" + name + '\'' +
                ", 作者:'" + author + '\'' +
                ", 类型:'" + type + '\'' +
                ", 价格:'" + price + '\'' +
                (","+isBorrowed) +
                '}';
    }

}
package com.my.homework.entity;

import com.my.homework.operation.*;

import java.util.Scanner;

public class ManagerUser extends User{
    public ManagerUser(String name) {
        super(name);
        this.ioPerations = new IOperation[]{ new Exit(),
                                    new FindBook(),
                                    new ShowBook(),
                                    new DeleteBook(),
                                    new AddBook()
        };
    }
    @Override
    public int menu() {
        System.out.println("***********************");
        System.out.println(this.name+",欢迎来到管理员菜单!");
        System.out.println("请输入你的操作:0.退出系统" +
                " 1.查找图书 " +
                " 2.显示图书 " +
                " 3.删除图书 " +
                " 4.添加图书 ");
        System.out.println("***********************");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
 
    }
}
package com.my.homework.entity;

import com.my.homework.operation.*;

import java.util.Scanner;

public class OrdinaryUser extends User{
 
    public OrdinaryUser(String name) {
        super(name);
            this.ioPerations=new IOperation[]{ new Exit(),
                new FindBook(),
                new BorrowBook(),
                new ReturnBook()
            };
    }
 
    @Override
    public int menu() {
        System.out.println("***********************");
        System.out.println(this.name+",欢迎来到普通用户菜单!");
        System.out.println("请输入你的操作:0.退出系统" +
                " 1.查找图书 " +
                " 2.借阅图书 " +
                " 3.归还图书 ");
        System.out.println("***********************");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}
package com.my.homework.entity;

import com.my.homework.operation.IOperation;

abstract public class User {
    protected String name;
    protected IOperation[] ioPerations;
    public User(String name) {
        this.name = name;
    }
    public abstract int menu();
    public void doWork(int choice) throws Exception {
        this.ioPerations[choice].work();
    }

}

2.3.操作类

package com.my.homework.operation;

import com.my.homework.dao.BookDao;
import com.my.homework.entity.Book;

import java.util.Scanner;

public class AddBook implements IOperation{
    @Override
    public void work() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("添加图书!");
        System.out.println("请输入书名:");
        String name = scanner.nextLine();
        BookDao bookDao=new BookDao();
        Book book=bookDao.getBookById(name);
        if(book!=null){
            if(book.getName().equals(name)){
                System.out.println("书架中已有此书,不可添加!");
                return;
            }
        }

        System.out.println("请输入作者:");
        String author = scanner.nextLine();
        System.out.println("请输入类型:");
        String type = scanner.nextLine();
        System.out.println("请输入价格:");
        String price = scanner.nextLine();
        Book book1 = new Book(name,author,type,price);
        bookDao.addBook(book1);
        System.out.println("添加成功!");
        System.out.println(book1);
    }
}
package com.my.homework.operation;


import com.my.homework.dao.BookDao;
import com.my.homework.entity.Book;

import java.util.Scanner;


public class BorrowBook implements IOperation {
    @Override
    public void work() {
        System.out.println("借阅图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入书名:");
        String name = scanner.nextLine();
        BookDao bookDao=new BookDao();
        Book book=bookDao.getBookById(name);
        if(book!=null){
            if(book.getIsBorrowed().equals("未被借出")){
               bookDao.updateBookStatus(name,"借阅中");
                return;
            }
        }
        System.out.println("书架中没有这本书,借阅失败!");
 
    }
}
package com.my.homework.operation;

import com.my.homework.dao.BookDao;
import com.my.homework.entity.Book;
import com.my.homework.utils.JDBCUtils;

import java.sql.Connection;
import java.sql.Statement;
import java.util.List;
import java.util.Scanner;

public class DeleteBook implements IOperation{
    @Override
    public void work() throws Exception {
        System.out.println("删除图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入书名:");
        String name = scanner.nextLine();
        BookDao bookDao=new BookDao();
        bookDao.deleteBook(name);
        System.out.println("删除成功!");

    }

}
package com.my.homework.operation;

public class Exit implements IOperation{
    @Override
    public void work() {

        System.exit(0);
 
    }
}
package com.my.homework.operation;

import com.my.homework.dao.BookDao;
import com.my.homework.entity.Book;

import java.util.Scanner;

public class FindBook implements IOperation{
    @Override
    public void work() {
        System.out.println("查找图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入书名:");
        String name = scanner.nextLine();
        BookDao bookDao=new BookDao();
        Book book=bookDao.getBookById(name);
        if(book!=null){
            if(book.getName().equals(name)){
                System.out.println("找到了这本书!");
                System.out.println(book);//显示该书
                return;//找到了就终止该功能,否则没找到
            }
        }

        System.out.println("书架中没有这本书!");
 
    }
}
package com.my.homework.operation;

import com.my.homework.entity.Book;

import java.util.List;

public interface IOperation {
    void work() throws Exception;
}
package com.my.homework.operation;

import com.my.homework.dao.BookDao;
import com.my.homework.entity.Book;

import java.util.Scanner;

public class ReturnBook implements IOperation{
    @Override
    public void work() {
        System.out.println("归还图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入书名:");
        String name = scanner.nextLine();
        BookDao bookDao=new BookDao();
        bookDao.updateBookStatus(name,"未被借出");

        System.out.println("已归还!");
 
    }
}
package com.my.homework.operation;

import com.my.homework.dao.BookDao;
import com.my.homework.entity.Book;

import java.util.List;

public class ShowBook implements IOperation{
    @Override
    public void work() {
        System.out.println("显示图书!");
        BookDao bookDao=new BookDao();
        List<Book> booklist= bookDao.getAllBooks();
        for (int i = 0; i < booklist.size(); i++) {
            Book book = booklist.get(i);
            System.out.println(book);
        }

    }
}
package com.my.homework;// Main类的完整实现
 
import com.my.homework.entity.ManagerUser;
import com.my.homework.entity.OrdinaryUser;
import com.my.homework.entity.User;

import java.util.Scanner;
 
public class Main {
    public static User login() {
        System.out.println("请输入你的姓名");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        System.out.println("请输入你的身份, 1:管理员  2:普通用户 ->");
        int choice = scanner.nextInt();
        if (choice == 1) {
            return new ManagerUser(name);
        }
        else {
            return new OrdinaryUser(name);
        }
    }
    public static void main(String[] args) throws Exception {
        User user = login();
        while (true) {
            int choice = user.menu();
            user.doWork(choice);
        }
    }
}

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

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

相关文章

安装containerd

containerd文档地址 containerd介绍 早在2016年3月&#xff0c;Docker 1.11的Docker Engine里就包合了containerd&#xff0c;而现在则是把containerd从Docker Engine里彻底剥离出来&#xff0c; 为一个独立的开源项目独立发展&#xff0c;目标是提供一个更加开放、稳定的容器…

使用FRP 0.58版本进行内网穿透的详细教程

什么是FRP&#xff1f; FRP&#xff08;Fast Reverse Proxy&#xff09;是一款高性能的反向代理应用&#xff0c;主要用于内网穿透。通过FRP&#xff0c;您可以将内网服务暴露给外网用户&#xff0c;无需进行复杂的网络配置。 准备工作 服务器&#xff1a;一台具备公网IP的服…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第49课-机器人自动跳舞

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第49课-机器人自动跳舞 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

谷歌发布两款新Gemma 2大语言模型;阿里云开源Qwen2-72B模型荣登榜首

&#x1f989; AI新闻 &#x1f680; 谷歌发布两款新Gemma 2大语言模型 摘要&#xff1a;谷歌发布Gemma 2大语言模型&#xff0c;包括90亿和270亿参数两种版本。Gemma 2在推理性能、效率和安全性上较第一代有显著提升。27B模型的性能媲美更大规模的主流模型&#xff0c;且部署…

提升自来水公司经济效益的策略研究

现阶段&#xff0c;如何提高自来水公司经济效益的问题已经得到社会的广泛关注。文章将立足于成本管理的角度&#xff0c;在对自来水公司生产现状分析的基础上&#xff0c;总结影响自来水公司经济效益的相关因素&#xff0c;最后从成本管理的角度出发&#xff0c;对如何提高自来…

Hadoop-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece

背景介绍 这里是三台公网云服务器&#xff0c;每台 2C4G&#xff0c;搭建一个Hadoop的学习环境&#xff0c;供我学习。 之前已经在 VM 虚拟机上搭建过一次&#xff0c;但是没留下笔记&#xff0c;这次趁着前几天薅羊毛的3台机器&#xff0c;赶紧尝试在公网上搭建体验一下。 注…

huggingface加速下载模型

文章目录 所需环境huggingface-cli 用法登录token 获取 huggingface 镜像huggingface 缓存hf-transfer 拉满下载带宽如果开了的话&#xff0c;记得关掉科学上网&#xff01;&#xff01;&#xff01; 所需环境 python huggingface-cli 用法 huggingface-cli的更多用法点击这…

挂售转卖竞拍商城系统/竞拍系统/转拍闪拍系统+前端

挂售转卖竞拍商城系统源码/竞拍系统/转拍闪拍系统/后端PHP前端UNIAPP源码 玩法简介 ①、后台可添加商品进行挂单 ②、后台设置场次以及场次开始时间 ③、用户抢单 ④、抢单以后可选择提货或者转售 ⑤、玩家寄售需按照后台设置百分比进行加价 ⑥、玩家寄售需支付手续费(余额支付…

代码随想录——加油站(Leetcode 134)

题目链接 贪心 class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int curSum 0;int totalSum 0;int start 0;for(int i 0; i < gas.length; i){// 当前剩油量curSum gas[i] - cost[i];// 总剩油量totalSum gas[i] - cost[i];// 当前剩油量小…

【Linux】高级IO——五种IO模型和基本概念 ,非阻塞IO,fcntl,实现非阻塞IO,同步通信和异步通信

文章目录 Linux高级IO1. 五种IO模型1.1 阻塞IO1.2 非阻塞IO1.3 信号驱动IO1.4 IO多路转接1.5 异步IO 2. 同步通信和异步通信3. 阻塞和非阻塞 Linux高级IO 1. 五种IO模型 IO是什么&#xff1f; IO是计算机领域中的缩写&#xff0c;指的是输入/输出&#xff08;Input/Output&…

(番外篇)指针的一些相关习题讲解(速进,干货满满)(1)

前言&#xff1a; 我已经好久没写过博客了&#xff0c;这几天确实有点偷懒了&#xff0c;上次博客我们已经讲完了指针的部分内容&#xff0c;但我觉着没有习题是不够的&#xff0c;于是我出了这一篇番外篇&#xff0c;来让各位读者朋友们进行指针强化&#xff0c;这些题目都是小…

k8s学习--k8s群集部署zookeeper应用及详细解释

文章目录 zookeeper什么是zookeeper基本概念主要功能工作原理使用场景优点缺点 k8s集群部署zookeeper环境一、zookeeper部署YAML资源清单准备二、zookeeper部署及部署验证三、zookeeper应用验证 zookeeper 什么是zookeeper ZooKeeper 是一个开源的分布式协调服务&#xff0c;…

中北大学算法课动态规划问题实验:题目1 数塔问题

目录 1.实验名称2.实验目的3.实验内容4.实验过程伪代码java代码 5.实验结论及心得代码运行截图心得 实验报告 1.实验名称 动态规划问题实验&#xff1a;题目1 数塔问题 2.实验目的 (1)掌握动态规划法的设计思想&#xff1b; (2)掌握数塔问题的具体实现过程&#xff1b; (3)熟…

Zynq7000系列FPGA中的DMA控制器简介(一)

DMA控制器&#xff08;DMAC&#xff09;使用64位AXI主接口来执行与系统存储器和PL外围设备之间的DMA数据传输&#xff0c;操作频率同CPU_2x的时钟速率。传输由DMA指令执行引擎控制。DMA引擎运行在一个小指令集上&#xff0c;该指令集提供了一种灵活的指定DMA传输的方法。这种方…

Echarts图表的动画是如何实现的?一文为你解密,有图有代码

Echarts图表是可视化大屏中最常用组件&#xff0c;我们经常看到各种炫酷的图表动画效果&#xff0c;但是你知道这些动画效果叫什么&#xff0c;是如何实现的吗&#xff1f;今天贝格前端工场为大家分享一下。 一、Echarts图表动画有哪些类型&#xff1f; ECharts是一个基于Jav…

鸿蒙开发HarmonyOS NEXT (二) 熟悉ArkUI

一、构造函数 构造一个商品类Item&#xff0c;然后利用foreach函数循环渲染 class Item {name: stringimage: ResourceStrprice: numberdiscount: numberconstructor(name: string, image: ResourceStr, price: number, discount: number 0) {this.name name;this.image ima…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于最大信息系数-双层置信极端梯度提升树的电网虚假数据注入攻击定位检测》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Python 全栈体系【三阶】(一)

三阶&#xff1a;Django - Redis - Ajax 第一章 Django 一、Django 基础 1. 基础 Django是一个开源的、重量级的WEB开发框架。 Django的官网&#xff1a; https://www.djangoproject.com 2. 安装与卸载 Django Django目前最新的版本为4.2,教学环境使用3.2 2.1 在线安装 …

libctk shared library的设计及编码实践记录

一、引言 1.1 <libctk>的由来 1.2 <libctk>的设计理论依据 1.3 <libctk>的设计理念 二、<libctk>的依赖库 三、<libctk>的目录说明 四、<libctk>的功能模块及使用实例说明 4.1 日志模块 4.2 mysql client模块 4.3 ftp client模块 4…

【Python】已解决:(SqlServer报错)SQL错误(208):对象名‘string_split’无效

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;&#xff08;SqlServer报错&#xff09;SQL错误&#xff08;208&#xff09;&#xff1a;对象名‘string_split’无效 一、分析问题背景 在使用Python连接SqlSe…