目录

一、项目简介

二、项目分析

(1)需求分析

①图书管理功能(书籍的借出、归还)

②信息操作功能

③人员管理功能

(2)需求表信息分析

①图书管理需求表分析

②信息操作表信息分析

③人员信息表

三、项目实施

(1)创建图书信息表

(2)创建人员信息表

(3)创建信息操作表

(4)测试数据导入

(5)借书存储过程及测试

①借书存储过程

②还书测试

(6)还书存储过程及测试

①还书存储过程

②还书测试

四、项目回顾总结

(1)项目要点

(2)项目扩展


一、项目简介

图书管理系统是许多学校图书馆、公共图书馆所经常使用到的数据管理系统,它主要是通过存储过程“封装”数据更新功能,实现图书的借书、还书功能以及记录人员操作信息功能,本次实验的MySQL图书管理系统设计是针对后端数据库采集数据、更新数据的一个小项目。

二、项目分析

(1)需求分析

根据图书管理系统功能实现要求,本次将实现以下功能:

①图书管理功能(书籍的借出、归还)

图书管理功能是实现书籍的借出、归还,判断书籍库存情况,更新图书数据。

②信息操作功能

信息操作功能是实现借书人员的操作记录信息,记录图书租借信息。

③人员管理功能

本次实验图书馆以学校图书馆为主要目标对象,因此还需要人员管理功能,人员管理功能是实现学校学生的信息管理,它所能完成的项目是图书馆仅开放于学校的学生和老师对平通员工不做开放

(2)需求表信息分析

①图书管理需求表分析

需要实现书籍的借阅,因此对书籍信息表(books)有以下信息:

书籍序号:book_id

书名:book_name

作者名:book_author

出版社:book_press

书籍价格:book_price

书籍库存:book_stock

书籍简介:book_desc

②信息操作表信息分析

借书记录表(records)存储租借信息记录的数据表

借书记录序号:rid

租借学生编号:snum

图书编号:bid

借书数量:borrow_num

借书状态:is_return(0表示归还,1表示未归还)

租借日期:borrow_date

③人员信息表

人员信息表(personnel)存储租借人员的信息表

人员编号:per_num

人员姓名:per_name

人员性别:per_gender

人员年龄:per_age

人员职能:per_func

三、项目实施

(1)创建图书信息表

create table books(book_id int primary key auto_increment,  -- 书籍序号book_name varchar(50) not null,  -- 书名book_author varchar(20) not null, -- 作者名book_press varchar(20) not null, -- 出版社book_price decimal(10,2) not null, -- 书籍价格book_stock int not null, -- 书籍库存book_desc varchar(200)  -- 书籍简介
);

(2)创建人员信息表

create table personnel(per_num char(4) primary key, -- 人员编号per_name varchar(20) not null, -- 人员姓名per_gender char(2) not null, -- 人员性别per_age int not null, -- 人员年龄per_func varchar(20) not null -- 人员职能
);

(3)创建信息操作表

create table records(rid int primary key auto_increment, -- 借书记录序号snum char(4) not null, -- 租借学生编号bid int not null,  -- 图书编号borrow_num int not null, -- 借书数量is_return int not null, -- 0表示为归还   1 表示已经归还 借书状态borrow_date date not null, -- 租借日期constraint FK_RECORDS_STUDENTS foreign key(snum) references personnel(per_num),constraint FK_RECORDS_BOOKS foreign key(bid) REFERENCES books(book_id)
);

(4)测试数据导入

图书书籍数据导入:

insert into books(book_name,book_author,book_press,book_price,book_stock,book_desc)
values('Java程序设计','亮亮','清华出版社',38.80,12,'亮亮老师带你学Java');
insert into books(book_name,book_author,book_press,book_price,book_stock,book_desc)
values('Python王者之路','威哥','重庆大学出版社',44.40,9,'千锋威哥,Java王者领路人');

人员信息添加:

insert into personnel(per_num,per_name,per_gender,per_age,per_func) values('1001','张三','男',20,'学生');
insert into personnel(per_num,per_name,per_gender,per_age,per_func) values('1002','李四','女',20,'学生');
insert into personnel(per_num,per_name,per_gender,per_age,per_func) values('1003','王五','男',35,'讲师');
insert into personnel(per_num,per_name,per_gender,per_age,per_func) values('1004','王三','女',35,'副教授');

(5)借书存储过程及测试

①借书存储过程

