1. 程式人生 > >那些年我們一起敲過的機房收費系統——完結篇

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

引言

   不知不覺,我在機房收費系統上耗的時間也有兩個月多了,很尷尬,就像我們的故事一樣,摻雜了太多感情在裡面了,但是地球總還是要轉的,明天早上太陽依然還是要升起的,所以這件事還是要有個完結的,所以今天我們就再此寫下此完結篇,臨表嗟嘆,了卻此間恩怨。

細想一下,經過兩個月的機房經歷,我到底學到了什麼,慢慢的羅列一下還是有不少東西呢。從學生管理系統到機房收費系統,從一無所知到知道軟體程式設計的原理,我走過了從普通走向入門的過程了,同時也走過了整整一個夏天。

當第一次看到機房收費系統的時候,我的感覺就是在做以前網咖的收費系統,上網的人就是一般使用者,分為會員與非會員,他們的級別比較低,他只能進行一些基本的查詢的事情或者最基本的修改密碼的事情。當他們不想上網了了,但是身份證裡還有錢呢,我們可以找網管(操作員或者管理員)去退卡退錢,也可以留著下回用。管理員就相當網管,他可以進行基本的資訊查詢增刪改查,但是對於錢方面的還要是boss

來操作,這裡的boss就相當於管理員,管理員的許可權是最高的,他就相當於圖書館裡級別比較大的管理者。他可以通過結賬瞭解一段時間內網咖的收入情況,以及上網人員上機的費用是怎麼算的,他需要首先設定一個基本資料。他可以增刪改查。

下面呢,我們先來看一張圖來整體的瞭解一下機房收費系統的整體結構以及他與資料庫之間的關係。


從這個圖上我們看出來機房的整體架構以及每個窗體索要用到的資料表,所以之後的一切都是依照這個圖來進行。

   按照軟體工程上說得,就是我們有了圖以後呢,就是寫文件,理清思路,所以下一步我們就一個窗體一個窗體來理思路。

思路分析

㈠登入窗體:判斷是否有該使用者、輸入的密碼是否正確,如果判斷結果為真,則判斷登入者的身份,根據登入者的身份,限制主窗體選單欄中某選單項的使用情況。

㈡一般使用者操作:

(1)學生檢視餘額:首先判斷輸入的卡號是否為空,是否為數字,如果判斷結果為真,查詢student_info,判斷是否有該使用者,如果沒有,提示註冊,否則,把查詢到的內容顯示到文字框中。

(2)學生檢視上機記錄:首先判斷輸入的卡號是否為空,是否為數字,如果判斷結果真,查詢Line_Info,判斷是否有該使用者,如果沒有,提示重新輸入卡號,否則,把查詢到的內容顯示到MSFlexGrid控制元件中。匯出Excel:判斷是否有記錄,如果沒有進行提示,如果有,則把MSFlexGrid控制元件中的資料匯入到excel中。

(3)學生充值記錄檢視:

檢測卡號和金錢的輸入
1.1 首先輸入卡號(檢查輸入卡號是否存在以及是否為數字。若不存在不為數字,提示並請重新輸入,

從student_info中調去資訊判斷卡號是否存在,若該卡號存在,下一步) 1.2 輸入充值金額,
從basicdata_info中調去資料 充值金額不能小於最小充值金額,
單機確定按鈕充值成功文字框中顯示本次充值的資訊,根據資訊我們可以得知
2.1在ReCharge_info中顯示本次的充值記錄,
2.2在student_info中更新金額總數
③文字框顯示充值資訊

(4)學生上機狀態檢視:

查詢:連線到學生上機統計資訊查詢的窗體

顯示全部:查詢online_Info表,把裡面的資訊都顯示出來

上機管理:所有學生強制下機,選中學生強制下機

退出:退出本窗體

(5)修改密碼:

判斷舊密碼與資料庫密碼是否相符,如果不符,請重新輸入舊密碼

判斷兩次密碼輸入是否不一致,如果不一致,請重新輸入新密碼

