数据库系统概论课程设计图书管理系统,分析和设计一个图书管理系统的数据库结构
数据库设计:图书管理系统借鉴了https://blog.csdn.net/dimo _/article/details/84936685的设计思想设计了本系统。
1需求分析针对图书馆图书管理系统的数据库设计,对图书馆读者、一般工作人员和部门负责人进行了详细的分析,总结出以下需求信息:
(1)图书馆图书有书名、书名、作者、册数、馆藏数量、价格、出版社、摘要等必要信息。每本书都有自己的书号。换句话说,一个书号对应的是一本书而不是一本书。书名可以重复,但如果只有两本书同名,那么这两本书就有不同的书号。图书数量和图书馆的藏书数量可以供读者判断是否借阅,而且藏书数量必须在图书馆藏书数量之上。
)2)图书馆读者有卡号、姓名、性别、单位、类型、年级、借书数量等必要信息。卡号用于唯一标识读卡器,每个读卡器对应一个卡号。同样,每个卡号也不能对应多个读卡器。type的这个属性可以用来区分老师和学生。区分是指根据不同类型的读者,可以同时借阅的图书数量差别很大。
3)从读者的角度出发,可以同时提交图书馆相应的图书资料(也可以通过输入关键词等方式根据自己的需求进行搜索。),以及各图书馆的图书借还数量的申请;可以判断自己是否借款到期。如果逾期,将自动显示所需的罚款金额。
4)图书馆工作人员可分为图书管理员和系统管理员。
5)馆员是图书馆最常见的工作人员。在可以借阅和归还读者的读者支付罚款后,图书馆员也可以取消罚款记录。此外,图书馆员在借阅或归还图书时,应根据读者类型的限制进行,如图书借阅限制和还书日期等。
(6)系统管理员管理各类人员信息,主要包括读者信息和图书管理员信息。
7)图书馆必须有书架。书架号和类型有两个属性,不同书架号对应的不同类型的书应该是不同的。此外,还需要在图书中增加存放地点的属性。
2系统设计2.1概念结构设计图书作为一个实体,是由几个属性组成的,比如书号、书名、作者、价格、出版社、文摘、书号、图书馆的藏书数量、仓库、借阅次数,其中书号是主要属性。
这个实体类型的读者由学号、姓名、性别、单位、类型、可借阅图书数、可借阅图书数、登录密码、债务等属性组成,其中学号属性是主要属性。
实际的书架类型是由书架号和类型两个属性组成的,其中书架号属性是主要属性,类型是书架上存放的图书的类型,这与过去的读者身份类型完全不同。
馆员和系统管理员由工号、姓名、登录密码等属性组成,其中工号是主要属性。
借阅申请的实体由学号、书号、提交期限、借阅类型等属性组成,是主要属性。
2.2总体er图
2.3逻辑结构的设计(1)关系模型的设计和优化
首先,将E-R图的六种实体类型转换成六种基本关系模式。
1.图书(ISBN、书名、作者、价格、出版社、摘要、书号、图书馆藏书数量、存放地点、借阅次数))。
2.读者)卡号、姓名、性别、单位、类型、借书数量、借书数量、密码、借书)。
3.书架(书架的数量和类型)。
4.图书管理员(工号,姓名,密码))。
5.系统管理员(工号、姓名、密码)。
6.借阅申请(学号、书号、提交时间、类型))。
:实体之间的关系转换为关系模型。因为m:n是连接的,所以连接的实体的代码和连接本身的属性直接转化为关系的属性。
1.借阅(号码,卡号,借阅时间))。
最后,根据实际需要合理优化关系模型。
1.图书(ISBN、书名、作者、价格、出版社、摘要、书号、图书馆藏书数量、存放地点、借阅次数))。
由于候选码(数)只有一个,主属性以外的部分不依赖,除候选码以外的所有非主属性都只被候选码挤出,所以不存在传递依赖,候选码本数是唯一的决定因素,所以关系模型只有3NF。
2.读者(卡号、姓名、性别、单位、类型、借阅份数)。
因为候选码(卡号)只有一个,所以在这个关系模型中非主属性是不依赖的,除了候选码以外的所有非主属性都被候选码唯一挤出,所以不存在传输依赖,候选码号是唯一的决定因素。
3.类型(类型、借出时间、最大借出份数)。
和前面的关系模型一样,只有一个候选代码(类型),所以这个关系模型除了主属性之外的部分不会依赖它。另外,除候选码外的所有非主属性都只是由候选码推导出来的,所以不存在传递相关,候选码类型是唯一的决定因素,所以这种关系模式也满足BCNF。
4.借阅(号码,卡号,借阅时间))。
这个关系模型包含三个主要属性:这个号码、卡号和租用时间。这个关系模型也让BCNF满意。
5.书架(书架编号、类型)。
因为只有一个候选码(书架号),所以在这个关系模型中,除了主属性以外的部分是不依赖的,除了候选码以外只有一个非主属性,也就是类型,只从候选码开始卖,所以没有传递依赖,只有一个候选码。
6.员工(工号、姓名和职务)。
前门呢
系统模式是一样的,在这个关系模式中只有一个候选码(工号),所以在这个关系模式中不存在非主属性的部分依赖。此外,由于除候选码外的所有非主属性都仅由候选码导出,因此不存在传递依赖,并且由于候选码工作数是唯一的决定因素,因此这种关系模式也满足BCNF。
(B)设计适当的视图
首先,需要查看数据库的人分为读者、一般工作人员和部门负责人。但是这三种人在不同的情况下需要看到不同的信息,所以需要根据这三种人建立不同的观点。
给读者:
1.当读者需要借书时,只需要看到书号、书名、作者、价格、出版社、摘要、馆藏号、存放地点,就可以建立视图。
2.当读者需要查看自己的信息时,可以查看读者表中的所有信息和类型表中的最大图书数量,从而知道自己可以借多少本书。这也需要建立一个视图。
对于图书馆员:
1.当图书管理员需要查看自己的信息时,只需要查看staff表中的前三项即可。
2.当图书管理员需要审批借还信息时,可以根据职责分工单独查看其中一个申请。
对于系统管理员:
1.系统管理员除了可以查看所有信息外,还可以设置专门的视图来查看图书的借阅情况以及每本书的借阅次数。
2.系统管理员可以查看登录日志,并建立按日期查看的信息。
2.4数据库设计主要设计8个表,具体表结构如下:
书籍(书籍)
书架(书架)
借阅(借阅信息)
项目(贷款申请)
登录记录(登录日志)
读者(读者)
Readertype(阅读器类型)
工人(职员)
2.5图形界面设计本系统的UI设计使用Python的第三方库PyQt5。Pyqt5是一个Python绑定Digia QT5应用的框架。它可以在Python 2和3中使用。Qt库是最强大的GUI库之一。作为Python的一个模块,pyqt5拥有超过620个类和6000个函数和方法。这是一个跨平台的工具包,可以运行在所有主要的操作系统上,包括UNIX、Windows和Mac OS。
安装PyQt5后,默认情况下会安装QtDesigner工具。Qtdesigner是Python设计中非常实用的工具,它使得人们不仅可以使用纯代码编写Qt界面,还可以在可视化的基础上进行设置。
根据需求,我们设计了以下四个界面:
1.登录界面:
2.阅读器系统接口:
3.图书管理员界面:
4.系统管理员界面:
2.5系统功能实现思路设计完UI后,具体功能的实现就是将UI中各种控件的信号连接到对应的槽位功能上。我们的思路是将这四个ui定义为类,实现函数的槽函数定义为类中的方法。将这些类导入main函数并实例化,这样在后续的优化中只需要修改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
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。