
VB+Access设计图书管理系统(7) |
|
主窗体代码 在本项目中,子菜单事件都是Click事件,这里先给出主窗体部分的代码。 下面是响应“增加用户”子菜单Click事件,调出增加用户窗体代码。 Private Sub adduser_Click() frmadduser.Show 下面是响应“查询输出”子菜单Click事件,调出查询输出窗体代码。 Private Sub chaxunshuchu_Click() frmfind.Show End Sub 下面是响应“退出”子菜单Click事件,调出退出窗体代码。 Private Sub exit_Click() Unload Me End Sub 下面是响应“图书登记”子菜单Click事件,调出图书登记窗体代码。 Private Sub checkin_Click() frmdengji.Show End Sub 下面是响应“修改密码”子菜单Click事件,调出修改密码窗体代码。 Private Sub changepwd_Click() frmchangepwd.Show End Sub 下面是响应“图书借阅”子菜单Click事件,调出图书借阅窗体代码。 Private Sub borrow_Click() frmjieyue.Show End Sub 下面是响应“图书赔偿”子菜单Click事件,调出图书赔偿窗体代码。 Private Sub tushupeichang_Click() frmpeichang.Show 1 End Sub 下面是响应“值班管理”菜单Click事件,调出值班管理窗体代码。 Private Sub zhibanguanli_Click() frmzhiban.Show 1 End Sub 下面是响应“投诉管理”子菜单Click事件,调出投诉管理窗体代码。 Private Sub tousuguanli_Click() frmtousu.Show 1 End Sub 2、各子窗体的代码 在各个子窗体建立好后,就可以根据各个子窗体的功能给它们添加相应代码了。 (1) 图书登记子窗体代码 本窗体用来填写图书登记的信息,用ADO来连接数据库,是本窗体的重点。采用MDI的子程序,所以运行后,它出现在主程序的界面下,如图33所示。 ![]() 图33 图书登记子窗体 按钮控件要求先填写基本信息,然后与数据库信息比较。 Private Sub Command1_Click() On Error GoTo adderr Text1.SetFocus Adodc1.Recordset.AddNew Exit Sub adderr: MsgBox Err.Description End Sub Private Sub Command2_Click() On Error GoTo deleteerr With Adodc1.Recordset If Not .EOF And Not .BOF Then If MsgBox("删除当前记录吗?", vbYesNo + vbQuestion) = vbYes Then .Delete .MoveNext If .EOF Then .MoveLast End If End If End With Exit Sub deleteerr: MsgBox Err.Description End Sub Private Sub Command3_Click() Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then MsgBox "这是最后一条记录", vbOKCancel + vbQuestion Adodc1.Recordset.MoveLast End If End Sub Private Sub Command4_Click() Adodc1.Recordset.MovePrevious If Adodc1.Recordset.BOF Then MsgBox "这是第一条记录", vbOKCancel + vbQuestion Adodc1.Recordset.MoveFirst End If End Sub Private Sub Command5_Click() If Adodc1.Recordset.EOF Then MsgBox "记录空", vbOKCancel + vbQuestion End Else Adodc1.Recordset.MoveFirst Exit Sub End Sub Private Sub Command6_Click() If Adodc1.Recordset.RecordCount = 0 Then MsgBox "空记录", vbOKCancel + vbQuestion End Else Adodc1.Recordset.MoveLast End If End Sub Private Sub Command7_Click() MDIForm1.Show frmdengji.Hide End Sub 图书借阅和图书赔偿子窗体运行后如图34和图35所示,因为它们的代码和图书登记子窗体的代码雷同,在此不做重复。 ![]() 图34 图书借阅子窗体运行效果 ![]() 图35 图书赔偿子窗体运行效果 (2) 增加用户子窗体代码 增加用户子窗体是用来增加用户的用户名、密码和权限的。其运行效果如图36所示。 单击“确定”按钮后,还要返回一个信息框,提示成功信息,如图37所示。 ![]() 图36 增加用户子窗体运行效果 图37 成功信息框 窗体部分代码的思路是,收集输入的表中的字符串,然后与数据库中的系统的用户数据比较,如果不存在,则允许添加。 Private Sub Command1_Click() Dim sql As String Dim rs_add As New ADODB.Recordset If Trim(Text1.Text) = "" Then MsgBox "用户名不能为空", vbOKOnly + vbExclamation, "" Exit Sub Text1.SetFocus Else sql = "select * from 系统管理" rs_add.Open sql, conn, adOpenKeyset, adLockPessimistic While (rs_add.EOF = False) If Trim(rs_add.Fields(0)) = Trim(Text1.Text) Then MsgBox "已有这个用户", vbOKOnly + vbExclamation, "" Text1.SetFocus Text1.Text = "" Text2.Text = "" Text3.Text = "" Combo1.Text = "" Exit Sub Else rs_add.MoveNext End If Wend If Trim(Text2.Text) <> Trim(Text3.Text) Then MsgBox "两次密码不一致", vbOKOnly + vbExclamation, "" Text2.SetFocus Text2.Text = "" Text3.Text = "" Exit Sub ElseIf Trim(Combo1.Text) <> "system" And Trim(Combo1.Text) <> "guest" Then MsgBox "请选择正确的用户权限", vbOKOnly + vbExclamation, "" Combo1.SetFocus Combo1.Text = "" Exit Sub Else rs_add.AddNew rs_add.Fields(0) = Text1.Text rs_add.Fields(1) = Text2.Text rs_add.Fields(2) = Combo1.Text rs_add.Update rs_add.Close 下面是返回成功信息对话框的代码: MsgBox "添加用户成功", vbOKOnly + vbExclamation, "" Unload Me End If End If End Sub (3) 修改密码子窗体代码 修改密码子窗体是用来修改用户密码的。其运行效果如图38所示。 ![]() 图38 修改密码子窗体运行效果 在“确定”按钮的Click事件中添加如下代码: Private Sub Command1_Click() Dim rs_chang As New ADODB.Recordset Dim sql As String If Trim(Text1.Text) <> Trim(Text2.Text) Then MsgBox "密码不一致!", vbOKOnly + vbExclamation, "" Text1.SetFocus Text1.Text = "" Text2.Text = "" Else sql = "select * from 系统管理 where 用户名=" & userID & "" rs_chang.Open sql, conn, adOpenKeyset, adLockPessimistic rs_chang.Fields(1) = Text1.Text rs_chang.Update rs_chang.Close MsgBox "密码修改成功", vbOKOnly + vbExclamation, "" Unload Me End If End Sub ![]() 在上述代码中,首先比较两个表中的数据是否一致,然后用rs_chang.Fields(1) = Text1.Text语句把代码输入到数据库中。最后,用MsgBox "密码修改成功", vbOKOnly + vbExclamation,""语句弹出一个信息框,告诉修改成功,如图39所示。 显示目录 (4) 库房管理子窗体代码 库房管理子窗体是用来管理图书资料的。其运行效果如图40所示。 ![]() 图40 库房管理子窗体 实际上,设计库房管理子窗体的程序代码与增加用户子窗体的代码在思路上是完全相同的。就是在DataGrid的文本框中显示图书进出的清单,最后把填写的明细存储到数据库中。 检查代码如下: Option Explicit Dim rs_data2 As New ADODB.Recordset Dim select_row As String Dim showgrid2 As Boolean Dim rs_custom As New ADODB.Recordset Dim jinchu As String 进出库标志 Dim modify As Boolean 修改状态标志 Private Sub cmdexit_Click() Unload Me End Sub Private Sub Form_Load() On Error GoTo loaderror Dim sql As String sql = "select * from 图书资料" rs_custom.CursorLocation = adUseClient rs_custom.Open sql, conn, adOpenKeyset, adLockPessimistic While Not rs_custom.EOF Combo1.AddItem rs_custom.Fields(0) rs_custom.MoveNext Wend findok = True modify = False 非修改状态 showgrid2 = False displaygrid1 调用显示Datagrid1子程序 loaderror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub |
|