1. 程式人生 > >機房收費系統——總結篇

機房收費系統——總結篇

      前言:機房收費系統到現在已經基本完成。這段時間優化主要解決了一個問題就是餘額實時更新的問題。也有一些不足的地方。下面就說一下我解決的問題和不足。

    一、餘額實時更新問題

             

         如圖所示,在還沒有下機的時候把餘額實時的更新到窗體,以便使用者查閱和從資料庫中選出臨時使用者的消費金額。程式碼和下機的程式碼大同小異,把所有涉及到窗體上控制元件名的地方都換成了對應的資料庫表裡欄位名,因為timer事件中不涉及到窗體上的控制元件。下面是timer的程式碼。

Private Sub Timer2_Timer()  '餘額,消費金額實時更新
Dim onmrc As ADODB.Recordset
Dim mrc As ADODB.Recordset
Dim bsdtmrc As ADODB.Recordset
Dim m As Long
Dim c As String
txtSQL = "select * from basicdata_Info"  '資料設定表
    Set bsdtmrc = ExecuteSQL(txtSQL, MsgText)


    txtSQL = "select * from online_Info "   '正在上機表
    Set onmrc = ExecuteSQL(txtSQL, MsgText)


        If onmrc.EOF Then   '沒有人正在上機
             Exit Sub
        Else
            Do While Not onmrc.EOF
            
            txtSQL = "select * from student_Info where cardno = '" & Trim(onmrc.Fields(0)) & "'"
            Set mrc = ExecuteSQL(txtSQL, MsgText)
            '計算時間
                 t = Trim((Date - DateValue(onmrc.Fields(6))) * 24 + (Hour(Time) - Hour(TimeValue(onmrc.Fields(7)))) + (Minute(Time) - Minute(TimeValue(onmrc.Fields(7)))) / 60)
                 If t * 60 < bsdtmrc.Fields(4) Then
                     s = 0
                 Else
                     t = t - bsdtmrc.Fields(4) / 60
                     If t - Int(t) <= 0.5 Then
                         t = Int(t) + 0.5
                     Else
                         t = Int(t) + 1
                     End If
                    '計算消費金額
                    
                     If Trim(mrc.Fields(14)) = "固定使用者" Then
                         s = t * bsdtmrc.Fields(0)
                     Else
                         s = t * bsdtmrc.Fields(1)
                     End If
                 End If
                 
                  m = Val(mrc.Fields(7)) - s
                 
                 '更新上機表
                 txtSQL = "select * from Line_Info where cardno = '" & Trim(onmrc.Fields(0)) & "' and status = '正常上機 '"
                 Set linmrc = ExecuteSQL(txtSQL, MsgText)
                 If Not linmrc.EOF Then
                    linmrc.Fields(12) = m
                    linmrc.Fields(11) = s
                    linmrc.Update
                 End If
 
                 '當上機的卡號和正在上機表中的卡號相等就把餘額和消費金額更新到窗體
                 If onmrc.Fields(0) = Val(txtCardnum.Text) Then
                   txtBalance.Text = m
                   txtConsummoney.Text = s
                  End If
                 
'                 '如果餘額低於最低金額給出提示
                 c = Trim(onmrc.Fields(0))
'                 If m < bsdtmrc.Fields(5) And m > 0 Then
'                      MsgBox "卡號為:" & c & "的親,您的餘額已不足" & m & "元,請儘快充值!"
'                 End If
                 '如果金額為0強制下機
                 If m <= 0 Then
                     MsgBox "卡號為" & c & "的親,您的餘額已不足0元,馬上為您下機", vbInformation
'                     Call viewData
                     txtSQL = "select * from student_Info where cardno = '" & Trim(onmrc.Fields(0)) & "'"
                     Set mrc = ExecuteSQL(txtSQL, MsgText)
                   
                    
                     '把餘額填到學生表裡
                     mrc.Fields(7) =<span style="color:#ff6666;"> Val(mrc.Fields(7))</span> - s
                     mrc.Update
                     
                     linmrc.Fields(8) = Format(Date, "yyyy-mm-dd")
                     linmrc.Fields(9) = Time
                     linmrc.Fields(10) = Val(t * 60)
                     linmrc.Fields(11) = Val(s)
                     linmrc.Fields(12) = mrc.Fields(7)
                     linmrc.Fields(13) = "強制下機"
                     linmrc.Update
                     
                     txtType.Text = mrc.Fields(14)
                     txtSnum.Text = mrc.Fields(1)
                     txtName.Text = mrc.Fields(2)
                     txtDepartment.Text = mrc.Fields(4)
                     txtGender.Text = mrc.Fields(3)
                     txtBalance.Text = mrc.Fields(7)
                     txtOnlinedate.Text = onmrc.Fields(6)
                     txtOnlinetime.Text = onmrc.Fields(7)
                     txtOfflinedate.Text = Date
                     txtOfflinetime.Text = Time
                    '刪除正在上機表中的記錄
                    onmrc.Delete
                    onmrc.Update
'                    Unload Me
                 End If
                 onmrc.MoveNext
             Loop
        End If
'        dtNextTime = DateAdd("n", 25, Now)
'        Timer2.Enabled = True
' End If
End Sub

      實現餘額實時更新後感覺也沒什麼難的,但是在寫的過程中餘額可以實時顯示到資料庫中但是就是顯示不到窗體上,也花了好多時間,最後解決後發現是非常小的問題,就是上圖紅色的地方。一開始我沒有寫val(),它們的型別不匹配所以出不來。所以不要忽視任何小的地方,不怕攔路虎,就怕絆腳羊。要做一個專業的程式設計師要對所有細節都熟記於心。

      二、不足的地方

      1、沒有實現“金額不足最低金額提示使用者充值”的功能

            一開始我把這個功能和金額小於0強制使用者下機一起寫到了timer2裡,因為timer的間隔是1秒,這樣就會一直彈出訊息框說讓使用者充值。所以要改一下timer的間隔,但是timer的最大間隔也就65秒。於是站在巨人的肩旁上寫了下面的程式碼,但是功能沒有實現,這個功能還需要再研究。

Dim dtNextTime As Date  
Private Sub Form_load()  
Timer1.Interval = 500  
Timer1.Enabled = True  
dtNextTime = DateAdd("n", 2, Now)  
End Sub  
Private Sub Timer1_Timer()  
If Now >= dtNextTime Then  
Timer1.Enabled = False  
'在此加入你的程式碼  
dtNextTime = DateAdd("n", 2, Now)  
Timer1.Enabled = True  
End If  
End Sub   

      2、沒有真切的站到使用者的角度思考問題

         我對註冊的考慮是把註冊金額和充值金額分開,而且把註冊金額設成固定的,註冊金額是從資料基本設定的表裡調出來的,不需要使用者手動輸入。如下圖所示,註冊金額是不能輸入的。


      我這樣設定主要是根據經驗,去網咖等註冊一張卡的錢肯定是固定的,不能有的人註冊的錢收的多,有的人收的少。如果有人想多充電錢,就把出去註冊的錢填的充值中就OK了。這樣在結賬的時候也好計算,讓註冊金額乘以固定使用者的個數,加上固定使用者充值的錢,再加上臨時使用者消費的錢,再減去固定使用者退卡的錢就行了。不然,還要再專門建一張表放註冊金額,比較麻煩。這樣問題就來了,這樣弄我是不麻煩了,但是使用者使得時候,註冊時還要自己把收的錢減去註冊金額再填入充值裡,給使用者帶來麻煩。

      總結:做一個系統不僅是要實現具體的功能,重要的是設計理念,思想。要從使用者的角度思考問題,我們是為使用者服務的,所以要最大限度給使用者帶來方便。其次,要想成為專業的程式設計師就必須不能忽視任何小的問題,比如資料型別的一致問題。世界很簡單,要麼是0,要麼是1,做事情也是要做好,要麼別做。

相關推薦

機房收費系統總結

我認為這是我自己獨立完成的第一個系統,從不懂到懂,這個過程雖然有些艱辛,有些漫長,但是付出的時間是很值得的,作為未來的 一名程式設計師,這些都是最最基本的了,所以每當我想到這些,想想眼前的困難並不算什麼,而且這些本來就是該弄懂得東西,現在不學還等啥時候學?就這樣隨著時間的流逝,我的機房收費系

機房收費系統---總結

 前言:           機房收費系統經過了一個月的時間,終於告一段落了,這是第一個我們不按照原始碼,自己進行的專案,也是對於我們一個很好的測驗。在進行的過程中,很好的運用到了資料庫中的所學的 “

機房收費系統——總結

      前言:機房收費系統到現在已經基本完成。這段時間優化主要解決了一個問題就是餘額實時更新的問題。也有一些不足的地方。下面就說一下我解決的問題和不足。     一、餘額實時更新問題                        如圖所示,在還沒有下機的時候把餘額實時的

機房收費系統總結(三)

              結賬是我敲機房遇到問題最多的地方,無論是介面的設計還是程式碼遇到的問題都比較多,機房驗收了兩遍結賬這個窗體還是存在問題。現在終於差不多沒什麼大問題了。我就來總結總結我所遇到的問題吧!              開始我一直不知道這是個什麼東東,我以

機房收費系統總結(3)--------驗收總結

師傅給驗收了機房收費系統,主要的說了一下業務方面的需要。現在我也小小總結一下系統的思路。 一般使用者:是不能進行上下機操作的,也不能對操作員和管理員的業務進行操作,所以一般使用者登入以後就是下面介面他

機房收費系統總結(一)

            敲完學生資訊管理系統,機房收費系統又開始了,機房收費系統是自己第一次沒有程式碼,根據功能自己設計的系統。現在終於完工了。現在我就來總結一些其中的注意點吧!          

機房收費系統總結

驗收 時間 也不能 命名 font 為人民服務 感受 art 什麽 經過二十天的艱苦奮鬥我的機房收費系統最終敲完了,在回家之前又讓師傅驗收了一邊最終通過,自己當時感覺那叫一個興奮呀,最終能夠高高興興回家了,太好了。當時興奮過頭導致沒有寫總結,以致回到家後才寫總結

機房收費系統優化

一、給主窗體新增快捷鍵: 1、將cmdok的default的屬性設為true 2、在主窗體中新增如下程式碼: Private Sub form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then M

機房收費系統總結

               機房收費系統差不多有一個半月的時間,總的來說過程很糾結很難過,總是在著急趕時間和煩躁中完成的。但是完成之後覺得當初遇到的問題都不算什麼,反而帶給自己更多的知識和解決問題的

[vb版機房] 機房收費系統總結

經過三個多星期的工作,機房收費系統結束了,機房收費系統是自己接受的第二個系統,不論程式碼量還是邏輯結構都要比第一個接觸的學生資訊管理系統複雜的多。老實說,自己對這個系統理解的還是皮毛,還需要自己以後不

機房收費系統問題(二)

幾天前就完成了第一遍的機房驗收,雖然師父還是沒有給我過,但從中我也學到了很多東西。機房收費系統的成長可謂是在錯誤中成長,下面我就說說我從中遇到的一些問題。 一、不將就:Combobox 這個控制元件我們在學生資訊管理系統和機房收費系統裡運用得非常廣泛,大家都知道到把它的s

機房收費系統總結(四)

               在做機房收費系統的時候它不同於學生管理系統的是多了報表這一功能,可以把資料通過印表機打印出來,這顯然是很方便的。那麼我就來總結一些報表的使用方法吧!       首先我們

那些年我們一起敲過的機房收費系統——完結

引言    不知不覺,我在機房收費系統上耗的時間也有兩個月多了,很尷尬,就像我們的故事一樣,摻雜了太多感情在裡面了,但是地球總還是要轉的,明天早上太陽依然還是要升起的,所以這件事還是要有個完結的,所

機房收費系統總結

      歷時兩個月的機房收費系統終於結束咯,感覺機房收費系統在學生管理系統的基礎上又提升了一個等級,學生管理系統是照著原始碼敲的,而機房收費系統除了Excel的匯出,報表的生成,模組是參照原始碼學習的,其他都是自己一個一個敲出來的,感覺還是很充實的,這兩個月都做了哪

總結(1)——機房收費系統

  遇見問題,解決問題是再簡單不過的事情。從一開始著手做機房收費系統到現在已經有大半個月了,從一開始的戰戰兢兢到現在已經不再害怕無從下手心理路程變化還是挺明顯的。現在就來談談我對機房收費系統的理解吧。

機房收費系統(VB.NET)個人版總結

blog gb2 watermark ast 做到 解決 content 結果 avi 重構版個人機房收費系統大概從暑假開學開始進行。花了不到一個半月的時間才完畢。以下對我在重構過程中的一寫理解。 1、系統設計一個非常重要的目的就是重用。而要做

機房收費系統之細化(跨日期下機,MDI窗體的運用,MDI主窗體與子窗體的互動)

      最近在細化機房收費系統時,發現在下機窗體出現了很多消費時間為負值的情況,有時還會彈出Bug,仔細一看原來是跨日期的消費時間問題,那麼如何設定跨日期的下機呢?在機房收費系統中的MDI 窗體如何運用呢?下面就這兩個問題進行梳理分享。 一、跨日期的下機 核

機房收費系統(準備

開始機房前,我預計先學習觀看一下11期師哥師姐打包給12期師哥師姐的機房系統,於是我安裝後點擊開始,出現錯誤: 執行錯誤’91’:未設定物件變數或with block變數 這個是因為沒有連線到資料庫,所以我需要配置ODBC,配置過程如下: 在這裡我們看到了,

機房收費系統驗收總結

前言 自考結束之後終於把機房給收拾完了,第一次做這種沒有原始碼的專案,從開始的不知所措到最後的瞭如指掌,這對自己來說是一種很大的進步。 每個人都是在不斷進步中成長起來的。經過兩次演專案,聽師傅們的經驗,自己也收穫了很多,在我們做專案,設計軟體的過程中,首先我們要

個人重構機房收費系統總結

    個人版機房收費系統總算是完事兒了,會看這一段歷程真是感慨啊。開始的一段時間,寫著三層,感覺好難啊,當時看著三層的例項,自己也敲過了。但是總是憋不出來,總是想不出來更寫不出來。慢慢的慢慢的試著通