数据库设计报告
题 目:图书管理系统
班级:
专业:
姓名:
学号:
辅导老师:
一. 设计目的
本课程设计是计算机科学与技术专业的学生在学习完《数据库原理与应用》课程后,进行的一次综合的实践训练,其目的在于加深对数据库基础理论和基本知识的理解,掌握数据库应用系统开发的基本方法。同时也使学生了解基于图形用户界面的多任务环境中应用程序开发的特点,熟悉Windows应用程序的开发过程和基本的编程方法。掌握一种Windows平台上的应用开发工具。
二. 设计内容
图书管理系统
三.概要设计
1.功能模块图;
2.各个模块详细的功能描述。
(1)系统管理:包括新增用户,修改密码,关于软件,退出系统。
(2)读者管理:包括读者新增,读者编辑,读者删除。
(3)图书库管理:包括图书新增,图书编辑,图书删除。
(4)图书查询。
(5)借阅管理:包括图书借出,图书归还,借阅查询。
四.详细设计
1.功能函数的调用关系图;
2.各功能函数的数据流程图;
3.重点设计及编码。
登录:
Private Sub cmdOk_Click()
If Text1.Text = "" Or Text2.Text = "" Then
MsgBox "请输入完整的信息!", vbCritical, "警告"
Else
If Combo1.Text = "" Then
MsgBox "请选择权限!", vbCritical, "警告"
Else
rs1.Open "Select * From 系统设置 Where 用户名='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
strD = Text1.Text
strB = rs1.Fields(2)
inta = rs1.RecordCount
rs1.Close
If inta = 0 Then
MsgBox "无此用户!", vbCritical, "警告"
Text1.Text = ""
Text2.Text = ""
Combo1.Text = ""
Exit Sub
Else
rs1.Open "Select * From 系统设置 Where 用户名='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
strA = rs1.Fields(1)
' MsgBox rs1.Fields(2)
rs1.Close
If Combo1.Text <> Trim(strB) Then
MsgBox "权限不匹配!", vbCritical, "警告"
Else
If Trim(Text2.Text) = Trim(strA) Then
' MDIForm1.Show
' rs1.Open "Select 权限 From 系统设置 Where 用户名='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
If Combo1.Text = "student" Then
MDIForm1.Show
BlnQX = False
Call QX
Unload Me
Else
If Combo1.Text = "administrator" Then
' rs1.Close
MDIForm1.Show
Unload Me
End If
End If
Else
MsgBox "密码错误!", vbCritical, "提示"
intCount = intCount + 1
If intCount = 3 Then
MsgBox "密码错误登录次数超过限制次数!", vbCritical, "警告"
End
End If
Exit Sub
End If
End If
End If
End If
End If
End Sub
新增用户:
Private Sub cmdOk_Click()
If txt(0).Text = "" Or txt(1).Text = "" Or Combo1.Text = "" Then
MsgBox "请输入完成的信息!"
Else
rs.Open "Select * From 系统设置 Where 用户名='" & txt(0).Text & "'", cn, adOpenKeyset, adLockOptimistic
If rs.EOF = False Then
' If rs.RecordCount <> 0 Then
MsgBox "有重名!", vbCritical, "警告"
rs.Close
Exit Sub
End If
rs.Close
If txt(2).Text = txt(1).Text Then
rs.Open "系统设置", cn, adOpenKeyset, adLockOptimistic
rs.AddNew
rs.Fields(0) = txt(0).Text
rs.Fields(1) = txt(1).Text
rs.Fields(2) = Combo1.Text
rs.Update
rs.Close
MsgBox "添加新用户成功!", , "恭喜"
txt(0).Text = ""
txt(1).Text = ""
txt(2).Text = ""
Combo1.ListIndex = -1
Else
MsgBox "两次输入的密码不相同,请确认后重新输入", vbCritical, "警告"
End If
End If
End Sub
读者新增:
Private Sub cmdOk_Click()
Dim i As Integer
If txt(0).Text = "" Or txt(1).Text = "" Or txt(2).Text = "" Or txt(3).Text = "" Then
MsgBox "请输入完整的信息!"
Else
rs1.Open "读者库", cn, adOpenKeyset, adLockOptimistic
rs1.AddNew
For i = 0 To 3
rs1.Fields(i) = txt(i).Text
Next i
rs1.Update
MsgBox "添加新用户成功!", , "恭喜"
txt(0).Text = rs1.Fields(0) + 1
For i = 1 To 3
txt(i).Text = ""
Next i
End If
End Sub
读者删除:
Private Sub cmdEdit_Click()
If txt(0).Text = "" Or txt(1).Text = "" Or txt(2).Text = "" Or txt(3).Text = "" Then
MsgBox "请单击行标选择需要修改的读者行!", vbCritical, "警告"
Exit Sub
Else
If rs1.Fields(0) <> txt(0).Text Then
MsgBox "请单击行标选择需要修改的读者数据行!", vbCritical, "警告"
Exit Sub
Else
If MsgBox("确认删除读者么?", vbYesNo, "提示") = vbYes Then
rs1.Delete adAffectCurrent
' rs1.UpdateBatch adAffectCurrent
rs1.MoveLast
Dim i As Integer
For i = 0 To 3
txt(i) = ""
Next i
MsgBox "删除成功!", , "提示"
End If
End If
End If
End Sub
图书编辑:
Private Sub cmdEdit_Click()
If txt(0).Text = "" Or txt(1) = "" Or txt(2) = "" Or txt(3) = "" Or txt(4) = "" Or Combo1.Text = "" Then
MsgBox "请单击行标选择需要修改的图书行", vbCritical, "提示"
Exit Sub
Else
If txt(0) <> rs1.Fields(0) Then
MsgBox "请单击行标选择需要修改的图书行", vbCritical, "提示"
Else
If MsgBox("确认要修改么?", vbYesNo, "提示") = vbYes Then
Dim i As Integer
For i = 0 To 4
rs1.Fields(i) = txt(i).Text
Next i
rs1.Fields(5) = Combo1.Text
rs1.UpdateBatch adAffectCurrent
MsgBox "修改成功", , "提示"
End If
End If
End If
End Sub
图书查询:
Private Sub cmdSearch_Click()
On Error Resume Next
rs1.Close
rs1.CursorLocation = adUseClient
rs1.Open "Select * From 书库 Where " & Combo1.Text & " ='" & txt_Search.Text & "'", cn, adOpenKeyset, adLockOptimistic
Set DataGrid1.DataSource = rs1
If rs1.RecordCount = 0 Then MsgBox "查无此书"
End Sub
图书借出:
Private Sub cmdB_Click()
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then
MsgBox "请输入完整的数据!", vbCritical, "警告"
Exit Sub
Else
rs1.Open "Select * From 书库 Where 书号='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
intb = rs1.RecordCount
rs1.Close
rs1.Open "Select * From 读者库 Where 读者编号= '" & Text2.Text & "'", cn, adOpenKeyset, adLockOptimistic
intc = rs1.RecordCount
rs1.Close
If intb = 0 Or intc = 0 Then
MsgBox "书号或读者编号不存在!", vbCritical, "警告"
Text1.Text = ""
Text2.Text = ""
Else
rs1.Open "Select * From 书库 Where 书号='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
If Trim(rs1.Fields(6)) = "Yes" Then
rs1.Close
Dim temp1 As String, temp2 As String
rs1.Open "Select * From 书库 Where 书号='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
temp1 = rs1.Fields(1)
rs1.Close
rs1.Open "Select * From 读者库 Where 读者编号= '" & Text2.Text & "'", cn, adOpenKeyset, adLockOptimistic
temp2 = rs1.Fields(1)
rs1.Close
rs1.Open "借阅记录", cn, adOpenKeyset, adLockOptimistic
rs1.AddNew
rs1.Fields(0) = inta
rs1.Fields(1) = Text1.Text
rs1.Fields(2) = temp1
rs1.Fields(3) = Text3.Text
rs1.Fields(5) = Text2.Text
rs1.Fields(6) = temp2
rs1.UpdateBatch adAffectCurrent
rs1.Close
rs1.Open "Select * From 书库 Where 书号='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
rs1.Fields(6) = "No"
rs1.UpdateBatch adAffectCurrent
rs1.Close
MsgBox "已办理好借阅手续!", , "提示"
Text1.Text = ""
Text2.Text = ""
Else
MsgBox "该书已经被借出", vbCritical, "提示"
rs1.Close
Text1.Text = ""
Text2.Text = ""
End If
End If
End If
End Sub
图书归还:
Private Sub cmdR_Click()
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then
MsgBox "请输入完整的数据!", vbCritical, "警告"
Exit Sub
Else
rs2.Open "Select * From 书库 Where 书号='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
inta = rs2.RecordCount
rs2.Close
If inta = 0 Then
MsgBox "书号不存在!", vbCritical, "警告"
Text1.Text = ""
Text2.Text = ""
Else
rs2.Open "Select * From 书库 Where 书号='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
If Trim(rs2.Fields(6)) = "No" Then
rs2.Close
rs2.Open "Select * From 借阅记录 Where 书号='" & Text1.Text & "' And 读者编号='" & Val(Text2.Text) & "'", cn, adOpenKeyset, adLockOptimistic
rs2.Fields(4) = Text3.Text
rs2.UpdateBatch adAffectCurrent
rs2.Close
rs2.Open "Select * From 书库 Where 书号='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
rs2.Fields(6) = "Yes"
rs2.UpdateBatch adAffectCurrent
rs2.Close
MsgBox "已经办理好归还手续!", , "提示"
Text1.Text = ""
Text2.Text = ""
Else
MsgBox "该书已在库!", vbCritical, "提示"
rs2.Close
Text1.Text = ""
Text2.Text = ""
End If
End If
End If
End Sub
借阅查询:
Private Sub cmdSearch_Click()
On Error Resume Next
rs1.Close
rs1.CursorLocation = adUseClient
If Opt1.Value = True Then
rs1.Open "Select * From 借阅记录 Where 读者编号 ='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
Else
rs1.Open "Select * From 借阅记录 Where 书号 ='" & Text1.Text & "'", cn, adOpenKeyset, adLockOptimistic
End If
Set DataGrid1.DataSource = rs1
End Sub
五.测试数据及运行结果
1.正常测试数据(3组)及运行结果;
图书书号:IS-7
读者编号:9
图书书号:IS-4
读者编号:6
根据读者编号查询:6
2.非正常测试数据(2组)及运行结果。
图书书号:IS-2
读者编号:9
图书书号:IS-8
读者编号:9
六.调试情况,设计技巧及体会
1.对自己的设计进行评价,指出合理和不足之处,提出改进方案;
实验中遇到许多问题,比如在连接数据库的时候,老是连接不成功,后来才知道,数据库的连接需要定义数据库管理员的账户和密码,这样方便数据库的操作,在一些方面注意数据库的数据操作,什么时候需要更新数据库,什么时候需要删除数据库的内容,都要在恰当的时候.感觉在数据库的连接方面还是vb比较直观一点.在界面的一些操作中,需要注意一些细节问题,特别是按钮的设计,在按钮上设计位图,更改工具条的位图,还有就是tab操作这些都是需要注意的,在对类的设计上,感觉也有不完美的地方,最后不得不参照书本了,所以基本上看起来和书本上的差不多,但是确实遇到许多问题,也解决了许多问题,在登陆界面上,不支持快捷键的操作,现在也是感觉很矛盾的事情,因为需要屏蔽这个快捷键,另外也需要通过tab来更改热键的位置.程序设计当中遇到许多问题,有的已经解决,有的解决不是很理想,代码也存在冗余部分,比如对工具条的设计,或者对butter的设计等等,这些主要看的还是源代码.
2.对设计及调试过程的心得体会。
通过本次实验,充分的掌握了,程序中使用数据库的方法,另外自己感觉在数据库的连接上,问题可能还是遇到的不很全面,经验积累不足,经过老师的点评发现在数据库的设计上也存在一些漏洞,比如表的结构上以及表之间的关系主键,外键,触发器这些东西使用还是僵死.这可能是经验不足,或者第一次设计,心里还是脱离不开老的那种从文件中读数据的那种模式,所以这以后的课程设计和学习当中我会注意加强自己的数据库设计方面的能力.
七.参考文献
《Visual Basic开发实战宝典》 高春艳,刘彬彬等 清华大学出版社
《VisualBasic范例开发大全》 隋丽娜、迟剑、郭立峰 清华大学出版社
《数据库设计系统原理与应用》 孟彩霞 人民邮电出版社
www.baidu.com
八.附录:源代码(电子版)
数据库课程设计报告课程设计题目:学分管理系统专业:网络工程班级:**学号:***20**年12月1日学分管理系统数据库课程设计实验…
数据库课程设计报告课题名称:图书管理统专业:信息与计算科学班级:信计071班小组人员:***一.背景资料在高校中,学生的数量较多,…
11课题意义21世纪是信息化的时代信息化以更快捷更方便为目标来融入各行各业学校也不能例外当前我国的学校正在加紧实施信息化建设其中学…
数据库课程设计报告课程名称数据库课程设计题目教务管理系统指导教师卢益清设计起止日期20xx515至20xx62学院信息管理学院专业…
西安郵電學院数据库课程设计报告书系部名称学生姓名专业名称班级时间计算机20xx年12月20日至20xx年12月30日一本课程设计的…
20xx级数据库课程设计任务书设计目的数据库课程设计是在学生系统地学习了数据库系统原理课程后按照关系型数据库的基本远离综合运用所学…
数据库课程设计报告课程设计题目:学分管理系统专业:网络工程班级:**学号:***20**年12月1日学分管理系统数据库课程设计实验…
北京广播电视大学数据库应用课程设计报告书题目出版社图书管理系统姓名杨春振学号20xx7110090247班级09春计算机分校通州电…
徐州工程学院信电学院计算机网络专业数据库课程设计教学管理系统的设计1概述11设计目的用户请求经应用程序的转化化为对数据库中的相应的…
数据库课程设计报告学号20xx1004357姓名李世荣班级19xx23指导老师胡霍真邮件管理系统摘要21世纪是网络飞速发展的时代电…