资源描述
图书管理系统Oracle
1 前言
图书馆管理系统是具有管理功能的计算机系统, 而数据库原理及应用课程设计在开发应用程序中至关重要, 合理的数据表结构不但有利于软件的快速开发, 而且有利于以后对软件的维护, 使之能够有效的存储数据, 满足各种用户的应用需求。
创立一个简单的图书管理系统包括图书的信息, 读者( 学生和老师) 的信息以及读者的借阅信息, 管理员的信息。系统在oracle的平台上用sql语言来编写实现, 此系统功能分为面向读者和面向管理员两部分, 其中读者能够进行借阅, 归还和查询等功能, 管理员能够完成书籍和读者的增加, 删除和修改以及对读者借阅、 归还, 违规罚款的确认
2四号黑体, 左顶格, 段前段后0.5行, 固定值22磅, 大纲级别: 2级
需求分析
2.1课程设计目的
经过专业课程设计Ⅱ, 即大型数据库系统课程设计, 有助于培养学生综合运用数据库相关知识解决实际问题的能力。本设计要求对实际问题进行需求分析, 提炼实际问题中的数据, 建立关系模型, 并在大型数据库中得以实现。同时要求对数据库的运营、 管理及使用上进行必要的规划和实现。
2.2课程设计任务
基本任务:
( 1) 根据需求, 补充必要的数据库实体, 建立ER模型, 经过ER图表示。
( 2) 在Oracle中创立该系统的数据库, 并在数据库中实现各表, 写入一定的数据。
( 3) 从实际查询应用出发, 为一些主要的应用模块设计至少3个参数化视图。
( 4) 从数据检验的角度出发, 为相关的表建立至少1个触发器。
( 5) 从数据更新或修改的角度出发, 设计至少1个存储过程。
( 6) 从安全的角度出发, 规划系统的角色、 用户、 权限, 并经过相关的SQL实现。
( 7) 预计每个表的大致容量和增长速度, 指定备份的方案, 写出相关的备份命令。
2.3设计环境
( 1) WINDOWS XP系统
( 2) Oracle数据库管理系统
2.4 开发语言
PL/SQL语言
3 分析和设计
为了实现图书管理系统数据库的设计, 其主要思路是根据其任务书而来的。首先是根据资料和其任务书中要实现的主要功能对其进行分析并设计出系统的E-R图。其次根据E-R图创立主要的表。然后根据具体的需要创立相应的视图, 存储过程和触发器, 最后是用户、 角色、 权限设计和数据的备份方案。其全部功能的详细创立和实现过程。后面将会具体的给出。
3.1 系统E-R模型
3.2 表空间及表的设计
create table book
( bno varchar(10) primary key,
bname varchar(40) not null,
writer varchar(30) not null,
btype varchar(8),
price float,
storenum int,
pub varchar(50),
pubday varchar(15)
);
create table reader
( rno varchar(10) primary key,
rname varchar(20) not null,
sex varchar(2) check(sex='男'or sex='女'),
type varchar(8) not null,
bwnum int not null,
depart varchar(20),
phone varchar(15) not null)
);
create table b_borrow
( bno varchar(10),
rno varchar(10),
primary key(bno,rno),
rname varchar(20) not null,
bwday varchar(10) not null,
bkday varchar(10) not null,
foreign key(bno) references book(bno),
foreign key(rno) references reader(rno)
);
create table bmanager
( mno varchar(10) primary key,
mname varchar(20) not null,
msex varchar(2) check(msex='男'or msex='女'),
mphone varchar(15) not null,
address varchar(20) not null
);
create table b_manage
(mno varchar(10),
bno varchar(10),
primary key (mno,bno),
mname varchar(20) not null,
tnum int not null,
addtime varchar(10),
bwtimes varchar(8) not null,
foreign key(mno) references bmanager(mno),
foreign key(bno) references book(bno)
);
create table r_manage
(mno varchar(10),
rno varchar(10),
primary key (mno,rno),
rname varchar(20),
back varchar(2) check(back='是'or back='否'),
foreign key(mno) references bmanager(mno),
foreign key(rno) references reader(rno)
);
create table m_rule
(mno varchar(10),
rno varchar(10),
primary key (mno,rno),
rname varchar(20) not null,
rtype varchar(10) check(rtype='丢失赔款'or rtype=’损坏赔偿’ or rtype='逾期罚款') not null,
cashnum varchar(10) not null,
foreign key(mno) references bmanager(mno),
foreign key(rno) references reader(rno)
);
3.3 视图设计
create view bookview
as select * from book where btype='计算机'
with check option;
create view readerview
as select * from reader
where sex='女'
with check option;
create view
borrowinfo(bno,bname,storenum,btype,tnum,bwtimes)
as select b.bno,bname,storenum,btype,tnum,bwtimes
from book b,b_manage m
where b.bno=m.bno
with check option;
3.4 存储过程、 函数的设计
create or replace procedure show_reader(p_rno reader.rno%type)
as
v_bwnum reader.bwnum%type;
begin
select avg(bwnum) into v_bwnum from reader where rno=p_rno;
dbms_output.put_line(p_rno||' '||'平均借书数是多少: '||v_bwnum);
for v_reader in (select rno,rname,type from reader where rno=p_rno and bwnum>v_bwnum)
loop
dbms_output.put_line(v_reader.rno||' '||v_reader.rname||' '||v_reader.type);
end loop;
exception
when no_data_found then
dbms_output.put_line('不存在最高借书数的读者!');
end show_reader;
过程已创立。
execute show_reader(5);
PL/SQL 过程已成功完成。
3.5 触发器设计
触发器
create or replace trigger trig_view
instead of insert on borrowinfo
for each row
declare
v_bno b_manage.bno%type;
begin
select bno into v_bno from b_manage where tnum=:new.tnum and bwtimes=:new.bwtimes;
insert into book(bno,bname,storenum,btype)
values(:new.bno,:new.bname,:new.storenum,:new.btype);
end trig_view;
触发器已创立。
3.7 备份方案设计
4 课程设计总
经过本次课程设计,加深了我对软件设计流程的进一步的深入理解, 同时熟悉和巩固了自己在数据库上的一些不熟甚至是陌生的知识。相对于以前的课程设计, 这次的课程设计最大的难度是在软件的使用上, 在课程设计开始的时候, 对于软件oracle 10g, 本人对其是一窍不通,甚至连对oracle最基本的安装和进入都不知道。在设计中, 很多地方也是因不知道怎么使用oracle而引起的, 如数据的备份。其次是对知识的不熟, 在设计中对于数据的插入, 过程、 函数和触发器的创立, 以及用户、 角色、 权限的授予都有遇到这样或那样的问题, 如数据插入的数据与所定义的数据类型不同, 过程创立的语法错误和权限授予不成功等。当然了, 也有对设计报告编写的问题, 如不知道要怎样排版。不过这些问题在设计过程中或最后都得以解决, 同时也从中吸取了不少的经验教训。最后, 在这次设计中, 让我感触最深的一句话是”实践出真知”, 只有自己亲自去动手了, 才能找到问题, 解决问题。这让我对自己不论是学习上还是生活上都会有很大的帮助。
参考文献
致 谢
这次的课程设计能在这么快的时间里完成, 一个重要原因是身边人的
倾囊相助。首先, 要感谢编写数据库教材和资料的老师, 让我有机会接触和熟悉数据库设计和软件开发过程及其中应注意的问题, 为以后开发积累了宝贵的经验。其次, 要感谢指导教师陈智老师, 没有陈老师的耐心指导, 我能完成这次课程设计可能还要十几二十天。最后, 要感谢我身边的同学, 正是有了她们的帮助, 我在课程设计中的许多问题才能很快很好的得以解决。在此过程中我真切地体会到集体和团队的力量的强大。在课程设计结束之际, 真心的对帮助过我的老师和同学说声谢谢, 谢谢大家了!
展开阅读全文