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

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

前言

初次碰到結賬這個問題,心裡還是有很多的抵觸,覺得太難了,下機的時候就覺得有些困難,因為涉及到了算賬的問題,現在開始結賬了,放眼望去,慢慢的全是賬,不管怎樣,先學做一個會計吧!

功能實現

其實結賬這裡分為兩大部分

一:從資料庫中匯出操作員使用者名稱和真實姓名

需要實現的功能:當選擇某個使用者名稱的時候他的真實姓名直接調出,雖說這個功能不難實現,但是不怕不知道就怕不知道!

程式碼實現:

首先設定使用者名稱部分,該部分程式碼在Form_Load裡

    '設定使用者名稱的下拉選單,當本模組執行時調出資料庫中所有的操作員使用者名稱
    txtSQL = "select * from user_info where level='操作員'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    Do While Not mrc.EOF
            CmdUserId.AddItem mrc.Fields(0)
            mrc.MoveNext
    Loop

其次實現同步操作員真實姓名部分

    '設定操作員真實姓名
    txtSQL = "select * from user_info where userid='" & CmdUserId.Text & "'"
    Set mrc1 = ExecuteSQL(txtSQL, MsgText)
    CmdUserName.Text = mrc1.Fields(3)

二:SSTab控制元件的功能

這裡分為7個部分 

(1)如何讓SSTab控制元件的每個選項卡實現不同的功能,這裡用到的是Select語句

程式碼實現:

首先需要設定每一個選顯示卡的Tab屬性,將其設定為相應的數字

Private Sub SSTab1_Click(PreviousTab As Integer)
    Select Case SSTab1.Tab
Select Case SSTab1.Tab
        Case 0     '第一個選項卡
        Case 1     '第二個選項卡
        Case 2     '第三個選項卡
        Case 3     '第四個選項卡
        Case 4     '第五個選項卡
        Case 5     '第六個選項卡
    End Select
End Sub

(2)購卡:將操作員的購卡資訊調出

(3)充值:將操作員的充值資訊調出

程式碼實現:

此處定義了rechargecash為充值金額,方便結賬時呼叫

            With MSFlexGrid2
            
                .CellAlignment = 4
                .Rows = 1
                .TextMatrix(0, 0) = "學號"
                .TextMatrix(0, 1) = "卡號"
                .TextMatrix(0, 2) = "充值金額"
                .TextMatrix(0, 3) = "日期"
                .TextMatrix(0, 4) = "時間"
            End With
            rechargecash = 0 
            '將表recharge_info的資料同步至表
            txtSQL = "select * from recharge_info where userid='" & CmdUserId.Text & "' and status='未結賬'"
            Set mrc3 = ExecuteSQL(txtSQL, MsgText)
            Text3.Text = 0
            Do While Not mrc3.EOF
                With MSFlexGrid2
                    .CellAlignment = 4
                    .Rows = .Rows + 1
                    .TextMatrix(.Rows - 1, 0) = Trim(mrc3.Fields(1))
                    .TextMatrix(.Rows - 1, 1) = Trim(mrc3.Fields(2))
                    .TextMatrix(.Rows - 1, 2) = Trim(mrc3.Fields(3))
                    .TextMatrix(.Rows - 1, 3) = Trim(mrc3.Fields(4))
                    .TextMatrix(.Rows - 1, 4) = Trim(mrc3.Fields(5))
                    AdjustColWidth frmaccounts, MSFlexGrid2
                End With
                Text3.Text = Val(Text3.Text) + mrc3.Fields(3)       '設定文字框中的充值總金額
                rechargecash = Trim(Text3.Text)
                mrc3.MoveNext
(2)(3)(4)(5)功能實現過程是一樣的

(4)退卡:將操作員的退卡資訊調出

此處定義了cancelcash為退卡金額,方便結賬時呼叫

(5)臨時使用者:將操作員註冊的臨時使用者資訊調出

(6)彙總:

各種關於卡的資訊:

程式碼實現:

Case 4      '第四個選項卡
           Text6.Text = mrc2.RecordCount                                     '總售卡張數
           Text2.Text = mrc4.RecordCount                                     '退卡張數
           Text1.Text = Val(Text6.Text) - Val(Text2.Text)                    '售卡張數=總售卡張數-退卡張數
           '應收金額=充值金額+臨時收費金額-退卡金額
           Text7.Text = Val(Text3.Text) + Val(Text4.Text) - Val(Text5.Text)

結賬功能:

程式碼實現:

Private Sub cmdOK_Click()
'點選結賬按鈕之後需要更新的表有checkday_info和checkweek_info
'需要做的就是計算上次結賬和本次結賬之間的充值金額,消費金額,退款金額

