数据库系统设计大作业:图书馆管理系统

article/2025/11/9 10:21:04

数据库系统设计大作业:图书馆管理系统

参考https://blog.csdn.net/dimo__/article/details/84936685中的设计思路,设计了本系统

1 需求分析

针对图书馆的图书管理系统数据库设计,分别对图书馆的读者、一般工作人员和部门负责人进行详细地分析,总结出如下的需求信息:
(1)图书馆中的图书具有书号、书名、作者、馆藏册数、在馆册数、价格、出版社及摘要等必要信息。其中每种书具有唯一的书号,即一个书号对应一种书而不是一本书。书名可以重复,但如果只是两本书重名,则这两本书具有不同的书号。馆藏册数和在馆册数可以用于让读者判断是否可以借,另外,馆藏册数必须要大于等于在馆册数。
(2)图书馆中的读者具有卡号、姓名、性别、单位、类型、级别和在借册数这些必要信息。卡号用于唯一地标识读者身份,每个读者对应一个卡号,同样每个卡号也不能对应多个读者。类型这个属性可以用于区分教员、学员,区分他们的意义在于不同类型的读者可同时借阅的书籍数大不相同。
(3)从读者的角度,可以查阅图书馆相应的图书资料(也可以按要求查找,如输入一些关键字)以及每本书的在馆册数;同时可以提交借书和还书的申请;能判断自己是否因超期而欠款,若超期则自动显示出所需的罚款金额。
(4)图书馆中的工作人员可以分为图书管理员和系统管理员。
(5)图书管理员是图书馆中最普通的工作人员,图书管理员可以实现读者的借书和还书操作;也可以实现在读者交罚款之后取消罚款记录。另外,图书管理员在执行借书或还书操作时,应根据不同读者类型的借书限制册和还书日期等约束条件来实现。
(6)系统管理员主要管理各类人员信息,包括读者信息和图书馆管理员信息这两项。
(7)图书馆中应当有书架,书架具有书架号和类型两个属性,不同的书架号对应的图书类型也应该不同;另外还需要在图书中增加存放位置这个属性。

2 系统设计

2.1 概念结构设计

图书这个实体型由书号、书名、作者、价格、出版社、摘要、馆藏册数、在馆册数、存放位置和被借次数这些属性组成,其中书号这个属性为主属性。
在这里插入图片描述
读者这个实体型由学号、姓名、性别、单位、类型、可借册数、在借册数、登陆密码和欠款这些属性组成,其中学号这个属性为主属性。
在这里插入图片描述
书架这个实体型由书架号和类型这两个属性组成,其中书架号这个属性为主属性,类型为本书架中存放书籍的类型,与之前读者中的表示读者身份的类型完全不同。

在这里插入图片描述
图书管理员和系统管理员这两个实体型由工作号,姓名和登录密码这些属性组成,其中工作号为主属性。

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

借还申请这个实体型由学号、书号、提交时间和借还类型这些属性组成,这些属性均为主属性。

在这里插入图片描述

2.2 整体ER图

在这里插入图片描述

2.3逻辑结构设计

