当前位置:   article > 正文

MySQL 图书管理系统_mysql图书馆管理系统

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;

创建图书表:

  1. use tushuguanli;
  2. CREATE TABLE book (
  3. book_id INT(10) NOT NULL,
  4. book_name VARCHAR(30) NOT NULL,
  5. author VARCHAR(30) NOT NULL,
  6. pubdate DATE NOT NULL ,
  7. publish VARCHAR(50) NOT NULL ,
  8. Price INT(20) NOT NULL,
  9. inventory INT(100) NOT NULL ,
  10. residue INT(100) NOT NULL ,
  11. typeid VARCHAR(20) NOT NULL ,
  12. PRIMARY KEY (book_id),
  13. KEY bo1 (typeid),
  14. CONSTRAINT book_ibfk_1 FOREIGN KEY (typeid) REFERENCES book_type (typeid)
  15. )

创建图书类别表:

  1. CREATE TABLE book_type (
  2. typeid VARCHAR(5) NOT NULL,
  3. typename VARCHAR(100) DEFAULT NULL,
  4. PRIMARY KEY (typeid)
  5. )

创建借阅证表:

  1. CREATE TABLE js_card (
  2. js_id CHAR(5) NOT NULL,
  3. period DATE DEFAULT NULL,
  4. read_id VARCHAR(10) DEFAULT NULL,
  5. state VARCHAR(50) DEFAULT NULL,
  6. kj_number INT(4) DEFAULT NULL,
  7. kejie VARCHAR(10) DEFAULT NULL,
  8. PRIMARY KEY (js_id),
  9. KEY read_id (read_id),
  10. CONSTRAINT js_card_ibfk_1 FOREIGN KEY (read_id) REFERENCES reader (read_id)
  11. )

创建读者表:

  1. CREATE TABLE reader (
  2. read_id VARCHAR(10) NOT NULL,
  3. read_name VARCHAR(20) NOT NULL,
  4. read_sex CHAR(2) NOT NULL,
  5. read_tel INT(20) NOT NULL,
  6. js_id CHAR(5) NOT NULL,
  7. PRIMARY KEY (read_id),
  8. KEY js_id (js_id),
  9. CONSTRAINT reader_ibfk_1 FOREIGN KEY (js_id) REFERENCES js_card (js_id)
  10. )

创建借还表:

  1. CREATE TABLE borrow_back (
  2. js_id VARCHAR(10) DEFAULT NULL,
  3. read_id VARCHAR(10) DEFAULT NULL,
  4. book_id INT(10) DEFAULT NULL,
  5. borrowdate DATE DEFAULT NULL,
  6. due DATE DEFAULT NULL,
  7. shf_xvjie TINYINT(4) DEFAULT NULL,
  8. js_count INT(100) DEFAULT NULL,
  9. hs_count INT(100) DEFAULT NULL,
  10. text_jh VARCHAR(100) DEFAULT NULL,
  11. KEY bb1 (js_id),
  12. KEY bb2 (read_id),
  13. KEY bb3 (book_id),
  14. CONSTRAINT bb1 FOREIGN KEY (js_id) REFERENCES js_card (js_id),
  15. CONSTRAINT bb2 FOREIGN KEY (read_id) REFERENCES reader (read_id),
  16. CONSTRAINT bb3 FOREIGN KEY (book_id) REFERENCES book (book_id)
  17. )

创建规则表:

  1. CREATE TABLE sf_rule (
  2. read_id varchar(10) DEFAULT NULL,
  3. book_id int(10) DEFAULT NULL,
  4. js_id varchar(10) DEFAULT NULL,
  5. days int(30) DEFAULT NULL,
  6. num int(100) DEFAULT NULL,
  7. mony varchar(100) DEFAULT NULL,
  8. KEY js_id (js_id),
  9. KEY read_id (read_id),
  10. KEY book_id (book_id),
  11. CONSTRAINT sf_rule_ibfk_3 FOREIGN KEY (js_id) REFERENCES js_card (js_id),
  12. CONSTRAINT sf_rule_ibfk_1 FOREIGN KEY (read_id) REFERENCES reader (read_id),
  13. CONSTRAINT sf_rule_ibfk_2 FOREIGN KEY (book_id) REFERENCES book (book_id)
  14. )

创建操作记录表:

  1. CREATE TABLE record (
  2. jishu int(100) NOT NULL AUTO_INCREMENT,
  3. read_id varchar(10) NOT NULL,
  4. time datetime DEFAULT NULL,
  5. text varchar(200) DEFAULT NULL,
  6. PRIMARY KEY (jishu)
  7. )

增加数据

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;

存储过程

  1. create procedure proc_borrow_book(IN a char(4),IN b int, IN m int,OUT state varchar(20))
  2. begin
  3.     declare read_count int default 0;
  4.     declare book_count int default 0;
  5.     declare stock int default 0;
  6.     select count(read_id) INTO read_count from reader where read_id=a;
  7.     if read_count>0 then
  8.         select count(book_id) INTO book_count from book where book_id=b;
  9.         if book_count >0 then
  10.               select inventory INTO stock from book where book_id=b;
  11.               if stock >= m then
  12.                   set state='借书成功';
  13.               else
  14.                   set state='库存不足';
  15.               end if;             
  16.         else
  17.               set state = '图书不存在';
  18.         end if;
  19.     else
  20.         set state = '非学校人员';
  21.     end if;
  22.     end;

触发器

  1. 创建触发器实现借阅图书时,自动更新图书剩余量
  2. CREATE TRIGGER jie_1
  3. AFTER INSERT
  4. ON borrow_back
  5. FOR EACH ROW
  6. UPDATE book SET residue=residue-NEW .js_count WHERE book_id=NEW .book_id ;
  7.  创建触发器实现借阅图书时,自动更新借阅证的可借量
  8. CREATE TRIGGER jie_2
  9. BEFORE INSERT
  10. ON borrow_back
  11. FOR EACH ROW
  12. UPDATE js_card SET kj_number=kj_number-NEW .js_count WHERE js_id=NEW .js_id;
  13. 创建触发器实现还书图书时,自动更新图书的剩余量
  14. DELIMITER @@
  15. CREATE TRIGGER huan_1
  16. BEFORE UPDATE
  17. ON borrow_back
  18. FOR EACH ROW
  19. BEGIN
  20. IF OLD .due IS NULL AND NEW .due IS NOT NULL
  21. THEN
  22. UPDATE book SET residue=residue+NEW .hs_count WHERE book_id=NEW .book_id;
  23. END IF;
  24. END @@

  6.总结

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/692427
推荐阅读
相关标签
  

闽ICP备14008679号