?? frmmain.frm
字號:
BkPrsDate = StrGet(6)
BkType = StrGet(7)
'回復(fù)客戶端
BookInfo = CheckBook1(BkName, BkAuthor, BkPress, BkPrsDate, BkType, index)
Case 2
'得到BkName
BkName = StrGet(2)
'回復(fù)客戶端
BookInfo = CheckBook2(BkName)
Case 3
'得到BkAuthor
BkAuthor = StrGet(2)
'回復(fù)客戶端
BookInfo = CheckBook3(BkAuthor)
End Select
End Function
'*****************************************************************************
'檢驗(yàn)讀者信息管理的函數(shù) Reader
'功能:檢驗(yàn)客戶端發(fā)送來的讀者管理信息,處理數(shù)據(jù)庫后返回信息。
'輸入:StrGet(),String類型,客戶端傳送的協(xié)議數(shù)組,
' index,Integer類型,客戶端連接Winsock下標(biāo)。
'輸出:Reader,String類型,返回的響應(yīng)信息。
'*****************************************************************************
Private Function Reader(ByRef StrGet() As String, index As Integer) As String
Dim iType As Integer
Dim RdrID As String
Dim RdrName As String
Dim RdrType As Integer
'得到類型
iType = StrGet(1)
Select Case iType
Case 1
'得到RdrID,RdrName,RdrType,
RdrID = StrGet(2)
RdrName = StrGet(3)
RdrType = StrGet(4)
'回復(fù)客戶端
Reader = CheckRdr1(RdrID, RdrName, RdrType, index)
Case 2
'得到RdrID
RdrID = StrGet(2)
'回復(fù)客戶端
Reader = CheckRdr2(RdrID, index)
Case 3
'得到RdrID
RdrID = StrGet(2)
'回復(fù)客戶端
Reader = CheckRdr3(RdrID, index)
End Select
End Function
'*****************************************************************************
'檢驗(yàn)管理員信息管理的函數(shù) User
'功能:檢驗(yàn)客戶端發(fā)送來的管理員管理信息,處理數(shù)據(jù)庫后返回信息。
'輸入:StrGet(),String類型,客戶端傳送的協(xié)議數(shù)組,
' index,Integer類型,客戶端連接Winsock下標(biāo)。
'輸出:User,String類型,返回的響應(yīng)信息。
'*****************************************************************************
Private Function User(ByRef StrGet() As String, index As Integer) As String
Dim iType As Integer
Dim UsrID As String
Dim UsrName As String
Dim UsrPwd As String
Dim UsrType As Integer
'管理員管理操作類型
iType = StrGet(1)
Select Case iType
'添加管理員
Case 1
'得到 UsrID,UsrName,UsrPwd,UsrType
UsrID = StrGet(2)
UsrName = StrGet(3)
UsrPwd = StrGet(4)
UsrType = StrGet(5)
'回復(fù)客戶端
User = CheckUsr1(UsrID, UsrName, UsrPwd, UsrType, index)
'刪除管理員
Case 2
'得到 UsrID
UsrID = StrGet(2)
'回復(fù)客戶端
User = CheckUsr2(UsrID, index)
'查詢管理員
Case 3
'得到 UsrID
UsrID = StrGet(2)
'回復(fù)客戶端
User = CheckUsr3(UsrID, index)
End Select
End Function
'
'以下為本程序中用到的功能函數(shù)
'
'********************************************************************************
'檢驗(yàn)用戶名和密碼的函數(shù) CheckUsr
'功能:檢驗(yàn)客戶端發(fā)送來的用戶名和密碼是否正確。
'輸入:UsrID,String類型,用戶ID,
' UsrPwd,String類型,用戶密碼。
'輸出:CheckUsr,String類型,返回幀頭+登錄響應(yīng)信息。
'********************************************************************************
Private Function CheckUsr(ByVal UsrID As String, _
ByVal UsrPwd As String, _
ByVal index As Integer) As String
Dim rsCheck As New ADODB.Recordset
Dim DBstr As String
Dim bEnter As Boolean
Dim FindItm As ListItem, LtItm As ListItem
'1.讀出數(shù)據(jù)庫中的記錄
'2.找到輸入的管理員名
'3.比較輸入的密碼是否與數(shù)據(jù)庫中的記錄相符
'4.返回響應(yīng)信息
bEnter = False
DBstr = "select * from User_Info where Usr_ID='" & Replace(UsrID, "'", "''") & "'"
'打開數(shù)據(jù)集
rsCheck.Open DBstr, DBCnn, adOpenStatic, adLockReadOnly, -1
'返回響應(yīng)信息
CheckUsr = "Cnn,"
'查找到的記錄數(shù)為0
If rsCheck.RecordCount <= 0 Then '找不到該管理員名
CheckUsr = CheckUsr & "該管理員名不存在!請重新輸入!"
Else
'數(shù)據(jù)集指針指向第一個(gè)記錄,這里查找到的記錄唯一
rsCheck.MoveFirst
If UsrPwd = rsCheck.Fields("Usr_Pwd").Value Then
'返回信息
CheckUsr = CheckUsr & "歡迎進(jìn)入圖書館管理系統(tǒng)!"
bEnter = True
Else
CheckUsr = CheckUsr & "密碼錯(cuò)誤!請重新輸入!"
End If
End If
'關(guān)閉數(shù)據(jù)集
rsCheck.Close
If bEnter Then
'最大連接數(shù)加1
ClMax = ClMax + 1
Client(ClMax).UsrID = UsrID
Client(ClMax).index = index
'添加到連接狀態(tài)列表中
Set FindItm = Me.LvCnn.FindItem(Client(ClMax).UsrID)
If FindItm Is Nothing Then '找不到,添加新列表
Set LtItm = Me.LvCnn.ListItems.Add()
LtItm.Text = Client(ClMax).UsrID
LtItm.SubItems(1) = "登錄"
LtItm.SubItems(2) = Now
LtItm.SubItems(3) = index
Else '已有,更改
FindItm.SubItems(1) = "登錄"
FindItm.SubItems(2) = Now
FindItm.SubItems(3) = index
End If
'在狀態(tài)欄顯示連接數(shù)
Me.StatusBar1.Panels(1).Text = "客戶端連接數(shù):" & ClMax
End If
End Function
'********************************************************************************
'檢驗(yàn)讀者借閱圖書的函數(shù) CheckLend
'功能:檢驗(yàn)客戶端發(fā)送來的讀者借書信息,處理數(shù)據(jù)庫后返回信息。
'輸入:RdrID,String類型,讀者ID,
' bkNum,Long類型,借閱書號。
'輸出:CheckLend,String類型,返回幀頭+讀者借書響應(yīng)信息。
'********************************************************************************
Private Function CheckLend(ByVal RdrID As String, ByVal bkNum As Long) As String
Dim DBstr As String
Dim RdrType As Integer, RdrBkTotal As Integer
Dim BkTotal As Integer, dLimit As Integer
Dim DateLimit As Date, dNow As Date
Dim SqlStr As String
Dim rsCheck As New ADODB.Recordset
Dim book As New ADODB.Recordset
CheckLend = "Lend,"
'1.讀出讀者信息,判斷是否可以借閱該書
DBstr = "select * from Reader_Info where Rdr_ID='" & Replace(RdrID, "'", vbNullString) & "'"
'打開數(shù)據(jù)集
rsCheck.Open DBstr, DBCnn, adOpenStatic, adLockOptimistic
'查找到的記錄數(shù)為0
If rsCheck.RecordCount <= 0 Then '找不到該讀者
CheckLend = CheckLend & "該讀者不存在!借閱圖書失敗!"
Exit Function
End If
'數(shù)據(jù)集指針指向第一個(gè)記錄,這里查找到的記錄唯一,讀出讀者信息
rsCheck.MoveFirst
'ID是否有效
If rsCheck.Fields("Rdr_Entitle").Value = False Then
CheckLend = CheckLend & "該讀者已過期!借閱圖書失敗!"
Exit Function
End If
'欠款是否超過 3.00
If rsCheck.Fields("Rdr_Arrearage").Value > 3 Then
CheckLend = CheckLend & "該讀者欠款已超過3.00元!借閱圖書失??!"
Exit Function
End If
RdrType = rsCheck.Fields("Rdr_Type").Value
RdrBkTotal = rsCheck.Fields("Rdr_BkTotal").Value
Select Case RdrType
Case 1 '本科生
BkTotal = 5
dLimit = 1
Case 2 '研究生
BkTotal = 8
dLimit = 2
Case 3 '教師
BkTotal = 10
dLimit = 2
End Select
'借書是否超過數(shù)量
If RdrBkTotal > BkTotal Then
CheckLend = CheckLend & "該讀者借書已達(dá)最大!借閱圖書失敗!"
Exit Function
End If
'2.該書是否可借
DBstr = "select * from Book_Info where Book_Num=" & bkNum
book.Open DBstr, DBCnn, adOpenStatic, adLockOptimistic
If book.RecordCount < 1 Then
CheckLend = CheckLend & "您的輸入有誤!該圖書不存在!"
Exit Function
End If
book.MoveFirst '書號唯一
If book.Fields("Book_Available").Value = False Then '該書已借出
CheckLend = CheckLend & "您的輸入有誤!該圖書已借出!"
Exit Function
End If
'3.借閱成功,計(jì)算應(yīng)還日期,讀者借閱書數(shù)+1
dNow = Format(Now, "yy - mm - dd")
DateLimit = DateAdd("m", dLimit, dNow)
rsCheck.Fields("Rdr_BkTotal").Value = rsCheck.Fields("Rdr_BkTotal").Value + 1
'4.圖書借閱次數(shù)+1,標(biāo)記該書已借出
book.Fields("Book_Total").Value = book.Fields("Book_Total").Value + 1
book.Fields("Book_Available").Value = False
'更新數(shù)據(jù)集
rsCheck.Update
book.Update
'關(guān)閉數(shù)據(jù)集
rsCheck.Close
book.Close
'返回信息
CheckLend = CheckLend & "借閱圖書成功!" & "歸還期限是" & DateLimit & ","
'5.記錄到數(shù)據(jù)庫
SqlStr = "INSERT INTO Book_Record" & _
"(Rec_RdrID,Rec_BkNum,Rec_LendTime,Rec_LendLimit) " & _
"VALUES ('" & RdrID & "'" & _
"," & bkNum & _
",#" & dNow & "#" & _
",#" & DateLimit & "#);"
DBCnn.Execute SqlStr
End Function
'*****************************************************************************
'檢驗(yàn)讀者歸還圖書的函數(shù) CheckReturn
'功能:檢驗(yàn)客戶端發(fā)送來的讀者還書信息,處理數(shù)據(jù)庫后返回信息。
'輸入:bkNum,Long類型,還書號。
'輸出:CheckReturn,String類型,返回幀頭+讀者還書響應(yīng)信息。
'*****************************************************************************
Private Function CheckReturn(ByVal bkNum As Long) As String
Dim rsCheck As New ADODB.Recordset
Dim dec As New ADODB.Recordset
Dim book As New ADODB.Recordset
Dim pay As Single
Dim RdrID As String
Dim DBstr As String
'1.找到該書的借閱信息記錄
DBstr = "select * from Book_Record where Rec_BkNum=" & bkNum
rsCheck.Open DBstr, DBCnn, adOpenStatic, adLockOptimistic
'2.返回響應(yīng)信息
CheckReturn = "Return,"
If rsCheck.RecordCount < 1 Then '找不到該讀者
CheckReturn = CheckReturn & "該書并沒有借出!歸還圖書失敗!"
Exit Function
End If
'3.判斷是否超期,
'4.添加到數(shù)據(jù)庫,計(jì)算是否欠款,欠款累加, 借閱書數(shù)-1
rsCheck.MoveLast '最后一條記錄
If rsCheck.Fields("Rec_LendLimit").Value < Now Then
pay = DateDiff("d", rsCheck.Fields("Rec_LendLimit").Value, Now) / 100 '每天一分錢
CheckReturn = CheckReturn & "歸還圖書已成功!" & vbCrLf
CheckReturn = CheckReturn & "但該書已過期,應(yīng)交罰款" & pay & "元!"
rsCheck.Fields("Rec_Arrearage").Value = pay
'欠款累加
RdrID = rsCheck.Fields("Rec_RdrID").Value
DBstr = "select * from Reader_Info where Rdr_ID='" & RdrID & "'"
dec.Open DBstr, DBCnn, adOpenStatic, adLockOptimistic
dec.MoveFirst '唯一
dec.Fields("Rdr_Arrearage").Value = dec.Fields("Rdr_Arrearage").Value + pay
'借閱書數(shù)-1
dec.Fields("Rdr_BkTotal").Value = dec.Fields("Rdr_BkTotal").Value - 1
dec.Update
dec.Close
rsCheck.Update
rsCheck.Close
Exit Function
End If
'5.記錄該書可借
DBstr = "select * from Book_Info where Book_Num=" & bkNum
book.Open DBstr, DBCnn, adOpenStatic, adLockOptimistic
book.Fields("Book_Available").Value = True
book.Update
book.Close
CheckReturn = CheckReturn & "歸還圖書已成功!"
rsCheck.Fields("Rec_ReturnTime").Value = Now
rsCheck.Update
rsCheck.Close
End Function
'*****************************************************************************
'檢驗(yàn)繳納罰款的函數(shù) CheckPay
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -