Oracle设计简单的图书管理

图书管理系统

设计一个能够实现数据添加、删除、更新等操作的数据库,但是本文章主要涉及的内容是数据存储函数、存储过程的设计。至于简单的操作请各位按照自己的需求自行设计。
操作系统: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)Х
出生时间DateX
联系方式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
begin
    if inserting then
    UPDATE books set "库存量"="库存量"-1 where "书籍编号"=:new."书籍编号";
    elsif deleting then
    UPDATE books set "库存量"="库存量"+1 where "书籍编号"=:old."书籍编号";
    end if;
end;

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

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

六、存储过程设计

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

create or replace procedure book_add(bname in varchar, num in number)
as
begin
  if num <= 0 then
    dbms_output.put_line('增加的库存量不能为负,请重新输入!!!');
  else
    update 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
begin
    if table_name='BOOKS' then
    DELETE FROM BOOKS where 书籍编号=reid;
    DBMS_OUTPUT.PUT_LINE('删除成功');
    ELSIF table_name='MANAGER' then
    DELETE 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
as
  out_num number;
begin
  if sex='男' then
    select count(读者性别) into out_num
      from readers
      where 读者性别='男';
  else 
    select count(读者性别) into out_num
      from readers
      where 读者性别='女';
  end if;
  return(out_num);
end;

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

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

总结

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

数据库系统原理课程设计 课题名称:图书信息管理系统 姓 名: 班 级: 学 号: 指导老师: 2014年 01月 02日 目录 1.绪论 3 1。1 背景介绍 3 1.2 开发背景的选用及介绍 3 2.需求分析 4 2.1 系统分析 4 2。2 系统目标 4 2。3总体需求 4 3。概念设计阶段 5 3.1 实体E-R图 5 3。2 数据流程图 8 4.逻辑结构设计阶段 8 4。1 E—R图转换为关系模型 8 4。2 数据字典 9 5.物理结构设计阶段 10 5。1 物理设计阶段的目标和任务 10 5.2 数据存储方面 10 6.数据库实施与维护 10 6。1 创建数据库,数据表 10 6.2 创建视图 12 6.3 创建索引 13 6。4 创建触发器 13 6.5 数据表的初始化 14 6。6 初始表的显示 16 7.数据库界面实现 19 7.1系统总的功能模块图 19 7。2 系统的实现 19 8.心得体会 25 1。绪论 1.1 背景介绍 随着社会的发展,人们对于知识的需求也在不断地增长。书籍作为人们获取并增长知 识的主要途径,使得图书馆在人们生活中占有了一定位置。但是近几年来,随着书量的 不断增长,造成了书库空间极度不足,图书挤压,管理不善。这些都直接影响了读者对 图书馆藏书的充分利用。这时图书馆就特别需要开发一套书刊租借管理系统,通过该系 统来提高图书馆的管理效率,从而减少管理方面的工作流和成本。 一个现代化的图书馆在正常运营中总是面对大量的读者信息,书籍信息以及两者相互 作用产生的借书信息,还书信息。面对图书馆数以万计的图书,纷繁复杂的读者信息,频 繁更替的借还书信息,传统的直接方法不但管理出现漏洞,造成损失。因此有一个智能化 、系统化、信息化的图书管理系统十分重要的。充分利用计算机的功能实现对读者管理 、书籍管理,借阅管理等自动化控制,将会使图书馆的工作大大减弱。方便友好的图形 界面、简便的操作、完善的数据库管理。将会使得图书馆系统极大限度的应用于现代化 图书管理中。 1.2 开发背景的选用及介绍 1.2。1 SQL Server 2005的简介 SQL是英文(Structured Query Language)的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立 联系,进行沟通。SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行 各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流 行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准. SQL语言有以下几个优点: 1. 非过程化语言 SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允 许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语 句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另 一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法, 这种特性使用户更易集中精力于要得到的结果; 所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速 度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知 道表 是否有索引、有什么类型的索引. 2。 统一的语言 SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握. 3。 所有关系数据库的公共语言 由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RD BMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。 1.2.2 java简介 java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应3用于个人PC、数据中心 、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业 社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景. 2.需求分析 2.1 系统分析 书刊租借系统(以高校的图书管理系统为例)是典型的信息管理系统,其开发主要包 括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数 据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值