1. 程式人生 > >第一次機房收費系統--上機

第一次機房收費系統--上機

前言:

原以為上機很困難,自己沒有辦法完成的,但是當自己真正地靜下心來去點師姐給的系統,對應著資料庫一點點地看,才發現原來上機並沒有想象中的那麼困難!

流程圖:

首先開始的時候思路一定要清楚,中間細節的部分可以先不做考慮,等大致的框架出來之後再將細節的部分新增進去!就像蓋房子一樣,大致框架就相當於房子的牆,細節部分就相當於房子裡面的各種裝飾,缺一不可!


知識點:

1.使用的卡顯示已經登出

                    '資料集中有記錄,但是該卡已經停用
                    txtSQL = "select * from student_info where cardno='" & txtcardno.Text & "'and status='不使用'"
                    Set mrc5 = ExecuteSQL(txtSQL, MsgText)
                    If mrc5.EOF = False Then
                        MsgBox "該卡已經登出,請重新輸入!", 48, "提示"
                        txtcardno.Text = ""
                        txtcardno.SetFocus

2.餘額問題

                txtSQL = "select * from student_info where cardno='" & txtcardno.Text & "'and status='使用'"
                Set mrc3 = ExecuteSQL(txtSQL, MsgText)
                    '判斷餘額是否小於最小金額,若小於,需要充值後再繼續上機,強制下機,此時最好彈出充值介面
                    '此時判斷使用者型別
                    txtSQL = "select * from basicdata_info"
                    Set mrc4 = ExecuteSQL(txtSQL, MsgText)
                    If mrc3.Fields(7) < mrc4.Fields(5) Then
                        MsgBox "餘額小於最小限制金額,請充值後再上機!", 48, "提示"
                        '彈出充值視窗
                        frmrecharge.Show
                        SetParent frmrecharge.hWnd, Picture1.hWnd

3.不能重複上機

            txtSQL = "select * from online_info where cardno='" & txtcardno.Text & "'"
            Set mrc2 = ExecuteSQL(txtSQL, MsgText)
            If mrc2.EOF = False Then
                MsgBox "該卡正在上機,不能重複上機!", 48, "提示"
4.獲取計算機名

在模組中定義計算機名,然後在程式碼框中呼叫

'API函式宣告計算機名
Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
'呼叫API函式獲取計算機名

Public Function GetThisComputerName() As String
    Dim sBuffer As String
    Dim lSize As Long
    
    sBuffer = Space$(255)
    lSize = Len(sBuffer)
    GetComputerName sBuffer, lSize
    
    If lSize > 0 Then
        GetThisComputerName = Left$(sBuffer, lSize)
    End If
End Function
在程式碼框中呼叫:
mrc.Fields(8) = GetThisComputerName     '將計算機名同步到資料庫的相應表格中
5.將資料同步到表中

上機涉及到四個表:online_info  line_info  student_info   basicdata_info

    '上機時將上機卡的資料同步至online_info表中
    Set mrc = New ADODB.Recordset
    txtSQL = "select * from online_info"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    mrc.AddNew
    mrc.Fields(0) = Trim(txtcardno.Text)
    mrc.Fields(1) = Trim(txttype.Text)
    mrc.Fields(2) = Trim(txtstudentno.Text)
    mrc.Fields(3) = Trim(txtstudentname.Text)
    mrc.Fields(4) = Trim(txtdepartment.Text)
    mrc.Fields(5) = Trim(txtsex.Text)
    mrc.Fields(6) = Trim(txtOnLinedate.Text)
    mrc.Fields(7) = Trim(txtOnLinetime.Text)
    mrc.Fields(8) = GetThisComputerName     '將計算機名同步到資料庫的相應表格中
    mrc.Fields(9) = Now
    Label16.Caption = mrc.RecordCount + 1  '顯示上機人數
    mrc.Update
    mrc.Close
    
     '上機時將上機卡的資料同步到line_info表中
     Set mrc6 = New ADODB.Recordset
     txtSQL = "select * from line_info"
     Set mrc6 = ExecuteSQL(txtSQL, MsgText)
     mrc6.AddNew
     mrc6.Fields(1) = Trim(txtcardno.Text)
     mrc6.Fields(2) = Trim(txtstudentno.Text)
     mrc6.Fields(3) = Trim(txtstudentname.Text)
     mrc6.Fields(4) = Trim(txtdepartment.Text)
     mrc6.Fields(5) = Trim(txtsex.Text)
     mrc6.Fields(6) = Trim(txtOnLinedate.Text)
     mrc6.Fields(7) = Trim(txtOnLinetime.Text)
     mrc6.Fields(12) = Trim(txtcash.Text)
     mrc6.Fields(13) = "正常上機"
     mrc6.Fields(14) = GetThisComputerName
     mrc6.Update
     mrc6.Close
     MsgBox "上機完成!", 48, "提示"