-- 参数1:学号
-- 参数2:图书编号
-- 参数3:借书的数量
-- 参数4:借书状态
create procedure proc_borrow_book(IN a char(4),IN b int, IN m int,OUT state varchar(20))
begindeclare per_count int default 0;declare book_count int default 0;declare stock int default 0;-- 判断学号是否存在:根据参数 a 到学生信息表查询是否有stu_num=a的记录select count(per_num) INTO per_count from personnel where per_num=a;if per_count>0 then-- 学号存在-- 判断图书ID是否存在:根据参数b 查询图书记录总数select count(book_id) INTO book_count from books where book_id=b;if book_count >0 then-- 图书存在-- 判断图书库存是否充足:查询当前图书库存,然后和参数m进行比较select book_stock INTO stock from books where book_id=b;if stock >= m then-- 执行借书-- 操作1:在借书记录表中添加记录insert into records(snum,bid,borrow_num,is_return,borrow_date) values(a,b,m,0,sysdate());-- 操作2:修改图书库存update books set book_stock=stock-m where book_id=b;-- 借书成功set state='借书成功';else-- 库存不足set state='库存不足';end if;                else-- 图书不存在set state = '图书不存在';end if;else-- 不存在set state = '非学校人员';end if;
end;

注:借书存储过程运行之后,若用的是Navicat的函数选项有创建的存储过程名,若是终端则使用语句:show procedure status where db='数据库名'

②还书测试

-- 调用存储过程借书
-- 参数1:学号
-- 参数2:图书编号
-- 参数3:借书的数量
-- 参数4:借书状态
set @state='';
call proc_borrow_book('1001',2,1,@state);
-- 反应借书情况
select @state from dual;

运行后得到如下结果,则借书过程成功

同时观察借书记录中的数据

(6)还书存储过程及测试

①还书存储过程

-- 参数1:换书人学号
-- 参数2:归还图书编号
-- 参数3:还书的数量
-- 参数4:还书状态create procedure proc_return_book(IN a char(4),IN b int, IN m int,OUT state VARCHAR(20))
begindeclare per_count int default 0;declare book_count int default 0;declare stock int default 0;-- 判断学号是否存在:根据参数 a 到学生信息表查询是否有stu_num=a的记录select count(per_num) INTO per_count from personnel where per_num=a;if per_count>0 then-- 学号存在-- 判断图书ID是否存在:根据参数b 查询图书记录总数select count(book_id) INTO book_count from books where book_id=b;if book_count >0 then-- 图书存在-- 操作1:在借书记录表中添加记录insert into records(snum,bid,borrow_num,is_return,borrow_date) values(a,b,m,1,sysdate());-- 操作2:修改图书库存update books set book_stock=stock+m where book_id=b;-- 借书成功set state='还书成功';else-- 书籍归还错误set state = '此书籍不是图书馆的书';end if;else-- 不存在set state = '还书人员信息错误';end if;
end;

②还书测试

-- 参数1:还书人学号
-- 参数2:归还图书编号
-- 参数3:还书的数量
-- 参数4:还书状态
set @state='';
call proc_return_book('1001',2,1,@state);
-- 反应借书情况
select @state from dual;

四、项目回顾总结

(1)项目要点

本次实验项目主要要点是对表创建的考察、存储过程创建考察、存储过程中间逻辑运算的考察,同时会有人疑惑为什么不一个一个的查或者写好固定的SQL语句更改参数?

其实这和存储过程的运用有关,存储过程的运用一是增加了SQL语句的复用性,二是增加了SQL语句的安全性,三是增加了SQL语句的便捷性。

(2)项目扩展

这里的项目扩展是作者的一个小小运用,本次的图书管理系统可以运用到生活中,我们编写一个存储过程可以用以记录一些日常事务,

例如:作者和女友有个行为信息记录表,每次的行为信息可以给女友进行加分,我们可以通过编写存储实现对日常行为的记录加分,同时可以编写存储过程实现对女友日常行为积分的兑换,设置积分兑换表,即可以完成兑换记录的添加。这就是本次实验可以运用到日常生活的地方,当然我们还你可以编写一个可视化界面,进行一个可视化的操作,用以自己的生活记录也是可以的