(一)关系模式的设计与优化
首先:将E-R图中的6个实体型转换成6个最基本的关系模式
1、图书(书号,书名,作者,价格,出版社,摘要,馆藏册数,在馆册数,存放位置,被借次数)
2、读者(卡号,姓名,性别,单位,类型,在借册数,可借册数,密码,欠款)
3、书架(书架号,类型)
4、图书管理员(工作号,姓名,密码)
5、系统管理员(工作号,姓名,密码)
6、借还申请(学号,书号,提交时间,类型)
然后:将实体型之间的联系转换成关系模式,因为是m:n联系,因此直接将与该联系相连的各实体的码以及联系本身的属性转换为关系的属性
1、借阅(书号,卡号,借书时间)
最后,根据实际的需要将关系模式进行合理的优化
1、图书(书号,书名,作者,价格,出版社,摘要,馆藏册数,在馆册数,存放位置,被借次数)
因为只有一个候选码(书号),因此不存在非主属性部分依赖的情况;另外,由于除了候选码以外的所有非主属性每一个都是只有通过候选码推出,因此,不存在传递依赖,而且因为候选码书号是唯一的决定因素,所以该关系模式不仅满足3NF,也满足BCNF。
2、读者(卡号,姓名,性别,单位,类型,在借册数)
因为只有一个候选码(卡号),因此该关系模式中也不存在非主属性部分依赖的情况;另外,由于除了候选码以外的所有非主属性每一个都是只有通过候选码推出,因此,也不存在传递依赖,而且因为候选码卡号是唯一的决定因素,所以该关系模式也满足BCNF。
3、类型(类型,借书时间,最多在借册数)
与上一个关系模式相同,由于只有一个候选码(类型),因此该关系模式中也不存在非主属性部分依赖的情况;另外,由于除了候选码以外的所有非主属性每一个都是只有通过候选码推出,因此,也不存在传递依赖,而且因为候选码类型是唯一的决定因素,所以该关系模式也满足BCNF。
4、借阅(书号,卡号,借书时间)
这个关系模式中包含三个主属性(书号、卡号和借书时间),该关系模式也满足BCNF。
5、书架(书架号,类型)
因为只有一个候选码(书架号),因此该关系模式中也不存在非主属性部分依赖的情况;另外,由于除了候选码以外的所有非主属性只有一个,也就是类型,只有通过候选码推出,因此,也不存在传递依赖,而且因为候选码书架号是唯一的决定因素,所以该关系模式也满足BCNF。
6、工作人员(工作号,姓名,职务)
与上一个关系模式相同,该关系模式只有一个候选码(工作号),因此该关系模式中也不存在非主属性部分依赖的情况;另外,由于除了候选码以外的所有非主属性每一个都是只有通过候选码推出,因此,也不存在传递依赖,而且因为候选码工作号是唯一的决定因素,所以该关系模式也满足BCNF。
(二)设计合适的视图
首先,由于所需要查看该数据库的人员分为读者、一般工作人员和部门负责人。而这三种人员在不同情况下需要看到的信息不同,因此需要根据这三种不同的人员建立所需要的不同视图。
对于读者而言:
1、读者在需要借书时只需要看到书号、书名、作者、价格、出版社、摘要、馆藏册数和存放位置,可以建立一个视图。
2、当读者需要查看自己的信息时,可以查看读者表的的全部信息以及类型表中的最多在借册数,以便于知道自己还能借几本书,这也需要建立一个视图。
对于图书管理员而言:
1、当图书管理员需要查看自己的信息时,只需要查看工作人员表中的前三项即可。
2、当图书管理员需要审批借阅/归还信息时,可根据职责分工单独查看其中一类申请。
对于系统管理员而言:
1、系统管理员除了可以查看所有信息外,还可以专门建立一个视图以方便查看图书的借阅情况以及每本书的借阅次数。
2、系统管理员可以查看登陆日志,通过日期信息来建立视图。

2.4数据库设计

主要设计了8个表,具体表结构如下:
Books(书)
在这里插入图片描述
Bookshelfs(书架)
在这里插入图片描述
Borrow(借书信息)
在这里插入图片描述

Item(借还申请)
在这里插入图片描述
Loginrecord(登陆日志)
在这里插入图片描述
Readers(读者)
在这里插入图片描述
Readertype(读者类型)
在这里插入图片描述
Workers(工作人员)
在这里插入图片描述

2.5 图形化界面设计

本系统的UI设计使用Python第三方库PyQt5。 Pyqt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。Qt库是最强大的GUI库之一。pyqt5做为Python的一个模块,它有620多个类和6000个函数和方法。这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX,Windows,Mac OS。
安装好PyQt5后,系统会默认安装QtDesigner工具。Qtdesigner是Python设计里面一个非常实用的工具,使得人们编写qt界面可以不仅仅是使用纯代码,而可以在可视化的基础上设置。
根据需求我们设计了以下4个界面:
1、登陆界面:
在这里插入图片描述

2、读者系统界面:
在这里插入图片描述

3、图书管理员界面:
在这里插入图片描述

4、系统管理员界面:
在这里插入图片描述

2.5系统功能实现思路

