图书管理系统2.0——mysql数据库

2023-11-11

目录

一、简要介绍

1、使用技术

原生java+swing+jdbc驱动+mysql 没有任何框架

2、简要功能

在这里插入图片描述

3、 源码

https://gitee.com/wang-yongyan188/bms.git

二、 需求文档

1、登录

代码运行后 ,会弹出登录窗口

  • 输入用户名(用户名唯一),账号密码 且密码不可见
  • 如果输入正确,会判断是管理员还是用户,进入不同页面菜单
  • 如果输入错误,会有红字提示
  • 如果没有账号密码,可以点击注册

在这里插入图片描述

2、注册

  • 在登录窗口,点击注册 弹出注册窗口
  • 输入用户名(要求名字没有被注册),密码,点击注册 为空或不符合要求,会有对应提示
  • 注册成功,注册窗框消失,弹出成功提示 点击确定,弹窗消失
  • 注册的用户默认为普通用户

在这里插入图片描述

在这里插入图片描述

3、用户菜单

  • 登录成功后,进入菜单
  • 在菜单顶部显示当前用户名,当前积分,以及系统通知。如果书快到期或者逾期未归还都会在系统通知显示
  • 用户可点击菜单选项进入不同功能窗口

在这里插入图片描述

3.1 借阅图书

  • 点击借阅,弹出借阅窗口,如果积分为负数,则不能点击并给出提示
  • 窗口中,填写图书名字,选择所借月数以及天数。借阅总时间不超过3个月
  • 点击借阅 如果 书名为空,或者系统中不存在、没有剩余 会弹窗提示 ,同时清空所填内容;如果成功会提示归还时间,借阅窗口消失
  • 一个用户,相同书籍在归还前只能借一本
  • 点击取消,借阅窗口消失。只剩菜单页面

在这里插入图片描述
在这里插入图片描述

3.1 归还图书

  • 在菜单栏点击归还按钮,弹出归还窗口,在窗口内输入要归还的书籍名称
  • 如果用户归还书籍没有借阅、输入为空 都会弹窗提示
  • 如果归还成功,会弹窗提示,并增加一键跳转评价窗口按钮
  • 成功按时归还一次,积分+1 ;如果超时,则计算超时时间,每超过一天扣除一分,不足一天按一天计算。这些信息最终会放在我的消息中

在这里插入图片描述

3.2 个人中心

3.2.1 查看所有借阅记录
  • 点击会以表格形式展现该用户在系统中借阅过的书,包括借阅完成和借阅中
  • 在这里插入图片描述
3.2.2 查看借阅中的图书
  • 点击会以表格形式展现该用户所有未归还的图书
    在这里插入图片描述
3.2.3 签到领积分
  • 点击弹出签到页面,每名用户每天可签到一次,签到一次可加1积分并c
  • 若已经签过,则会给出提示
    在这里插入图片描述
3.2.4我的消息
  • 所有签到记录,归还记录,借阅记录,评价记录都在这里
  • 点击清空,则清除数据库记录
  • 若没有消息,则弹窗提示
    在这里插入图片描述
3.2.5 修改密码
  • 弹出窗口,用户输入新密码和旧密码 密码不显示明文
  • 如果旧密码错误,会给出提示,新密码要求至少4位数
  • 修改成功,弹窗消失回到菜单。下次登录生效

在这里插入图片描述

3.2.6 退出登录
  • 点击退出登录,将当前用户置空,菜单页面消失 ,弹出初始登录页面,重新登录

在这里插入图片描述

3.3 续借图书

  • 每次借阅只能续借一次
  • 续借时间最多为30天
  • 续借要求借阅没有超时
  • 输入书名,判断是否符合续借条件(此书是否在借阅中)
    在这里插入图片描述

3.4 评价图书

  • 图书评价可以在归还成功后,或从菜单栏点击
  • 每名用户,每次借阅只能评价一次
  • 只有归还成功后,才可以评价
  • 输入书名,判断是否借过此书,并是否评价过
  • 评价可以选择分数(选择栏方式,不可能为空),或输入评价内容(内容可以为空)

在这里插入图片描述

3.5 消息广场

  • 管理员每次对书籍的变动都会自动发布在消息广场,所有用户和其他管理员都可以看到
  • 消息有具体有时间和事件
  • 里面消息只能看,不能删除
    在这里插入图片描述

4、管理员菜单

  • 用户登录会自动判定身份来到不同的菜单页面
    在这里插入图片描述

4.1 管理图书