'更新checkday_info表中的資訊
'上次剩餘金額
    txtSQL = "select * from checkday_info"
    Set mrc6 = ExecuteSQL(txtSQL, MsgText)
        mrc6.MoveLast      '移動到最後
        lastremain = mrc6.Fields(4)
        mrc6.MoveFirst
    
    '向checkday_info表中寫入資料
    mrc6.AddNew
    mrc6.Fields(0) = lastremain                            '上次剩餘金額
    mrc6.Fields(1) = rechargecash
    mrc6.Fields(2) = mrc6.Fields(2) + frmMain.money        '上機消費的金額之和
    mrc6.Fields(3) = cancelcash
    mrc6.Fields(4) = Val(mrc6.Fields(0)) + Val(mrc6.Fields(1)) - Val(mrc6.Fields(3))
    mrc6.Fields(5) = Date
    mrc6.Update
    mrc6.Close

    '更新checkweek_info表中的資訊
    '上次剩餘金額
    txtSQL = "select * from checkweek_info"
    Set mrc7 = ExecuteSQL(txtSQL, MsgText)
        mrc7.MoveLast
        lastremain = mrc7.Fields(4)
        mrc7.MoveFirst
        
    '向cheekday_info表中寫入資料
    mrc7.AddNew
    mrc7.Fields(0) = lastremain
    mrc7.Fields(1) = rechargecash
    mrc7.Fields(2) = mrc7.Fields(2) + frmMain.money          '上機消費的金額之和
    mrc7.Fields(3) = cancelcash
    mrc7.Fields(4) = Val(mrc7.Fields(0)) + Val(mrc7.Fields(1)) - Val(mrc7.Fields(3))
    mrc7.Fields(5) = Date
    mrc7.Update
    mrc7.Close
    
    '彈出提示框,避免重複結賬
    MsgBox "結賬成功", 0 + 48, "提示"
    
    '更新recharge_info表
    txtSQL = "select * from recharge_info where status='未結賬'"
    Set mrc2 = ExecuteSQL(txtSQL, MsgText)
    
    Do While Not mrc2.EOF
        mrc2.Fields(7) = "結賬"
        mrc2.MoveNext
    Loop
    

    '更新student_info表
    txtSQL = "select * from student_info where status='使用' and ischeck='未結賬'"
    Set mrc1 = ExecuteSQL(txtSQL, MsgText)
    Do While Not mrc1.EOF
        mrc1.Fields(11) = "結賬"
        mrc1.MoveNext
    Loop

End Sub

(7)退出:退出結賬結賬介面

程式碼實現:

Case 5      '第五個選項卡
            Unload Me

資料表的引用

結賬這裡打交道最多的就是資料表了,接下來就梳理一下各個功能用到的資料表 (1)結賬按鈕:checkday_info   checkweek_info  recharge_info  student_info (2)操作員使用者名稱和姓名:user_info (3)選項卡:student_info  recharge_info  cancelcard_info  總結:這裡資料表的引用就是查詢表裡的資訊,將資料表裡的資訊同步到VB中或將VB中的資訊更新到資料表中,總體來說還是比較簡單的!

總結

總結下來之後覺得自己又收穫了不少,思路比之前清晰了許多,而且在總結的過程中也會發現程式的一些不足之處,順便做了一些修改,所以說總結很重要,顆粒歸倉!

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

相關推薦

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

機房收費系統——結賬

結賬這部分算是機房收費系統的一個難點,之所以它難,是因為這個窗體不光涉及到程式碼,而且還涉及到算數的問題,還和報表有關,所以它是個難點,但是隻要把思路弄清楚了,再難的東西也不怕啦! 思維導圖: 思路有沒有清楚一點呢? 程式碼片段 先讓操作員的名字和label框實現同步:

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

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

機房收費系統--結賬(一)

機房收費系統即將接近尾聲了,在敲結賬時因為理不清各個表之間的關係,所以後面進行的也比較慢。通過向別人請教,也上網查了一些,不過在慢慢敲的過程中,逐漸的理清了它的思路。接下來我介紹一下我的想法。 結賬

VB.net版機房收費系統——結賬功能實現(程式碼部分)

  實現結賬功能的時候,被選項卡控制元件整的有點鬱悶,瞬間腦袋就凌亂了,聽上去自己好像很可笑的樣子……於是,便去爬巨人的肩膀了~   看了歡哥的部落格,發現她的結賬部落格是按照“索引”思想寫的,在結賬實體中添加了新的屬性過程(我新增的叫CheckDetail)結賬表中並沒有

SQL儲存過程——機房收費系統結賬的那些事

       在機房收費系統中“結賬”窗體中有這樣一個需求:點選“結賬”按鈕以後需要將資料庫中,與已經選擇的操作員使用者名稱有關的所有充值記錄、退卡記錄、售卡記錄中的"isCheck"欄位的未結賬變成