基于Java+Mysql实现的PC端图书管理系统软件

news2024/11/21 1:38:03

Library_system

图书管理系统。用Java实现的PC端软件。使用MySql作为DBMS操作本地数据库,用JDBC连接Java和数据库。实现图书管理系统的基本功能

项目介绍

该项目主要实现了图书管理系统几个主要的基本功能,做这小项目是为了简单学习数据库设计、包括ER图,关系模式,范式,完整性约束,安全性,视图等等。
学习简单SQL语言、学习使用JDBC对Java和数据库的连接等等

功能模块图

完整E-R图

关系模型

学生表( 学号,学生姓名,性别,年龄,学院)

图书表 (图书编号,图书名,图书总数,可借数目)

图书管理员(管理员编号,管理员姓名,性别,年龄)

学生借还信息表(学号,图书编号,管理员编号,借书时间,归还时间,借书数目)

学生登录信息表(学号(作为账号),密码)

管理员登录信息表(管理员编号(作为账号),密码)

zjz_Student( Sno,Sname,Ssex,Sage,Scollege,Sno→Sname,Sno→Ssex, Sno→Sage, Sno→Scollege)
学生表所有的非主属性完全依赖于码,没有主属性部分或传递依赖于码,所以属于BCNF。

zjz_Book(Bno,Bname,BAllcount,Blendcount,Bno→Bname, Bno→BAllcount, Bno→Blendcount)
图书表所有的非主属性完全依赖于码,没有主属性部分或传递依赖于码,所以属于BCNF。

zjz_Admin(Ano,Aname,Asex,Aage,Ano→Aname, Ano→Asex, Ano→Aage)
图书管理员表所有的非主属性完全依赖于码,没有主属性部分或传递依赖于码,所以属于BCNF。

zjz_BS(Sno,Bno,Ano,BSlendtime,BSbacktime,BScount,(Sno,Bno,Ano,BSlendtime,BSbacktime) →BScount)
学生借还信息表所有的非主属性完全依赖于码,没有主属性部分或传递依赖于码,所以属于BCNF。

zjz_Student_login(Sno,Spass,Sno→Spass)
学生登录信息表所有的非主属性完全依赖于码,没有主属性部分或传递依赖于码,所以属于BCNF。

zjz_Admin_login(Ano,Apass,Ano→Apass);
管理员登录信息表所有的非主属性完全依赖于码,没有主属性部分或传递依赖于码,所以属于BCNF。

视图

学生已借图书(学生名和图书名)视图
View_StudentBookName(zjz_Student.Sname,zjz_Book.Bname,zjz_Admin.Aname, BSlendtime,BSbacktime,BScount)

安全性(用户类别和权限)设计和实现说明

登录或注册的时候用一个专门用于登录注册的数据库用户(account_library),用于查看或者更新学生登录信息表和管理员登录信息表,还有查看学生表。用于检验用户是否能登录成功,或创建用户。
  学生登录信息表和管理员登录信息表用于保存所有的账户和密码。
  有两个数据库用户(student_library,admin_library)分别用于学生和图书管理员用户登录后,用于连接数据库。
  学生使用student用户,只拥有查看学生表、图书表、借书还书记录表的权限。
  管理员使用admin用户拥有查看管理员表、学生表、图书表、借书还书记录表的权限,还有更新借书还书记录表的权限。

完整性(主、外码和用户自定义的完整性约束)设计和实现说明。

MySql使用触发器完成用户自定义的完整性约束

1、学生表( 学号,学生姓名,性别,年龄,学院)
主码为学号,学生的年龄大于0,性别为男或女,姓名不为空

create  trigger zjz_Student_tri
  After insert on zjz_Student
  for each row
  begin
  if ((new.Ssex<>'男' && new.Ssex <>'女')||new.Sage <=0  )then INSERT into zjz_student VALUES('error');
  end if;
  end;

2、图书表 (图书编号,图书名,图书总数,可借数目)
主码为图书编号,图书总数大于0 可借数目大于等于0,可借数目小于等于可借总数,图书名不为空

create  trigger zjz_Book_tri_insert
  After insert on zjz_Book
  for each row
  begin
  if (new.BAllCount <= 0 || new.BlendCount <0 ||new.BlendCount > new.BAllCount )then INSERT into zjz_Book VALUES('error');
  end if;
  end;