4.1.1 添加书籍
  • 弹出窗口,输入图书名字选择对应类型 输入数量 最后添加
  • 如果该图书已经存在,会弹出提示
  • 书名、数量(大于0)检测不能为空,并给出提示

在这里插入图片描述

4.1.2 修改图书
  • 先弹出窗口,输入要修改的书名,如果存在则进入修改页面;不存在则给出提示
  • 会将原来信息 自动填写进表单
  • 修改要修改的部分,检测修改是否合法后,弹窗提示成功,修改页面消失

在这里插入图片描述

4.1.3 下架书籍
  • 弹出下架页面 输入书名
  • 书名不存在,则给出提示
  • 若此时仍被借阅,则不能下架
  • 任何操作给出提示

在这里插入图片描述

4.2 消息广场

  • 与用户页面相同,显示管理员对书籍的操作
  • 有具体时间、事件
  • 在这里插入图片描述

4.3 查看图书数据

4.3.1 按照库存从少到多查询

  • 以表格形式 显示所有书籍列表 并按照库存从少到多显示

在这里插入图片描述

4.3.2 按照评分从高到低查询

  • 以表格形式 显示所有书籍列表 且按照评分从高到低显示
  • 在这里插入图片描述

4.3.3 按照借阅频次从高到低查询

  • 以表格形式 显示所有书籍列表 且照借阅频次从高到低显示
    -在这里插入图片描述

4.4 安全退出

  • 点击直接退出系统

三、系统设计

1、库表设计

tbl_book

在这里插入图片描述

tbl_order

在这里插入图片描述
在这里插入图片描述

tbl_user

在这里插入图片描述

tbl_msg_square

在这里插入图片描述

整体设计

在这里插入图片描述

2、核心类图

2.1 登录

在这里插入图片描述

2.2 菜单

概要:
在这里插入图片描述

2.3 目录结构

在这里插入图片描述

四、本次改进点

1、将所有业务代码,数据库操作、图形化界面分离  可直接自己编写网页配合控制器去对应业务,从而去掉GUI
2、增加 消息模块、归还提醒、积分模块、安全校验 增加可玩性
3、优化操作体验,使得操作更连贯、每个操作成功或失败都有对应提醒
4、将容易变化部分进行抽取,方便修改
5、修改上一个版本反馈的所有的bug、并增加功能、美化页面


