机房系统(六)——【下机】
生活随笔
收集整理的這篇文章主要介紹了
机房系统(六)——【下机】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? 相對(duì)于上機(jī)來說,小編覺得下機(jī)還是有點(diǎn)兒難度的,在進(jìn)行下機(jī)時(shí),也是耗費(fèi)了很長的時(shí)間。
? ? 在機(jī)房收費(fèi)系統(tǒng)中,涉及到下機(jī)的,有三部分:首先是主界面上的下機(jī),其次是操作員的所有學(xué)生下機(jī)和部分學(xué)生下機(jī)。這些部分的主要功能就是,實(shí)現(xiàn)上機(jī)用戶的下機(jī)。總體來說,實(shí)現(xiàn)主體功能的思路是一樣的。小編做的流程圖如下:
? ? 實(shí)現(xiàn)下機(jī)功能的總體流程,有三大部分:
? ? 其一:對(duì)上機(jī)卡號(hào)的判定。
? ? 其二:計(jì)算消費(fèi)
? ? 其三:更新相應(yīng)的表
? ? 在這部分中,計(jì)算用戶的消費(fèi)是重難點(diǎn)。在給定的數(shù)據(jù)庫中,對(duì)它給出的各個(gè)字段的含義自己要有一個(gè)明確方向。小編最初就處于一個(gè)稀里糊涂的狀態(tài),到算錢的時(shí)候才去想這些字段到底有什么用(當(dāng)沒有明確規(guī)定的時(shí)候,每個(gè)人的理解可能存在偏差)。實(shí)現(xiàn)這部分的部分代碼如下; Rem 定義變量,存儲(chǔ)數(shù)據(jù)Dim intLineTime As Integer '定義實(shí)際上機(jī)時(shí)間Dim IntConSume As Single '定義消費(fèi)金額Dim curConsume As Single '定義真正消費(fèi)的單位時(shí)間個(gè)數(shù)Dim curBalance As Single '定義余額Dim t As String '定義用戶類型Dim FixEdunit As Single '定義固定用戶單位時(shí)間費(fèi)用(分鐘)Dim TeMunit As Single '定義臨時(shí)用戶單位費(fèi)用Dim a As SingleDim RemainCash As Single '定義余額Rem 獲取BasicData表數(shù)據(jù),把基礎(chǔ)數(shù)據(jù)賦值給變量txtSQLBD = "select * from BasicData_Info"Set mrcBD = ExecuteSQL(txtSQLBD, MsgTextBD)Rem 在線時(shí)長計(jì)算,時(shí)間單位為分鐘txtSQLOL = "select * from OnLine_Info where cardno='" & Trim(txtCardNo.Text) & "'"Set mrcOL = ExecuteSQL(txtSQLOL, MsgTextOL)intLineTime = (Date - DateValue(mrcOL!ondate)) * 1440 + (Hour(Time) - Hour(TimeValue(mrcOL!OnTime))) * 60 + (Minute(Time) - Minute(TimeValue(mrcOL!OnTime)))Rem 判斷消費(fèi)時(shí)間是否小于準(zhǔn)備時(shí)間,若小于,消費(fèi)時(shí)間為0,消費(fèi)金額為0If intLineTime < Val(Trim(mrcBD.Fields(4))) ThentxtConsumeTime.Text = "0"txtConsume.Text = "0"ElseRem 判斷消費(fèi)時(shí)間是否小于最低消費(fèi)時(shí)間,若小于,則消費(fèi)金額為最低消費(fèi)金額If intLineTime < Val(Trim(mrcBD.Fields(3))) ThentxtConsumeTime.Text = intLineTimetxtConsume.Text = Trim(mrcBD.Fields(5))Elsea = Int(intLineTime / Val(Trim(mrcBD!unitTime))) '單位時(shí)間個(gè)數(shù),實(shí)際上機(jī)時(shí)間大于最低消費(fèi)時(shí)間,則按單位時(shí)間個(gè)數(shù)計(jì)算,不足一個(gè)數(shù),向上加1If (intLineTime Mod Trim(mrcBD!unitTime)) = 0 ThencurConsume = aElsecurConsume = a + 1End IfEnd IfEnd IfRem 判斷用戶類型 計(jì)算金額txtSQLOL = "select * from OnLine_Info where cardno='" & Trim(txtCardNo.Text) & "'"Set mrcOL = ExecuteSQL(txtSQLOL, MsgTextOL)If Trim(mrcOL.Fields(1)) = "固定用戶" ThentxtConsume.Text = Val(curConsume) * Trim(mrcBD.Fields(0)) / 30 '遞增時(shí)間的個(gè)數(shù) * 一個(gè)遞增時(shí)間內(nèi)的錢ElsetxtConsume.Text = Val(curConsume) * Trim(mrcBD.Fields(1)) / 30End IfRem 計(jì)算余額txtSQLStu = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"Set mrcStu = ExecuteSQL(txtSQLStu, MsgTextStu)RemainCash = mrcStu!Cash - Val(txtConsume.Text)
? ? 對(duì)于操作員的選擇或使全部學(xué)生下機(jī)的功能來說,與主界面上下機(jī)不同的是,增加了對(duì)需要下機(jī)同學(xué)的選擇與判斷。
? ? 全部下機(jī)使用Do While...Loop 循環(huán)實(shí)現(xiàn)的,【DoWhile...Loop:先判斷條件是否滿足,若滿足,則進(jìn)入循環(huán);Do...Loop While:先進(jìn)入循環(huán)執(zhí)行,然后判斷條件是否滿足,若滿足,則進(jìn)入下一次的循環(huán)】。選擇下機(jī)使用For...Next 循環(huán) 和定義數(shù)組實(shí)現(xiàn)的。
? ? 選擇下機(jī)時(shí),給需要下機(jī)的學(xué)生做標(biāo)志,將已選擇的學(xué)生信息放在一個(gè)容器里面,用以區(qū)分需下機(jī)和非下機(jī)的信息。 1、Rem 記錄選中下機(jī)做標(biāo)記的卡號(hào),所有卡號(hào)信息存放到數(shù)組里With MSFlexGrid1i = 0For j = 1 To .Rows - 1If .TextMatrix(j, 5) = "√" Thensz(i) = .TextMatrix(j, 0) '存放卡號(hào)xh(i) = Val(j)i = i + 1End IfNext j2、Rem 然后使用for...next循環(huán)體3、Rem 更新表格記錄Rem 更新界面For s = 0 To i - 1.RemoveItem xh(s)Next s
? ? 當(dāng)時(shí)做這部分的時(shí)候,真是一頭霧水,花費(fèi)了很長時(shí)間,完成之后再回顧的時(shí)候,才發(fā)現(xiàn)其實(shí)并沒有很多難理解的內(nèi)容。弄明白一部分的下機(jī),其他的都是大同小異的。
總結(jié)
以上是生活随笔為你收集整理的机房系统(六)——【下机】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机房系统(五)——【Excel表导出】
- 下一篇: 机房系统(七)——【报表】