MySQL 图书管理系统

1.需求分析

1.1项目需求分析简介

1.1.1信息需求分析

(1) 图书信息:包括书籍编号,书籍名称,出版社,作者,库存量,出版日期,价格,库存,剩余量,类别等;

(2) 借阅证信息:包括借阅证编号,办证日期,可借数量等;

(3) 读者信息:读者编号,读者姓名,读者性别,读者电话

(4) 图书借还信息:包括图书编号,借阅证编号,读者编号,借阅日期,借阅数量,归还日期,归还数量,超期天数,罚款金额等;

1.1.2功能需求

学校图书借阅系统主要由:图书信息管理,读者信息管理,借阅证信息管理,借还信息管理,规则信息等模块组成。进入改系统后,用户可以对系统中的信息进行添加、修改、删除、查询等操作,包括以下功能:

(1) 图书信息管理模块:对图书信息进行增、删、改、查等操作;

(2) 读者信息管理模块:对读者信息进行增、删、改、查等操作;

(3) 借阅证信息管理模块:增加办卡,注销借阅卡等操作;

(4) 借还信息管理模块:进行借书、续借、还书等操作,查找出逾期的人及其逾期的天数;

(5) 操作记录管理模块:对读者的借,还,续借进行实时记录,便于管理员查找出指定读者的所有借阅记录。

(6) 规则信息管理模块:记录借书逾期的人及其逾期的天数,罚款。

1.2数据字典

1.2.1数据结构

1.数据结构:图书

含义说明:是学校图书借阅管理系统的主要数据结构,定义了图书的信息

组成:图书编号,书名,作者,出版日期,出版社,库存,剩余量,类别;

2.数据结构:读者

含义说明:是学校图书借阅管理系统的主要数据结构,定义了借阅者的基本信息

组成:读者编号,姓名,性别,电话号码;

3.数据结构:借阅证

含义说明:是学校图书借阅管理系统的主要数据结构,定义了借阅证的信息

组成:借阅证号,办证日期,可借数量;

4.数据结构:借,还,续借

含义说明:是学校图书借阅管理系统的主要数据结构,定义了图书借还的详细情况

组成:图书编号,借阅证编号,读者编号,借还日期,借还数量,是否续借

5.数据结构:规则

含义说明:是学校图书借阅管理系统的主要数据结构,定义了规则的详细情况

组成:读者编号,图书编号,借阅证编号,超期天数,超期本书,超期处罚

1.3系统分析

1.3.1功能模块简介

1.3.2功能需求描述

  1. 借阅功能:

图书出借时考虑三个问题:

读者是否因为超期、罚款等情况被关闭了借阅权限;

读者是否已经借满其限额。

该书是否不在库中;

如果不存在以上情况,则可以出借。

  1. 预约功能:

读者想借的书如果不在库中(已经被出借),读者可以预约该图书,当该图书被归还时系统给读者发送邮件,提醒他来借阅,此时其他读者也可以借阅该书。

  1. 续借功能:

读者还书的时候可以续借该图书,续借的过程包括先执行还书操作,再执行借阅操作。

  1. 发送催还邮件:

管理员可以发送邮件提醒读者到期还书。

  1. 读者管理功能:

对读者信息进行查看、添加、修改、删除。将读者分为不同类别,赋以不同权限。

  1. 系统管理功能:

对管理员的登录账号、密码进行添加、修改、删除。

  1. 借阅规则管理功能:

对图书借阅规则进行查看、添加、修改、删除。

  1. 概念结构设计

2.画E-R图

(1)图书实体E-R图

 

(2)图书类别实体E-R图

 

(3)借阅证实体E-R图

(4)读者实体E-R图

(5)规则实体E-R图

(6)记录实体E-R图

(7)学校图书借阅管理系统E-R图

 3.逻辑结构设计

学校图书管理系统关系模型

通过E-R图转换得到关系模型如下:

图书(书籍编号,书籍名称,作者,出版日期,出版社,价格,储存量,剩余量)

图书类别(类别编号,类别名称)

借阅证(借阅证号,办证日期,读者编号,说明,可借数量)

读者(读者编号,读者姓名,读者性别,读者电话,借阅证号)

借还(借读证编号,读者编号,书籍编号,借书日期,还书日期,是否续借,借书数量,还书数量,说明)

规则(读者编号,读者姓名,借阅证号,超期天数,本书,超期罚款)

记录表(序号,读者编号,记录时间,说明)

4.物理结构设计

图书表

书籍类别表

借阅证表

读者表

借还表

规则表

记录表

  5.数据库实施

  创建数据库:

CREATE database tushuguanli;

创建图书表:

use tushuguanli;CREATE TABLE book (book_id INT(10) NOT NULL,book_name VARCHAR(30) NOT NULL,author VARCHAR(30) NOT NULL,pubdate DATE NOT NULL ,publish VARCHAR(50) NOT NULL ,Price INT(20) NOT NULL,inventory INT(100) NOT NULL ,residue INT(100) NOT NULL ,typeid VARCHAR(20) NOT NULL ,PRIMARY KEY (book_id),KEY bo1 (typeid),CONSTRAINT book_ibfk_1 FOREIGN KEY (typeid) REFERENCES book_type (typeid))

