java+mysql图书管理系统

完整代码地址

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);
        }
    }
}

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

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

相关文章

力压GPT-4o!新王Claude 3.5 Sonnet来了,直接免费可用

如今&#xff0c;大模型领域更卷了&#xff01; 前脚 OpenAI 发布 GPT4o&#xff0c;硬控全场&#xff0c;后脚就被最大的竞争对手 Anthropic 超越了。 刚刚&#xff0c;Anthropic 发布了全新大模型 Claude 3.5 Sonnet&#xff0c;号称是迄今为止最智能的模型。 据介绍&#x…

CSS|05 继承性与优先级

继承性 一、继承性的特点&#xff1a; 1.外层元素身上的样式会被内层元素所继承 2.如果内层元素与外层元素身上的演示相同时&#xff0c;外层元素的样式会被内层元素所覆盖 二、关于继承性的问题 是不是所有样式都能被继承&#xff1f; 答&#xff1a;并不是所有样式能被继承…

图像处理Python库--图片裁剪、缩放、灰度图、圆角等

图像处理Python库 py-img-processor1. 安装2. 使用(Usage)2.1 运行配置2.2 图像处理处理函数图像处理参数为字符串图像处理参数为JSON 命令行提取图像主色调 py-img-processor Image editor using Python and Pillow. 依赖Pillow开发的Python库&#xff0c;用于图像编辑处理。…

Excel数据恢复,4个技巧挽救重要数据

在数字化时代&#xff0c;Excel表格已经成为我们工作、学习乃至生活中不可或缺的一部分。它们承载着我们的数据、计划、分析和决策&#xff0c;如同一张张承载着智慧与汗水的地图&#xff0c;指引我们前行。然而&#xff0c;当这些宝贵的数据意外丢失或被误删时&#xff0c;我们…

【Linux操作系统】进程地址空间与动态库加载

当系统执行一个依赖动态库的可执行程序时&#xff0c;系统不仅要将该可执行程序加载到内存中还要由加载器将动态库加载到内存中&#xff08;静态库没有&#xff09;&#xff0c;因此必须要让加载器知道该动态库的名称&#xff0c;系统会默认在/lib64路径下查找&#xff0c;解决…

I/O系统

1. I/O接口 接口可以看做两个系统或两个部件之间的交接部分&#xff0c;它既可以是两种硬设备之间的连接电路&#xff0c;也可以是两个软件之间的共同逻辑边界。 I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的软件控制。 2. 程序查询方式 程序查询方式是一…

深圳比创达|EMC与EMI一站式解决方案:从源头解决,满足您的需求

随着科技的飞速发展&#xff0c;电子产品日益普及&#xff0c;电磁兼容性&#xff08;EMC&#xff09;与电磁干扰&#xff08;EMI&#xff09;问题也逐渐凸显。 一、EMC与EMI的概述 EMC&#xff08;电磁兼容性&#xff09;是指电子设备在共同的电磁环境中能执行各自功能的互不…

TTS x Hallo: 免费数字人头在线生成

是一个利用了百度 Hallo 和 Parler/WhisperSpeech TTS 项目实现的可说话、嘴型匹配的数字人头在线 Space

向日葵API集成服务:三大优势助力企业搭建专属远控方案

为了方便企业用户更加灵活的搭建满足各自需求的软件解决方案&#xff0c;降低开发和部署门槛&#xff0c;很多软件方案供应商提供了多样化的合作模式。 以贝锐向日葵远程控制为例&#xff0c;他们就向客户提供了基础的SaaS服务模式、私有化部署模式、SDK嵌入模式&#xff0c;以…

VUE模板语法(超详细讲解)

大家好&#xff0c;我是DX3906&#xff0c;坚持从工作和生活中不断学习&#xff0c;提炼&#xff0c;沉淀&#xff0c;最终建立自己的强势领域&#xff01; Vue 使用一种基于 HTML 的模板语法&#xff0c;使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue…

