1、2013-2014学年第二学期大型数据库技术考查报告课题名称:图书管理系统系统班 级: 11软工java2班 学 号: 1115115020 姓 名: 戴春奇 成 绩: 2014年5月 1 课题概述1.1 课题简介随着社会的发展,人们对知识的需求也不断的增长。在这种形式下,人们就要不断的学习,不断的给自己充电,而图书馆就自然而然地在人们的生活中占据了一定的位置,如何科学的管理图书馆不但关系到读者求知的方便程度,也关系到图书馆的发展。图书馆作为一种信息资源的集散地,用户借阅资料繁多,包含很多的信息数据的管理。现今,有很多的图书馆都是初步开始使用,有些甚至尚未使用计算机进行信息管理。数据信息处理工
2、作量大,容易出错;用于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出。因此一个好的图书馆管理系统是非常重要的。1.2 功能描述1登录模块用户登录:用户在登陆页面登陆,登陆成功进入系统。管理员登陆:用于管理员的登陆,在后台登陆页面登陆,登陆成功进入系统。图书管理员与系统管理员后台功能不一样。查询用户表,对应用户名、密码正确则进入系统,对应用户名密码不正确则显示相应信息。2图书管理模块对图书进行添加、查询、修改、删除、添加。将输入的图书信息添加到数据库图书表中,以方便进行各种查询及更新操作,根
3、据输入的图书名称或作者,查询数据库图书表中的相应记录并显示相应图书信息,更新数据库图书表中对应记录并显示更新后的图书信息,删除数据库图书表中对应记录。3副本信息模块对图书的副本信息进行添加、修改、删除。将输入的图书副本信息添加到副本表中,并分配一个独立的中南码根据输入的中南码或国际标准图书编码,查询图书副本表,显示副本信息更新副本表的数据库、删除副本表中所对应的图书信息、修改副本表中错误的信息并更新数据库。4用户管理模块对用户进行添加、删除、修改。将输入的用户信息添加到用户表中,并分配一个独立的用户号根据输入的用户名的姓名或生日,查询用户表,显示用户信息更新用户表的数据库、删除用户表中所对应的
4、、修改用户中错误的信息并更新数据库。2、数据库设计及实现2.1 数据库表清单1、图书信息-Books表编号字段数据类型数据长度能否为空中文名备注1ISBNChar20否国际标准图书编码主码2TitleChar30是书名3PubnameChar30是出版者名4AuthorChar30是作者名5AuthornoNumber30是作者号6ZNCodeNumber30是中南码2、副本-Copies表编号字段数据类型数据长度能否为空中文名备注1CopyNoNumber10否副本编号主码2ISBNChar20是国际标准图书编码3、作者信息-Authors表编号字段数据类型数据长度能否为空中文名备注1Aut
5、horNoNumber10否作者号主码2AuthorNameChar20是作者名4、类别-Categories表编号字段数据类型数据长度能否为空中文名备注1ZNCodeNumber20否中南码主码2CateNameChar20是目录名5、作家-Writers表编号字段数据类型数据长度能否为空中文名备注1ISBNChar20否国际标准图书编码主码2AuthorNoNumber20否 作者号主码6、出版社-Publishers表编号字段数据类型数据长度能否为空中文名备注1PubnameChar30否出版者名主码2AddressChar50是地址7、用户-Users表编号字段数据类型数据长度能否为空
6、中文名备注1UsersNoNumber12否用户编号主码2UserNameChar20否用户名3UserPwdChar20否用户密码4QuanxiaNumber20否权限5BirthdayDate否用户生日6EmailChar30是用户的邮箱7TelChar20是用户的联系电话8AddressChar20是籍贯2.2 创建表空间/创建数据表空间SQL create tablespace MYTBS 2 datafile e:oracleMYTBSMYTBS1.dbf size 500m;表空间已创建。SQL alter tablespace MYTBS add datafile f:oracl
7、eMYTBSMYTBS2.dbf size 500m;表空间已更改。2.3 创建用户配置文件SQL Create pro limit 2 password_life_time 30 3 failed_login_attempts 5 4 password_lock_time 7;配置文件已创建2.4 创建用户及分配权限SQL create user DCQ identified by 1115115020 default tablespace MYTBS;用户已创建。SQL grant connect,resource,create view to DCQ;授权成功。SQL commit;提交
8、完成。SQL connect DCQ/1115115020;已连接。2.5 基本表实现 2.5.1 图书管理系统表的实现(1) 表的功能概述。表的存储空间的分配为books表和users表分配1M,其他的表都分配256k具体表的数据列、数据类型、主键、外键、是否为空都在数据库表清单中详细描述. (2)表的实现代码1、图书信息-Books表SQL run 1 create table Books 2 (isbn char(20) not null primary key,title char(30),pubname char(30), 3 author char(30),authorno num
9、ber(30),zncode number(30) 4 tablespace MYTBS 5* storage(initial 1M)表已创建。2、 副本-Copies表SQL create table copies 2 (copyno number(10) not null primary key, 3 isbn char(20) 4 tablespace MYTBS 5 storage(initial 256k);表已创建。3、 作者信息-Authors表SQL create table Authors 2 (zncode number(20)not null primary key,ca
10、tename char(20) 3 tablespace MYTBS 4 storage(initial 256k);表已创建。4、 类别-Categories表SQL create table Categories 2 (zncode number(20)not null primary key, 3 catename char(20) 4 tablespace MYTBS 5 storage(initial 256k);表已创建。5、 作家-Writers表SQL create table Writers 2 (isbn char(20)not null, 3 authorno numbe
11、r(20)not null, 4 constraint pk_writers primary key(isbn,authorno) 5 tablespace MYTBS 6 storage(initial 256k);表已创建。6、 出版社-Publishers表SQL create table Publishers 2 (pubname char(30)not null primary key,address char(50) 3 tablespace MYTBS 4 storage(initial 256k);表已创建。7、 用户-Users表SQL create table Users
12、2 (UserName char(20) not null, 3 UserPwd char(20) not null, 4 UserNo number(12) primary key, 5 Birth date not null, 6 Quanxian number(20), 7 Email char(30), 8 TEL char(20), 9 Address char(20) 10 tablespace MYTBS 11 storage(initial 1M);表已创建。分配权限:grantselectonbookstoreader;grantselectonpublisherstorea
13、der;grantselectonauthorstoreader;grantselectoncopiestoreader;grantselectonwriterstoreader;grantselectoncategoriestoreader; 2.6 索引表的实现 2.6 图书管理系统表的实现 索引的创建代码(1) 在Books表中的书名创建索引SQL create index Books_title_idx on Books(title) 2 pctfree 20 3 tablespace MYTBS;索引已创建。(2) 为Users表的姓名创建索引SQL create index Use
14、rs_username_idx on Users(username) 2 pctfree 20 3 tablespace MYTBS;索引已创建。(3) 为copies表copyNo列添加外键约束,一本书对应只能有一个人借出去,不可能有同时有很多人借同一本书。SQL alter table copies add constraint fk_copy foreign key(copyno) references 2 Users(UserNo);表已更改。SQL commit;提交完成。2.7 分区表的实现创建一个Books副本books2表,并为其创建分区,使用Hash列分区(分区列author
15、no),要求创建的两个分区由系统自动生成分区名,并放置在表空间MYTBS1和MyTBS2中实现代码:SQL create table books2 2 as select * from Books 3 Partition by hash(authorno) 4 Partitions 2 5 Store in (MYTBS1, MYTBS2);3. 功能实现3.1系统登录(1)功能简介用户登录验证,可以创建一个存储过程,输入参数是用户帐号、用户密码,输出参数是整型值。 -1表示登录失败,0表示没有此用户,1表示登录成功。(2)实现代码set serveroutput on;create or r
16、eplace procedure check_users( v_name in users. UserName%type, v_pwd users.UserPwd%type, flag out number)IS counts number; pcounts number;BEGIN select count(*) into counts from users where UserName=v_name; IF counts0 THEN select count(*) into pcounts from users where UserPwd=v_pwd; IF pcounts0 THEN f
17、lag:=1; dbms_output.put_line(登录成功!); END IF; ELSE flag:=0; dbms_output.put_line(没有此用户!); END IF;exception when no_data_found then flag:=-1; dbms_output.put_line(登录失败!);END CHECK_USERS;-调用用户登录验证SET serveroutput ON;DECLARE V_NAME VARCHAR2(25); V_PASSWORD VARCHAR2(25); V_RETURN NUMBER(5);BEGIN V_NAME :
18、= admin; V_PASSWORD:= admin; CHECK_USERS(v_name=V_NAME,v_pwd=V_PASSWORD,flag=V_RETURN); DBMS_OUTPUT.PUT_LINE(V_NAME = | V_NAME); DBMS_OUTPUT.PUT_LINE(V_PASSWORD = | V_PASSWORD);END;3.2用户注册(1)功能简介本功能为管理员注册,使用过程insert_ Users实现。(2)代码实现create or replace procedure insert_ Users (v_Id in Users.UserNo%type
19、,v_pwd in Users.userpwd%type,v_ name in Users.username %typev_ Address in Users.Address %typev_ TEL in Users.TEL %type)is begininsert into Users values(v_id, v_pwd, v_ name,v_ Address,v_ TEL);dbms_output.put_line(注册成功!);end insert_Users;(3)运行结果调用过程:set serveroutput on;exec insert_Users (01, 11151150
20、20, daichunqi,云南,123456);3.3用户修改信息(1)功能简介本功能为用户修改信息,使用过程update_ Users实现。(2)代码实现create or replace procedure update_ Users (v_Id in Users.UserNo%type,v_pwd in Users.userpwd%type,v_ name in Users.username %typev_ Address in Users.Address %typev_ TEL in Users.TEL %type)is beginupdate Users set userpwd=v_pwd, username=v_name,Address=v_ Address,TEL=v_ TEL where UserNO= v_Id);dbms_output.put_line(修改成功!);end update_Users;(3)运行结果调用过程:set serveroutput on;exec update_Users (01, 1115115020, daichunqi,云南,123456);