【機房收費系統】——知識點彙總
阿新 • • 發佈:2018-11-05
前言
經歷了兩個多月的機房收費系統算是結了,結了並不意味著不學了,在機房中還是有很多值得我們學習的知識點,值得讓我們思考的東西,有些邏輯思維還是很強的。現在將做的過程中感覺比較重要的一些知識點分享出來。
一、整體思路
在機房收費系統中有不同的級別,不同的級別有不同許可權,他們所做的事情也不一樣,許可權是有限的。整個收費系統就像網咖一樣,一般使用者就相當於去上網的人,但上網的人有經常去的,還有隻去一次的,這時就有了臨時使用者和固定使用者,為什麼要分固定使用者和臨時使用者呢?那就是他們的待遇不一樣!常去的人肯定會給予優惠,收的錢少。而只去一兩次的就收費稍微貴點了。
機房收費系統主要有三個級別的使用者,管理員,操作員,一般使用者,他們的許可權是從低到高。職能從圖可以看出來。
二、重點知識點
1.在開始之前我們首先應該理清模組中的知識,見部落格 。
https://blog.csdn.net/yyp0304Devin/article/details/82744485
2.級別登入
在登入的時候我們會選擇不同的級別登入,登入的時候如何讓他們擁有許可權,一般使用者登入只能顯示一般使用者的許可權,他看不了操作員和管理員的許可權,對他不可見。其次就是操作員,他相當於一個網咖的網管,他沒有網咖老闆的許可權,他在中間架起管理員和一般使用者的橋樑,讓管理員賺一般使用者的錢。而管理員就擁有最高許可權。
級別使用者登入程式碼
If Trim(mrc.Fields(2)) = Trim("一般使用者") Then '一般使用者的許可權 If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then '判斷密碼是否正確 txtsql1 = "select * from OnWork_Info" '獲取到正在上機表 Set mrc1 = ExecuteSQL(txtsql1, MsgText) Me.Hide UserName = Trim(txtUserName.Text) '將使用者名稱給username frmMain.Show frmMain.GeneralUserMenu.Enabled = True frmMain.GeneralUserMenu.Visible = True frmMain.OperatorMenu.Enabled = False frmMain.OperatorMenu.Visible = False frmMain.AdministratorMenu.Enabled = False frmMain.AdministratorMenu.Visible = False mrc1.AddNew '新增更新到正在上機表裡 mrc1.Fields(0) = Trim(UserName) mrc1.Fields(1) = Trim(mrc.Fields(2)) mrc1.Fields(2) = Trim(Date) mrc1.Fields(3) = Trim(Time) mrc1.Fields(4) = VBA.Environ("computername") mrc1.Update mrc1.Close '關閉資料連線 Else MsgBox "輸入密碼不正確,請重新輸入!", vbOKOnly, "提示" txtPassword.Text = "" txtPassword.SetFocus Exit Sub End If ElseIf Trim(mrc.Fields(2)) = Trim("操作員") Then '操作員的許可權 If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then '判斷密碼是否正確 txtsql1 = "select * from OnWork_Info" '獲取正在上機表 Set mrc1 = ExecuteSQL(txtsql1, MsgText) Me.Hide UserName = Trim(txtUserName.Text) '將使用者名稱給username frmMain.Show frmMain.GeneralUserMenu.Enabled = True frmMain.GeneralUserMenu.Visible = True frmMain.OperatorMenu.Enabled = True frmMain.OperatorMenu.Visible = True frmMain.AdministratorMenu.Enabled = False frmMain.AdministratorMenu.Visible = False mrc1.AddNew '新增更新到正在上機表離去 mrc1.Fields(0) = Trim(UserName) mrc1.Fields(1) = Trim(mrc.Fields(2)) mrc1.Fields(2) = Trim(Date) mrc1.Fields(3) = Trim(Time) mrc1.Fields(4) = VBA.Environ("computername") mrc1.Update mrc1.Close '關閉資料連線 Else MsgBox "輸入密碼不正確,請重新輸入!", vbOKOnly + vbExclamation, "警告" txtPassword.SetFocus txtPassword.Text = "" Exit Sub End If ElseIf Trim(mrc.Fields(2)) = Trim("管理員") Then '管理員的許可權 If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then '判斷密碼是否正確 txtsql1 = "select * from OnWork_Info" '獲取到正在上機表 Set mrc1 = ExecuteSQL(txtsql1, MsgText) Me.Hide UserName = Trim(txtUserName.Text) '將使用者名稱給username frmMain.GeneralUserMenu.Enabled = True frmMain.GeneralUserMenu.Visible = True frmMain.OperatorMenu.Enabled = True frmMain.OperatorMenu.Visible = True frmMain.AdministratorMenu.Enabled = True frmMain.AdministratorMenu.Visible = True mrc1.AddNew '新增更新到正在上機的表裡 mrc1.Fields(0) = Trim(UserName) mrc1.Fields(1) = Trim(mrc.Fields(2)) mrc1.Fields(2) = Trim(Date) mrc1.Fields(3) = Trim(Time) mrc1.Fields(4) = VBA.Environ("computername") mrc1.Update
2.讓系統登入時顯示當前時間,並且不能被修改。但是顯示時間並且時間時刻更新的前提是要在窗體上放一個定時器。
Label14.Caption = "當前時間:" & Time
3.學生檢視餘額
https://blog.csdn.net/yyp0304Devin/article/details/81274743
4.上下機
(1)上機
If Not Testtxt(txtCardNo.Text) Then MsgBox "請輸入學號!", vbOKOnly + vbExclamation, "警告" txtCardNo.SetFocus Exit Sub End If '判斷是否為數字 If Not IsNumeric(txtCardNo.Text) Then MsgBox "卡號為數字,請輸入數字!", vbOKOnly + vbExclamation, "提示" txtCardNo.Text = "" txtCardNo.SetFocus Exit Sub End If '驗證使用者是否已上機 txtSQL = "select * from onLine_Info where cardno='" & Trim(txtCardNo.Text) & "'" Set mrc1 = ExecuteSQL(txtSQL, MsgText) If mrc1.EOF = False Then MsgBox "該帳號已經上機,不允許重複登入!", vbOKOnly + vbExclamation, "警告" txtCardNo.Text = "" txtName.Text = "" txtDept.Text = "" txtSex.Text = "" txtSID.Text = "" txtType.Text = "" Exit Sub Else '驗證卡號是否存在,有沒有註冊 txtSQL = "select * from student_Info where cardno ='" & txtCardNo.Text & "'" Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF = True Then MsgBox "此使用者名稱不存在,請重新輸入!", vbOKOnly + vbExclamation, "警告" txtCardNo.SetFocus Else txtSQL = "select * from CancelCard_Info where cardno = '" & Val(Trim(txtCardNo.Text)) & "'" Set mrc6 = ExecuteSQL(txtSQL, MsgText) If mrc6.EOF = False Then MsgBox "該卡已退,無法上機!", 48, "警告" Exit Sub End If '驗證餘額是否充足 txtSQL = "select * from BasicData_Info" Set mrc3 = ExecuteSQL(txtSQL, MsgText) If mrc.Fields(7) < mrc3.Fields(1) Then MsgBox "餘額小於最小限制金額,請充值後再上機!!", vbOKOnly + vbExclamation, "提示" frmRecharge.Show frmRecharge.txtCardNo.Text = txtCardNo.Text Exit Sub Else txtCardNo.Text = mrc.Fields(0) txtName.Text = mrc.Fields(2) txtDept.Text = mrc.Fields(4) txtSex.Text = mrc.Fields(3) txtSID.Text = mrc.Fields(6) txtType.Text = mrc.Fields(14) txtOnDate.Text = Date txtOnTime.Text = Time txtCash = mrc.Fields(7) '更新上機人數 txtSQL = "select * from User_Info" Set mrc2 = ExecuteSQL(txtSQL, MsgText) txtSQL = "select * from onLine_Info" Set mrc1 = ExecuteSQL(txtSQL, MsgText) mrc1.AddNew mrc1.Fields(0) = Trim(txtCardNo.Text) mrc1.Fields(1) = Trim(txtType.Text) mrc1.Fields(2) = Trim(txtCardNo.Text) mrc1.Fields(3) = Trim(txtName.Text) mrc1.Fields(4) = Trim(txtDept.Text) mrc1.Fields(5) = Trim(txtSex.Text) mrc1.Fields(6) = Date mrc1.Fields(7) = Time mrc1.Fields(8) = VBA.Environ("computername") mrc1.Fields(9) = "" mrc.Fields(9) = mrc2.Fields(0) mrc1.Update Label15.Caption = "當前上機人數:" & mrc1.RecordCount mrc1.Close txtSQL = "select * from Line_info " Set mrc4 = ExecuteSQL(txtSQL, MsgText) '更新到line表 mrc4.AddNew mrc4.Fields(1) = Trim(txtCardNo.Text) mrc4.Fields(2) = Trim(txtSID.Text) mrc4.Fields(3) = Trim(txtName.Text) mrc4.Fields(4) = Trim(txtDept.Text) mrc4.Fields(5) = Trim(txtSex.Text) mrc4.Fields(6) = Trim(txtOnDate.Text) mrc4.Fields(7) = Trim(txtOnTime.Text) mrc4.Fields(13) = "上機" mrc4.Fields(14) = VBA.Environ("computername") mrc4.Update mrc4.Close
(2)下機
If txtCardNo.Text = "" Then
MsgBox "請輸入學號!", vbOKOnly + vbExclamation, "警告"
Else
'判斷該使用者是否上機
txtSQL = "select * from OnLine_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then
MsgBox "該卡號未上機,請重新確認", vbOKOnly + vbExclamation, "警告"
txtCardNo.Text = ""
txtName.Text = ""
txtDept.Text = ""
txtSex.Text = ""
txtSID.Text = ""
txtType.Text = ""
txtOnDate.Text = ""
txtOnTime.Text = ""
Else
'顯示上機帳號資料
txtSQL = "select * from student_Info"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from BasicData_Info"
Set mrc2 = ExecuteSQL(txtSQL, MsgText)
txtType.Text = mrc.Fields(1)
txtCardNo.Text = mrc.Fields(0)
txtName.Text = mrc.Fields(3)
txtDept.Text = mrc.Fields(4)
txtSex.Text = mrc.Fields(5)
txtOnDate.Text = Format(Trim(mrc.Fields(6)), "yyyy-mm-dd")
txtOnTime.Text = Format(Trim(mrc.Fields(7)), "hh:mm:ss")
txtSID.Text = mrc.Fields(2)
txtOffDate.Text = Format(Date, "yyyy-mm-dd")
txtOffTime.Text = Format(Time, "hh:mm:ss")
'更新上機人數
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "當前上機人數:" & mrc.RecordCount
mrc.Close
'顯示當前時間
Label14.Caption = "當前時間:" & Time
'下機結算:時間,金額
txtdate = DateDiff("n", txtOnDate.Text, txtOffDate.Text)
txttime = DateDiff("n", txtOnTime.Text, txtOffTime.Text)
txtCTime.Text = Int(txtdate) + Int(txttime)
intcousumetime = txtCTime.Text
If Val(intcousumetime) < mrc2.Fields(4) Then '判斷消費時間是否小於準備時間
txtCTime = "0"
txtCMoney.Text = "0"
txtCash.Text = Trim(mrc1.Fields(7))
txtSQL = "Delete from online_info where cardno = '" & Trim(txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "當前上機人數:" & mrc.RecordCount
mrc.Close
MsgBox "下機成功!", vbOKOnly + vbExclamation, "提示"
Dim ctr1 As Control
For Each ctr1 In Me.Controls
If TypeOf ctr1 Is TextBox Then
ctr1.Text = ""
End If
Next
Exit Sub
End If
'判斷臨時使用者的消費金額
txtSQL = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
'查詢cardno的使用者類別是 臨時還是固定
If Trim(mrc1.Fields(14)) = "臨時使用者" Then
txtCMoney.Text = (Int(intcousumetime / 60) + 1) * Trim(mrc2.Fields(1))
txtCash.Text = Trim(mrc1.Fields(7)) - Trim(txtCMoney.Text)
'==================================================
'更新表
If Val(txtCash.Text) < 0 Then
MsgBox "下機失敗,請先充值!", vbOKOnly + vbExclamation, "提示"
frmRecharge.Show
frmRecharge.txtCardNo.Text = txtCardNo.Text
Exit Sub
End If
MsgBox "下機成功!", vbOKOnly + vbExclamation, "提示"
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "當前上機人數:" & mrc.RecordCount
mrc1.Close
mrc.Delete
mrc.Update
mrc.Close
'更新歷史下機記錄
txtSQL = "select * from Line_info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc4 = ExecuteSQL(txtSQL, MsgText)
mrc4.AddNew
mrc4.Fields(1) = Trim(txtCardNo.Text)
mrc4.Fields(2) = Trim(txtSID.Text)
mrc4.Fields(3) = Trim(txtName.Text)
mrc4.Fields(4) = Trim(txtDept.Text)
mrc4.Fields(5) = Trim(txtSex.Text)
mrc4.Fields(6) = Trim(txtOnDate.Text)
mrc4.Fields(7) = Trim(txtOnTime.Text)
mrc4.Fields(8) = Trim(txtOffDate.Text)
mrc4.Fields(9) = Trim(txtOffTime.Text)
mrc4.Fields(10) = Trim(txtCTime.Text)
mrc4.Fields(11) = Trim(txtCMoney.Text)
mrc4.Fields(12) = Trim(txtCash.Text)
mrc4.Fields(13) = "下機"
mrc4.Fields(14) = VBA.Environ("computername")
mrc4.Update
mrc4.Close
'更新學生表學生資訊(餘額)
txtSQL = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
mrc1.Fields(7) = Trim(txtCash.Text)
mrc1.Fields(9) = UserName
mrc1.Fields(10) = "使用"
mrc1.Fields(11) = "結賬"
mrc1.Fields(12) = Date
mrc1.Fields(13) = Time
mrc1.Update
mrc1.Close
Else
'判斷固定使用者的消費金額
txtCMoney.Text = (Int(intcousumetime / 60) + 1) * Trim(mrc2.Fields(0))
txtCash.Text = Trim(mrc1.Fields(7)) - Trim(txtCMoney.Text)
If Val(txtCash.Text) < 0 Then
MsgBox "下機失敗,請先充值!", vbOKOnly + vbExclamation, "提示"
frmRecharge.Show
frmRecharge.txtCardNo.Text = txtCardNo.Text
Exit Sub
End If
MsgBox "下機成功!", vbOKOnly + vbExclamation, "提示"
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "當前上機人數:" & mrc.RecordCount
mrc1.Close
mrc.Delete
mrc.Update
mrc.Close
'更新歷史下機記錄
txtSQL = "select * from Line_info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc4 = ExecuteSQL(txtSQL, MsgText)
mrc4.AddNew
mrc4.Fields(1) = Trim(txtCardNo.Text)
mrc4.Fields(2) = Trim(txtSID.Text)
mrc4.Fields(3) = Trim(txtName.Text)
mrc4.Fields(4) = Trim(txtDept.Text)
mrc4.Fields(5) = Trim(txtSex.Text)
mrc4.Fields(6) = Trim(txtOnDate.Text)
mrc4.Fields(7) = Trim(txtOnTime.Text)
mrc4.Fields(8) = Trim(txtOffDate.Text)
mrc4.Fields(9) = Trim(txtOffTime.Text)
mrc4.Fields(10) = Trim(txtCTime.Text)
mrc4.Fields(11) = Trim(txtCMoney.Text)
mrc4.Fields(12) = Trim(txtCash.Text)
mrc4.Fields(13) = "下機"
mrc4.Fields(14) = VBA.Environ("computername")
mrc4.Update
mrc4.Close
'更新學生表學生資訊(餘額)
txtSQL = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
mrc1.Fields(7) = Trim(txtCash.Text)
mrc1.Fields(9) = UserName
mrc1.Fields(10) = "使用"
mrc1.Fields(11) = "結賬"
mrc1.Fields(12) = Date
mrc1.Fields(13) = Time
mrc1.Update
mrc1.Close
'更新上機人數
txtSQL = "select * from online_info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Label15.Caption = "當前上機人數:" & mrc.RecordCount
mrc.Close
5.檢視學生充值記錄,之前在檢視的時候只能查出來每次充值的記錄,但是把第一次註冊的時候充的錢查不出來,那這樣系統就存在缺陷了,使用者想查自己的充值記錄,可是沒有第一條,這時就可以用一個語句把它加到充值表中,在註冊時把記錄同時存在充值表中。
txtSQL = "select * from Recharge_Info where cardno='" & Trim(txtCardno.Text) & "'" '使卡號等於充值記錄表中的卡號,如果不相等給出提示
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
Do While Not mrc1.EOF
.Rows = .Rows + 1
.CellAlignment = 4
.TextMatrix(.Rows - 1, 1) = Trim(mrc1.Fields(1))
.TextMatrix(.Rows - 1, 0) = Trim(mrc1.Fields(2))
.TextMatrix(.Rows - 1, 2) = Trim(mrc1.Fields(3))
.TextMatrix(.Rows - 1, 3) = Trim(mrc1.Fields(4))
.TextMatrix(.Rows - 1, 4) = Trim(mrc1.Fields(5))
.TextMatrix(.Rows - 1, 5) = Trim(mrc1.Fields(6))
mrc1.MoveNext
Loop
End With
6.讓所有學生都下線
'刪除online表中的資訊,讓所有的學生下線
OnlineSQL = "select * from online_Info "
Set mrcOnline = ExecuteSQL(OnlineSQL, OMsgtext)
'如果沒有人上線,提示
If mrcOnline.RecordCount = 0 Then
MsgBox "沒有學生上線!", vbOKOnly + vbInformation, "提示"
Exit Sub
End If
a = myflexgrid.Rows - 1
If myflexgrid.Rows = 0 Then
MsgBox "沒有學生上線!", vbOKOnly + vbInformation, "提示"
Exit Sub
End If
myflexgrid.Rows = 1
For b = a To 1 Step -1
'從basicdata表中讀取資料
BasicDataSQL = "select * from basicdata_Info"
Set mrcBasicData = ExecuteSQL(BasicDataSQL, BMsgtext)
'從student表中讀取資料
studentSQL = "select * from student_Info"
Set mrcStudent = ExecuteSQL(studentSQL, Smsgtext)
'從line表中讀取資料
LineSQL = "select * from line_Info"
Set mrcLine = ExecuteSQL(LineSQL, LMsgtext)
'從online表中讀取資料
OnlineSQL = "select * from online_Info"
Set mrcOnline = ExecuteSQL(OnlineSQL, OMsgtext)
CostTime = DateDiff("n", Trim(Hour(Time)), Trim(mrcOnline!ontime))
CostDate = DateDiff("n", Trim(Date), Trim(mrcOnline!OnDate))
intLineTime = Format(Str(Val(CostTime) + Val(CostDate)))
'判斷實際線上時間是否小於準備時間,若小於則消費時間為0
If intLineTime < mrcBasicData!prepareTime Then
intConsumeTime = 0
'判斷實際線上時間是否小於最低消費時間,若小於,則消費時間為最低消費時間
ElseIf intLineTime < mrcBasicData!leasttime Then
intConsumeTime = mrcBasicData!leasttime
Else
intConsumeTime = Round(intLineTime / mrcBasicData!unittime) * mrcBasicData!unittime 'round()函式為四捨五入函式
End If
'計算消費金額(消費金額=消費時間/30*使用者型別的半小時費用)
'固定使用者(為什麼要除以30)
If Trim(mrcStudent.Fields(14)) = "固定使用者" Then
curConsume = intConsumeTime / 30 * mrcBasicData!rate
Else
curConsume = intConsumeTime / 30 * mrcBasicData!tmpRate
End If
'計算餘額(賬戶餘額=原賬戶餘額-消費金額)
curBalance = mrcStudent!cash - curConsume
'更新學生資訊表的餘額
mrcStudent.Fields(7) = curBalance
mrcStudent.Update
mrcStudent.Close
'更新上機記錄表(line表)
LineSQL = "select * from line_Info"
Set mrcLine = ExecuteSQL(LineSQL, LMsgtext)
mrcLine.AddNew
mrcLine.Fields(1) = Trim(mrcOnline!Cardno)
mrcLine.Fields(2) = Trim(mrcOnline!studentNo)
mrcLine.Fields(3) = Trim(mrcOnline!studentName)
mrcLine.Fields(4) = Trim(mrcOnline!Department)
mrcLine.Fields(5) = Trim(mrcOnline!Sex)
mrcLine.Fields(6) = Trim(mrcOnline!OnDate)
mrcLine.Fields(7) = Trim(mrcOnline!ontime)
mrcLine.Fields(8) = Date
mrcLine.Fields(9) = Trim(Time & "")
mrcLine.Fields(10) = intConsumeTime
mrcLine.Fields(11) = curConsume
mrcLine.Fields(12) = curBalance
mrcLine.Fields(13) = "強制下機"
mrcLine.Fields(14) = Trim(Environ("computername"))
mrcLine.Update
'刪除線上表中的資訊
OnlineSQL = "select * from online_Info"
Set mrcOnline = ExecuteSQL(OnlineSQL, OMsgtext)
mrcOnline.Delete
mrcOnline.Update
Next b
7.選中學生下線
If myflexgrid.RowSel = 0 Then
MsgBox "請選擇資料!", 48, "警告"
Exit Sub
End If
txtSQL = "select * from basicdata_info "
Set mrccc = ExecuteSQL(txtSQL, MsgText)
With myflexgrid
For j = 0 To .Rows - 1
i = 0
If j > .Row Then
Exit Sub
End If
If .TextMatrix(j, 5) = "√" Then
hanghao(i) = j
txtSQL = "select * from online_info where cardno = '" & Trim(myflexgrid.TextMatrix(Val(j), 0)) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from student_info where cardno = '" & Trim(myflexgrid.TextMatrix(Val(j), 0)) & "'"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
SJ = 0: XF = 0: ontime = ""
SJ = Abs(Val(DateDiff("n", Time, Trim(mrc.Fields(7)))))
If SJ < Trim(mrccc.Fields(3)) Then
Else
If Trim(mrcc.Fields(14)) = "臨時使用者" Then
XF = (CInt(Trim(SJ) / 30 + 1)) * (Trim(mrccc.Fields(1)) / 3)
mrcc.Fields(7) = Val(Trim(mrcc.Fields(7))) - XF
mrcc.Update
Else
XF = (CInt(Trim(SJ) / 30) + 1) * (Trim(mrccc.Fields(0)) / 2)
mrcc.Fields(7) = Val(Trim(mrcc.Fields(7))) - XF
mrcc.Update
End If
End If
ontime = mrc.Fields(7)
mrc.Delete
mrc.Update
mrc.Close
'
txtSQL = "select * from line_info where ontime = '" & ontime & "'"
Set mrcccc = ExecuteSQL(txtSQL, MsgText)
txtSQL = txtSQL & txtOnTime & " " & " txtcardno = '" & Trim(myflexgrid.TextMatrix(Val(j), 0)) & "'"
Set mrccccc = ExecuteSQL(txtSQL, MsgText)
mrcccc.Fields(8) = Date
mrcccc.Fields(9) = Time
mrcccc.Fields(10) = SJ
mrcccc.Fields(11) = XF
mrcccc.Fields(12) = mrcc.Fields(7)
mrcccc.Fields(13) = "正常下機"
mrcccc.Update
myflexgrid.TextMatrix(Val(j), 5) = ""
myflexgrid.RemoveItem hanghao(i)
j = j - 1
End If
Next j
End With
MsgBox "選中學生已下機!", vbOKOnly + vbInformation, "提示"
8.註冊
https://blog.csdn.net/yyp0304Devin/article/details/81415405
9.充值
https://blog.csdn.net/yyp0304Devin/article/details/81542552
10.學生基本資訊維護
https://blog.csdn.net/yyp0304Devin/article/details/82707661
11.結賬
結賬在機房收費系統中也是三大難點之一,有很多讓人頭疼的東西。
(1)通過使用者名稱讓顯示操作員的真實姓名
txtSQL = "select * from User_Info where UserID='" & Trim(comboUserName.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
comboTrueName.Text = mrc.Fields(3)
mrc.Close
(2)彙總
其他的還好弄,就是在彙總這一塊有點燒腦,算賬的時候不用心就算不對了,包括一些售卡統計等,在這裡有涉及到了臨時使用者應收金額等就難做了,但是思路理對了也沒有多難。
'彙總
'售卡數量
txtSQL = "select * from student_Info where UserID='" & Trim(comboUserName.Text) & _
"' and Ischeck='" & "未結賬" & " '"
Set mrcS = ExecuteSQL(txtSQL, MsgText)
If mrcS.RecordCount = 0 Then
txtSellCard.Text = "0"
Else
txtSellCard.Text = mrcS.RecordCount
End If
'退卡數量
txtSQL = "select * from CancelCard_Info where UserID='" & Trim(comboUserName.Text) & _
"'and status='" & "未結賬" & " '"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
If mrcc.RecordCount = 0 Then
txtRtnNum.Text = "0"
Else
txtRtnNum.Text = mrcc.RecordCount
End If
'退卡金額=該操作員操作的所有使用者退卡金額的總和
txtSQL = "select sum(CancelCash) from CancelCard_Info where UserID='" & Trim(comboUserName.Text) & _
"'and status='" & "未結賬" & "'"
Set mrcc = ExecuteSQL(txtSQL, MsgText)
If IsNull(Trim(mrcc.Fields(0))) Then
txtRtnSum.Text = "0"
Else
txtRtnSum.Text = Val(mrcc.Fields(0))
End If
'充值金額(不區分臨時使用者和固定使用者)
txtSQL = "select sum(addmoney) from Recharge_Info where UserID='" & Trim(comboUserName.Text) & _
"'and status='" & "未結賬" & "'"
Set mrcR = ExecuteSQL(txtSQL, MsgText)
If IsNull(Trim(mrcR.Fields(0))) Then
txtRechargeSum.Text = "0"
Else
txtRechargeSum.Text = Val(mrcR.Fields(0))
End If
'總售卡數=售卡數量-退卡數量
txtSaleCardNumber.Text = Val(txtSellCard.Text) - Val(txtRtnNum.Text)
'應收金額=充值金額-退卡金額
txtSum.Text = Val(txtRechargeSum.Text) - Val(txtRtnSum.Text)
Dim mrc1111 As ADODB.Recordset
'臨時收費金額=臨時使用者註冊金額
txtSQL = "select sum(cash) from student_Info where UserID = '" & Trim(comboUserName.Text) & "'and Ischeck='未結賬' and type='臨時使用者'"
Set mrc1111 = ExecuteSQL(txtSQL, MsgText)
If IsNull(Trim(mrc1111.Fields(0))) Then
txtTemporarySum.Text = "0"
Else
txtTemporarySum.Text = Val(mrc1111.Fields(0))
End If
(3)報表
在日結賬和周結賬這裡要做報表,以下是做報表的步驟
https://blog.csdn.net/yyp0304Devin/article/details/82081515
三、收穫
1.通過做機房,讓自己對程式碼也有了更深的瞭解,之前遇到問題就只是找解決方法,問題也不知道出在哪裡,有些問題雖然解決了也不知道怎麼解決的,由於不斷地積累,現在遇到問題就知道出在哪裡,針對性比以前強了。機房收費系統不僅考驗我們自己寫程式碼,思考,更多的在體驗在使用者方面,在軟體開發工具中學過,系統介面就是軟體本身,那我們在做一個軟體的時候就要換位思考,怎樣讓使用者對這個軟體更喜歡,更想用這個軟體。
2.做完這個軟體讓我在分析問題,認識問題有了不一樣的認識,換位思考就是一個方面,還有做的時候怎樣能降低程式碼的冗餘度,簡潔,讓人一看就懂。
3.對很多函式也有了認識,在之前做的時候不知道什麼地方該用什麼函式,某個函式用在某個地方起什麼作用.........................