都符合以後,修改資料庫,把新密碼賦給資料庫中的密碼欄位

窗體載入的時候顯示當前使用者的名稱。

㈢操作員操作:

(1)註冊:

查詢:查詢學生檢視餘額窗體,

清空:把窗體上顯示的內容都清空

存檔:判斷每一個輸入框都不得為空,並且判斷充值金額不能低於設定的最小金額,然後查詢student_info,先判斷是否有相同記錄,如果有請重新輸入,如果沒有,根據所要新增的項往資料庫中新增東西,註冊成功。

退出:退出本程式

(2)充值:

首先判斷卡號和充值金額不得為空,並且判斷充值金額需要為數字

然後查詢student_info表,先判斷該卡號是否存在並且為正在使用的卡號

查詢basicdata_info表,輸入的金額和其表中的最小金額相比較,判斷輸入金額不得小於最小金額

更新recharge表中的資料,更新student表中的最新餘額,並且在顯示框顯示相關資訊。

(3)退卡:

首先判斷卡號不得為空,並且判斷卡號需要為數字

查詢student_info表,判斷卡號是否存在,是否正在使用

查詢online_info表,判斷卡號是否正在上機,上機的卡號不得退卡

更新cancelcard_info表中的資料,更新student表中的金額為0,且狀態為不使用

在顯示框顯示退卡的相關資訊。

(4)收取餘額查詢:

首先判斷終止日期要比起始日期晚,如果判斷結果為真

查詢ReCharge_Info表,時間在起始日期和終止日期之間

判斷有無資料,如果有資料,則把資料在MSFlexGrid控制元件中迴圈顯示出來

匯出Excel:判斷是否有記錄,如果沒有進行提示,如果有,則把MSFlexGrid控制元件中的資料匯入到excel中。

(5)金額返還資訊查詢

此過程和收取餘額查詢過程一樣,只是此過程查詢的是cancelcard_info表。

(6)學生基本資訊維護(組合查詢)

首先在窗體上按照要求載入控制元件,各個欄位下的combo下拉框都是由其第一個複製貼上得到的

查詢:

1)當組合關係下的combo3(0)裡面的內容為空時,說明沒有組合關係,則第二行和第三行的框都為鎖定狀態,不可用,且第一行的內容不得為空
3、當組合關係下的combo3(0)裡面的內容不為空時且組合關係下的combo3(1)的內容為空時,第一行和第二行裡的查詢內容不得為空,第三行的內容鎖定
4、當組合關係下combo3(1)的內容不為空時,第一行和第二行和第三行的內容都不得為空
5、查詢的是student_Info表

清空:所有的控制元件裡的內容為空,且MSFlexGrid控制元件的內容為空,沒有表格顯示

匯出Excel:判斷是否有記錄,如果沒有進行提示,如果有,則把MSFlexGrid控制元件中的資料匯入到excel中。

(7)學生上機統計資訊查詢(組合查詢)

和學生基本資訊維護的程式碼思路一樣,在這裡查詢的是line_Info

(8)操作員工作記錄(組合查詢)

和學生基本資訊維護的程式碼思路一樣,在這裡查詢的是worklog_Info

管理員操作:

(1)結賬:

1、通過選擇不同的操作員的使用者名稱,下面就會出現相應的操作員的真實姓名,並且出現其對應的工作記錄

2、購卡:訪問的是student_Info,顯示購買卡學生的資訊。當我們選中一個操作員後,購卡這個選項卡里面的顯示控制元件,顯示的就是這個操作員註冊的並且沒有結賬的卡號的資訊。

3、充值:訪問的是Recharge_Info,將選中操作員進行的所有的未結賬的充值記錄調出來。

4、退卡:訪問的是cancelcard_Info,將選中操作員進行的所有的未結賬的退卡記錄調出來

5、臨時使用者:將此操作員註冊的、未退卡的、未結賬的並且是臨時使用者的記錄調出來

