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

参考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。

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

  1. SQL Server【数据库-系统设计-大作业】【教学管理系统】【完整代码】

    SQL Server 2012(软件名称)--教学管理系统的后台数据库设计(实验名称) 实验报告展示 目   录 1.课本[P281-P287] 2.SQL语句[建立数据表(6个表).插入数据] 2. ...

  2. MySQL数据库大作业——学生管理系统GUI

    MySQL数据库大作业--学生管理系统GUI 原程序链接: https://www.bbsmax.com/A/kmzL3WQBdG/ 为了完成数据库大作业, 我在其基础上进行了一定的修改和扩充. 如果 ...

  3. Java大作业-考试管理系统(GUI)无数据库-Java课程设计

    Java课程设计-Java大作业-考试管理系统(GUI)无数据库 题目要求 开发环境 : 程序总功能模块 程序详细设计 使用情况 第一次写这东西有不少错误的地方,题目要求的功能也没有完全实现,以上内容 ...

  4. 西工大数据库实验大作业 火锅店菜品管理系统

    西工大数据库实验大作业 火锅店菜品管理系统 文章目录 西工大数据库实验大作业 火锅店菜品管理系统 前言: 一.大作业简单的需求分析: 二.数据流图: 三.数据字典: 四.E-R图: 五.关系模式设计: ...

  5. C6软件测试大乐,软件测试大作业——社团管理系统

    <软件测试大作业--社团管理系统>由会员分享,可在线阅读,更多相关<软件测试大作业--社团管理系统(19页珍藏版)>请在人人文库网上搜索. 1.山东科技大学软件测试技术与工具课 ...

  6. C语言大作业:车辆管理系统

    C语言大作业:车辆管理系统 声明 此代码使用VS2019编译器进行编译 使用 vc 和 dev-c 的有可能会出现编译警告,需要自己去网上查找相关的编译环境的问题 其次使用vs编译器也可能会报 C49 ...

  7. HTML5期末大作业:管理系统网站设计——学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业

    HTML5期末大作业:管理系统网站设计--学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业 常见网页设计作业题材有 个人. 美食. ...

  8. HTML5期末大作业:管理系统网站设计——蓝色OA企业员工管理系统(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源

    HTML5期末大作业:管理系统网站设计--蓝色OA企业员工管理系统(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常 ...

  9. C语言总结项目和入门大作业——信息管理系统(多文件版)

    文章目录 八. C语言入门大作业--信息管理系统(多文件版) 一. 功能模块的划分: 二. 多文件的编写 三. 基本函数的实现(重点) 四.文件操作函数 五.函数的辅助函数 六.多文件编程和联系 七. ...

  10. HTML5期末大作业:管理系统后台网站设计——代理商销售管理系统后台(8页) HTML+CSS+JavaScript web前端设计与开发期末作品/期末大作业

    HTML5期末大作业:管理系统后台网站设计--代理商销售管理系统后台(8页) HTML+CSS+JavaScript web前端设计与开发期末作品/期末大作业 常见网页设计作业题材有 个人. 美食. ...

最新文章

  1. oracle 统计一年中每个月数据总和_excel表格有每月数据 怎样统计全年的-用excel公式怎样计算每年每个月的数据总和?...
  2. 在SDN走向商用部署的路上,锐捷网络一直在不断实践
  3. Leaflet实现地图分屏联动
  4. MS SQL 不常用但却十分有用的一些语法
  5. 网易游戏java_2019秋招|网易游戏一面面经(Java开发)
  6. Oracle --JOB
  7. 多商户商城源码_多商户商城APP开发解决方案
  8. microbit与python编程_简单5步开始学习microbit编程-windows篇
  9. 毕业设计《项目管理》总结06之ajax的初步使用经验
  10. Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
  11. Hadoop权威指南:知识梳理(一)
  12. ps制作2寸照片教程蓝底,ps怎么p二寸照片详细步骤
  13. windows10没有nfs服务_3GB+极度精简+不更新,被誉为最纯净Windows10,老爷机总算有救了...
  14. 用java设计族谱家谱制_家谱网站的设计与实现.doc
  15. GPU计算能力(Compute Capability)那些事儿
  16. 开源项目贡献者_如何管理开源项目的临时贡献者
  17. jmeter测试服务器性能测试报告,Jmeter的性能测试
  18. VS2010+DDK配置
  19. Arcgis实例操作19--面要素距离点最近的位置、线要素切割面、计算有毒气体的开敞空间面积
  20. 黑苹果系统是服务器系统,黑苹果是什么系统(深入解读黑苹果系统)

热门文章

  1. fpga基础入门知识
  2. mcgscom口针脚定义_各种接口针脚定义
  3. Android Studio GPX文件的解析(总和)
  4. 基于电子商务网站开发的项目管理计划设计
  5. android 动画停止播放,Android动画暂停和播放问题
  6. excel或wps查找文本字符串子串或拆分字符串公式
  7. 华为鸿蒙2048小游戏,从零开始使用华为DevEco Studio编写2048小游戏
  8. Octotree Chrome插件离线安装 树形展示插件
  9. 处理数据spss乱码
  10. oracle-rac实例不能启动 报ORA-03113