Oracle数据库图书管理系统的课程设计

Oracle数据库图书管理系统的课程设计

在Oracle数据库最初的sys用户XE数据库下执行;

--删除表空间

drop tablespace tablespace_book including contents
cascade constraints;


--创建永久表空间
create tablespace tablespace_book
datafile 'f:\oracle\book' size 50m
autoextend on next 50m maxsize 100m;    --自动增长表空间从50M到100M;


--创建用户
create user book identified by book
default tablespace tablespace_book;


--用户授权

grant all privileges to book;

 

在创建的book用户下执行,我连接的数据库名与用户名相同;

--创建管理员角色
create role manager identified by manager;


--创建读者角色
create role reader identified by reader;


--创建读者表
create table reader(
rno number(10) not null primary key,
rname varchar2(20),
rid number(18) unique)tablespace tablespace_book
storage(initial 256k);


--创建图书表
create table book(
bno number(10) not null primary key,
bname varchar2(20) not null,
bprice varchar(4),
author varchar2(30) not null,
bnum int not null)tablespace tablespace_book
storage(initial 256k);


--创建借阅表
create table rb(
readno number(10) not null primary key,
rno number(10) not null,
rname varchar2(20),
bno number(18) not null,
bname varchar2(20),
regdate date default sysdate,
back char(2))tablespace tablespace_book
storage(initial 256k);


--创建管理员表
create table manager(
mno number(10) not null primary key,
mname varchar2(20)not null,
regdate date default sysdate
)tablespace tablespace_book
storage(initial 256k);


--为借阅表创建外键约束
alter table rb add constraint fk_rb foreign key
(rno) references
reader(rno);


--向读者表中插入数据
insert into reader(rno,rname,rid)
values(101,'叶凡一',123456789);
insert into reader(rno,rname,rid)
values(102,'叶凡二',223456789);
insert into reader(rno,rname,rid)
values(103,'叶凡三',323456789);
insert into reader(rno,rname,rid)
values(104,'叶凡四',423456789);
insert into reader(rno,rname,rid)
values(105,'叶凡五',523456789);
insert into reader(rno,rname,rid)
values(106,'叶凡六',623456789);
insert into reader(rno,rname,rid)
values(107,'叶凡七',723456789);
insert into reader(rno,rname,rid)
values(108,'叶凡八',823456789);
insert into reader(rno,rname,rid)
values(109,'叶凡九',923456789);
insert into reader(rno,rname,rid)
values(110,'叶凡十',023456789);


--向图书表中插入10条数据
insert into book(bno,bname,bprice,author,bnum)
values(1010,'遮天1',50,'辰东',1);
insert into book(bno,bname,bprice,author,bnum)
values(1011,'遮天2',50,'辰东',3);
insert into book(bno,bname,bprice,author,bnum)
values(1012,'遮天3',50,'辰东',5);
insert into book(bno,bname,bprice,author,bnum)
values(1013,'遮天4',50,'辰东',7);
insert into book(bno,bname,bprice,author,bnum)
values(1014,'遮天5',50,'辰东',8);
insert into book(bno,bname,bprice,author,bnum)
values(1015,'遮天6',50,'辰东',5);
insert into book(bno,bname,bprice,author,bnum)
values(1016,'遮天7',50,'辰东',4);
insert into book(bno,bname,bprice,author,bnum)
values(1017,'遮天8',50,'辰东',2);
insert into book(bno,bname,bprice,author,bnum)
values(1018,'遮天9',50,'辰东',10);
insert into book(bno,bname,bprice,author,bnum)
values(1019,'遮天10',50,'晨曦',10);


