数据库课程设计图书馆管理系统.docx

上传人:b****7 文档编号:10208068 上传时间:2023-02-09 格式:DOCX 页数:38 大小:630.50KB
下载 相关 举报
数据库课程设计图书馆管理系统.docx_第1页
第1页 / 共38页
数据库课程设计图书馆管理系统.docx_第2页
第2页 / 共38页
数据库课程设计图书馆管理系统.docx_第3页
第3页 / 共38页
数据库课程设计图书馆管理系统.docx_第4页
第4页 / 共38页
数据库课程设计图书馆管理系统.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

数据库课程设计图书馆管理系统.docx

《数据库课程设计图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计图书馆管理系统.docx(38页珍藏版)》请在冰豆网上搜索。

数据库课程设计图书馆管理系统.docx

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

 

1前言

一个简单的图书管理系统包括图书馆内书籍的信息、学校在校师生的信息以及师生的借阅信息。

此系统功能面向图书馆管理员,可以完成书籍和读者的增加、删除和修改,制定借阅规则,以及对读者借阅、续借、归还、预约的确认。

2需求分析

2。

1课程设计目的

通过专业课程设计Ⅱ,即大型数据库系统课程设计,有助于培养学生综合运用数据库相关知识解决实际问题的能力.本设计要求对实际问题进行需求分析,提炼实际问题中的数据,建立关系模型,并在大型数据库中得以实现。

同时要求对数据库的运营、管理及使用上进行必要的规划和实现.

2。

2课程设计任务

(1)图书信息:

包括图书编号、图书名称、所属类别等;

(2)读者信息:

包括读者编码、姓名、性别、专业等;

(3)借还书信息:

包括图书当前状态、被借还次数、借阅时间等。

基本要求:

(1)根据需求,补充必要的数据库实体,建立ER模型,通过ER图表示。

(2)在Oracle中创建该系统的数据库,并在数据库中实现各表,写入一定的数据。

(3)从实际查询应用出发,为一些主要的应用模块设计至少3个参数化视图。

(4)从数据检验的角度出发,为相关的表建立至少1个触发器。

(5)从数据更新或修改的角度出发,设计至少1个存储过程。

(6)从安全的角度出发,规划系统的角色、用户、权限,并通过相关的SQL实现。

(7)预计每个表的大致容量和增长速度,指定备份的方案,写出相关的备份命令。

2.3设计环境

(1)WINDOWS2000/2003/XP系统

(2)Oracle数据库管理系统

2。

4开发语言

PL/SQL语言

3分析和设计

(1)功能简介

借阅功能:

图书出借时考虑三个问题:

<1>读者是否因为超期、罚款等情况被关闭了借阅权限;

<2〉该书是否不在库中;

<3>读者是否已经借满其限额。

如果不存在以上情况,则可以出借。

预约功能:

读者想借的书如果不在库中(已经被出借),读者可以预约该图书,当该图书被归还时系统给读者发送邮件,提醒他来借阅,此时其他读者也可以借阅该书。

续借功能:

读者还书的时候可以续借该图书,续借的过程包括先执行还书操作,再执行借阅操作。

(2)发送催还邮件

管理员可以发送邮件提醒读者到期还书。

〈1〉读者管理功能:

对读者信息进行查看、添加、修改、删除。

将读者分为不同类别,赋以不同权限。

〈2>系统管理功能:

对管理员的登录账号、密码进行添加、修改、删除。

<3〉规则管理功能:

对图书借阅规则进行查看、添加、修改、删除。

(3)需求描述

 

针对一般图书管理信息系统的需求,通过对图书管理工作过程的内容和数据流程分析,设计如下面所示的数据项:

1)读者信息

属性:

读者编号,读者姓名,联系电话,邮箱地址,所在系,权限状况,读者类型,备注

主键:

读者编号

2)书籍信息

属性:

图书编号,ISBN,书名,作者,出版社,出版日期,简介,封面图片,价格,学科类型,藏书类型

主键:

图书编号

3)管理员信息

属性:

编号,账号,密码

主键:

编号

4)读者类型

属性:

编号,类型,说明

主键:

编号

