图书管理系统

设计一个能够实现数据添加、删除、更新等操作的数据库,但是本文章主要涉及的内容是数据存储函数、存储过程的设计。至于简单的操作请各位按照自己的需求自行设计。
操作系统:Windows 10
操作环境:Oracle12c
安装包链接:https://pan.baidu.com/s/1D6vXcOY90ucnMdY_Z8ptfg
提取码:ro6v
安装过程:请去寻求大佬的详解!!!!


前言

随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理。因此,必须指定一套合理、有效,规范和使用的图书馆管理系统,对图书资料进行集中统一的管理。
提高图书管理工作效率,做到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。


一、需求分析

  1. 读者基本信息的输入,包括借书证编号、读者姓名、读者性别

  2. 读者基本信息的查询、删除,包括读者借书证编号、读者姓名、读者性别等

  3. 书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称

  4. 书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名等

  5. 借阅信息的输入,包括借书证编号、书籍编号、借书时间、还书时间

  6. 管理员信息的输入,包括管理员编号,管理员姓名和管理的借书证号

二、E-R图设计

三、关系模型设计:

  • 读者(借书证编号,读者姓名,读者性别,出生日期,联系方式)
  • 书籍(书籍编号,书籍名称,书籍作者,出版社,库存量)
  • 借阅(借书证编号,书籍编号,借书时间,还书时间)
  • 管理员(管理员编号,管理员姓名,性别)
  • 管理(管理编号,借书证编号)

四、数据库基础设计:

1、设计表结构

表(1).readers的表结构

字段名 数据类型 是否可空 默认值 说明
借书证编号 Varchar (10) Х 主键
读者姓名 Varchar (10) Х
读者性别 Varchar (2) Х
出生时间 Date X
联系方式 Varchar (11)

表(2)books的表结构

字段名 数据类型 是否可空 默认值 说明
书籍编号 Varchar (10) Х 主键
书籍名称 Varchar (32) Х
书籍作者 Varchar (32) Х
出版社 Varchar (32) X
库存量 Number (32)

表(3)records的表结构

字段名 数据类型 是否可空 默认值 说明
书籍编号 Varchar (10) Х 联合主键
借书证编号 Varchar (10) Х 联合主键
借书时间 Date Х
还书时间 Date Х

表(4)Manger的表结构

字段名 数据类型 是否可空 默认值 说明
管理员编号 Varchar (10) Х 主键
管理员姓名 Varchar (10) Х 主键
性别 Varchar (2) Х

表()Manage_reader表结构

字段名 数据类型 是否可空 默认值 说明
管理员编号 Varchar (10) Х 联合主键
借书证编号 Varchar (10) Х 联合主键

2、设计表

a.创建readers表:

create table readers
(
借书证编号 varchar(10) not null primary key,
读者姓名 varchar(32) not null,
读者性别 varchar(2) not null check(读者性别=‘男’ or 读者性别=‘女’),
出生时间 date not null,
联系方式 varchar(11) unique
);

b.创建books表:

(
书籍编号 varchar(10) not null primary key,
书籍名称 varchar(32) not null,
书籍作者 varchar(32) not null,
出版社 varchar(32) not null,
库存量 number(4)
);

c.创建records表:

create table records
(
书籍编号 varchar(32) not null,
借书证编号 varchar(10) not null,
借书时间 date not null,
还书时间 date not null,
constraint manage_mess primary key(书籍编号,借书证编号)
);

d.创建manager表:

创建manager表:
create table manager
(
管理员编号 varchar(10) not null primary key,
管理员姓名 varchar(32) not null,
性别 varchar(2) not null
);

e.创建manage_reader表:

create table manager_reader
(
管理员编号 varchar(10) not null,
借书证编号 varchar(10) not null,
constraint manage_mess primary key(管理员编号,借书证编号)
);

3、添加表内容

Readers表内的数据:

insert into readers values('0002', '王丽', '女', to_date('1997-01-15', 'YYYY-MM-DD'),'15345248343');
insert into readers values('0003', '李红', '男', to_date('1999-03-23', 'YYYY-MM-DD'),'15123456793');
insert into readers values('0004', '王五', '男', to_date('2000-07-19', 'YYYY-MM-DD'),'13845324893');
insert into readers values('0005', '李楠', '女', to_date('1998-04-05', 'YYYY-MM-DD'),'14753573214');
insert into readers values('0006', '王鹏', '男', to_date('1996-06-25', 'YYYY-MM-DD'),'13145622486');
insert into readers values('0007', '王海', '男', to_date('1998-03-14', 'YYYY-MM-DD'),'13144324893');
insert into readers values('0008', '马玲玲', '女', to_date('1999-02-21', 'YYYY-MM-DD'),'13561345689');
insert into readers values('0009', '李强', '男', to_date('1996-07-11', 'YYYY-MM-DD'),'13145548312');
insert into readers values('0010', '孙小欣', '女', to_date('1999-09-25', 'YYYY-MM-DD'),'13234583256');

Books的数据:

insert into books values('B0002', '《水浒传》', '施耐庵', '人民文学出版社',43);
insert into books values('B0003', '《童年》', '高尔基', '人民文学出版社',10);
insert into books values('B0004', '《悲惨世界》', '雨果', '人民文学出版社',27);
insert into books values('B0005', '《计算机基础》', '刘锡轩', '清华大学出版社,7');
insert into books values('B0006', '《骆驼祥子》', '老舍', '人民文学出版社',12);
insert into books values('B0007', '《Android开发》', '李骏', '人民邮电出版社',9);
insert into books values('B0008', '《朝花夕拾》', '鲁迅', '人民文学出版社',237);
insert into books values('B0009', '《老人与海》', '海明威', '人民文学出版社',34);
insert into books values('B0010', '《C#深入详解》', '王寅永', '电子工业出版社',34);

Records表的数据:

insert into records values('B0002', '0003', to_date('2007-03-14 15:13', 'YYYY-MM-DD HH24:MI'), to_date('2007-03-27 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0003', '0001', to_date('2007-06-25 14:59', 'YYYY-MM-DD HH24:MI'), to_date('2007-07-14 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0004', '0004', to_date('2007-07-13 16:15', 'YYYY-MM-DD HH24:MI'), to_date('2007-08-01 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0005', '0002', to_date('2007-03-10 15:10', 'YYYY-MM-DD HH24:MI'), to_date('2007-03-20 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0006', '0002', to_date('2007-05-06 11:10', 'YYYY-MM-DD HH24:MI'), to_date('2007-05-20 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0007', '0006', to_date('2007-08-08 13:10', 'YYYY-MM-DD HH24:MI'), to_date('2007-08-25 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0007', '0006', to_date('2007-07-05 09:10', 'YYYY-MM-DD HH24:MI'), to_date('2007-07-23 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0007', '0009', to_date('2007-09-06 10:10', 'YYYY-MM-DD HH24:MI'), to_date('2007-09-14 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0008', '0009', to_date('2007-10-04 11:30', 'YYYY-MM-DD HH24:MI'), to_date('2007-10-19 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0008', '0010', to_date('2007-11-09 11:46', 'YYYY-MM-DD HH24:MI'), to_date('2007-11-14 14:10', 'YYYY-MM-DD HH24:MI'));
insert into records values('B0009', '0010', to_date('2007-01-04 17:00', 'YYYY-MM-DD HH24:MI'), to_date('2007-01-14 14:10', 'YYYY-MM-DD HH24:MI'));

Manager表的数据

insert into manager values('M002', '李强','男');
insert into manager values('M003', '王琳琳','女');
insert into manager values('M004', '孙研','女');
insert into manager values('M005', '张薇','女');
insert into manager values('M006', '程明','男');

Manage_reader的表数据

insert into manager values('M001', '0002');
insert into manager values('M001', '0003');
insert into manager values('M002', '0008');
insert into manager values('M002', '0009');
insert into manager values('M003', '0003');
insert into manager values('M004', '0004');

五、设计触发器

(1)在数据库中创建一个触发器,当records表删除一条借阅信息,在books对应的书籍库存量加1,当records表添加一条借阅信息,在books对应的书籍库存量减1。

    after insert or update or delete on RECORDS for each row
declare
beginif inserting thenUPDATE books set "库存量"="库存量"-1 where "书籍编号"=:new."书籍编号";elsif deleting thenUPDATE books set "库存量"="库存量"+1 where "书籍编号"=:old."书籍编号";end if;
end;

(2)records表执行插入和删除操作后给出相应提示

    after insert or update or delete on readers for each row
declareinfor char(10);
beginif inserting theninfor:='插入';elsif updating theninfor:='更新';elsif deleting theninfor:='删除';end if;dbms_output.put_line(infor);
end;

六、存储过程设计

(1)增加指定书籍的库存量

create or replace procedure book_add(bname in varchar, num in number)
as
beginif num <= 0 thendbms_output.put_line('增加的库存量不能为负,请重新输入!!!');elseupdate books set 库存量= 库存量+num where 书籍名称=bname;dbms_output.put_line('添加成功');end if;
end;

(2)创建一个存储过程用于添加图书信息

create or replace PROCEDURE books_add(bid in varchar,bname in varchar,author in VARCHAR2,press in VARCHAR2,inventory in number)
as
begin
INSERT into books VALUES(bid,bname,author,press,inventory);
end;

(3)创建一个存储过程用于添加借阅记录

create or replace PROCEDURE records_add(bid in varchar,rid in varchar,addtime in VARCHAR2,deltime in VARCHAR2)
as
begin
INSERT into records VALUES(bid,rid,TO_DATE(addtime,'yyyy-mm-dd hh24:mi'),TO_DATE(deltime,'yyyy-mm-dd hh24:mi'));
end;

(4)创建一个存储过程 用于删除记录

create or replace PROCEDURE del_record(table_name in VARCHAR2,reid in VARCHAR2)
as
beginif table_name='BOOKS' thenDELETE FROM BOOKS where 书籍编号=reid;DBMS_OUTPUT.PUT_LINE('删除成功');ELSIF table_name='MANAGER' thenDELETE FROM MANAGER where 管理员编号=reid;ELSIF table_name='READERS' then DELETE FROM READERS where 借书证编号=reid;else DBMS_OUTPUT.PUT_LINE('输入数据有误');end if;
end;

七、存储函数设计

a、查询借书的男生或女生的数量

create or replace function count_num(sex in char)return number
asout_num number;
beginif sex='男' thenselect count(读者性别) into out_numfrom readerswhere 读者性别='男';else select count(读者性别) into out_numfrom readerswhere 读者性别='女';end if;return(out_num);
end;

b、创建函数查询某图书被借阅天数

create or replace function return_book(bnum in varchar, rnum in varchar)return number
asout_num number;
beginselect to_number(还书时间-借书时间) into out_numfrom records where 书籍编号=bnum and 借书证编号=rnum;return(out_num);
end return_book;

总结

以上就是基于oracle12数据库设计的图书管理系统
可以实现对数据的基本操作,着重于数据的存储过程与存储函数(需要调用实现)而后期的添加数据以及删除数据可根据仔细地需求去设计。

Oracle设计简单的图书管理相关推荐

  1. 使用vue实现简单的图书管理

    这个小案例巩固了vue的基础知识,主要涉及了各种指令的操作,自定义指令.生命周期.侦听器.过滤器.计算属性等的实践.完成的功能有对图书的增删改和统计图书的总量. 功能介绍: 添加图书:输入编号和名称点 ...

  2. Spring+SpringMVC+Mybatis简单整合 图书管理项目 实现增删改查

    Spring+SpringMVC+Mybatis项目 tomcat7插件配置 <build><plugins><plugin><groupId>org. ...

  3. php+mysql一个简单的图书管理系统设计思路

    ** 1.登录注册页面 ** 1.如果数据库中没有查询到用户账号和密码相匹配的数据,就alert('用户名或者密码错误'),然后返回登录页面: 2.如果用户名密码相匹配,则在登录页面设置cookie[ ...

  4. 使用listview实现简单的图书管理

    在主类布局文件中只需要一个listview即可 <?xml version="1.0" encoding="utf-8"?> <LinearL ...

  5. hdu 1497(图书管理系统模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1497 思路:就是一个简单的图书管理系统模拟,book的布尔值显示是否在图书馆:如果有一个人还书,那么那 ...

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

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

  7. HTML设计一个图书管理网页

    HTML设计简单网页 ps:代码运行时图片不能显示,您需将 background: url(aaa/zcx.jpg)~<body background="aaa/timg.jpg&qu ...

  8. 数据库课程设计——图书管理管理系统(一)

    数据库课程设计--图书馆管理系统(一) 1.需求分析 系统的设计目标: Library系统(图书管理系统)是通过本系统软件,能帮助图书馆管理人员利用计算机,快速方便地对图书馆书籍,读者资料,借还书等进 ...

  9. 基于C语言的图书管理信息系统的设计与实现

    图书管理信息系统的设计与实现 #include<stdio.h> #include<string.h>#define BookSize 100 #define BLHum 50 ...

最新文章

  1. ionic项目创建打包签名
  2. 在线旅游资源点评受宠,但质量参差不齐
  3. java获取web.xml 参数_解析web.xml中在Servlet中获取context-param和init-param内的参数
  4. Java学习----方法的重载
  5. 苹果今年预计生产8000万部iPhone 12,多还是少?
  6. Docker学习总结(63)——容器并不能解决一切问题
  7. 使用VMware虚拟磁盘管理工具调整磁盘大小
  8. gifrecord可以卸载吗_频繁安装卸载 App,手机真能受得了吗?!
  9. c语言 int转bool,C语言的布尔类型(_Bool)【转】
  10. 联想计算机不能使用ghost,联想电脑不能GHOST的解决方法
  11. Python训练文本情感分析模型
  12. 金圣叹“不亦快哉”三十三则
  13. 长沙好吃的地方?这个好吃的地方你可能真的没来过
  14. 小白自学c51笔记之数码管1——D74HC245和D74HC138
  15. Android:根据GPS信息在地图上定位
  16. 关于Sql语句中的模糊查询like关键字详解
  17. 国内外网络安全厂商大汇总
  18. 前缀表达式与后缀表达式
  19. 【网络安全入门】SQL注入是什么?SQL注入危害有哪些?
  20. 让低版本的IE浏览器支持HTML5

热门文章

  1. bash shell 命令
  2. 谈谈Android 6.0 的动态权限管理
  3. Git安装教程(Windows安装超详细教程)
  4. 【GStreamer 】3-1 gstreamer插件之 videotestsrc 介绍
  5. 软件版本命名规范详解
  6. 双球坐标系_天球坐标系 - 中文百科
  7. 全网最详细的Neo4j安装教程
  8. Hive的JavaAPI操作
  9. No qualifying bean of type ‘com.bruceliu.mapper.UserMapper‘
  10. 通过URL在前端页面传参的方法