程式碼展示:

Private Sub cmdOnLine_Click()
    '判斷卡號是否為空,如果為空,提醒輸入;
    '若不為空,判斷是否註冊過,如果註冊了就繼續往下執行;
    '沒有註冊包括:資料集中沒有這個卡號;資料集中有這個卡號,但是該卡已經停用!
    If txtcardno.Text = "" Then
        MsgBox "卡號不能為空,請輸入!", 48, "警告"
        txtcardno.SetFocus
    Else
        txtSQL = "select * from student_info where cardno='" & txtcardno.Text & "'"
        Set mrc1 = ExecuteSQL(txtSQL, MsgText)
        '資料集中沒有記錄的情況
        If mrc1.EOF = True Then
            MsgBox "該卡沒有註冊,請重新輸入!", 48, "提示"
            txtcardno.Text = ""
            txtcardno.SetFocus
'            mrc1.Update
'            mrc1.Close
        Else
        
            '判斷是否上機了,一個卡不能重複上機;
            '如果已經上機,顯示上機,若沒有上機,進行正常上機
            '正常上機後將文字框中的資料新增到online_info表中
            
            
            '判斷是否上機
            txtSQL = "select * from online_info where cardno='" & txtcardno.Text & "'"
            Set mrc2 = ExecuteSQL(txtSQL, MsgText)
            If mrc2.EOF = False Then
                MsgBox "該卡正在上機,不能重複上機!", 48, "提示"
            Else
                '正常使用的卡
                txtSQL = "select * from student_info where cardno='" & txtcardno.Text & "'and status='使用'"
                Set mrc3 = ExecuteSQL(txtSQL, MsgText)
                If mrc3.EOF = False Then
                    '將資料庫總中的資料顯示在文字框中
                    txtstudentno.Text = Trim(mrc3.Fields(1))
                    txtdepartment.Text = Trim(mrc3.Fields(4))
                    txttype.Text = Trim(mrc3.Fields(14))
                    txtstudentname.Text = Trim(mrc3.Fields(2))
                    txtsex.Text = Trim(mrc3.Fields(3))
                    Label24.Visible = True
                    txtOnLinedate.Text = Date
                    txtOnLinetime.Text = Time
                    txtcash.Text = Trim(mrc3.Fields(7))
    '                mrc3.Update
    '                mrc3.Close
    
                    '判斷餘額是否小於最小金額,若小於,需要充值後再繼續上機,強制下機,此時最好彈出充值介面
                    '此時判斷使用者型別
                    txtSQL = "select * from basicdata_info"
                    Set mrc4 = ExecuteSQL(txtSQL, MsgText)
                    If mrc3.Fields(7) < mrc4.Fields(5) Then
                        MsgBox "餘額小於最小限制金額,請充值後再上機!", 48, "提示"
                        '彈出充值視窗
                        frmrecharge.Show
                        SetParent frmrecharge.hWnd, Picture1.hWnd
