数据库课程设计图书管理系统.docx
《数据库课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计图书管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
![数据库课程设计图书管理系统.docx](https://file1.bdocx.com/fileroot1/2022-11/28/cd93d2cc-b59e-477c-a176-3e0a5268c4b2/cd93d2cc-b59e-477c-a176-3e0a5268c4b21.gif)
数据库课程设计图书管理系统
第1章绪论
1.1系统开发背景介绍
现在随着人们生活质量的提高,人们对图书的需求越来越来丰富,并且需要图书的数量也日趋增加。
随着人们对图书需求的增加,图书管理者对图书的管理就日趋的困难,传统的纯手工记录图书记录已经发挥不了它原有的功能,反之,还会影响图书管理的功能,使用效率极低。
在这样的人们对图书需求日趋增加的情况下,电子记录管理图书就被广泛应用起来。
所以图书管理系统就应用而生。
1.2系统开发工具
系统运行平台:
Windows7。
系统前台开发平台即:
VisualBasic6.0。
系统后台开发平台即数据库管理系统软件:
SQLServer2000。
1.3系统主要内容简介
本系统主要是针对图书管理中出现的一些问题提供一些解决方法,并且应运计算机信息管理系统结合。
其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
前台我们采用功能强大的可视化开发软件VB开发设计主界面,利用SQLServer做为后台数据库。
主要分成登录信息管理、管理员信息管理、借阅/还书信息管理、借阅者信息管理、图书信息管理等功能模块。
第2章需求分析
2.1总体需求
这一章将介绍本系统的各个部分的需求。
2.2管理员的需求分析
管理者基本信息,包括管理者编号,管理者姓名,登陆密码,电话号码。
其中本系统中还包含管理者信息的修改,增加,删除等功能。
并且这个系统管理员经过登陆窗口才可进入。
管理员在整个系统中起到统筹全局的功能,管理员可以对系统中各个部分起到控制的作用,可以增加、修改、删除借阅者信息,增加、修改图书信息,并且可以查询借阅与还书情况,在本系统中贯穿整个系统。
2.3借阅/还书的需求分析
借阅基本信息包括借阅者信息,借阅者已借阅书籍,借书日期,借书编号等信息。
还书基本信息包括借阅者编号,借阅者还书的编号,并且附带有查询功能,查看借阅者借阅的图书是否过期。
2.4借阅者的需求分析
借阅者基本信息包括借阅者借阅卡号,借阅者姓名,借阅者学号,所在院校,电话号码等基本信息。
其中本系统中还包含借阅者的增添与删除,可以实现新生入学借阅的增加,毕业生的借阅信息的删除功能。
2.5图书信息的需求分析
图书基本信息包括图书编号,图书姓名,图书作者,图书ISBN,图书种类,图书数量等基本信息。
本系统中增加了图书库存管理功能,可以查看图书所在库存的状态,看是否可以借阅。
并且增加了图书增加功能,图书修改功能,图书查询功能,可以查询图书在库各种信息,与借阅者的联系也一目了然。
2.6实际功能
图2-1.图书管理系统结构图
第3章概念结构设计
3.1E-R图简介
实体-联系图(Entity-RelationDiagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器,独立于DBMS的ER图模型。
通常将它简称为ER图,相应地可把用ER图描绘的数据模型称为ER模型。
ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型。
构成E-R图的基本要素是实体、属性和联系,其表示方法为:
实体型:
用矩形表示,矩形框内写明实体名;
属性:
用椭圆形或圆角矩形表示,并用无向边将其与相应的实体连接起来;多值属性由双线连接;主属性名称下加下划线;
联系:
用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型
在E-R图中要明确表明1对多关系,1对1关系和多对多关系。
1对1关系在两个实体连线方向写1;
1对多关系在1的一方写1,多的一方写N;
多对多关系则是在两个实体连线方向各写N,M。
实体与属性之间并没有形式上可以截然划分的界限,但可以给出两条准则:
(1)作为“属性”不能再具有描述的性质;
(2)“属性”不能与其他实体具有联系。
3.2本系统的E-R图
管理员
ID
密码
工作时间
编号
借阅者
图书
借阅卡编号
年级
学号
姓名
电话
编号
名称
作者
ISBSN
种类
数量
操作
管理
借阅
返还
借书日期
图书期限
mn
nm
nm
nm
图3-1.图书管理系统总E-R图
第4章数据库设计
4.1数据库表
图书管理数据库含7个表,它们分别为:
图书表(Book);日期限定表(DataResrict);年级表(Grade);学院表(Institute);管理员表(Lidrarian);借阅者表(Borrower);书种表(Title)。
我们来看一下表的结构:
4.1.1图书表
图书表包括图书编号、书名、状态、借阅卡号、被借阅时间属性,各个属性的类型、长度、约束条件如表示
表4-1.图书表
4.1.2日期限定表
日期限定表包括书种、天数属性,各个属性的类型、长度、约束条件如表示
表4-2.日期限定表
4.1.3年级表
年级表包括年级编号、名称属性,各个属性的类型、长度、约束条件如表示
表4-2.年级表
4.1.4学院表
学院表包括学院编号、名称属性,各个属性的类型、长度、约束条件如表示
表4-4.学院表
4.1.5管理员表
管理员包括编号、ID、密码、工作时间、电话属性,各个属性的类型、长度、约束条件如表示
表4-5.管理员表
4.1.6借阅者表
借阅者包括借阅卡编号、学院编号、年级编号、姓名、学号、电话、已借书数目等属性,各个属性的类型、长度、约束条件如表示
表4-6.借阅者表
4.1.7书种表
书种表包括书名、作者、ISBSN、种类、数目等属性,各个属性的类型、长度、约束条件如表示
表4-7.书种表
第5章数据库的实现与程序
5.1登陆界面设计
输入“用户名”,“密码”,点击“确认”进入主题框;
图5-1登陆
该登陆界面代码如下所示:
源代码:
PublicOKAsBoolean
PrivateSubcmdCancel_Click()
OK=False
Me.Hide
EndSub
PrivateSubcmdLogin_Click()
'检验数据的有效性
IfTrim(txtUserName.Text="")Then
MsgBox"请输入用户名!
"
txtUserName.SetFocus
ExitSub
ElseIfTrim(txtPassword="")Then
MsgBox"请输入密码!
"
txtPassword.SetFocus
ExitSub
Else
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECT*FROMLibrarianWHEREId='"+txtUserName+"'ANDPassword='"+txtPassword+"'"
Setrst=myDbOper.querySQL(sql)
If(Notrst.EOF)Then
OK=True
Me.Hide
FrmMain.Show0
Else
MsgBox"用户名和密码错误,请重新输入."
EndIf
rst.Close
'关闭连接
myDbOper.DB_DisConnect
EndIf
EndSub
PrivateSubForm_Load()
EndSub
PrivateSubLabel1_Click()
EndSub
5.2管理员管理设计
管理员窗口的设计主要包括“修改”、“添加”、“删除”,“刷新”等功能。
添加管理员是依照窗口的信息依次填写,点击“提交”即可;
图5-2进入管理员信息栏
图5-3.添加管理者
该管理者添加的代码如下:
源代码:
PrivateSubcmdExit_Click()
Me.Hide
EndSub
PrivateSubcmdSubmit_Click()
'检验数据的有效性
IfTrim(txtId)=""Then
MsgBox"请输入登录Id"
ExitSub
EndIf
IfTrim(txtPwd)=""Then
MsgBox"请输入登录密码"
ExitSub
EndIf
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECT*FROMLibrarianWHEREseq='"+Trim(txtSeq)+"'"
Setrst=myDbOper.querySQL(sql)
Ifrst.EOF=TrueThen
Withrst
.AddNew
!
seq=Me.txtSeq
!
id=Me.txtId
!
Password=Me.txtPwd
!
onJobTime=Me.txtTime
!
telephone=Me.txtPhone
.Update
EndWith
MsgBox"信息添加成功."
Else
MsgBox"该编号已经存在,请重新输入."
EndIf
rst.Close
'关闭连接
myDbOper.DB_DisConnect
EndSub
PrivateSubForm_Load()
EndSub
PrivateSubFrame1_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
EndSub
PrivateSubLabel1_Click()
EndSub
PrivateSubtxtId_Change()
EndSub
PrivateSubtxtPwd_Change()
EndSub
删除图书管理员是在管理员列表中点击要删除的那一行,点击“删除”即可;
图5-4删除管理者
修改管理员首先在管理员列表中点击要修改的管理员信息,在编辑区填写要修改的信息,点击“修改”即可;
图5-5修改管理者
图5-6刷新管理员列表
该管理者的修改、删除代码如下所示:
源代码:
PrivateSubcmdAdd_Click()
FrmAddManager.Show1
EndSub
PrivateSubcmdDelete_Click()
DimtmpSeqAsString
IfAdodc1.Recordset.BOF=TrueThen
MsgBox"请选择记录"
ExitSub
EndIf
p=Adodc1.Recordset.AbsolutePosition
tmpSeq=Trim(Adodc1.Recordset.Fields(0))
'确认删除
IfMsgBox("是否删除当前行?
",vbYesNo,"确认")=vbYesThen
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECT*FROMLibrarianWHEREseq='"+Trim(txtSeq)+"'"
Setrst=myDbOper.querySQL(sql)
If(Notrst.EOF)Then
Withrst
.DeleteadAffectCurrent
.Update
EndWith
Else
MsgBox"发生错误,请重新操作."
EndIf
Refresh_DataList
Ifp-1>0Then
Adodc1.Recordset.Move0
Adodc1.Recordset.Movep-1
EndIf
EndIf
EndSub
PrivateSubcmdEdit_Click()
'检验数据的有效性
IfTrim(txtId)=""Then
MsgBox"请输入登录Id"
ExitSub
EndIf
IfTrim(txtPwd)=""Then
MsgBox"请输入登录密码"
ExitSub
EndIf
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECT*FROMLibrarianWHEREseq='"+Trim(txtSeq)+"'"
Setrst=myDbOper.querySQL(sql)
If(Notrst.EOF)Then
rst!
id=Me.txtId
rst!
Password=Me.txtPwd
rst!
onJobTime=Me.txtTime
rst!
telephone=Me.txtPhone
rst.Update
MsgBox"信息修改成功."
Else
MsgBox"发生错误,请重新输入."
EndIf
rst.Close
'关闭连接
myDbOper.DB_DisConnect
Refresh_DataList
EndSub
PrivateSubcmdExit_Click()
Me.Hide
EndSub
PrivateSubcmdRefresh_Click()
Refresh_DataList
EndSub
PrivateSubDataGrid1_Click()
IfAdodc1.Recordset.BOF=TrueThen
MsgBox"请选择记录"
ExitSub
EndIf
'保存光标位置
p=Adodc1.Recordset.AbsolutePosition
'读取当前记录的各列数据
Me.txtSeq=Trim(Adodc1.Recordset.Fields(0))
Me.txtId=Trim(Adodc1.Recordset.Fields
(1))
Me.txtPwd=Trim(Adodc1.Recordset.Fields
(2))
Me.txtTime=Trim(Adodc1.Recordset.Fields(3))
Me.txtPhone=Trim(Adodc1.Recordset.Fields(4))
Refresh_DataList
'恢复光标位置
Adodc1.Recordset.Move0
Adodc1.Recordset.Movep-1
EndSub
PrivateSubRefresh_DataList()
'刷新管理员列表
Adodc1.RecordSource="SELECT*FROMLibrarianORDERBYseq"
Adodc1.Refresh
EndSub
PrivateSubForm_Load()
EndSub
PrivateSubFrame1_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
EndSub
PrivateSubLabel4_Click()
EndSub
5.3借阅/还书管理设计
借阅图书时首先要输入“借书卡号”,点击“确定”,就会出来借阅者的一些的基本信息,再在“借书登记栏”中输入书刊编号查询,如果在库是,点击“提交”即可;
图5-7借阅
借阅其代码如下;
源代码:
PrivateSubcmdExit_Click()
Me.Hide
EndSub
PrivateSubcmdEnter_Click()
'检验数据的有效性
IfTrim(txtBorrId)=""Then
MsgBox"请输入借书卡号"
ExitSub
EndIf
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECTb.StudentNum,b.name,i.Institute,g.Grade,b.teleNumber,b.borrowBookNum"_
+"FROMBorrowerb,Institutei,Gradeg"_
+"WHEREb.InstituteID=i.InstituteIDANDb.GradeID=g.GradeID"_
+"ANDBorrowerId='"+txtBorrId+"'"
Setrst=myDbOper.querySQL(sql)
If(Notrst.EOF)Then
Withrst
lblStuNum.Caption=.Fields(0)
lblName.Caption=.Fields
(1)
lblInstitute.Caption=.Fields
(2)
lblGrade.Caption=.Fields(3)
lblPhone.Caption=.Fields(4)
EndWith
Refresh_DataList1
Else
MsgBox"用户不存在,请重新操作."
EndIf
rst.Close
'关闭连接
myDbOper.DB_DisConnect
EndSub
PrivateSubcmdQuery_Click()
'检验数据的有效性
IfTrim(txtBookId)=""Then
MsgBox"请输入书刊编号"
ExitSub
EndIf
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECTb.BookIDas书刊编号,b.nameas名称,b.loanas状态,"_
+"t.authoras作者,t.isbsnasisbsn,t.typeas类型,b.BorrowDateas借书日期"_
+"FROMBookb,TitletWHEREb.name=t.nameANDb.BookID='"_
+Trim(txtBookId)+"'"
Setrst=myDbOper.querySQL(sql)
If(Notrst.EOF)Then
Refresh_DataList2(sql)
Else
MsgBox"该书刊不存在,请重新操作."
EndIf
rst.Close
'关闭连接
myDbOper.DB_DisConnect
EndSub
PrivateSubRefresh_DataList1()
DimsqlAsString
sql="SELECTbo.BookIDas书刊编号,bo.nameas名称,bo.BorrowDateas借书日期"_
+"FromBorrowerb,Bookbo"_
+"WHEREb.BorrowerID=bo.borrowerIDandb.BorrowerID='"_
+Trim(txtBorrId)+"'"
Adodc1.RecordSource=sql
Adodc1.Refresh
SetDataGrid1.DataSource=Adodc1
DataGrid1.ReBind
EndSub
PrivateSubRefresh_DataList2(sqlAsString)
Adodc2.RecordSource=sql
Adodc2.Refresh
SetDataGrid2.DataSource=Adodc2
DataGrid2.ReBind
EndSub
PrivateSubcmdSubmit_Click()
'检验数据的有效性
IfTrim(txtBorrId)=""Then
MsgBox"请输入借书卡号"
ExitSub
EndIf
IfTrim(txtBookId)=""Then
MsgBox"请输入书刊编号"
ExitSub
EndIf
DimnowDateAsNewBookDate
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
Dimupdate1_sqlAsString
Dimupdate2_sqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECTloanFROMBookWHEREBookId='"+Trim(txtBookId)+"'"
Setrst=myDbOper.querySQL(sql)
IfTrim(rst.Fields(0))="在库"Then
'更新数据库表
update1_sql="UPDATEBookSETloan='借出',borrowerID='"_
+Trim(txtBorrId)+"',BorrowDate='"_
+nowDate.getDate+"'WHEREBookID='"_
+Trim(txtBookId)+"'"
myDbOper.executeSQL(update1_sql)
update2_sql