VB图书管理系统 课程设计报告
VB语言程序设计课程设计报告
系 (部)
专业班级
学生姓名
学号/序号
指导教师
完成时间
图书管理系统
一、功能描述
使用VB6.0中各种控件的常用属性和事件、数组的各种操作以及数据库的相关操作(数据库的建立、编辑、查找、删除等),建立了这个简易的图书管理系统,方便图书管理人员对图书的管理。用户可以通过此系统的添加、删除,还回,借出等功能对书籍信息、书籍流通进行编辑同时也可以通过直接输入想要查询的书籍信息来获得书籍的流通及库存等相关信息。
二、概要设计
1、系统功能模块框图设计
首先程序运行,出现一个MDI主窗体,里面分别有登录,书籍信息管理系统,退出三个菜单选项,登录前,管理按钮不可用,当正确输入用户名以及密码以后,点管理按钮,图书管理窗体显示,用户可对图书信息进行管理。
2、数据库设计
创建一个数据库为mydb.mdb,该数据库共包含3张表,分别为“书籍信息表”、“图书归还表”和“图书借出表”,表结构如下:
书籍信息表:图书编号、图书名、作者、出版社、数量、出版日期、价格
图1. 书籍信息表
图书归还表:图书编号、图书名、作者、出版社、数量、图书是否损坏、借出日期、归还日期;
图2. 图书归还表
图书借出表:图书编号、图书名、作者、出版社、借出数量、借出时间、联系电话、借出期限、借出者姓名。
图3. 图书借出表
三、详细设计
1、MDI主界面
用户登录模块中登录与取消两按钮,单击登录会进入系统进行下一步的操作,用户名文本框与数据库相连接,当在用户名文本框输入用户名后点击登录按钮后,会在数据库中进行查询看数据库中是否会有该用户名,且该用户名的密码是否与密码框中输入的相同,如果相同会进入系统,如果不存在该用户名或密码与用户名不相匹配,则会提示“密码错误”,用户名文本框会得到焦点,让重新输入。
(1)窗体截图(如图5.1)
图1 MDI主界面
图2 登录窗体1.功能实现
用户登录
Private Sub Command1_Click()
Dim msg, style, title, response
If Text2.Text = 123 Then
MDIForm1.bj.Enabled = True
Form3.Hide
Else
msg = "密码错误,请重新输入。"
style = 4 + 16 + 356
title = "提示"
response = MsgBox(msg, style, title)
If response = 6 Then
Form3.Show
Else
End If
End If
End Sub
2、图书管理窗体
图3 图书管理窗体
2.功能实现
对图书信息添加
Private Sub Command1_Click()
Select Case Command1.Caption
Case "添加"
Select Case SSTab1.Tab
Case 0
Data1.Recordset.AddNew
Case 1
Data2.Recordset.AddNew
Case 2
Data3.Recordset.AddNew End Select
SSTab1.TabEnabled(0) = False
SSTab1.TabEnabled(1) = False
SSTab1.TabEnabled(2) = False
Command1.Caption = "确定"
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Case "确定"
Select Case SSTab1.Tab
Case 0
Data1.UpdateRecord
Case 1
Data2.UpdateRecord
Case 2
Data3.UpdateRecord
End Select
SSTab1.TabEnabled(0) = True
SSTab1.TabEnabled(1) = True
SSTab1.TabEnabled(2) = True
Command1.Caption = "添加"
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
End Select
End Sub
四、调试中存在的问题及解决方法
1、程序运行顺序出现的错误
程序运行时没有按照预想的窗体顺序运行,导致程序无法顺利进行下去。
解决方法:在工程属性窗口中,将启动对象改为指定窗体即可。
2、无法正确查询指定书籍信息的错误
点击查询按钮,出现错误提示,程序中的索引不是指定表格中的索引。
解决方法:将表格中的索引信息删除后重新设定,使其与程序中的一致。
3、无法成功添加书籍信息
添加程序运行到保存信息时,跳过了中间部分,直接运行“添加数据到数据库时出错,注意检查图书编号是否重复,及其他各项数据是否正确。”语句,导致无法成功添加书籍信息。
五、心得体会
在本次VB课程设计中,我进一步熟悉VB6.0开发环境,了解了用VB6.0实现一个完整应用程序的设计过程,有关代码编写、调试和整合程序的方法和技巧。进一步掌握了VB6.0中各种控件的常用属性和事件、数组的各种操作以及数据库的相关操作(数据库的建立、编辑、查找、删除等)。
在我所设计图书管理系统的过程中,并不是一帆风顺的,我遇到了这样或那样的问题,首先在链接数据库的时候,我按照书上的步骤将属性改好,但当我第二天再次访问数据库的时候,提示文件找不到,由于第一次我链接数据库的地址在桌面,没有将数据库放在我的工程文件夹里,所以导致了文件找不到。然后,当我在设置DATA控件的属性时,又不小心在窗体加载中用代码写入了DATA的属性,导致数据链接不上,后面也出现了几次由于我的疏忽,导致程序出错。这让我意识到,在软件开发的过程中,一点小小的错误,都不能完成,可谓是“失之毫厘谬以千里”。因此,我们需要很细心才能完成这个过程。
虽然,我所制作的简易图书管理系统可以进行对书籍信息的添加,删除,修改等功能,但是也存在很多不足。在登录设计中,我没有建立用户数据库,用代
码只编写了一个用户。在查询的时候,由于我用DATA控件链接数据库,虽然添加了两个索引,但还是只能用图书编号一个索引进行查询,我没能找到解决的方法。还有在图书归还以及借出的环节,考虑的不太完善。
最后,我很感谢在程序设计的过程中,老师细心地讲解与建议,给了我很大的帮助,在此次课程设计中,我受益匪浅。
六、参考文献
【1】罗朝盛. Visual Basic 6.0程序设计教程(第3版)[M].人民邮电出版社,2009.02 【2】邵洁. Visual Basic 6.0程序设计教程(第4版) [M]. 东南大学出版社,2008.02 【3】邵洁. Visual Basic 6.0实验与测试(第4版) [M]. 东南大学出版社,2008.02
七、附录
MDI主界面
Private Sub dl_Click()
Form3.Show
End Sub
Private Sub gl_Click()
Form2.Show
End Sub
Private Sub MDIForm_Load()
gl.Enabled = False '在登录之前,管理按钮不可用
End Sub
Private Sub tc_Click()
End
End Sub
登录窗体
Private Sub Command1_Click()
Dim msg, style, title, response
If Text2.Text = 123 Then '密码为123时,管理可用MDIForm1.gl.Enabled = True
Form3.Hide
Else
msg = "密码错误,请重新输入。" '密码输入错误时,提示重新输入style = 4 + 16 + 356
title = "提示"
response = MsgBox(msg, style, title)
If response = 6 Then
Form3.Show
gl.Enabled = False
Else
End If
End If
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Timer1_Timer() '时间控件,控制字体的移动If Label3.Left + Label3.Width >= 0 Then
Label3.Left = Label3.Left - 10
Else
Label3.Left = Form3.Width
End If
End Sub
管理窗体
Private Sub Command1_Click()
'根据当前按钮的标题进行不同的操作
Select Case Command1.Caption
Case "添加"
'向当前选项卡所对应表中添加记录
Select Case SSTab1.Tab
Case 0
Data1.Recordset.AddNew
Case 1
Data2.Recordset.AddNew
Case 2
Data3.Recordset.AddNew
End Select
'在添加操作完成前禁止进行其他操作
SSTab1.TabEnabled(0) = False
SSTab1.TabEnabled(1) = False
SSTab1.TabEnabled(2) = False
Command1.Caption = "确定"
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False Case "确定"
Select Case SSTab1.Tab
Case 0
Data1.UpdateRecord
Case 1
Data2.UpdateRecord
Case 2
Data3.UpdateRecord
End Select
'在添加操作完成后允许进行其他操作
SSTab1.TabEnabled(0) = True
SSTab1.TabEnabled(1) = True
SSTab1.TabEnabled(2) = True
Command1.Caption = "添加"
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
End Select
End Sub
Private Sub Command10_Click()
If Text16.Text = Text1.Text Then
Text7.Text = Int(Text7.Text) - Int(Text20.Text) End If
End Sub
Private Sub Command2_Click() '修改按钮的单机过程'根据当前按钮的标题进行不同的操作
Select Case Command2.Caption
Case "修改"
Select Case SSTab1.Tab
Case 0
Data1.Recordset.Edit
Case 1
Data2.Recordset.Edit
Case 2
Data3.Recordset.Edit
End Select
'在修改操作完成前禁止进行其他操作
SSTab1.TabEnabled(0) = False
SSTab1.TabEnabled(1) = False
SSTab1.TabEnabled(2) = False
Command2.Caption = "确定"
Command1.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False Case "确定"
Select Case SSTab1.Tab
Case 0
Data1.UpdateRecord
Case 1
Data2.UpdateRecord
Case 2
Data3.UpdateRecord
End Select
'在修改操作完成后允许进行其他操作
SSTab1.TabEnabled(0) = True
SSTab1.TabEnabled(1) = True
SSTab1.TabEnabled(2) = True
Command2.Caption = "修改"
Command1.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
End Select
End Sub
Private Sub Command3_Click() '“删除”按钮的单击事件过程
Dim i As Integer
i = MsgBox("确定要删除此记录?", vbYesNo + vbExclamation + vbDefaultButton1, "编辑")
If i + vbYes Then
Select Case SSTab1.Tab '删除后数据更新
Case 0
Data1.Recordset.Delete
Data1.Refresh
Case 1
Data2.Recordset.Delete
Data2.Refresh
Case 2
Data3.Recordset.Delete
Data3.Refresh
End Select
End If
End Sub
Private Sub Command4_Click() '“首记录”按钮的单击事件过程Select Case SSTab1.Tab
Case 0
Data1.Recordset.MoveFirst
Case 1
Data2.Recordset.MoveFirst
Case 2
Data3.Recordset.MoveFirst
End Select
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = True
Command7.Enabled = True
End Sub
Private Sub Command5_Click() '“上一条”按钮的单击事件过程Select Case SSTab1.Tab
Case 0
Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then
Data1.Recordset.MoveFirst
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = True
Command7.Enabled = True
End If
Case 1
Data2.Recordset.MoveNext
If Data2.Recordset.EOF Then
Data2.Recordset.MoveFirst
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = True
Command7.Enabled = True
End If
Case 2
Data3.Recordset.MoveNext
If Data3.Recordset.EOF Then
Data3.Recordset.MoveFirst
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = True
Command7.Enabled = True
End If
End Select
End Sub
Private Sub Command6_Click() '“下一条”按钮的单击事件过程Select Case SSTab1.Tab
Case 0
Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then
Data1.Recordset.MoveLast
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = False
Command7.Enabled = False
End If
Case 1
Data2.Recordset.MoveNext
If Data2.Recordset.EOF Then
Data2.Recordset.MoveLast
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = False
Command7.Enabled = False
End If
Case 2
Data3.Recordset.MoveNext
If Data3.Recordset.EOF Then
Data3.Recordset.MoveLast
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = False
Command7.Enabled = False
End If
End Select
End Sub
Private Sub Command7_Click() '“尾记录”按钮的单击事件过程Select Case SSTab1.Tab
Case 0
Data1.Recordset.MoveLast
Case 1
Data2.Recordset.MoveLast
Case 2
Data3.Recordset.MoveLast