在機房收費系統中,上下機這邊花了不少的時間去做它,主要原因是沒有理清思路,一股腦的就做起來了,上機挺好做的,到了下機,做完以後傻眼了,這才發現不對著呢……為了避免這種情況,在做上下機的時候首先理清思路,不要著急著寫**,磨刀不誤砍柴工,下面說說我對上下機的認識.
上機
首先是上機的流程圖
然後是針對每個流程進行的分析和部分**。如果對流程分析清楚,**就好寫了。
1、卡號是否為空
2、卡號是否存在(student_info表)
3、卡號的狀態是否為」使用」(student_info表)
'檢查卡號是否能正常使用4、檢查是否正在上機txtsql = "select * from student_info where cardno='" & trim(txtcardno.text) & "'"
set mrc = executesql(txtsql, msgtext)
if mrc.eof then
msgbox "此卡尚未註冊!", vbokonly + vbexclamation, "警告"
txtcardno.text = ""
txtcardno.setfocus
mrc.close
exit sub
else
status = trim(mrc.fields(10))
if mrc.eof = false and "未使用" = status then
msgbox "該卡沒有註冊!", vbokonly + vbexclamation, "警告!"
txtcardno.text = ""
txtcardno.setfocus
mrc.close
exit sub
end if
end if
txtsql = "select * from online_info where cardno='" & trim(txtcardno.text) & "'"5、沒有上機,檢查卡內餘額是否小於最少上機金額(student_info表)set mrcc = executesql(txtsql, msgtext
)
'如果卡號能用且沒有上機,檢查餘額6、滿足上述條件,就可以上機,顯示主介面顯示上機資訊和登入人數if not mrc.fields(7) > frmbasicctsding.txtlimitcash then '堅持是否餘額是否大於最少金額
msgbox "餘額不足,請充值!", vbokonly + vbexclamation, "警告"
mrc.close
exit sub
end if
'顯示登入人數7、將這條正在上機的記錄新增到online_info表中8、將上機記錄新增到line_info表中下機下機的流程圖onflag = onflag + 1
label19.caption = onflag
'斷開資料庫連線
mrc.close
1、檢查是否正在上機
2、更新line_info表中的資料(更新下機日期和下機時間)
'判斷卡號是否在上機3、刪除online_info表中的資料4、計算消費的時間txtsql = "select * from online_info where cardno='" & trim(txtcardno.text) & "'"
set mrc = executesql(txtsql, msgtext)
if mrc.eof = true then
label14.caption = "該卡號還沒上機!"
mrc.close
exit sub
'計算上機消耗的時間5、計算消費的金額txtoffdate.text = format(date, "yyyy-mm-dd")
txtofftime.text = format(time, "hh:mm")
usetime = abs(datediff("n", txtofftime, txtontime)) 』每天一結賬,結賬的時候強制使用者下機
txtconsumetime.text = usetime
'計算消費的金額計算現有金額:'如果消費的時間小於最少時間,消費金額為1元
if txtconsumetime.text <= leasttime then
txtconsume.text = 1
'txtcash.text = mrc.fields(7) - trim(txtconsume.text)
elseif usetime <= pretime then
'第一種情況 消費時間小於準備時間,消費金額為0
usecash = 0
txtconsume.text = usecash
else
'遞增時間段消費的金錢,以半小時的費用為計算基礎
unitcash = format((halfcash / 30) * unittime, "0.0")
'第二種情況 當消費時間小於最小上機時間 按乙個遞增時間段收費
if usetime <= leasttime then
usecash = unitcash
txtconsume.text = unitcash
else
'第三種情況 最後求出的unitnumber為遞增時間段的個數
usetime = usetime - pretime
unitnumber = usetime mod unittime
if unitnumber = 0 then
unitnumber = int(usetime / unittime)
else
unitnumber = int(usetime / unittime) + 1
end if
usecash = format(unitnumber * unitcash, "0.0")
txtconsume.text = usecash
end if
end if
txtsql = "select * from student_info where cardno='" & txtcardno & "'"6、將這些資訊更新到主介面對應的文字框中,上機人數也要更新。7、更新基本資訊表(student_info表)上下機這裡主要是邏輯上的思考,把思路理清以後就能做好。在機房收費系統中,不僅僅是上下機,結賬,組合查詢等等都體現了邏輯的重要性,對要實現的功能有個全域性把握,再把它分解,這樣一點點的進行,就可以把它做好。set mrc = executesql(txtsql, msgtext)
'獲得原來的餘額
totalcash = mrc.fields(7)
'計算消費後的餘額
totalcash = totalcash - val(trim(txtconsume.text))
'更新餘額
mrc.fields(7).value = totalcash
mrc.update
mrc.close
txtcash.text = totalcash
機房收費系統 上下機
最近大家都在進行機房收費系統,看大家的部落格,基本上都是先理清思路再實現功能,回想自己當時做的時候就不夠好,只是盲目的敲 卻忽略了方向比努力更重要這個道理,導致最後出現了很多漏洞,於是又重新畫了一遍上下機的流程圖,希望能對以後機房的學習有幫助。上機 只要思路清晰,具體的 實現很簡單。下機 下機需要計...
機房收費系統 上下機
在 上機下機中 主要是要想到所有在上機中可能發生的事件 並作出相應的對策 確保使用者可以成功的上機 下 機。上機 卡號是否位數字,需要判斷卡號是否存在,卡內餘額是否充足,卡號是否正在被使用。首先 查詢資料庫 中的student表 判斷卡號是否存在,且 處於可使用狀態 如果均符合以上要求 那麼就要檢視...
機房收費系統 上下機
前言 這兩個窗體 邏輯基本類似,開始正文 邏輯圖 重要 展示 從下機來說下機時間的確定是乙個承上啟下的作用 basicsql select from basicdata info 連線基本資料表 set basicmrc executesql basicsql,basictext if online...