5)藏书类型

属性:

编号,类型,说明

主键:

编号

6)学科类型

属性:

编号,类型,说明

主键:

编号

7)借阅信息

属性:

图书编号,读者编号,借阅日期,应还日期

主键:

图书编号,读者编号

8)预约信息

属性:

图书编号,读者编号,预约日期

主键:

图书编号,读者编号

9)借阅规则

属性:

图书类型,读者类型,期限,册数,续借次数,逾期罚款

主键:

图书类型,读者类型

本系统共设计9个表、6个序列、4个存储过程、3个函数、4个触发器

其中存储过程有:

1)检查借阅是否超期的存储过程;

2)判断读者可否进行借阅的存储过程;

3)计算超期罚款的存储过程;

4)发送邮件的存储过程;

其中函数有:

1)计算图书应归还日期的函数;

2)计算读者可借阅图书册书的函数;

3)计算读者已经借阅某类型图书的册数的函数;

其中触发器有:

1)删除藏书类型的触发器;

2)删除读者类型的触发器;

3)删除图书的触发器;

4)删除读者的触发器。

本系统的功能可以在以下几个方面进行拓展和完善

练习添加和使用以下命名块:

1)修改读者类型的触发器;

2)修改藏书类型的触发器;

3)将图片存储为Blog类型的存储过程;

4)将超期未还的读者借阅权限关闭的存储过程;

5)计算读者应交欠费的存储函数.

练习添加以下系统功能:

1)管理员添加、修改、删除系统公告的功能;

2)管理员权限开通/关闭的功能;

3)上传图片的功能(本系统中只实现了保存图片地址);

4)批量删除图书或读者的功能。

 

3.1系统E—R模型

 数据库需要表述的信息有以下几种:

(1)读者信息

(2)书籍信息

(3)管理员信息

(4)藏书分类信息

(5)图书学科分类信息

(6)读者分类信息

(7)读者与书籍之间的关系(借阅关系E—R图)

(8)读者类型与书籍类型之间的关系(规则关系E—R图)

3。

2表空间及表的设计

表1管理员用户表(admin)

列名

类型

长度

约束

备注

Id

number

11

主键

管理员编号

username

varchar2

10

非空

管理员帐号

password

varchar2

11

非空

帐号密码

表2读者类型(reader_type)

列名

类型

长度

约束

备注

typeid

number

11

主键

类型编号

typename

varchar2

20

非空

类型名称

demo

varchar2

100

说明

表3读者表(reader)

列名

类型

长度

约束

备注

readerid

number

11

主键

读者编号

name

varchar2

10

非空

读者姓名

telephone

varchar2

15

联系电话

email

varchar2

30

邮箱地址

dept

varchar2

20

所在院系

right

number

1

取值为0或1

借阅权限

readertype

number

11

外键

读者类型

demo

varchar2

1000

说明

表4藏书类型表(book_type)

列名

类型

长度

约束

备注

typeid

number

11

主键

类型编号

typename

varchar2

20

非空

类型名称

demo

varchar2

100

说明

表5学科类型表(book_class)

列名

类型

长度

约束

备注

classid

number

11

主键

类型编号

classname

varchar2

20

非空

类型名称

demo

varchar2

100

说明

表6图书表(book)

列名

类型

长度

约束

备注

bookid

number

11

主键

书籍编号

bookname

varchar2

20

非空

书籍名称

author1

varchar2

20

非空

书籍作者

author2

varchar2

20

书籍作者

author3

varchar2

20

书籍作者

pubdate

date

出版日期

publish

varchar2

30

出版社

photo

varchar2

100

图片地址

abstract

varchar2

4000

内容简介

Price

number

7,2

非空

价格

ISBN

varchar2

17

非空

书籍ISBN码

bookclass

number

11

外键

学科类型

booktype

number

11

外键

藏书类型

表7借阅表(borrow)

列名

类型

长度

约束

备注

readerid

number

11

联合主键,外键

读者编号

bookid

number

11

联合主键,外键

图书编号

borrowdate

date

出借日期

due

date

应还日期

表8预约表(preconcert)

列名

类型

长度

约束

备注

readerid