设计好UI后,具体功能的实现是将UI中各种控件的信号连接到相应的槽函数上。我们的思路是将这四个UI定义为类,实现功能的槽函数定义为类中的方法。在主函数中导入这几个类并实例化,这样在之后的优化中只需要对UI的类进行修改。
槽函数的实现需调用pymysql库,将需要数据库提供的数据转换为SQL语句,用库中的游标来执行,并返回相应值,进而实现具体功能。

2021.6.8
最近好像需要的人比较多,我又重新改了改之前买了的同学发现的BUG,说明文档和相关的内容都打包好了,有需要的请移步:
https://download.csdn.net/download/qq_21548021/19867406

mysql版本我用的是8.0,如果版本过低(例如mysql5.6)会导致sql导入失败,解决方法参照:
https://blog.csdn.net/m0_43449433/article/details/104690010?spm=1001.2014.3001.5501

2021.12.8
有人说readme下载要会员,我挂个百度云的链接
链接:https://pan.baidu.com/s/1USILkYfKbMCkQf-29bLOrw
提取码:is41

购买后有不会的可以私信我,我尽量帮解决

2021.12.29
想要JAVA版本的可以参考
https://blog.csdn.net/weixin_43922615/article/details/122180636?spm=1001.2014.3001.5502

2022.6.3
录了个使用视频 可以看看 https://www.bilibili.com/video/BV1mr4y1G7xp/

2022.6.9
最近比较忙,可能没时间解答问题,大家看着视频再有不会的查一查应该能搞定,具体来说步骤就是:
1、配置mysql;
2、把library.sql导入进去;
3、配置python,安装pymysql和pyqt5;
4、把connect.py里相关的值设置好;
5、运行main.py。


http://chatgpt.dhexx.cn/article/F5I94DgH.shtml

相关文章

简单用数据库实现图书管理系统

目录 一、摘要 2、基本功能 二、前言 三、主体 3.1需求分析 3.1.1 数据需求分析 3.1.2 功能需求分析 3.2概要设计 3.2.1 数据字典 3.2.2 ERD(实体关系图) 3.2.3 DFD数据流图 3.3 逻辑设计 3.3.1 E-R模型向关系模型的转换规则 3.3.2 E-R图转…

MySQL数据库期末项目 图书馆管理系统

1 项目需求分析 1.1 项目名称 图书馆管理系统 1.2 项目功能 在以前大多部分图书馆都是由人工直接管理,其中每天的业务和操作流程非常繁琐复杂,纸质版的登记信息耗费了大量的人力物力。因此图书馆管理系统应运而生,该系统采用智能化设计&#…

tar文件是什么?怎么解压?

例如在使用coco数据集的时候,下载下来是这样的两个文件: 恕我无知,之前完全没见过这种格式的文件。 经过一番咨询,原来是一种压缩文件,里面藏了很多内容,看它的大小就能猜到。 这种文件一般的压缩软件貌似…

常用的tar解压命令总结