--向借阅表中插入数据
insert into rb(readno,rno,rname,bno,bname,BACK)
values(1,103,'叶凡三',1010,'遮天1','N');
insert into rb(readno,rno,rname,bno,bname,BACK)
values(2,103,'叶凡三',1011,'遮天2','N');
insert into rb(readno,rno,rname,bno,bname,BACK)
values(3,103,'叶凡三',1012,'遮天3','N');
insert into rb(readno,rno,rname,bno,bname,BACK)
values(4,104,'叶凡四',1013,'遮天4','N');
insert into rb(readno,rno,rname,bno,bname,BACK)
values(5,105,'叶凡五',1014,'遮天5','N');
insert into rb(readno,rno,rname,bno,bname,BACK)
values(6,105,'叶凡五',1015,'遮天6','N');
insert into rb(readno,rno,rname,bno,bname,BACK)
values(7,107,'叶凡七',1016,'遮天7','N');
insert into rb(readno,rno,rname,bno,bname,BACK)
values(8,109,'叶凡九',1017,'遮天8','N');
insert into rb(readno,rno,rname,bno,bname,BACK)
values(9,101,'叶凡一',1018,'遮天9','N');
insert into rb(readno,rno,rname,bno,bname,BACK)
values(10,101,'叶凡一',1019,'遮天10','N');


--向管理员表中插入数据
insert into manager(mno,mname) values(1,'图图');
insert into manager(mno,mname) values(2,'花花');


--创建主键索引
create unique index manager_index on manager (mno desc) 
tablespace tablespace_book 
storage 

  buffer_pool default 
);


create unique index book_index on book (bno desc) 
tablespace tablespace_book 
storage 

  buffer_pool default 
);


create unique index read_index on rb (readno desc) 
tablespace tablespace_book 
storage 

  buffer_pool default 
);


create unique index reader_index on reader (rno desc) 
tablespace tablespace_book 
storage 

  buffer_pool default 
);


--创建视图
create or replace view book_view_union as
select bno,bname,bprice,bnum from book;


create or replace view reader_view_union as
select rno,rname,rid from reader;


create or replace view rb_view_union as
select readno,rno,rname,bno,bname,regdate,back from rb;


--创建存储过程实现表中数据的修改
--还书数据的修改管理
CREATE OR REPLACE PROCEDURE RBack(B_ID VARCHAR2)
IS
BEGIN
UPDATE RB SET BACK = 'Y' WHERE readno = B_ID;
COMMIT;
END;
--执行
BEGIN
rback('1');
END;


--创建函数统计各种图书的库存量
CREATE OR REPLACE FUNCTION GETSCOUNT(au IN VARCHAR2) RETURN NUMBER
  AS
  BOOKNUM NUMBER;
  BEGIN
  SELECT bnum INTO BOOKNUM FROM BOOK WHERE author = au;
  RETURN(BOOKNUM);
  END;
  
--调用函数
DECLARE
COUNTNUM NUMBER:=0;
BEGIN
COUNTNUM:=GETSCOUNT('晨曦');
SYS.DBMS_OUTPUT.PUT('图书馆有“晨曦”所写书籍总数为: ');
SYS.DBMS_OUTPUT.PUT(COUNTNUM);
SYS.DBMS_OUTPUT.PUT_LINE('本');
END;


--触发器
CREATE OR REPLACE TRIGGER tri_rb
AFTER INSERT OR UPDATE ON RB
FOR EACH ROW
DECLARE
BEGIN
SYS.DBMS_OUTPUT.PUT_LINE('借阅者:'||:NEW.RNAME);
SYS.DBMS_OUTPUT.PUT_LINE('书籍编号:'||:NEW.BNO);
SYS.DBMS_OUTPUT.PUT_LINE('书籍名称:'||:NEW.BNAME);
SYS.DBMS_OUTPUT.PUT_LINE('借出日期:'||:NEW.REGDATE);
SYS.DBMS_OUTPUT.PUT_LINE('是否归还:'||:NEW.BACK);
SYS.DBMS_OUTPUT.PUT_LINE('触发器已被执行');
END;


--普通读者用户只能进行查询操作授权
grant select on book to reader;