6、彙總:

①把購卡、充值、退卡、臨時使用者中的資訊彙總,所以這裡用到的表就比較多。有student_Info、Recharge_Info 、cancelcard_Info表

售卡張數=購卡選項卡的記錄總數

退卡張數=退卡選項卡的記錄總數

退卡金額=cancelcard_Info表中的金額進行累加

總售卡數=售卡數-退卡數

充值金額=Recharge_Info 表中的充值金額

臨時收費=student_info 表中臨時使用者的費用

應收金額=(註冊和)充值金額-退卡金額

結賬:將student_Info 、Recharge_Info、Cancelcard_Info 中的“未結賬”改為“結賬”,需要把結賬資訊新增到日結賬單和周結賬單中。

(2)刪除和新增使用者:

新增:

1)判斷各個文字框不得為空,並且判斷兩次輸入的密碼應該一致

2)查詢User_Info表,判斷使用者名稱不得重複。

3)如果使用者名稱不重複,則往User_Info表中新增資料

刪除:

1)判斷MSFlexGrid控制元件的第一行不可刪除,判斷不可刪除正在登陸的使用者

2)查詢user_info表顯示出級別不同下所對應出的使用者

3)刪除的時候單擊選擇的是整行,並且所選定的單元要突出顯示

退出:退出本窗體

更新:

1)當用戶級別所對應的為空時,更新的是所有的級別的使用者。

2)當用戶級別有所對應的使用者的時候,更新該級別的使用者。

(3)基本資料設定

修改:啟用文字框

取消:退出本窗體

確定:

1)判斷各個文字框輸入的內容不得為空,並且判斷應為數字

2)查詢basicdata資料表,判斷資料庫中是否有內容,如果沒有內容則往資料庫中新增一條資訊

3)如果有內容,則修改資料庫中的則一條內容,即仍是把文字框的內容賦給資料庫對應的項

4)在窗體結束之前把各個文字框變為鎖定狀態

窗體的載入:各個文字框為鎖定狀態

窗體的活動:

1)查詢BasicData_info資料表,如果資料表中沒有內容則往資料庫中加一條基本的資料

2)如果資料表中有內容,則把該條資料的內容顯示出來

(4)正在值班教師

查詢worklog_Info表,把查詢到的內容顯示到MSFlexGrid控制元件中

(5)日結賬單

首先自己製作報表

在窗體載入處,例項化報表,新增報表所在的位置,報表連線資料庫

查詢checkday_info表,檢視報表,顯示報表

報表的列印預覽,報表的列印

報表的更新

(6)周結賬單

周結賬單表是可以選擇起始日期和終止日期來檢視最近的消費情況。
周結賬單表是一張空的表,在需要的時候才新增資料,不需要的時候就會刪除整個表中的資料。
③由於是一張空表,所以我們要新增記錄
④我們要彙總每一天的總的消費、總退卡錢數、總充值錢數。

程式碼部分

好了,思路清楚了,我們就要開始寫程式碼,機房的程式碼我們把他們分成三個部分簡單部分,

中等部分,以及困難部分,就像打怪闖關一樣,一開始先是敲簡單部分,這部分我們模仿著之前學生的

程式碼就可以,一般的簡單的查詢窗體,就屬於簡單窗體,中等的呢就需要自己去查一些東西了,有些程式碼是固定的比較使用的

不如說匯出Excel,報表等得,最後困難部分就是需要我們根據邏輯去慢慢嘗試的程式碼,比如組合查詢,周結賬,日結賬等得程式碼。

程式碼的總體結構都差不多,好多窗體型別一樣,還有一點就是一定要記住其中的重點程式碼,也就是核心程式碼。這是一個窗體的關鍵。

結言

   經過,機房收費系統的學習,我們相當於獨自完成了一個完整的應用系統,是相當厲害的事,我們對軟體的設計流程有了一個

相對完整的認識,知道怎麼去做了,那以後我們遇到類似的問題我們自己就可以去做了。