ヘ^ヽ、  /⌒、  ,   |   ̄7  (⌒r⌒7/   レ   \/ ̄\」 _/         { _フ ●       ゝ _人   ο  ●  ナ   ト、&…

linux中.tar文件怎么解压

linux中.tar文件怎么解压 1、打包压缩tar -cvf etc.tar /app/etc #打包 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz格式的压缩包 tar -jcvf pack.tar.bz2 pack/ #打包压缩为一个.bz2格式的压缩包 tar -Jcvf pack.tar.xz pack/ #打包压缩为一个.xz格式的压缩包 2、解…

Linux 解压tar

Linux系统中tar压缩包怎么解压?Linux系统中有一个tar压缩包格式的文件需要解压,但是linux系统中没有找到tar的命令,该怎么办呢?下面我们就来看看详细的教程,需要的朋友可以参考下 在Linux的默认的版本中不是所有的命令…

解压缩命令tar zip rar

文章目录 打包和压缩的概念tar常用独立命令打包压缩查阅tar包内有哪些文件解压缩到指定目录(默认是当前目录)只将tar内的部分文件解压出来其他命令(其他) zip和unziprar和unrar 打包和压缩的概念 tar命令可以为linux的文件和目录创建档案 利用tar,可以为某一特定文件…

【hardware】什么是H桥电路?

前言 初玩智能车的小伙伴肯定会涉及到驱动电机正反转的时候,那么该如何控制智能车呢?这就要讲到双H桥了,让我来给你们分析吧! 1.三极管 讲到双H桥,那么首先得介绍两种三极管,S8550(PNP型&#x…

关于H桥的理解和应用

很多用电器对电源极性要求不高,如点灯,正反接都可以工作,而且现象都差不多,也有的用电器对电源极性敏感,而且接反了就不工作,例如多数半导体器件,LED等;但也有的用电器对电源极性敏感…

H桥驱动电路原理【转】

H桥驱动电路原理 一、H桥驱动电路 图4.12中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图4.12及随后的两个图都只是示意图,而…

STM32F1基于H桥的电机控制程序分析

这里写自定义目录标题 N-MOS H桥结构控制原理MOS驱动调速的实现控制程序编写 N-MOS H桥结构 控制原理 N-MOS的G极与S级的电压差大于某一值的时候,D极和S极之间导通,DS电阻极小,可看作导线,否则DS之间视为断路。 因此有以下控制方…

一份很用心的H桥驱动扫盲教程

什么是H桥? H桥是一个比较简单的电路,通常它会包含四个独立控制的开关元器件(例如MOS-FET),它们通常用于驱动电流较大的负载,比如电机,至于为什么要叫H桥(H-Bridge),因为…

电机控制-H 桥电路 控制方式简单解析

声明:本片文章来自互联网,侵删 电机控制-H 桥电路 控制方式简单解析 什么是H桥一. 开关状态1.1、正转1.2、反转1.3、调速 二. 停止状态2.1 第一种停止方式2.1 第二种停止方式 什么是H桥 H桥是一个比较简单的电路,通常它会包含四个独立控制的…

PWM驱动MOS管H桥电路

H桥是一个典型的直流电机控制电路,因为它的电路形状酷似字母H,故得名与“H桥”。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图中只是简略示意图,而不是完整的电路图,其中三极管的驱动…

基于STM32的电机--直流有刷电机H桥驱动的不同模式分析

文章目录 直流电机驱动设计1.电机驱动硬件配置2.电机驱动电路分析简单正向电路最简单的电机正反转电路H桥电路分析受限单极模式单极模式双极模式 减速电机的重要参数 直流电机驱动设计 1.电机驱动硬件配置 直流电机旋转:给电机提供两根线,以提供电压正…

深入浅出H桥驱动电路

什么是H桥? H桥是一个比较简单的电路,通常它会包含四个独立控制的开关元器件(例如MOS-FET),它们通常用于驱动电流较大的负载,比如电机,至于为什么要叫H桥(H-Bridge),因为长得比较像字母H,具体如下图所示; 这里有四个开关元器件Q1,Q2,Q3,Q4,另外还有一个直流电机…

mos管h桥电机驱动电路与设计原理图-KIA MOS管 (kiaic.com)

来源: mos管h桥电机驱动电路与设计原理图-KIA MOS管 (kiaic.com) 一、mos管H桥电路 图1中所示为一个典型的直流电机控制电路。 电路得名于“H桥驱动电路”是由于它的外形酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(留意&…

【开源电机驱动】H 桥驱动-硬件篇

原文地址:http://www.modularcircuits.com/blog/articles/h-bridge-secrets/h-bridge_drivers/ 本文翻译校正稿件,含有译者批注 H-Bridge Drivers H 桥驱动-硬件篇 Introduction 引言 In the previous installment of the series we’ve gone through…

【大电流H桥电机驱动电路的设计与解析(包括自举电路的讲解,以IR2104+LR7843为例)】

一.简介 之前介绍过H桥电机驱动电路的基本原理,但是以集成的电机驱动芯片为示例。这些集成的芯片使用起来比较简单,但是只能适用于一些小电流电机,对于大电流的电机(比如:RS380和RS540电机),则不能使用这些…

如何驱动直流电机H桥驱动笔记

如何驱动直流电机H桥驱动 直流减速电机驱动设计MOS管控制直流H桥电路分析正反转正转反转损坏原因分析刹车调速 单片机引脚驱动?那上桥臂可不可以跟下桥臂一样呢?最终得出结论 电路设计 直流减速电机驱动设计 MOS管控制直流 我们知道单个MOS管可以控制直…