3、图书管理员表(管理员编号,管理员姓名,性别,年龄)
主码为图书管理员编号,管理员年龄大于0,性别为男或女,姓名不为空

create  trigger zjz_Admin_tri
  After insert on zjz_Admin
  for each row
  begin
  if ((new.Asex<>'男' && new.Asex <>'女')||new.Aage <=0  )then INSERT into zjz_Admin VALUES('error');
  end if;
  end;

4、学生借还信息表(学号,图书编号,管理员编号,借书时间,归还时间,借书数目)
主码为学号,图书编号,管理员编号,借书时间,归还时间,学号是外码,参照学生表,图书编号是外码,参照图书表,管理员编号是外码,参照图书管理员表。借书数目>0

create  trigger zjz_BS_tri
  After insert on zjz_bs
  for each row
  begin
  if (new.BScount <=0  )then INSERT into zjz_BS VALUES('error');
  end if;
  end;

5、学生登录信息表(学号(作为账号),密码)
主码为学号,学号为外码,参照学生表

6、管理员登录信息表(管理员编号(作为账号),密码)
主码为管理员编号,管理员编号为外码,参照管理员编号

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

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

相关文章

系统架构师-面向服务架构(SOA)全解

1、为什么需要SOA架构 1.1 系统集成问题 异构系统整合 例如&#xff0c;一个企业可能同时拥有用 Java 开发的企业资源规划&#xff08;ERP&#xff09;系统、用 C# 开发的客户关系管理&#xff08;CRM&#xff09;系统以及用 Python 开发的数据分析系统。通过 SOA&#xff0…

9月24日笔记

内网信息收集 本机基础信息收集 当通过web渗透或者其他方式活动服务器主机权限之后&#xff0c;需要以该主机作为跳板&#xff0c;对内网环境进行渗透&#xff0c;对于攻陷的第一台主机&#xff0c;其在内网中所处的网络位置、当前登录的用户、该用户有什么样的权限、其操作系…

微信小程序开发第八课

一 公告 1.1 微信小程序端 #js###const api require("../../config/settings.js") Page({data: {noticeList: [{title: 公告标题1,create_time: 2024-04-25,content: 公告内容描述1&#xff0c;公告内容描述1&#xff0c;公告内容描述1。, // 可以根据实际情况添加…

几个将ppt文件压缩变小的方法!

几个将ppt文件压缩变小的方法&#xff01;在构建集文字、图像、视频及数据表于一体的综合PPT演示文稿时&#xff0c;一个常见挑战是随着内容的不断丰富&#xff0c;文件体积也随之膨胀&#xff0c;这往往源于直接嵌入未经优化的多媒体资源及设计上的冗余元素&#xff0c;如繁复…

数字人实战第五天——Dinet 训练自己的数字人

一、简介 DINet 是一个形变修复网络&#xff0c;专门用于解决高分辨率人脸视觉配音中的难题。它的设计目的是为了提升视觉配音的保真度和细节丰富性&#xff0c;特别是在少样本学习的情境下&#xff0c;即在训练数据较少的情况下依然能够实现较好的配音效果。 DINet的技术实现…

html TAB切换按钮变色、自动生成table

