Oracle设计简单的图书管理
图书管理系统
设计一个能够实现数据添加、删除、更新等操作的数据库,但是本文章主要涉及的内容是数据存储函数、存储过程的设计。至于简单的操作请各位按照自己的需求自行设计。
操作系统:Windows 10
操作环境:Oracle12c
安装包链接:https://pan.baidu.com/s/1D6vXcOY90ucnMdY_Z8ptfg
提取码:ro6v
安装过程:请去寻求大佬的详解!!!!
前言
随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理。因此,必须指定一套合理、有效,规范和使用的图书馆管理系统,对图书资料进行集中统一的管理。
提高图书管理工作效率,做到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。
一、需求分析
读者基本信息的输入,包括借书证编号、读者姓名、读者性别
读者基本信息的查询、删除,包括读者借书证编号、读者姓名、读者性别等
书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称
书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名等
借阅信息的输入,包括借书证编号、书籍编号、借书时间、还书时间
管理员信息的输入,包括管理员编号,管理员姓名和管理的借书证号
二、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设计简单的图书管理相关推荐
- 使用vue实现简单的图书管理
这个小案例巩固了vue的基础知识,主要涉及了各种指令的操作,自定义指令.生命周期.侦听器.过滤器.计算属性等的实践.完成的功能有对图书的增删改和统计图书的总量. 功能介绍: 添加图书:输入编号和名称点 ...
- Spring+SpringMVC+Mybatis简单整合 图书管理项目 实现增删改查
Spring+SpringMVC+Mybatis项目 tomcat7插件配置 <build><plugins><plugin><groupId>org. ...
- php+mysql一个简单的图书管理系统设计思路
** 1.登录注册页面 ** 1.如果数据库中没有查询到用户账号和密码相匹配的数据,就alert('用户名或者密码错误'),然后返回登录页面: 2.如果用户名密码相匹配,则在登录页面设置cookie[ ...
- 使用listview实现简单的图书管理
在主类布局文件中只需要一个listview即可 <?xml version="1.0" encoding="utf-8"?> <LinearL ...
- hdu 1497(图书管理系统模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1497 思路:就是一个简单的图书管理系统模拟,book的布尔值显示是否在图书馆:如果有一个人还书,那么那 ...
- 大学课设之Mysql图书管理设计
大学课设之Mysql图书管理设计 需求分析 概念结构设计-总E-R图 逻辑结构设计 数据库的实现 触发器重点说明 完整的Mysql设计代码 需求分析 改图书管理涉及书本的信息,读者的信息,图书馆管理员 ...
- HTML设计一个图书管理网页
HTML设计简单网页 ps:代码运行时图片不能显示,您需将 background: url(aaa/zcx.jpg)~<body background="aaa/timg.jpg&qu ...
- 数据库课程设计——图书管理管理系统(一)
数据库课程设计--图书馆管理系统(一) 1.需求分析 系统的设计目标: Library系统(图书管理系统)是通过本系统软件,能帮助图书馆管理人员利用计算机,快速方便地对图书馆书籍,读者资料,借还书等进 ...
- 基于C语言的图书管理信息系统的设计与实现
图书管理信息系统的设计与实现 #include<stdio.h> #include<string.h>#define BookSize 100 #define BLHum 50 ...
最新文章
- ionic项目创建打包签名
- 在线旅游资源点评受宠,但质量参差不齐
- java获取web.xml 参数_解析web.xml中在Servlet中获取context-param和init-param内的参数
- Java学习----方法的重载
- 苹果今年预计生产8000万部iPhone 12,多还是少?
- Docker学习总结(63)——容器并不能解决一切问题
- 使用VMware虚拟磁盘管理工具调整磁盘大小
- gifrecord可以卸载吗_频繁安装卸载 App,手机真能受得了吗?!
- c语言 int转bool,C语言的布尔类型(_Bool)【转】
- 联想计算机不能使用ghost,联想电脑不能GHOST的解决方法
- Python训练文本情感分析模型
- 金圣叹“不亦快哉”三十三则
- 长沙好吃的地方?这个好吃的地方你可能真的没来过
- 小白自学c51笔记之数码管1——D74HC245和D74HC138
- Android:根据GPS信息在地图上定位
- 关于Sql语句中的模糊查询like关键字详解
- 国内外网络安全厂商大汇总
- 前缀表达式与后缀表达式
- 【网络安全入门】SQL注入是什么?SQL注入危害有哪些?
- 让低版本的IE浏览器支持HTML5
热门文章
- bash shell 命令
- 谈谈Android 6.0 的动态权限管理
- Git安装教程(Windows安装超详细教程)
- 【GStreamer 】3-1 gstreamer插件之 videotestsrc 介绍
- 软件版本命名规范详解
- 双球坐标系_天球坐标系 - 中文百科
- 全网最详细的Neo4j安装教程
- Hive的JavaAPI操作
- No qualifying bean of type ‘com.bruceliu.mapper.UserMapper‘
- 通过URL在前端页面传参的方法