5.4.9 还书业务管理
还书业务处理流程如下,首先输入图书编号,回车,如果存在该图书借阅记录(“Issue”表中存在该记录),则执行还书操作;如果不存在借阅记录,则给出提示信息。还书操作具体流程:首先找到该书借阅记录后,然后点击“保存”按钮,执行还书操作,该图书借阅记录就从“Issue”表删除;同时,找到该书借阅记录后,还要根据系统设置计算该书是否超出最多允许借阅天数,如果超出,则要计算罚款金额(最多允许借阅天数和超出天数每天罚款金额通过系统“参数设置”菜单实现,具体参见主窗体设置代码和modDatabase模块代码)。
下面给出具体实现的窗体设置和程序代码:
图5-26 还书业务管理子窗体设计
代码5-12 还书业务管理功能代码
′****************************************************************************
′窗体加载
Private Sub Form_Load()
lblInfo.Left=Me.ScaleLeft
lblInfo.Top=Me.ScaleTop
lblInfo.Width=Screen.Width
txtFineAmt.Visible=False
lblFineAmt.Visible=False
Frame2.Left=(Screen.Width-Frame2.Width)/2
If rsIssueInfo.RecordCount=0Then
MsgBox″未查到借出记录!″,vbInformation,″借出记录″
Unload Me
End If
cmdSave.Enabled=False
End Sub
′窗体成为活动窗口
Private Sub Form_Activate()
clear
End Sub
Private Sub cmdBookOpen_Click() ′图书编号旁边扩展按钮
frmBookInfo.Show
frmBookInfo.SetFocus
End Sub
Private Sub cmdMemberOpen_Click()′借书证旁扩展按钮
frmMemberInfo.Show
frmMemberInfo.SetFocus
End Sub
′“取消”按钮
Private Sub cmdCancel_Click()
clear
End Sub
′“保存”按钮
Private Sub cmdsave_click()
If txtLibraryId.Text=″″Then
cmdSave.Enabled=False
End If
rsIssueInfo.Delete ′借阅记录被删除
txtFineAmt.Visible=False
lblFineAmt.Visible=False
Call clear
End Sub
′支持功能函数Clear
Private Sub clear()
txtIssueDate.Text=″″
txtBookId.Text=″″
txtDaysUsed.Text=″″
txtFineAmt.Text=″″
txtLibraryId.Text=″″
txtReturnDate.Text=″″
txtBookId.SetFocus
End Sub
′输入图书编号后回车
Private Sub Txtbookid_KeyPress(KeyAscii As Integer)
Dim BookNo As String
Dim issueDate As Date
Dim currDate As Date
Dim totalDaysUsed As Integer
Dim totalFineAmt As Integer
BookNo=txtBookId.Text
If KeyAscii=13Then ′回车键ASCII码值为13
clear
If Not IsNumeric(BookNo)Then ′要求图书编号为整数
MsgBox″无效检索!″,vbCritical,″检索错误!″
Call clear
Exit Sub
End If
rsIssueInfo.MoveFirst
For i=0To rsIssueInfo.RecordCount
If rsIssueInfo.EOF=True Then
Exit For
End If
If rsIssueInfo(0)=Val(Trim$(BookNo))Then
txtLibraryId.Text=rsIssueInfo(2)
txtReturnDate.Text=Format(Now,″mm/dd/yy″)
txtIssueDate.Text=rsIssueInfo(1)
issueDate=CDate(txtIssueDate.Text) ′借出日期
currDate=CDate(Format(Now,″mm/dd/yy″)) ′获取系统当前日期
′DateDiff是VB函数,计算两个日期值之间间隔的天数
′maxDays与fineAmt是系统注册表参数参见modDatabase模块代码
totalDaysUsed=DateDiff(″d″,issueDate,currDate)
If totalDaysUsed>maxDays Then ′借阅天数超出最多允许天数
txtFineAmt.Visible=True
lblFineAmt.Visible=True
totalDaysUsed=totalDaysUsed-maxDays ′计算超出允许多少天
totalFineAmt=fineAmt*totalDaysUsed ′计算罚款额度
txtDaysUsed.ForeColor=vbRed
txtFineAmt.ForeColor=vbRed
txtDaysUsed.Text=″超出最多允许借阅天数″&totalDaysUsed &″天″
txtFineAmt.Text=″″&totalFineAmt
Else
txtDaysUsed.ForeColor=vbBlack
txtFineAmt.Visible=False
lblFineAmt.Visible=False
txtDaysUsed.Text=totalDaysUsed
End If
Exit For
End If
rsIssueInfo.MoveNext
Next
If txtLibraryId.Text=″″Then
MsgBox″未查到记录!″,vbInformation,″检索结果″
cmdSave.Enabled=False
clear
Else
cmdSave.Enabled=True
End If
End If
End Sub
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。