'                        Exit Sub
                    End If
                Else
                    '資料集中有記錄,但是該卡已經停用
                    txtSQL = "select * from student_info where cardno='" & txtcardno.Text & "'and status='不使用'"
                    Set mrc5 = ExecuteSQL(txtSQL, MsgText)
                    If mrc5.EOF = False Then
                        MsgBox "該卡已經登出,請重新輸入!", 48, "提示"
                        txtcardno.Text = ""
                        txtcardno.SetFocus
    '                    mrc2.Update
    '                    mrc2.Close
                    End If
                End If
            End If
        End If
    End If
    
    '上機時將上機卡的資料同步至online_info表中
    Set mrc = New ADODB.Recordset
    txtSQL = "select * from online_info"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    mrc.AddNew
    mrc.Fields(0) = Trim(txtcardno.Text)
    mrc.Fields(1) = Trim(txttype.Text)
    mrc.Fields(2) = Trim(txtstudentno.Text)
    mrc.Fields(3) = Trim(txtstudentname.Text)
    mrc.Fields(4) = Trim(txtdepartment.Text)
    mrc.Fields(5) = Trim(txtsex.Text)
    mrc.Fields(6) = Trim(txtOnLinedate.Text)
    mrc.Fields(7) = Trim(txtOnLinetime.Text)
    mrc.Fields(8) = GetThisComputerName     '將計算機名同步到資料庫的相應表格中
    mrc.Fields(9) = Now
    Label16.Caption = mrc.RecordCount + 1  '顯示上機人數
    mrc.Update
    mrc.Close
    
     '上機時將上機卡的資料同步到line_info表中
     Set mrc6 = New ADODB.Recordset
     txtSQL = "select * from line_info"
     Set mrc6 = ExecuteSQL(txtSQL, MsgText)
     mrc6.AddNew
     mrc6.Fields(1) = Trim(txtcardno.Text)
     mrc6.Fields(2) = Trim(txtstudentno.Text)
     mrc6.Fields(3) = Trim(txtstudentname.Text)
     mrc6.Fields(4) = Trim(txtdepartment.Text)
     mrc6.Fields(5) = Trim(txtsex.Text)
     mrc6.Fields(6) = Trim(txtOnLinedate.Text)
     mrc6.Fields(7) = Trim(txtOnLinetime.Text)
     mrc6.Fields(12) = Trim(txtcash.Text)
     mrc6.Fields(13) = "正常上機"
     mrc6.Fields(14) = GetThisComputerName
     mrc6.Update
     mrc6.Close
     MsgBox "上機完成!", 48, "提示"
End Sub

未完待續O(∩_∩)O~

相關推薦

第一機房收費系統--上機

前言: 原以為上機很困難,自己沒有辦法完成的,但是當自己真正地靜下心來去點師姐給的系統,對應著資料庫一點點地看,才發現原來上機並沒有想象中的那麼困難! 流程圖: 首先開始的時候思路一定要清楚,中間細節的部分可以先不做考慮,等大致的框架出來之後再將細節的部分新增進去!就像蓋

第一機房收費系統】—學生檢視上機記錄

一、思維導圖 二、程式碼 Private Sub cmdInquiry_Click() Dim txtSQL As String Dim msgtext As String Dim mrc As ADODB.Recordset

第一機房收費系統 ( 安裝配置 )

這次寫部落格來總結下配置機房所需要的步驟和問題的解決方法:qian 機房配置有三個步驟:                 &n

第一機房收費系統——註冊

思考: 因為註冊的時候,需要輸入初始的金額,但是上下機的時候,需要根據上網時間長短來改變學生表中的金額,所以導致最後的結賬很麻煩,最後我將註冊的內容也寫入到充值中,流程圖如下: 流程圖 程式碼 Private Sub cmdSave_Clic

第一機房收費系統——結賬

前言:談到結賬,大家都覺得挺難的,當然我也是這麼覺得的,但是通過一段時間的磨練,最終還是解決了,那麼就來分享一下把! 頁面 首先談到頁面,我將臨時收費金額改成了上網收費金額。 彙總的計算 售卡張數 就是你今天所出售的卡數 注意: 是今天售的卡數。 退卡張數

第一機房收費系統】-新增和刪除使用者

一、 二、MSHflexgrid控制元件 MSHflexgrid控制元件的使用:https://blog.csdn.net/lxl51666/article/details/52663989 三、理解 這個介面就不畫思維導圖了,很好理解。 但是更新這個按鈕有點

第一機房收費系統優化】-登入窗體

一、重點 這個窗體增加了判斷使用者的類別(操作員、一般使用者、管理員)。 二、控制元件優化 label為空白:Label1.BackStyle = 0 command新增圖片:(1)將Command控制元件的Style設定為1 - Graphical (2)在C

第一機房收費系統--結賬

前言 初次碰到結賬這個問題,心裡還是有很多的抵觸,覺得太難了,下機的時候就覺得有些困難,因為涉及到了算賬的問題,現在開始結賬了,放眼望去,慢慢的全是賬,不管怎樣,先學做一個會計吧! 功能實現 其實結賬這裡分為兩大部分 一:從資料庫中匯出操作員使用者名稱和真實姓名 需要實現

第一機房收費系統--安裝連線之初體驗