MySQL图书管理系统设计相关推荐

  1. javaee图书管理系统mysql,图书管理系统设计与实现—看这篇就够了

    图书管理系统设计与实现 > 图书馆人员结构复杂,人员数量有限,涉及方面很广,如果还使用手工操作处理图书借阅问题,工作将非常繁琐,需要大量的人力.物理.财力,极大的浪费了资源,对于图书管理人员来说 ...

  2. 【Java图书馆系统app】基于Vue+Vant+SSM图书管理系统设计

    源码地址:[Java图书馆系统app]基于Vue+Vant+SSM图书管理系统设计.zip_java条码管理系统-Android文档类资源-CSDN下载具体运行截图见项目说明:https://blog ...

  3. SpringBoot图书管理系统设计与实现(附源码下载地址)

    文章目录 01 系统概述 02 开发工具及技术选型 03 运行环境 04 用户分析 05 功能分析 06 数据库设计 07 项目工程结构及说明 08 部分功能展示及源码 8.1 首页 8.2 图书管理 ...

  4. 大学课设之Mysql图书管理设计

    大学课设之Mysql图书管理设计 需求分析 概念结构设计-总E-R图 逻辑结构设计 数据库的实现 触发器重点说明 完整的Mysql设计代码 需求分析 改图书管理涉及书本的信息,读者的信息,图书馆管理员 ...

  5. c语言子菜单退出返回主菜单,毕业论文_图书管理系统设计报告077喜欢就下吧(范文1)...

    <毕业论文:图书管理系统设计报告07.doc>由会员分享,可免费在线阅读全文,更多与<毕业论文_图书管理系统设计报告07(7)(喜欢就下吧)>相关文档资源请在帮帮文库(www. ...

  6. python 面向对象程序设计 1.3 请为学校图书管理系统设计一个管理员类和一个学生类。

    题目: 请为学校图书管理系统设计一个管理员类和一个学生类.其中,管理员信息包括工号.年龄.姓名和工资:学生信息包括学号.年龄.姓名.所借图书和借书日期.最后编写一个测试程序对产生的类的功能进行验证.建 ...

  7. 基于JavaSwing+mysql的图书管理系统设计和实现

    前言: 项目是使用Java swing开发,可实现基础数据维护.图书类型管理和维护.图书信息管理和维护.注销退出.关于作者简介等功能.界面设计比较简介.适合作为Java课设设计以及学习技术使用. 引言 ...

  8. JavaSwing+mysql的图书管理系统设计实现

      本项目演示地址链接  >  前言: 项目是使用Java swing开发,可实现基础数据维护.图书类型管理和维护.图书信息管理和维护.注销退出.关于作者简介等功能.界面设计比较简介.适合作为J ...

  9. 图书管理系统设计与实现—看这篇就够了

    文章目录 1.本课程设计的目的 2.系统要实现的功能概述 3.实现平台及技术 4.需求分析 5.系统功能模块划分 5.1 系统总体功能模块划分 5.2 用户登录模块 5.3 图书信息管理模块 5.4 ...

  10. 基于Web的图书管理系统设计与实现(附源码地址)

    计算机类毕设源码大全:十几套计算机专业毕业设计文档及源码分享 系统演示链接:点击这里查看演示 温馨提示:基于web的图书管理系统完整源码下载地址附在文章末尾 文章目录 01 系统简述 02 开发工具及 ...

最新文章

  1. securecrt连接GNS3步骤
  2. java下载更改目标_Java 目标文件的修改
  3. x86 的 TSS 任务切换机制
  4. php的set 容器,关于STL中set容器的一些总结
  5. 用STATSVN统计公司SVN代码修改
  6. Tesla P4测试
  7. TensorFlow 教程 --教程--2.5TensorFlow运作方式入门
  8. 2011总结与2012展望
  9. 李宏毅机器学习HW2-winner or loser-利用逻辑回归进行收入分类
  10. double im2double mat2gray之一二说
  11. 手动安装.app到模拟器simulator, iOS XCode 11
  12. 电视视频直播在线播放网站PHP源码V1.2
  13. 软件测试报告模板_详细版
  14. 实训三:交换机恢复出厂设置以及基本配置
  15. AndroidSDK和ADT下载地址
  16. Java生成随机数公式
  17. vue组件 组件的继承extend
  18. Python开源Devops定时任务管理系统(含定时调用接口、定时ssh远程执行命令)
  19. 2021年烷基化工艺考试题及烷基化工艺多少钱
  20. GIT--使用流程规范

热门文章

  1. 基于BP神经网络和ORL库的人脸识别matlab仿真
  2. 2021华为软挑赛复盘
  3. 前端a链接读取txt文件导出下载_HTML页面点击下载文件的两种实现方法
  4. 使用redis解决tomcat6在nginx负载下多节点共享session问题
  5. 擦地机器人修理_第一次修扫地机器人
  6. Python批量查询恶意地址信息
  7. 生物信息学分析的常用软件
  8. SqliteDeveloper使用方法及注册
  9. Android应用程序开发(第三版)-课后习题解答
  10. 这可能是目前最全的word转pdf的一些方法总结