<!DOCTYPE html> <head> <meta charset"UTF-8"> <title>Dynamic Tabs with Table Data</title> <style> /* 简单的样式 */ .tab-content { display: none; border: 1px solid #ccc; padding: 1px; marg…

【专题总结】【一文解决】多继承下的构造函数执行顺序

多继承下的构造函数执行顺序 派生类构造函数执行顺序如下 ①调用基类构造函数→调用顺序按它们被继承时【从左至右】被说明的次序 ②调用子对象的构造函数→调用顺序按它们在【类中说明次序】 ③调用派生类的构造函数 【典型题1】13浙工大卷二读程序4题 【分析】下面①classC:p…

Mybatis Mapper 代理开发

文章目录 1, 实体类2、将Mapper接口写好3、UserMapper.xml 配置文件4、mybatis-config.xml 配置文件5、编写代码 Mybatis Mapper 代理开发 总的来说&#xff0c;有这几点&#xff1a; 定义域SQL映射文件同名的Mapper接口&#xff0c;并且将Mapper接口和SQL映射文件位置在同一目…

OpenCV图像分割(2)分水岭算法图像分割函数watershed()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用分水岭算法执行基于标记的图像分割。 该函数实现了分水岭算法的一种变体&#xff0c;即无参数基于标记的分割算法&#xff0c;在文献 [186]…

GPG(GNU Privacy Guard)简介

GPG&#xff08;GNU Privacy Guard&#xff09;简介 加密基础 对称加密 对称加密是一种加密方式&#xff0c;其中加密和解密使用相同的密钥。常见的对称加密算法包括AES和DES。这种方法的优点是速度快&#xff0c;但缺点是密钥分发和管理比较困难&#xff0c;一旦密钥泄露&a…

网络安全-jsp绕过

一、思路(这里给出jsp的WebShell样本) 1.1 加载字节码getshell <% page import"com.sun.org.apache.bcel.internal.util.ClassLoader" %> <html> <body> <h2>BCEL字节码的JSP Webshell</h2> <%String bcelCode "$$BCEL$$$l…

零基础转行学网络安全怎么样?能找到什么样的工作?

网络安全对于现代社会来说变得越来越重要&#xff0c;但是很多人对于网络安全的知识却知之甚少。那么&#xff0c;零基础小白可以学网络安全吗&#xff1f;答案是肯定的。 零基础转行学习网络安全是完全可行的&#xff0c;但需要明确的是&#xff0c;网络安全是一个既广泛又深入…

常用的10款加密软件排行榜(2024年办公文件加密干货收藏)

随着数据泄露事件的增加和隐私安全意识的提升&#xff0c;文件加密已经成为企业和个人保护敏感信息的必备手段。无论是防止外部攻击&#xff0c;还是内部数据泄露&#xff0c;文件加密工具都是重要的防护措施。以下是2024年最常用的10款办公文件加密软件&#xff0c;帮助你在工…

全新热门电商API接口,实现闲鱼商品详细搜索功能

近年来&#xff0c;电商行业蓬勃发展&#xff0c;API&#xff08;Application Programming Interface&#xff09;接口已经成为电商平台的重要组成部分。API接口不仅可以实现平台间的数据交互&#xff0c;还可以为开发者提供丰富的功能&#xff0c;满足用户多样化的需求。在这个…

吴师兄:非科班程序员,创作出Github标星75.3K的宝藏项目,一周爆火……

这是《开发者说》的第18期&#xff0c;今天我们采访的是在Github上传LeetCode动画题解&#xff0c;获得75.3K标星宝藏项目的程序员吴师兄。 吴师兄从985大学毕业&#xff0c;从通信工程外包零基础转码程序员&#xff0c;逐渐进入一些中厂和大厂&#xff0c;工资也从三四千起步…

靶向捕获探针设计软件包

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&…

什么是容性负载箱?

容性负载箱是用于模拟电网中感性负载的装置&#xff0c;通常由电容器、电抗器等元件组成。在电力系统中&#xff0c;负载箱被广泛应用于测试和评估各种电气设备的性能&#xff0c;如变压器、发电机、开关设备等。容性负载箱的主要作用是模拟实际负载对电网的影响&#xff0c;以…

用甘特图做项目计划,你就是时间管理大师!

当我们想要清晰地展现一个活动流程或项目进展时&#xff0c;如何提升对时间和项目的管理能力呢&#xff1f;本文将为你介绍一种新颖的甘特图&#xff0c;特别适合用来进行长期工作安排。借助甘特图&#xff0c;我们可以将中长期目标切分为更易掌控的短期计划&#xff0c;让计划…

无人机之可承受风速的影响因素

无人机可承受风速的影响因素是多方面的&#xff0c;这些因素共同决定了无人机在特定风速条件下的飞行稳定性和安全性。以下是一些主要的影响因素&#xff1a; 一、无人机设计与结构 无人机的大小、形状和重量都会直接影响其抗风能力。大型无人机由于具有更大的表面积和质量&am…

Linux:进程间通信之命名管道

Linux&#xff1a;进程间通信-CSDN博客 我们说匿名管道只能用于父子进程这样的关系通信&#xff0c;那么陌生进程怎么通信&#xff1f; 我们之前说父子进程能通信的最关键的地方就在于子进程复制了一份父进程的files_struct&#xff0c;从而通过文件的inode映射同一份文件来通…