创建图书类别表:

CREATE TABLE book_type (typeid VARCHAR(5) NOT NULL,typename VARCHAR(100) DEFAULT NULL,PRIMARY KEY (typeid))

创建借阅证表:

CREATE TABLE js_card (js_id CHAR(5) NOT NULL,period DATE DEFAULT NULL,read_id VARCHAR(10) DEFAULT NULL,state VARCHAR(50) DEFAULT NULL,kj_number INT(4) DEFAULT NULL,kejie VARCHAR(10) DEFAULT NULL,PRIMARY KEY (js_id),KEY read_id (read_id),CONSTRAINT js_card_ibfk_1 FOREIGN KEY (read_id) REFERENCES reader (read_id))

创建读者表:

CREATE TABLE reader (read_id VARCHAR(10) NOT NULL,read_name VARCHAR(20) NOT NULL,read_sex CHAR(2) NOT NULL,read_tel INT(20) NOT NULL,js_id CHAR(5) NOT NULL,PRIMARY KEY (read_id),KEY js_id (js_id),CONSTRAINT reader_ibfk_1 FOREIGN KEY (js_id) REFERENCES js_card (js_id))

创建借还表:

CREATE TABLE borrow_back (js_id VARCHAR(10) DEFAULT NULL,read_id VARCHAR(10) DEFAULT NULL,book_id INT(10) DEFAULT NULL,borrowdate DATE DEFAULT NULL,due DATE DEFAULT NULL,shf_xvjie TINYINT(4) DEFAULT NULL,js_count INT(100) DEFAULT NULL,hs_count INT(100) DEFAULT NULL,text_jh VARCHAR(100) DEFAULT NULL,KEY bb1 (js_id),KEY bb2 (read_id),KEY bb3 (book_id),CONSTRAINT bb1 FOREIGN KEY (js_id) REFERENCES js_card (js_id),CONSTRAINT bb2 FOREIGN KEY (read_id) REFERENCES reader (read_id),CONSTRAINT bb3 FOREIGN KEY (book_id) REFERENCES book (book_id))

创建规则表:

CREATE TABLE sf_rule (read_id varchar(10) DEFAULT NULL,book_id int(10) DEFAULT NULL,js_id varchar(10) DEFAULT NULL,days int(30) DEFAULT NULL,num int(100) DEFAULT NULL,mony varchar(100) DEFAULT NULL,KEY js_id (js_id),KEY read_id (read_id),KEY book_id (book_id),CONSTRAINT sf_rule_ibfk_3 FOREIGN KEY (js_id) REFERENCES js_card (js_id),CONSTRAINT sf_rule_ibfk_1 FOREIGN KEY (read_id) REFERENCES reader (read_id),CONSTRAINT sf_rule_ibfk_2 FOREIGN KEY (book_id) REFERENCES book (book_id))

创建操作记录表:

CREATE TABLE record (jishu int(100) NOT NULL AUTO_INCREMENT,read_id varchar(10) NOT NULL,time datetime DEFAULT NULL,text varchar(200) DEFAULT NULL,PRIMARY KEY (jishu))

增加数据

INSERT into js_card VALUES('003','2021-03-29','rw3','最多借五本','5','');

删除数据

delete from record where read_id='rw1';

修改数据

UPDATE js_card SET state='不得超期10天' WHERE js_id='001';

查询数据

SELECT * from book_type;

存储过程

create procedure proc_borrow_book(IN a char(4),IN b int, IN m int,OUT state varchar(20))begindeclare read_count int default 0;declare book_count int default 0;declare stock int default 0;select count(read_id) INTO read_count from reader where read_id=a;if read_count>0 thenselect count(book_id) INTO book_count from book where book_id=b;if book_count >0 thenselect inventory INTO stock from book where book_id=b;if stock >= m thenset state='借书成功';elseset state='库存不足';end if;             elseset state = '图书不存在';end if;elseset state = '非学校人员';end if;end;

触发器

创建触发器实现借阅图书时,自动更新图书剩余量CREATE TRIGGER jie_1AFTER INSERTON borrow_backFOR EACH ROWUPDATE book SET residue=residue-NEW .js_count WHERE book_id=NEW .book_id ;创建触发器实现借阅图书时,自动更新借阅证的可借量CREATE TRIGGER jie_2BEFORE INSERTON borrow_backFOR EACH ROWUPDATE js_card SET kj_number=kj_number-NEW .js_count WHERE js_id=NEW .js_id;创建触发器实现还书图书时,自动更新图书的剩余量DELIMITER @@CREATE TRIGGER huan_1BEFORE UPDATEON borrow_backFOR EACH ROWBEGINIF OLD .due IS NULL AND NEW .due IS NOT NULLTHENUPDATE book SET residue=residue+NEW .hs_count WHERE book_id=NEW .book_id;END IF;END @@

  6.总结