number

11

联合主键,外键

读者编号

bookid

number

11

联合主键,外键

图书编号

predate

date

预约日期

表9规则表(rule)

列名

类型

长度

约束

备注

booktype

number

11

联合主键,外键

藏书类型号

readertype

number

11

联合主键,外键

读者类型号

days

number

5

非空

期限(天)

num

number

5

非空

册数(本)

renew

number

5

非空

续借次数(次)

overtime

number

5,2

非空

逾期处罚(元/册/天)

(1)创建数据表语句

createtableadmin(

idnumber(11)primarykey,

usernamevarchar2(10)notnull,

passwordvarchar2(11)notnull

);

在SQLDeveloper中创建数据表截图3-1所示:

图3-1admin数据表

createtablereader_type(

typeidnumber(11)primarykey,

typenamevarchar2(20)notnull,

demovarchar2(100));

在SQLDeveloper中创建数据表截图3-2所示:

图3-2reader_type数据表

createtablereader(

readeridnumber(11)primarykey,

namevarchar2(10)notnull,

telephonevarchar2(15),

emailvarchar2(30),

deptvarchar2(20),

rightnumber

(1)check(right=0orright=1),

readertypenumber(11)referencesreader_type(typeid),

demovarchar2(1000));

在SQLDeveloper中创建数据表截图3—3所示:

图3-3数据表

createtablebook_type(

typeidnumber(11)primarykey,

typenamevarchar2(20)notnull,

demovarchar2(100));

在SQLDeveloper中创建数据表截图3—4所示:

图3-4数据表

createtablebook_class(

classidnumber(11)primarykey,

classnamevarchar2(20)notnull,

demovarchar2(100)

);

在SQLDeveloper中创建数据表截图3—5所示:

图3—5数据表

createtablebook(

bookidnumber(11)primarykey,

booknamevarchar2(20)notnull,

author1varchar2(20)notnull,

author2varchar2(20),

author3varchar2(20),

pubdatedate,

publishvarchar2(30),

photovarchar2(100),

abstractvarchar2(4000),

pricenumber(7,2)notnull,

isbnvarchar2(17)notnull,

bookclassnumber(11)referencesbook_class(classid),

booktypenumber(11)referencesbook_type(typeid)

);

在SQLDeveloper中创建数据表截图3—6所示:

图3-6数据表

createtableborrow(

readeridnumber(11),

bookidnumber(11),

borrowdatedate,

duedate,

primarykey(readerid,bookid),

foreignkey(readerid)referencesreader(readerid),

foreignkey(bookid)referencesbook(bookid)

);

在SQLDeveloper中创建数据表截图3—7所示:

图3-7数据表

createtablepreconcert(

readeridnumber(11),

bookidnumber(11),

predatedate,

primarykey(readerid,bookid),

foreignkey(readerid)referencesreader(readerid),

foreignkey(bookid)referencesbook(bookid)

);

在SQLDeveloper中创建数据表截图3-8所示:

图3—8数据表

 

createtablerule(

booktypenumber(11),

readertypenumber(11),

daysnumber(5)notnull,

numnumber(5)notnull,

renewnumber(5)notnull,

overtimenumber(5,2)notnull,

primarykey(booktype,readertype),

foreignkey(booktype)referencesbook_type(typeid),

foreignkey(readertype)referencesreader_type(typeid)

);

在SQLDeveloper中创建数据表截图3—9所示:

图3—9数据表

(2)创建序列语句

为了方便产生读者编号、图书编号,在数据库中分别用下列序列产生相应编号.

<1〉sql_reader:

产生读者编号,起始值为1。

<2〉sql_book:

产生图书编号,起始值为1。

createsequenceseq_readerstartwith1incrementby1;

createsequenceseq_bookstartwith1incrementby1;

createsequenceseq_reader_typestartwith1incrementby1;

createsequenceseq_book_typestartwith1incrementby1;

createsequenceseq_book_classstartwith1incrementby1;

createsequenceseq_adminstartwith1incrementby1;

在SQLDeveloper中创建序列截图如3-10所示:

 

图3—10

(3)插入数据语句