历时4天,创作不易。如果觉得觉得还不错,就点个赞吧!任何bug欢迎私信反馈,有时间会再次更新!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图书管理系统2.0——mysql数据库 的相关文章

  • SQL - 选择具有最大值的所有行

    我有这个 SQL 查询 SELECT id COUNT AS price FROM SELECT FROM rt WHERE somecondition AS st JOIN tt ON st id tt id GROUP BY id 现在
  • 使用 Groovy 连接到 MySQL

    我正在尝试在 MAC OS 10 10 5 Yosemite 上使用以下 Groovy 代码连接到 MySQL 数据库 import groovy sql Sql try def dbURL jdbc mysql localhost 330
  • 不同的数据库使用不同的名称引用吗?

    例如 mysql引用表名使用 SELECT FROM table name 注意 其他数据库是否使用不同的字符来引用其表名 这种引号的使用称为分隔标识符 它是 SQL 的重要组成部分 因为否则您将无法使用以下标识符 例如表名和列名 包含空格
  • MySQL - 将字段的默认值设置为字符串连接函数

    我有一个看起来有点像这个的表 actor forename surname stage name 我想将 stage name 更新为默认值 forename surname So that insert into actors foren
  • 如何限制 SQLite / MySQL 中的列值

    我想限制表中的列值 例如 列值只能是car or bike or van 我的问题是如何在 SQL 中实现这一点 在数据库端执行此操作是一个好主意还是应该让应用程序限制输入 我还打算在将来添加或删除更多值 例如 truck 我使用的数据库类
  • 如何从准备好的语句中获取标量结果?

    是否可以将准备好的语句的结果设置为变量 我正在尝试创建以下存储过程 但失败了 第 31 行出现错误 1064 42000 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在 stmt USING m c a 附
  • 在MySQL中永久设置auto_increment_offset

    我以 root 身份运行命令 set auto increment offset 2 但从其他连接上看不到效果 为什么不 它是全球性的 From http dev mysql com doc refman 5 1 en replicatio
  • MYSQL:如何从姓氏中找到player_id?

    我现在尝试使用非标准化 摘要 表中的数据填充 testMatch 表 如下 测试匹配表 Field Type Null Key Default Extra match id int 11 NO PRI NULL match date dat
  • 两个表之间可以有两种关系吗?

    有两个表 EMPLOYER 和 EMPLOYEE 由于每个 EMPLOYEE 都被分配给一个 EMPLOYER 因此他们之间存在 1 N 关系 简单的事情 但我也希望能够模拟一种情况 每个雇主都可以选择他的one最喜欢的员工 他最好什么也不
  • InnoDB vs. MyISAM 插入查询时间

    我有一个大型 MySQL 表 约 1000 万行 6 5G 用于读取和写入 它是MyISAM 由于MyISAM 的所有表写入锁 我获得了很多锁 我决定尝试迁移到 InnoDB 推荐用于读 写表 它只锁定写入时的特定行 转换后 我测试了插入语
  • 无法将代码优先迁移应用到 mysql 数据库

    我正在使用 EF 代码优先模型开发 asp net mvc 我正在尝试首先使用 EF 代码将迁移应用到我的项目中 我正在使用 MySql 数据库 目前我使用的是 EF 4 3 1 版本和 6 6 4 0 版本的 mysql Connecto
  • GROUP_CONCAT 逗号分隔符 - MySQL

    我有一个疑问 我在哪里使用GROUP CONCAT和自定义分隔符 因为我的结果可能包含逗号 这一切都运行良好 但它仍然以逗号分隔 所以我的输出是 Result A Result B Result C 我怎样才能做到这一点 输出是 Resul
  • 安装 mysql2 时出错:无法构建 gem 本机扩展

    我在尝试安装时遇到一些问题mysql2Rails 的宝石 当我尝试通过运行安装它时bundle install or gem install mysql2它给了我以下错误 安装 mysql2 时出错 错误 无法构建 gem 本机扩展 我该如
  • PHP PDF生成问题

    我使用 FPDF 在 PHP 中创建 pdf 我使用会话变量将变量在一种表单之间传递到另一种表单 当我提供一个值时 Report php
  • 用于分页的php示例脚本[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以建议一个好的分页 php 脚本 其中人们想要分页显示数据库中的大量项目 以下链接可以帮助您
  • 将表与同一个表的前一条记录连接起来

    我有一个包含历史记录的表 由主表中的多个触发器发布到那里 我想在历史表上创建一个 select 语句 其中每个记录都由其先前的记录 由相同的 LineID 和最高的 ActionDate 标识 连接 这样我就可以提取这两者之间的差异 我尝试
  • 为什么在 MAC OSX 上编译简单的 mysql c 应用程序时不断收到未定义的符号?

    我正在使用 MACOS 并尝试编写一个 测试 mysql 应用程序 该应用程序仅测试与本地数据库的连接 include
  • 如何让MySQL数据库完全在内存中运行?

    我注意到我的数据库服务器支持内存数据库引擎 我想让一个已经运行 InnoDB 的数据库完全在内存中运行以提高性能 我怎么做 我探索了 PHPMyAdmin 但找不到 更改引擎 功能 假设您了解注释中提到的使用 MEMORY 引擎的后果 并且
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • 为什么运行 docker 容器后 mysql 数据所有权更改为 systemd-journal-remote

    我的mysql数据库存储在 home mysql代替 var lib mysql 该目录曾经属于mysql 但是 当我运行命令时docker compose up使用这个 yml 文件 version 3 services mariadb

随机推荐

  • 做web开发,怎么能不懂cookie、session和token呢?

    如果把人体比作一个web系统的话 cookie session和token就好像人体的经络和血管一样 而web系统中的数据 就好像人体的血液一样 血液依靠着血管在人体内流动 就如数据根据cookie和session机制在web系统中流动一样
  • 活动报名

    活动议程 日期 8月11日 周五 时间 主题 14 30 14 35 开场简介 吴琦 阿德莱德大学副教授 青源会会员 14 35 15 20 实际应用中的通用视觉与语言方法 聚焦于视觉与语言导航任务 乔滟媛 阿德莱德大学博士后研究员 15
  • vue_02_数据绑定

    1 单向数据绑定 语法 v bind href xxx 或简写为 href 特点 数据只能从 data 流向页面
  • 大乐透分析软件

    大乐透分析软件 1 使用python从网站中爬取所有的大乐透中奖号码 2 使用c 分析红球 蓝球 组合重复出现次数 3 输入红球 蓝球判断历史中奖次数和出现次数 python爬取代码 import os import re import t
  • 【OpenCV图像处理】1.26 直方图反向投影(Back Projection)

    1 相关理论 反向投影 反向投影是反映直方图模型在目标图像中的分布情况 简单点说就是用直方图模型去目标图像中寻找是否有相似的对象 通常用HSV色彩空间的HS两个通道直方图模型 反向投影 步骤 1 建立直方图模型 2 计算待测图像直方图并映射
  • 【SqlServer】如何实现用一个表中的数据修改另一个表中的数据?

    问 我想根据一定的条件实现用一个表中的数据修改另一个表中的数据 这该如何办到呢 答 这有何难 用SQL语言UPDATE嘛 表一 student stu id stu name stu age 1 aa 20 2 bb 21 3 cc 22
  • 小程序跳转外链

    注意 个人类型和海外类型的小程序不支持 web view 标签 直接跳转显示如下页面 解决方案1 将外链地址配置在微信公众的白名单中即可正常跳转 解决方案2 新建一个 fbec number collection用web view承载它以后
  • Oracle-Rman详解

    RMAN 使用详解 一 连接方式 一 连接本地数据库 oracle oracle rman target 二 连接远程数据库 oracle oracle rman target sys oracle orcl 二 基本指令 一 执行 SQL
  • Java线程(从基本概念到线程安全,超详细加大量代码实现)

    线程 线程基本概念 一个线程是一个程序内部的顺序控制流 线程和进程 每个进程都有独立的代码和数据空间 进程上下文 进程切换的开销大 线程 轻量的线程 同一类线程共享和数据空间 每个线程有独立的运行栈和程序计数器 PC 线程切换的开销小 多进
  • 计算机视觉(三):神经网络最优化过程

    计算机视觉笔记总目录 1 最优化 Optimization 定义 最优化是寻找能使得损失函数值最小化的参数 W W W的过程 注 给的是损失优化问题的一个简单定义 并不是完整的最优化数学定义 方法 问题陈述 这节的核心问题是 给定函数 f
  • Search in rotated sorted Array

    算法框架和普通折半查找一样 主要变量就是begin end mid 考虑的区间也一样 都是 begin mid mid mid end 这三种情况 只是判断条件的部分不同 1 若target A mid 返回mid 2 之后只有两种情况 t
  • 跨时钟域传输数据——单bit和多bit信号(总结)

    文章目录 前言 一 慢时钟域到快时钟域 1 单bit信号 2 多bit信号 二 快时钟域到慢时钟域 1 单bit信号 2 多bit信号 三 多bit信号跨时钟域传输 1 多个信号合并 2 多周期路径 Multi cycle Path MCP
  • MySql的增删改查操作(初学者个人心得)

    引言 在上周粗略的学习了有关MySql的相关基础内容 为了方便自己复习 特写下这篇个人心得 来记录MySql有关增删改查操作的内容 MySql学习中最重要的一部分 启动数据库 DOS命令进入mysql的bin文件夹 net start my
  • Linux服务器安全 SSH 用户密钥认证登录

    一 SSH基本简介 SSH 提供两种安全验证方式 1 基于口令 客户端使用账号和口令登录服务器 所有传输数据都会被加密 但可能存在伪造服务器冒充真正的服务器与客户端进行交互 不能避免中间人攻击 2 基于密钥 使用一对密钥 私钥 公钥 将公钥
  • ReentrantLock的使用和原理详解

    文章目录 一 ReentrantLock 小例子 二 ReentrantLock的优点 1 可重入 其实synchronized 也是可重入的 2 可中断 3 可限时 3 公平锁 一 ReentrantLock 小例子 import jav
  • 1 - 选择排序与冒泡排序

    排序算法 选择排序 选择排序的思路 依次遍历数组 每次遍历数组的时候 记录当前未排序的最小值的索引 让最小值的索引和待排序的数组的第一个元素进行交换 然后继续重复操作 直到所有元素都排序 public class SelectionSort
  • 关于JavaScript中map和reduce的分析

    以前看js都是云里雾里的 后来学了一些Java感觉稍微能看懂一些 恰逢又回头看到了以前关于js在有道云上的一些笔记 决定做一个关于map和reduce的分析 map map一般来说针对数组进行操作 但是进行了一个很好的封装使得读者可以清晰的
  • PHP获取二维数组中指定Key的重复Value

  • C++获取类私有成员指针

    获取类首地址 根据成员定义顺序去计算想要的私有成员地址 class A private int a float b public A a 1 b 1 public float getB return b void test A a floa
  • 图书管理系统2.0——mysql数据库

    目录 一 简要介绍 1 使用技术 2 简要功能 3 源码 二 需求文档 1 登录 2 注册 3 用户菜单 3 1 借阅图书 3 1 归还图书 3 2 个人中心 3 2 1 查看所有借阅记录 3 2 2 查看借阅中的图书 3 2 3 签到领积