这个图书馆系统我写了好长时间,而且也改了很多次,因为写的不是这不完整就是那不完整,总会有一些问题,第一次写的时候,一次就只能增加一条信息,第二次写的时候又出现了错误,增加信息是无限循环,总之,出现了很多错误,来来回回改了无数次,我学到很多知识,也学会如何去写一个完整的系统,写系统时应该注意什么。

我们写这个图书管理系统,就是一个很大的挑战我们都要去勇敢的迎接挑战,写代码过程中,我们也会遇到很多问题,我们应该去慢慢解决,不是后退,因为只有我们练得多了,解决的问题多了,才会有掌握写代码的技巧。我们也要相信自己,对自己有自信,还应该多花时间去学好我们的专业课。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上下固定中间自适应布局

实现上下固定中间自适应布局 1.通过position&#xff1a;absolute实现 定义如下结构 <body> <div class"container"> <div class"top"></div> <div class"center"></div> <div class"bottom&…

清平乐-春风丽日

今天&#xff0c;是2024年农历除夕日&#xff0c;远方家人已于昨夜风尘扑扑地倦鸟归巢&#xff0c;团聚过龙年&#xff0c;今晨酣睡未起。老龄笔者心情极佳&#xff0c;一夜好梦醒来&#xff0c;推窗仰头展望苍穹&#xff0c;喜上心头&#xff1a;啊&#xff01;接连几天的小雨…

小区创业项目推荐:小投资大回报的店铺类型

作为一位拥有5年鲜奶吧创业经验的自媒体博主&#xff0c;我深知在小区内寻找一个既小投资又能带来大回报的创业项目是多么重要。今天&#xff0c;我要为大家推荐的&#xff0c;正是这样一个项目——鲜奶吧。 一、鲜奶吧&#xff1a;小区内的健康食品新宠 随着健康饮食观念的深…

STL之list容器的介绍与模拟实现+适配器

STL之list容器的介绍与模拟实现适配器 1. list的介绍2. list容器的使用2.1 list的定义2.2 list iterator的使用2.3 list capacity2.4 list element access2.5 list modifiers2.6 list的迭代器失效 3. list的模拟实现3.1 架构搭建3.2 迭代器3.2.1 正向迭代器3.2.2反向迭代器适配…

【doghead】uv_loop_t的创建及线程执行

worker测试程序,类似mediasoup对uv的使用,是one loop per thread 。创建一个UVLoop 就可以创建一个uv_loop_t Transport 创建一个: 试验配置创建一个: UvLoop 封装了libuv的uv_loop_t ,作为共享指针提供 对uv_loop_t 创建并初始化

如何运行心理学知识(心流)来指导工作和生活

如何运用心流来指导工作和生活 如何联系我 作者&#xff1a;鲁伟林 邮箱&#xff1a;thinking_fioa163.com或vlinyes163.com GitHub&#xff1a;https://github.com/thinkingfioa/ReadingSummary 版权声明&#xff1a;文章和记录为个人所有&#xff0c;如果转载或个人学习…

Three.js学习8:基础贴图

一、贴图 贴图&#xff08;Texture Mapping&#xff09;&#xff0c;也翻译为纹理映射&#xff0c;“贴图”这个翻译更直观。 贴图&#xff0c;就是把图片贴在 3D 物体材质的表面&#xff0c;让它具有一定的纹理&#xff0c;来为 3D 物体添加细节的一种方法。这使我们能够添加…

机器人搬砖 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 机器人搬砖&#xff0c;一共有N堆砖存放在N个不同的仓库中&#xff0c;第 i 堆中有 bricks[i] 块砖头&#xff0c;要求在8小时内搬完。 机器人每小时能搬砖的数量…

鸿蒙开发-UI-图形-图片

鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 鸿蒙开发-UI-页面路由 鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 文章目录 一、基本概念 二、图片资源加载 1. 存档图类型数据源 2.多媒体像素图 三、显示矢量图 四、图片…

【python】if __name__ == ‘__main__‘:

if __name__ __main__: 是一个Python脚本中使用的常见结构&#xff0c;用来判断该脚本文件是直接运行的还是被导入到其他文件中运行的。 当一个Python文件被运行时&#xff0c;Python解释器会自动创建一些特殊的变量&#xff0c;__name__就是其中之一。如果这个文件是作为主程…

获取视频帧图片

在实现了minio文件上传的基础上进行操作 一、编写pom <dependency><groupId>org.jcodec</groupId><artifactId>jcodec</artifactId><version>0.2.5</version> </dependency> <dependency><groupId>org.jcodec<…

无人机动力系统高倍率锂聚合物电池介绍,无人机锂电池使用与保养,无人机飞行控制动力源详解

无人机电池使用及保养 电池是无人机飞行的动力来源,也是一个消耗品&#xff0c;对电池充分了解&#xff0c;采取正确的使用方法&#xff0c;妥善进行维护保养将有助于提高飞行的安全性、延长电池的使用寿命。以下将详细对电池的使用和管理进行讲解。 高倍率锂聚合物电池的含义…