insertintoreader_typevalues(seq_reader_type。

nextval,’学生',null);

insertintoreader_typevalues(seq_reader_type。

nextval,'教工’,null);

insertintobook_typevalues(seq_book_type.nextval,’普通图书',null);

insertintobook_typevalues(seq_book_type。

nextval,'样本图书',null);

insertintobook_typevalues(seq_book_type。

nextval,'过刊',null);

insertintobook_typevalues(seq_book_type。

nextval,’开架书刊’,null);

insertintobook_classvalues(seq_book_class.nextval,’计算机类',null);

insertintobook_classvalues(seq_book_class。

nextval,'管理类’,null);

insertintobook_classvalues(seq_book_class.nextval,'外语类’,null);

insertintobook_classvalues(seq_book_class。

nextval,'文学类’,null);

insertintorule(booktype,readertype,days,num,renew,overtime)values(2,1,1,3,0,1);

insertintorule(booktype,readertype,days,num,renew,overtime)values(1,1,30,3,1,0.1);

insertintoadminvalues(seq_admin。

nextval,’admin’,’11’);

insertintoadminvalues(seq_admin.nextval,'test’,’22’);

insertintoreader(readerid,name,telephone,email,right,readertype)values(seq_reader.nextval,’张大为’,'1345487676','zdw@dk’,0,1);

insertintoreader(readerid,name,telephone,email,right,readertype)values(seq_reader.nextval,’王小二’,'1345482324’,’wxr@dk',0,1);

insertintobook(bookid,bookname,author1,publish,price,booktype,bookclass,isbn)values(seq_book.nextval,'计算机程序设计','writer’,’neusoft’,35。

5,1,1,'445-445');

insertintobook(bookid,bookname,author1,publish,price,booktype,bookclass,isbn)values(seq_book。

nextval,'数据结构’,'smith','neusoft’,45.5,1,1,’45445—445’);

insertintoborrow(readerid,bookid,borrowdate,due)values(1,1,sysdate,sysdate+30);

insertintoborrow(readerid,bookid,borrowdate,due)values(2,2,sysdate,sysdate+30);

insertintopreconcert(readerid,bookid,predate)values(1,2,sysdate);

insertintopreconcert(readerid,bookid,predate)values(2,1,sysdate);

commit;

在SQLDeveloper中插入数据截图3—11所示:

 

图3-11

3.3视图设计

为了方便查询读者借阅图书的情况以及图书的借阅统计,创建下列视图.

〈1>创建名为“reader_book_view”的视图,包括读者信息、所借阅图书信息及借阅信息.

CREATEORREPLACEVIEWreader_book_view

AS

SELECTname,bookname,borrowdate,due,last_dueFROMreadet,book,borrow

WHWERreader.teadid=borrow。

readidANDborrow。

bookid=book。

bookid;

〈2〉创建名为“book_type_stat_view”的视图,包括各类图书的借阅统计信息。

CREATEORREPLACEVIEWbook_type_stat_view

AS

SELECTbooktype,COUNT(booktype)FROM(

SELECTreaderid,borrow.booktype,booktype,borrowdate,due,last_due

FROWborrow,bookWHWERbook.bookid=borrow.bookid)

在SQLDeveloper中创建部分视图截图3—12所示:

图3-

12

3。

4存储过程、函数、包的设计

(1)检查借阅是否超期的存储过程。

Createorreplaceprocedurep_days_from_due(v_readeridnumber,v_bookidnumber,v_daysoutnumber)

As

Begin

Selectdue–sysdateintov_daysfromborrowwherereaderid=v_readeridandbookid=v_bookid;

Exception

Whenothersthen

V_days:

=0;

End;

 

在SQLDeveloper中检查借阅是否超期的存储过程截图3-13所示:

图3—13

(2)计算图书应归还日期的函数.

Createorreplacefunctionf_date_is_due(v_readeridnumber,v_bookidnumber)

Returnvarchar2as

V_booktypenumber;

V_readertypenumber;

V_datevarchar2(10);

Begin

Selectbooktypeintov_booktypefrombookwherebookid=v_bookid;

Selectreadertypeintov_readertypefromreaderwhere

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1