前言: 機房開始,自己迷迷糊糊的,看著給的少得可憐的資料,心裡默默打鼓呀,不論如何加油吧!開啟之後也不知道應該先幹什麼,怎麼幹,於是就看著機房收費系統使用說明一步步來,接下來是我遇到的一些問題,以及解

[第一機房收費系統]組合查詢

當設計好組合查詢介面之後,並沒有覺得有多難,接著往下把一些基本的程式碼寫好之後真的是有點懵了。 當前三個文字都不為空時,查詢上機OnLine表,但是需要判斷欄位名是學號、卡號、姓名、性別、學院、年級還是班級?需要判斷操作符是<>、=、<、

[第一機房收費系統]修改密碼介面優化

前言 看到標題的時候不知道會不會有同學問,修改密碼介面有什麼可優化的呢?當然有的啊,其實不管是任何一個介面,都有更好的方式來展現,因為世界上任何一個程式都不是最完美的,都是需要一步步的改變來變的更好。 正文 當時在敲修改密碼窗體的時

第一機房收費系統—修改密碼後重新登入

前言:       機房進行到了白熱化的階段,說起來也是慚愧,人家別的小夥伴都在進行軟工階段,而我還是在這機房前面徘徊!話不多說,今天來小結一下修改密碼的部分的那些“小芝麻”! 一、巨集觀把控 判斷

第一機房收費系統--詳細設計說明書

1引言 1.1編寫目的 目的:本文件詳細地說明了系統的輸入輸出、演算法、介面、功能、效能、儲存以及測試計劃,從而為軟體開發人員與測試人員提供了更加明確清晰的思路,使得程式的編寫與測試更加方便快捷。 預期讀者:軟體開發人員與測試人員 1.2背景 a.待開發軟體系統的名稱:第

第一機房收費系統】組合查詢

所有的偉大隻源於一個勇敢地開始。 組合查詢之前以為很難,但是真正去開始敲了,你就會發現並不難。敲完了第一個,基本上就算是敲完了。 這是機房收費系統裡面組合查詢的標準樣式,之所以叫組合查詢,是因為我們要將若干個條件選擇出來之後組合在一起來查詢。首先,組合查

第一機房收費系統—組合查詢

  今天總結組合查詢,組合查詢無非涉及到兩個語句!敲機房給我的一點想法就是,有的程式碼自己還不確定是否在這個世界上時候存在,其實它是存在的,恐於自己怕浪費時間,功能還沒有實現。還是太將就了,所以小夥伴

機房收費系統——上機窗體

上機窗體是在註冊完之後需要上機的時候開始使用,但是具體的一些限制還是需要注意一下,比如該卡 號是否註冊,是否退卡等等,接下來就看看這個過程。 具體程式碼如下所示: Private Sub cmdOnline_Click() '定義資料庫物件 Dim mrcStudent As adodb

第一機房收費登陸-執行時錯誤'91'

背景 最近開始第一次機房收費專案了,這就需要配置源資料庫,但是網上對於配置已經有了很多解決辦法,再此我就不在說明。現在我要解決的問題是在配置完之後,當你登陸時,你會遇到執行時錯誤‘91’這個問題。 出現原因 出現這個問題是由於你資料庫中的sa登入名的密碼與機房收費源系統的密碼不一致,如果

機房收費系統——上機

前言 上機在機房系統是至關重要的,只要捋清思路,把大問題分解成一個個的小問題再去解決,困惑就自然迎刃而解了。來看看我的思路吧! 程式碼片段 Private Sub cmdOnline_Click() Dim txtSQL As String D

第一機房收費系統】——上機

前言  最近在做機房收費系統,感觸真的特別深,就是那種忽然開竅的感覺,很爽,希望現在的你們也會和我一樣,雖然懂得不是很全面,但只要比原來會那麼一點點,足矣~偷偷告訴你們哈,做機房一定要畫流程圖,真的特別管用,下面是我的流程圖及程式碼分享給大家,希望可以給你們帶

第一機房收費系統】——組合查詢

 機房收費系統中共有三個窗體用到了組合查詢,其也算是三大難點之一,我做的流程就是先根據源系統備好框架,然後再去網上看相關的部落格,這麼一來二往,多看幾遍也漸漸懂得了其中的一些“套路”。組合查詢,顧名思義大於等於一的行資料進行查詢,下面我以學生基本資訊維護的窗體為