--授权管理员角色可进行各种操作
grant connect,resource to manager;
grant create any sequence to manager;  
grant create any table to manager;  
grant delete any table to manager;  
grant insert any table to manager;  
grant select any table to manager;  
grant unlimited tablespace to manager;  
grant execute any procedure to manager;  
grant update any table to manager;  
grant create any view to manager;

  • 12
    点赞
  • 216
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
课 程 设 计 报 告 书 目 录 第1章 引言 3 第2章 概要设计 5 2.1系统需求分析 5 2.2系统结构设计 5 2.3系统功能模块 6 第3章 数据库分析 7 3.1 数据库总体设计 7 3.2 数据表设计 7 3.3 数据库的创建 8 3.4存储过程和触发器 10 第4章 详细设计及测试 12 4.1 系统界面 12 4.2 主要代码设计 15 4.3 功能整体链接测试 18 第5章 课程设计心得 19 第1章 引言 1.设计目的 使用VC,C++,C#等作为前台开发工具,使用Oracle作为后台数据库,所设计的管理 系统应包含输入输出、查询、插入、修改、删除等基本功能。根据题目的基本需求,设 计系统界面、数据库、编写程序(Oracle),并写出课程设计报告 1、阅读资料:每个人必须提前阅读教材有关Oracle、VC、C++、C#应用方面的内容以 及其它相关书籍。 2、需求分析:题目要求达到的功能,所提供的原始数据,需要输出的数据及样式等 。 3、数据库的设计:根据要求设计数据库的结构,包括:表、数据完整性、关系、视 图。 4、数据库的安全性设计:登录用户、数据库用户、数据库角色、命令许可等方面 涉及到数据的所有操作要求采用存储过程的方式进行。 2.设计要求 1. 选好题目:先分组,每组两个人(或单独完成),必须确保每题有两组人员选做,班长 将本班同学的选题情况汇总后于16周之前交。 2. 独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨 论,但不可以拷贝,否则不管是抄袭还是被抄袭,雷同的全部直接评定为不及格。 3. 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关 环境的设置方法,准备好有关的文件。 4. 根据编程实现的结果,按课程设计报告的撰写规范完成数据库系统课程设计报告(课程 设计报告中必须有相关原理分析、程序设计、程序实现和程序调试等内容);课程设计 报告的具体要求如下: 1) 课设报告按照规定用A4纸张进行排版打印,否则要求返工; 2) 课设报告的内容顺序如下:封面—任务书—中文摘要—目录—正文—附录; 3) 正文不少于4000字,正文部分至少包含以下内容,并可大致作如下安排 1.引言(包括设计目的、要求、设计环境、同组人员及分工等内容) 2.概要设计(含系统需求分析、系统结构设计和功能模块设计等内容) 3.详细设计(含系统数据库设计、系统主要功能模块设计(可用流程图表示)和各 模块的主要算法对应的原代码(详细)等内容) 4.调试与运行结果及存在的主要问题(包括调试、运行和存在的问题) 5.课程设计小结(或总结)(对此课程设计所做的工作内容进行总结,并提出系统 还可以进行改进的地方) 3.设计环境 1.Windows7旗舰版32位 2.Microsoft Visual Studio 2005 3.Oracle 11g 第2章 概要设计 2.1系统需求分析 图书管理系统主要是用oracle数据库进行逻辑处理,实现对图书信息的增删改查,以 及出库入库的管理。 2.2系统结构设计 图2.2. 图书E-R图 2.3系统功能模块 图2.4 系统功能模块图 第3章 数据库分析 3.1 数据库总体设计 数据库设计是图书管理系统的重要组成部分。建立良好的数据库结构和文件组织形式 ,能够使系统快速、准确的获得所需信息。这里采用oracle 数据库。该数据库对进行增、删、改、查、显示都极为方便。能为系统提供良好的数据 支持。根据系统的详细分析和和总体的需求分析,将为各个不同模块详细设计数据结构 。 3.2 数据表设计 用户表(yonghu) "字段名 "字段 "数据类型 "主键 "索引 "值 "说明 " "eno "用户ID "number "Yes " " " " "ename "用户名 "varchar2(10" " " " " " " ") " " " " " 图书类别表(typ) "字段名 "字段 "数据类型 "主键 "索引 "值 "说明 " "TID "类别编 "varchar2(10"Yes " " " " " "号 ") " " " " " "TypeName"类别名 "varchar2(10" " " " " " "称 ") " " " " " 图书表(books) "字段名 "字段 "数据类型 "主键 "索引 "值 "说明 " "ISBN "图书编号 "varchar2(20)"Yes " " " " "BookName "名称 "varchar2(40)" " " " " "TID "类别编号 "varchar2(10)" " " " " "RetailPrice "零售价 "varchar2(10)" " " " " "Author "作者 "

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值