资源描述
图书管理系统
毕业设计报告包括一下几个部分的内容:
1. 毕业设计目的
2. 毕业设计要求
3. 图书管理系统功能分析
4. 数据库逻辑结构设计
5. 参考模块和参考程序
(一)毕业设计目的
通过毕业设计使本学期学习的知识掌握的更加的牢固,并且能熟练的应用自己学习过的 VISUAL BASIC 6.0 和SQL SERVER 2000数据库管理与开发的知识进行实际当中的项目的开发,进一步的掌握可视化数据库编程的基本思想和方法。在实践当中更加的灵活的运用所学知识。锻炼自己的分析问题,解决问题的能力,为将来自己能够开发大型的软件奠定基础。毕业设计的主要目的在于总结自己在校期间的学习成果,培养自己综合地、创造性地运用所学知识和技能解决实际问题的能力,并使自己得到科研工作各个环节的实际锻炼,具有从事科研工作或设计工作的初步能力。
(二)毕业设计要求
1:上机前做好充分准备,包括程序模块图,程序界面方式,源程序清单,调试步骤,测试方法,运行结果的分析等。
2:毕业设计具体要求如下:
(1) 设计说明:用来说明程序模块功能、结构、主要包括程序名、功能、原理计算说明,主要用于符号说明。
(2) 调试说明:便于学生总结经验,提高编程及调试能力,包括调试情况,如对数据库操作时遇到的问题及解决方法,对程序设计技巧的总结及分析等。对运行结果的分析、毕业设计心得体会等。
(3) 使用说明:程序提供给用户时必须做出的说明,使用方法、操作步骤等。
(三)图书管理系统功能分析
为了提高对图书信息的管理,设计合理有效的图书管理系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少不必要的时间和人力等方面的工作量。系统开发的总体任务是使图书信息当中的各个表更加的规范,更加的系统,更加的条理清楚。本次毕业设计所要求达到的功能分析具体如下:
图书管理系统需要实现的主要的功能有:
1. 图书馆图书采购信息的输入,包括图书的基本的信息,如书名;书号;出版社;库存量;图书的所属类别;图书的采购人;供货商和图书采购日期。
2. 图书馆图书信息的查询,包括图书的如下的信息,某一中图书的剩余数量;某一作者的图书是否存在,或者是某一出版社的图书数量,并且能实现采购人;供货商和采购日期的查询。
3. 图书馆图书信息的修改。
4. 借书的基本信息的输入,如借书的学生的借书证号,书号,借书日期,所属类别等基本信息。
5. 借书的基本信息的查询,如按借书日期查询,借书证号查询,借书的书号查询等。
6. 借书的基本信息的修改。
7. 还书的基本信息的输入,如还书的书号,借书证号,还书日期,并且根据图书的借书和还书的日期计算出借书的时间天数,对于查处借书时间的学生进行罚款,在还书时,根据图书的损坏的程度,对损坏图书的同学进行罚款。
8. 还书基本信息的查询,如按还书的还书时间,书号,借书证号等。
9. 还书信息的修改。
10. 学生的基本信息的输入,如学生的学号,姓名,性别,所属的班级和借书证号,并且在学生信息表中,学生的学号和学生的借书证号必须是唯一的,不能存在重复的学生学号,或者两个学生的借书证号是相同的。
11. 学生基本信息的查询,如按学号,姓名,性别,和班级进行查询。
12. 学生基本信息的修改。
13. 用户的添加,查询,修改,并且设置具有系统管理员权限的用户。
(四)数据库的逻辑结构设计
用户表:
列名
数据类型
可否为空
用户名(主键约束)
Varchar(20)
Not null
密码
Varchar(100)
Null
级别
Varchar(5)
Not null
信息表:
列名
数据类型
可否为空
借书证号(主键约束)
Varchar(50)
Not null
学号
Varchar(20)
Not null
姓名
Varchar(20)
Null
性别
Varchar(2)
Null
班级
Varchar(20)
Null
罚款金额
Int
Null
采购表:
列名
数据类型
可否为空
书名
Varchar(20)
Not null
数量
Int
Not null
单价
Int
Null
所属类别
Varchar(20)
Null
出版社名称
Varchar(50)
Null
采购人
Varchar(20)
Null
供货商
Varchar(20)
Null
采购日期
Datetime
Null
借书表:
列名
数据类型
可否为空
借书证号
Varchar(50)
Not null
书号
Varchar(20)
Null
借书日期
Datetime
Null
还书表:
列名
数据类型
可否为空
借书证号
Varchar(50)
Null
书号
Varchar(20)
Null
还书日期
Datetime
Null
损坏状况
Varchar(500)
Null
罚款金额
Int
Null
库存表:
列名
数据类型
可否为空
书名
Varchar(20)
Null
书号(主键约束)
Varchar(20)
Null
作者
Varchar(20)
Null
数量
Int
Null
所属类别
Varchar(20)
Null
(五)参考模块和参考程序
(1)存储过程
存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易多存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
可以在单个存储过程中执行一系列 SQL 语句。
可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。
存储过程的功能取决于数据库所提供的功能。有关存储过程可完成工作的更多详细信息,请参见存储过程。
创建存储过程
使用 Transact-SQL 语句 CREATE PROCEDURE 创建存储过程。创建存储过程前,请考虑下列事项:
· 不能将 CREATE PROCEDURE 语句与其它 SQL 语句组合到单个批处理中。
· 创建存储过程的权限默认属于数据库所有者,该所有者可将此权限授予其他用户。
· 存储过程是数据库对象,其名称必须遵守标识符规则。
· 只能在当前数据库中创建存储过程。
创建存储过程时,应指定:
· 所有输入参数和向调用过程或批处理返回的输出参数。
· 执行数据库操作(包括调用其它过程)的编程语句。
· 返回至调用过程或批处理以表明成功或失败(以及失败原因)的状态值。
执行存储过程
当需要执行存储过程时,请使用 Transact-SQL EXECUTE 语句。如果存储过程是批处理中的第一条语句,那么不使用 EXECUTE 关键字也可以执行该存储过程。如果存储过程编写为可以接受参数值,那么可以提供参数值。
如果在存储过程中定义了参数的默认值,那么下列情况下将使用默认值:
· 执行存储过程时未指定该参数的值。
· 将 DEFAULT 关键字指定为该参数的值。
6、蚜虫是黄色的,在植物的嫩枝上吸食汁液,每个蚜虫只有针眼般大小,在10倍放大镜下我们可以看清它们的肢体。若要执行与其它同名存储过程处于同一分组中的存储过程,请指定此存储过程在组内的标识号。例如,要执行 my_proc 组中的第二个存储过程,请执行:
EXECUTE my_proc;2
如图书查询的存储过程:
4、“我迈出了一小步,但人类迈出了一大步。”这句话是阿姆斯特朗说的。use 图书管理系统
if exists(select name from sysobjects where name='BookInquire' and type='p')
drop procedure BookInquire
4、“我迈出了一小步,但人类迈出了一大步。”这句话是阿姆斯特朗说的。go
答:我们在水中可发现变形虫、鼓藻、草履虫、船形硅藻等。create procedure BookInquire @BookName as varchar(20),@BookNum as varchar(20),@Author as varchar(20),@Sort as varchar(20)
13、以太阳为中心,包括围绕它转动的八大行星(包括围绕行星转动的卫星)、矮行星、小天体(包括小行星、流星、彗星等)组成的天体系统叫做太阳系。 as
if exists(select name from sysobjects where name='查询_1'and type='U')
答:当地球运行到月球和太阳的中间,如果地球挡住了太阳射向月球的光,便发生月食。 drop table 查询_1
select * into 查询_1 from 库存表 where @BookName in (书名,'') and @BookNum in(书号,'')and @Author in(作者,'')and @Sort in(所属类别,'')
go
20、在观星过程中,我们看到的天空中有一条闪亮的“银河”光带,实际是由许许多多的恒星组成的一个恒星集团,被人们称为银河系。我们生活的地球在银河系。(2)Visual Basic 程序设计
在图书管理系统的 Visual Basic 实现中定义几个函数,用来实现经常用到的数据库操作,例如数据库的访问,数据的修改函数,数据的备份和数据的还原。在程序设计的代码如下:
如数据库连接函数:
16、大量的研究事实说明生命体都是由细胞组成的,生物是由细胞构成的。我们的皮肤表面,每平方厘米含有的细胞数量超过10万个。Public Function ConnectionString() As String
ConnectionString = "PROVIDER=MSDASQL;driver={SQL Server};server=(local);uid=;pwd=;database=图书管理系统;"
End Function
数据库数据的修改函数:
5、在咀嚼米饭过程中,米饭出现了甜味,说明了什么?Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
答:烧饭时米变成了饭;写字时纸上留下了字迹;下雨后路上的积水慢慢地变成水蒸气消失在空中;岩石风化变成沙子等。Dim sTokens() As String
On Error GoTo ExecuteSQL_Error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open ConnectionString
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End If
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSQL_Exit
End Function
数据库备份函数:
Private Sub cmdBackup_Click()
Dim strDSN As String
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
strDSN = "PROVIDER=MSDASQL;driver={SQL Server};server=(local);uid=;pwd=;database=图书管理系统;"
conn.ConnectionString = strDSN
conn.CursorLocation = adUseClient
conn.Open
On Error GoTo next1
If InStr(1, txtName.Text, ".bak") = 0 Then
txtName.Text = Trim(txtName.Text) & ".bak"
End If
str1 = "backup database 图书管理系统 to disk='" & Trim(txtPath.Text) & "\" & Trim(txtName.Text) & "' with init"
conn.Execute str1
MsgBox "数据备份成功!", vbOKOnly + vbInformation
Unload Me
Exit Sub
next1:
MsgBox Err.Description, vbOKOnly + vbCritical, "操作失败"
Set conn = Nothing
End Sub
数据的查询是数据库操作的主要的内容,在图书管理系统的设计主要的数据查询为借书;还书;采购;图书库存和学生基本信息的查询。
如图书馆图书库存查询窗体的Visual Basic 代码:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub cmdInquire_Click()
'*******************************************************
'在进行参数传递时,当是字符型的数据,或者是日期型的数据必须有单引号
'存储过程和Select语句的参数在进行传递时不能加单引号
'*******************************************************
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.CursorLocation = adUseClient
conn.Open ConnectionString
rs.Open "BookInquire('" & txtName.Text & "','" & txtNum.Text & "','" & txtAuthor.Text & "','" & txtSort.Text & "')", conn, adOpenStatic, adLockOptimistic
rs.Open "select * from 查询_1", conn, adOpenStatic, adLockOptimistic
If rs.RecordCount = 0 Then
MsgBox "表中不存在满足条件的记录,请重新输入!", vbOKOnly + vbCritical, "警告"
txtName.Text = ""
txtNum.Text = ""
txtAuthor.Text = ""
txtSort.Text = ""
End If
Set dgdBook.DataSource = rs
End Sub
Private Sub cmdPreview_Click()
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.CursorLocation = adUseClient
conn.Open ConnectionString
rs.Open "BookInquire('" & txtName.Text & "','" & txtNum.Text & "','" & txtAuthor.Text & "','" & txtSort.Text & "')", conn, adOpenStatic, adLockOptimistic
rs.Open "select * from 查询_1", conn, adOpenStatic, adLockOptimistic
If rs.RecordCount = 0 Then
MsgBox "表中不存在满足条件的记录,请重新输入!", vbOKOnly + vbCritical, "警告"
End If
drpBookInquire.LeftMargin = 1000
drpBookInquire.Top = 240
drpBookInquire.Show
rs.Close
If DataEnvironmentBook.rsCommand1.State = 1 Then
DataEnvironmentBook.rsCommand1.Close
End If
End Sub
Private Sub cmdPrint_Click()
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.CursorLocation = adUseClient
conn.Open ConnectionString
rs.Open "BookInquire('" & txtName.Text & "','" & txtNum.Text & "','" & txtAuthor.Text & "','" & txtSort.Text & "')", conn, adOpenStatic, adLockOptimistic
rs.Open "select * from 查询_1", conn, adOpenStatic, adLockOptimistic
If rs.RecordCount = 0 Then
MsgBox "表中不存在满足条件的记录,请重新输入!", vbOKOnly + vbCritical, "警告"
End If
drpBookInquire.LeftMargin = 1000
drpBookInquire.Top = 240
drpBookInquire.PrintReport
rs.Close
If DataEnvironmentBook.rsCommand1.State = 1 Then
DataEnvironmentBook.rsCommand1.Close
End If
End Sub
展开阅读全文