数据库课程设计图书管理系统Word格式.docx
《数据库课程设计图书管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计图书管理系统Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
借阅基本信息包括借阅者信息,借阅者已借阅书籍,借书日期,借书编号等信息。
还书基本信息包括借阅者编号,借阅者还书的编号,并且附带有查询功能,查看借阅者借阅的图书是否过期。
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
图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="
请输入密码!
txtPassword.SetFocus
Else
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
建立连接
myDbOper.DB_Connect
定义查询语句
sql="
SELECT*FROMLibrarianWHEREId='
+txtUserName+"
'
ANDPassword='
+txtPassword+"
Setrst=myDbOper.querySQL(sql)
If(Notrst.EOF)Then
OK=True
FrmMain.Show0
用户名和密码错误,请重新输入."
EndIf
rst.Close
关闭连接
myDbOper.DB_DisConnect
PrivateSubForm_Load()
PrivateSubLabel1_Click()
5.2管理员管理设计
管理员窗口的设计主要包括“修改”、“添加”、“删除”,“刷新”等功能。
添加管理员是依照窗口的信息依次填写,点击“提交”即可;
图5-2进入管理员信息栏
图5-3.添加管理者
该管理者添加的代码如下:
PrivateSubcmdExit_Click()
PrivateSubcmdSubmit_Click()
IfTrim(txtId)="
Then
请输入登录Id"
IfTrim(txtPwd)="
请输入登录密码"
SELECT*FROMLibrarianWHEREseq='
+Trim(txtSeq)+"
Ifrst.EOF=TrueThen
Withrst
.AddNew
!
seq=Me.txtSeq
id=Me.txtId
Password=Me.txtPwd
onJobTime=Me.txtTime
telephone=Me.txtPhone
.Update
EndWith
信息添加成功."
该编号已经存在,请重新输入."
PrivateSubFrame1_DragDrop(SourceAsControl,XAsSingle,YAsSingle)
PrivateSubtxtId_Change()
PrivateSubtxtPwd_Change()
删除图书管理员是在管理员列表中点击要删除的那一行,点击“删除”即可;
图5-4删除管理者
修改管理员首先在管理员列表中点击要修改的管理员信息,在编辑区填写要修改的信息,点击“修改”即可;
图5-5修改管理者
图5-6刷新管理员列表
该管理者的修改、删除代码如下所示:
PrivateSubcmdAdd_Click()
FrmAddManager.Show1
PrivateSubcmdDelete_Click()
DimtmpSeqAsString
IfAdodc1.Recordset.BOF=TrueThen
请选择记录"
p=Adodc1.Recordset.AbsolutePosition
tmpSeq=Trim(Adodc1.Recordset.Fields(0))
确认删除
IfMsgBox("
是否删除当前行?
vbYesNo,"
确认"
)=vbYesThen
.DeleteadAffectCurrent
发生错误,请重新操作."
Refresh_DataList
Ifp-1>
0Then
Adodc1.Recordset.Move0
Adodc1.Recordset.Movep-1
PrivateSubcmdEdit_Click()
rst!
rst.Update
信息修改成功."
发生错误,请重新输入."
PrivateSubcmdRefresh_Click()
PrivateSubDataGrid1_Click()
保存光标位置
读取当前记录的各列数据
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))
恢复光标位置
PrivateSubRefresh_DataList()
刷新管理员列表
Adodc1.RecordSource="
SELECT*FROMLibrarianORDERBYseq"
Adodc1.Refresh
PrivateSubLabel4_Click()
5.3借阅/还书管理设计
借阅图书时首先要输入“借书卡号”,点击“确定”,就会出来借阅者的一些的基本信息,再在“借书登记栏”中输入书刊编号查询,如果在库是,点击“提交”即可;
图5-7借阅
借阅其代码如下;
PrivateSubcmdEnter_Click()
IfTrim(txtBorrId)="
请输入借书卡号"
SELECTb.StudentNum,b.name,i.Institute,g.Grade,b.teleNumber,b.borrowBookNum"
_
+"
FROMBorrowerb,Institutei,Gradeg"
WHEREb.InstituteID=i.InstituteIDANDb.GradeID=g.GradeID"
ANDBorrowerId='
+txtBorrId+"
lblStuNum.Caption=.Fields(0)
lblName.Caption=.Fields
(1)
lblInstitute.Caption=.Fields
(2)
lblGrade.Caption=.Fields(3)
lblPhone.Caption=.Fields(4)
Refresh_DataList1
用户不存在,请重新操作."
PrivateSubcmdQuery_Click()
IfTrim(txtBookId)="
请输入书刊编号"
SELECTb.BookIDas书刊编号,b.nameas名称,b.loanas状态,"
t.authoras作者,t.isbsnasisbsn,t.typeas类型,b.BorrowDateas借书日期"
FROMBookb,TitletWHEREb.name=t.nameANDb.BookID='
+Trim(txtBookId)+"
Refresh_DataList2(sql)
该书刊不存在,请重新操作."
PrivateSubRefresh_DataList1()
SELECTbo.BookIDas书刊编号,bo.nameas名称,bo.BorrowDateas借书日期"
FromBorrowerb,Bookbo"
WHEREb.BorrowerID=bo.borrowerIDandb.BorrowerID='
+Trim(txtBorrId)+"
Adodc1.RecordSource=sql
SetDataGrid1.DataSource=Adodc1
DataGrid1.ReBind
PrivateSubRefresh_DataList2(sqlAsString)
Adodc2.RecordSource=sql
Adodc2.Refresh
SetDataGrid2.DataSource=Adodc2
DataGrid2.ReBind
DimnowDateAsNewBookDate
Dimupdate1_sqlAsString
Dimupdate2_sqlAsString
SELECTloanFROMBookWHEREBookId='
IfTrim(rst.Fields(0))="
在库"
更新数据库表
update1_sql="
UPDATEBookSETloan='
借出'
borrowerID='
BorrowDate='
+nowDate.getDate+"
WHEREBookID='
myDbOper.executeSQL(update1_sql)
update2_sql