《图书借阅管理系统报告.doc》由会员分享,可在线阅读,更多相关《图书借阅管理系统报告.doc(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、广东技术师范学院天河学院数据库原理及应用课程设计报告 题 目: 图书馆管理系统 设 计 者 :陈达馨 02 梁晓敏 19 郑 畅 51 专业: 计算机科学与技术 班级: 计科133班 指导教师: 蔡柳萍 所属系部: 计算机系2014年12月20日至25日 摘 要目前,我国的科技水平高速发展,计算机作为今天使用最广的现代化工具已深入到各个领域,并且正在成为未来社会信息社会的重要支柱。在这样的大背景下,现代图书馆的管理方式,资源建设等方面都发生了重大变化,这种变化表现在图书馆工作,管理和服务平台发生的变化,图书馆不再是传统的手工操作,人工管理,而是全面实行计算机管理。本系统使用Microsoft
2、Visual Studio 2010开发工具和SQL SERVER 2005数据库,一方面使用SQL语句来完成数据库后台操作,另一方面运用VS语言来实现前台网页的操作,将这两方面结合起来,在网页中展示整个图书管理系统的数据操作。此系统功能分为面向读者和面向管理员两部分,其中读者可以进行查询书籍及查询借还情况等操作,管理员可以完成图书和读者的添加,删除,删除,修改,统计,用户管理和备份与恢复。关键词:图书,Microsoft Visual Studio 2010,SQL SERVER 2005,数据库设计,图书管理系统目录摘 要II目录III一 实验概述11. 开发背景12. 意义1二 需求分析
3、21.1系统目标21.2需求定义21.3功能需求3三 概要设计41.思路设计框架42.E-R图42.1局部ER模式4四、 数据库设计44.1 表结构:确定表结构。44.2 存储过程10五.应用系统设计(前台)165.2登录界面175.2.2 管理员界面205.3.2 图书借阅界面275.4数据库权限界面28六 总结31一 实验概述1. 开发背景 随着我国市场经济的迅速发展和人们生活水平的不断提高,图书馆藏书的树木逐渐增大,这也挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,通过使用SQL SERVER 2005创建的图书管理系统可以让管理人员
4、方便而快捷的进行管理、查询、借阅、录入等工作。图书管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。我们小组开发图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。2. 意义该系统具有管理员管理图书和读者管理图书的功能,一方面管理员可以查询所管理的用户的信息和增加,修改,删除用户,并且可以添加新的图书信息。另一方面读者可以查询自己的基本信息和修改登录密码,对已借的书籍可以实现续期的操作和购买图书操作。二 需求分析1.1系统目标图书管理信息系统是典型的信息管理系统(MIS),
5、其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强.数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。系统开发的总体任务是实现各种信息的系统化,规范化和自动化。1.2需求定义图书馆管理系统开发。系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。本系统主要实现对图书馆信息的管理,主要功能为管理有关读者、图书、借阅、查询、删除和管理员的信息等。本系统结构分为读者信息管理、图书信息管理,读者管理可以浏览读者的信息,可以对读者信息进行维护。图书管理可以浏览图书的信息,可以对图书信息进行维
6、护。借阅管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。本系统主要解决的问题是利用关键字对数据库进行查询。本系统的宗旨是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效。1.3功能需求1、完成馆藏全部图书的查询和统计等功能。2、完成管理员管理用户信息的查询,添加,修改,删除的操作。 3、完成管理员管理图书的添加,进库,修改,查询,删除等操作。4、完成读者对个人信息的查询,对图书信息的查询,对借还情况的查询和修改密码等功能。 5、安全查询模块分创建备份,数据备份和数据恢复,作用分别为创建备份设备,将数据库进行备份,对已删除的数据
7、进行恢复。三 概要设计1.思路设计框架 系统功能模块图 图书馆管理系统 读者模块图书管理员模块 登录界面登录界面借还图书信息读者信息查询修改个人密码图书借阅管理读者信息管理查询管理的用户图书类别管理图书信息管理图书归还管理图3.1.12.E-R图2.1局部ER模式读者表(读者编号,姓名,性别,出生日期,年龄,电话,注册日期,证件类型,证件号码,押金,借书数量,职业)性别读者编号姓名证件号码押金密码年龄职业注册日期电话借书数量证件类型读者表出生日期图3.2.1图书表(图书编号,类别编号,书名,作者,译者,出版社,出版日期,价格,库存数量)图书编号类别编号书名作者价格译者库存数量出版日期出版社图书
8、表 图3.2.2管理员表(管理员编号,密码,姓名,性别,年龄,电话,证件号码,工作日期)管理员编号密码姓名性别年龄证件号码电话工作日期管理员表 图3.2.3订购表(图书编号,管理员编号,订购数量,订购日期,折扣)借阅表(借阅编号,图书编号,管理员编号,读者编号,借阅日期,归还日期,是否归还)库存表(图书编号,管理员编号,现存数量)图书分类表(类别编号,图书类名,可借天数,预期罚金) 借书押金 职业 密码 读者编号 姓名性别借阅编号图书编号 出生日期电话 读者信息 管理员编号注册日期 读者编号 年龄 借阅日期 罚款金额 证件类型 证件号码 归还日期 押金 分类类别名称 借阅 是否归还管理 类别编
9、号 可借天数证件号码 工作日期图书信息密码管理员信息 管理作者姓名管理员编号电话性别 年龄 出版图书编号 译者图书编号 折扣 订购 库存数量书名管理员编号出版社 订购数量 订购日期 价格 类别编号 图3.2.4四、 数据库设计 4.1 表结构:确定表结构。 新建一个数据库-library create database library 4.1.1 涉及的表 图书表属性类型大小能否为空约束图书编号varchar13否主键类别编号Int否外键书名varchar40否作者varchar20否译者varchar20否出版社varchar50否出版日期Datetime否价格money否库存量 int否图
10、4.1.1.1 图书分类表属性类型大小能否为空约束类别编号int否主键图书类名varchar20否可借天数Int否预期罚金Money否 图4.1.1.2读者表属性类型大小能否为空约束读者编号 var char13否主键姓名varchar10否密码 varchar20否性别char2否年龄Int否出生日期datetime否证件类型char10否证件号码Varchar20否注册日期datetime否电话varchar13否押金Money否借书数量Int否职业Char10否图4.1.1.3 借阅表属性类型大小能否为空约束借阅编号Int否主键图书编号Varchar13否外键管理员编号Varchar20
11、否外键读者编号Varchar13否外键借阅日期Datetime否是否归还Varchar2否归还日期Datetime否图4.1.1.4 管理员表属性类型大小能否为空约束管理员编号Varchar20否主键姓名Varchar10否密码Varchar20否性别char2否年龄Int否电话varchar13否证件号码Varchar20否工作日期datetime否图4.1.1.5订购表属性类型大小能否为空约束图书编号Varchar10否主键管理员编号Varchar20否订购数量Int否订购日期Datetime否折扣Float是图4.1.1.6库存表属性类型大小能否为空约束图书编号Varchar13否主键管
12、理员编号Int否现存数量Int否图4.1.1.74.1.2 建表的SQL语句1.create table 读者表(读者编号 varchar(13) not null primary key,姓名 varchar(10) not null,密码 varchar(20) not null,性别 char(2) not null check(性别=男 or 性别=女) default 男,出生日期 datetime not null,年龄 int not null,电话 varchar(13) not null,注册日期 datetime not null,证件类型 char(10) not nul
13、l,证件号码 varchar(20) not null,押金 money not null,借书数量 int not null check(借书数量 between 1 and 7),职业 char(10) null)2.create table 图书表(图书编号 varchar(13) not null primary key, 类别编号 int not null foreign key references 图书分类表(类别编号),书名 varchar(40) not null,作者 varchar(20) not null,译者 varchar(20) not null,出版社 varc
14、har(50) not null,出版日期 datetime not null,价格 money not null,库存数量 int not null)3.create table 管理员表(管理员编号 varchar(20) not null primary key,密码 varchar(20) not null,姓名 varchar(10) not null,性别 char(2) not null check(性别=男 or 性别=女) default 男,年龄 int not null,电话 varchar(13) not null,证件号码 varchar(20) not null,工
15、作日期 datetime not null)4.create table 借阅表(借阅编号 int not null primary key,图书编号 varchar(13) not null foreign key references 图书表(图书编号),管理员编号varchar(20) not null foreign key references 管理员表(管理员编号),读者编号 varchar(13) not null foreign key references 读者表(读者编号),借阅日期 datetime not null default getdate(),归还日期 date
16、time not null default getdate(),是否归还 varchar(2) not null)5.create table 图书分类表(类别编号 int not null primary key,图书类名 varchar(20) not null,可借天数 int not null default 30,预期罚金 money null)6.create table 库存表(图书编号 varchar(13) not null primary key,管理员编号 int not null,现存数量 int not null)4.1.3 数据库中表截图图4.1.34.1.4 约束
17、: 1、图书表 图书编号列设置主键约束; 2、图书分类表 类别编号列设置主键; 3、读者表 读者编号列设置主键约束; 性别列设置check约束,取值范围为“男”或“女”,设置默认值约束,默认值设为“男” ; 4、借阅表 借阅编号列合为设置主键约束; 图书编号列设置外键约束,同图书表的主键图书标号列相关联; 管理员编号列设置外键约束,同管理员表的主键管理员编号列相关联; 读者编号列设置外键约束,同读者表的主键读者编号列相关联; 5、 管理员表 管理员编号列设置主键约束; 6. 订购表 图书编号列设置主键约束; 7.库存表图书编号列设置主键约束;4.2 存储过程4.2.1图书查询存储过程为了方便在
18、首页根据图书类型和书名来查询用户所要查询的图书,创建一个存储过程“p_tscx”:create proc p_tscxa varchar(20),b varchar(30)asif exists(select* from 图书表a,图书类型表b where 图书类型=a and 书名=b)beginselect*from 图书表a,图书类型表bwhere 图书类名=a and 图书名称=b and a.类型编号=b.类型编号select 这是你需要查询的书籍endelseselect请输入书籍名称4.2.2新建用户存储过程为了方便新建用户并给用户分配权限,创建一个存储过程“p_addgrant
19、”:create proc p_addgranta varchar(20),b varchar(20),c varchar(20),d varchar(20)asif a and bbeginexec sp_addlogin a,bselect 提示=创建登录用户成功!if c请选择beginexec sp_addsrvrolemember a,cif d请选择beginexec sp_grantdbaccess aexec sp_addrolemember d,aendendendelseselect 提示=用户名或密码不能为空4.2.3删除用户存储过程为了方便删除不用的用户,创建一个存储过
20、程“p_dellogin”:create proc p_dellogina varchar(20)asexec sp_droplogin aselect 删除用户成功!4.2.4添加管理员存储过程为了方便添加管理员,创建一个存储过程“p_tjgly”create proc p_tjglya varchar(20),b varchar(20),c varchar(10),d char(2),e varchar(13),f datetimeasif exists(select * from 管理员表where 管理员编号=a)select 警告=该账号已存在elsebegininsert 管理员表
21、values(a,b,c,d,e,f)select 成功=添加成功end4.2.5添加读者存储过程为了方便添加读者,创建一个存储过程“p_tjdz”create proc p_tjdza varchar(13),b varchar(20),c varchar(10),d char(2),e datetime,g varchar(13),h datetime,j intasif exists(select * from 读者表where 读者编号=a)select 警告=该账号已存在elsebegininsert 读者表values(a,b,c,d,e,g,h,j)select 成功=添加成功e
22、nd4.2.6添加借阅记录存储过程为了方便添加借阅记录过程,创建一个存储过程“p_tjjyjl”create proc p_tjjyjla int,b varchar(13),c varchar(20),d char(13),e datetime,f varchar(15)asif exists(select * from 借阅表where 借阅编号=a)select 警告=该记录已存在elsebegininsert 借阅表values(a,b,c,d,e,f)select 成功=添加成功End4.3 权限设置我们所设计的图书管理系统根据实际情况会用到两类用户,一类是管理员,一类是读者,管理员
23、拥有所有的权限,故管理员使用系统自带的Sa登陆,管理数据库,而读者只允许查看与个人信息和借阅图书信息。授予读者查看个人信息的权限命令:(此命令需到后台数据库执行,前台创建用户时只可给予固定的服务器角色)五.应用系统设计(前台)5.1图书检索界面用户不需登录就可以查询图书馆已有的书籍,只要输入查询的书的类型和书名即可查询想要的书籍的信息图5.1.1代码如下: Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cn As New Sql
24、Connection cn.ConnectionString = server=USER-TLSQLEXPRESS;database=library;integrated security=true cn.Open() If cn.State = ConnectionState.Open Then Dim aa As String = exec p_tscx + DropDownList1.Text + , + TextBox1.Text + Dim ad As New SqlDataAdapter(aa, cn) 数据集 Dim dess As New DataSet ad.Fill(des
25、s, abc) GridView1.DataSource = dess.Tables(abc) GridView1.DataBind() End IfEnd Sub5.2登录界面5.2.1 用户登录界面用户要根据个人的学号和密码登录图书管理系统,当登录成功后,才能查看自己的个人信息以及进行一些图书管理操作。 图5.2.1代码如下: Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 连接数据库,执行命令, Dim cn As New SqlC
26、onnection cn.ConnectionString = server=USER-TLSQLEXPRESS;database=library;uid= + TextBox1.Text + ;pwd= + TextBox2.Text cn.Open() If cn.State = ConnectionState.Open Then If RadioButtonList1.SelectedItem.Text = 管理员 Then Dim da As SqlDataReader Dim ba As String = select * from 管理员表 where 管理员编号= + TextB
27、ox1.Text + Dim cmd As New SqlCommand cmd.CommandText = ba cmd.Connection = cn da = cmd.ExecuteReader() If da.HasRows = True Then da.Read() Response.Redirect(gly.aspx) Else Response.Write(管理员表中不存在该用户!) End If Else Dim dy As SqlDataReader Dim ba As String = select * from 读者表 where 读者编号= + TextBox1.Tex
28、t + Dim cmd As New SqlCommand cmd.CommandText = ba cmd.Connection = cn dy = cmd.ExecuteReader() If dy.HasRows = True Then dy.Read() Response.Redirect(dz.aspx) Else Response.Write(读者表中不存在该用户!) End If End If End IfEnd Sub5.2.2 管理员界面图5.2.2添加管理员代码:Dim cn As New SqlConnection cn.ConnectionString = server
29、=USER-TLSQLEXPRESS;database=library;integrated security=true cn.Open() If cn.State = ConnectionState.Open Then Dim ba As String = exec p_tjgly + TextBox1.Text + , + TextBox2.Text + , + TextBox3.Text + , + TextBox4.Text + , + TextBox5.Text + , + TextBox6.Text + Dim ad As New SqlDataAdapter(ba, cn) Di
30、m dess As New DataSet ad.Fill(dess, abc) GridView2.DataSource = dess.Tables(abc) GridView2.DataBind() Dim aa As String = exec p_xstjgly + TextBox1.Text + Dim dd As New SqlDataAdapter(aa, cn) Dim dset As New DataSet dd.Fill(dset, ss) GridView1.DataSource = dset.Tables(ss) GridView1.DataBind() End If添
31、加读者代码:Dim cn As New SqlConnection cn.ConnectionString = server=USER-TLSQLEXPRESS;database=library;integrated security=true cn.Open() If cn.State = ConnectionState.Open Then Dim da As String = exec p_tjdz + TextBox1.Text + , + TextBox2.Text + , + TextBox3.Text + , + TextBox4.Text + , + TextBox5.Text
32、+ , + TextBox7.Text + , + TextBox8.Text + , + TextBox10.Text + Dim ad As New SqlDataAdapter(da, cn) 数据集 Dim dess As New DataSet ad.Fill(dess, abc) GridView2.DataSource = dess.Tables(abc) GridView2.DataBind() Dim aa As String = exec p_xstjdz + TextBox1.Text + Dim dd As New SqlDataAdapter(aa, cn) Dim
33、dset As New DataSet dd.Fill(dset, ss) GridView1.DataSource = dset.Tables(ss) GridView1.DataBind() End If5.3个人图书管理系统界面5.3.1 个人信息界面当读者成功登录后就跳转到读者界面,该页面可以查看借阅记录和个人信息图5.3.1查看借阅记录代码:Dim cn As New SqlConnection cn.ConnectionString = server=USER-TLSQLEXPRESS;database=library;integrated security=true cn.Ope
34、n() If cn.State = ConnectionState.Open Then Dim da As String = select * from 借阅表 Dim cmd As New SqlCommand cmd.CommandText = da cmd.Connection = cn cmd.ExecuteNonQuery() Dim ad As New SqlDataAdapter(da, cn) Dim dset As New DataSet ad.Fill(dset, qq) GridView1.DataSource = dset.Tables(qq) GridView1.Da
35、taBind() End If查看个人信息代码:Dim cn As New SqlConnection cn.ConnectionString = server=USER-TLSQLEXPRESS;database=library;integrated security=true cn.Open() If cn.State = ConnectionState.Open Then Dim da As String = select * from 读者表 where 读者编号= + TextBox1.Text + Dim cmd As New SqlCommand cmd.CommandText = da cmd.Connection = cn cmd.ExecuteNonQuery() Dim ad As New SqlDataAdapter(da, cn) Dim dset As New DataSet ad.Fill(dset, qq) GridView1.DataSource = dset.Tables(qq) GridView1.DataBind() End If修改个人密码:Dim cn As New SqlConnection cn.ConnectionString = server=USER-TLSQLEXPRESS;database=library;integ
限制150内