设计模式原则——接口隔离原则

设计模式原则 设计模式示例代码库地址&#xff1a; https://gitee.com/Jasonpupil/designPatterns 接口隔离原则 要求程序员尽量将臃肿庞大的接口拆分为更小的和更具体的接口&#xff0c;让接口中只包含客户感兴趣的方法接口隔离原则的目标是降低类或模块之间的耦合度&…

文华财经7macd预警指标公式源码

文华财经7macd预警指标公式源码&#xff1a; DIFF:EMA(CLOSE,12) - EMA(CLOSE,26); DEA:EMA(DIFF,9); MACD:2*(DIFF-DEA),COLORSTICK; JC:CROSS(DIFF,DEA); SC:CROSSDOWN(DIFF,DEA); N1:BARSLAST(JC)1; N2:BARSLAST(SC)1; X:(HHV(H,N16)-LLV(L,N16))/LLV(L,N16)*100; …

D13005-ASEMI低频开关三极管D13005

编辑&#xff1a;ll D13005-ASEMI低频开关三极管D13005 型号&#xff1a;D13005 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 批号&#xff1a;2024 沟道&#xff1a;NPN 电流&#xff1a;4A 电压&#xff1a;400V 安装方式&#xff1a;直插式封装 特性&#xff1…

idea配置JAVA

idea项目用的gradle&#xff0c;配置项目java两个地方 1、project structure 菜单&#xff1a; file-》project structure&#xff0c;如图设置你要的java&#xff0c;如果没有&#xff0c;就点击Add SDK增加你要的版本并选择 2、settings 菜单&#xff1a; file-》settings

一站式AI服务平台:MaynorAI助您轻松驾驭人工智能

一站式AI服务平台&#xff1a;MaynorAI助您轻松驾驭人工智能 在当前的数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术已经成为推动各行各业创新发展的核心动力。为了更好地满足企业和个人用户对AI服务的需求&#xff0c;MaynorAI 作为一个领先的一站式调用国内…

分享HTML显示2D/3D粒子时钟

效果截图 实现代码 线上体验&#xff1a;three.jscannon.js Web 3D <!DOCTYPE html> <head> <title>three.jscannon.js Web 3D</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,ini…

【UE开发】游戏库存UI系统Demo

1.项目介绍 1.描述&#xff1a;一种用于存储记录玩家物品的游戏内可视化操作系统。 2.演示&#xff1a;https://www.bilibili.com/video/BV1f53neVEfW/?vd_source50dea901fd12253f417c48b937975b0d 3.大纲&#xff1a; 4.样式&#xff1a; 2.W_Inventory_Main_01&#xff08;…

DigiRL:让 AI 自己学会控制手机

类似于苹果此前发布的Ferret-UI 的安卓开源平替。主要用于在 Android 设备上识别 UI 和执行指令&#xff0c;不同的是它利用了离线到在线强化学习&#xff08;Offline-to-Online RL&#xff09;&#xff0c;能够快速适应应用更新或 UI 变化。

从移动切换到电信IP:详细介绍两种方法

在当前的互联网环境中&#xff0c;用户可能会因为各种原因需要切换网络服务提供商&#xff0c;比如从移动切换到电信。这种切换不仅涉及到网络服务的变更&#xff0c;还可能意味着IP地址的改变。那么&#xff0c;移动的怎么切换成电信的IP&#xff1f;下面一起来了解一下吧。 方…

技术突破:llamafile一键部署大模型,释放AI潜力

目录 一、引言二、什么是llamafile&#xff1f;1、设计目标2、技术构成3、与传统部署方式的对比4、一键部署的优势 三、核心特性1、一键部署的便捷性2、跨平台支持3、独立可执行文件4、简化的分发流程5、技术细节6、用户体验7、安全性和隐私 四、部署流程详解1、下载模型2、操作…