代成杰
小型網(wǎng)絡(luò)填報系統(tǒng)的實現(xiàn)
代成杰
筆者所在部門每年都要做下屬各基層中小學(xué)學(xué)校校園信息化情況的數(shù)據(jù)調(diào)查和統(tǒng)計工作。每一年到需要調(diào)查統(tǒng)計的時候,筆者所在部門都會出現(xiàn)三四個人為此項工作忙上一星期左右的情況。
但是,自從筆者開發(fā)了一個小型網(wǎng)絡(luò)填報系統(tǒng)后,這一狀況就徹底改變了。筆者每年只需要兩三個小時完成數(shù)據(jù)統(tǒng)計和分析就可以了。
整個體系模型如圖1所示:
圖1 體系模型
其中填報服務(wù)器由筆者完成,每所下屬學(xué)校通過Web方式登錄服務(wù)器并完成數(shù)據(jù)填報就可以了。這樣的小型網(wǎng)絡(luò)填報系統(tǒng)具有廣泛應(yīng)用的意義,目前很多部門或行業(yè)的調(diào)查數(shù)據(jù)都可以采用本文所述的方法,這樣避免了紙質(zhì)數(shù)據(jù)傳遞和統(tǒng)計工作復(fù)雜、易出錯的問題;也避免了使用簡單的Excel電子表格,用戶可以隨意填寫,導(dǎo)致不易進(jìn)行匯總統(tǒng)計的問題。
1.硬件
準(zhǔn)備一臺服務(wù)器,配置不需要很高。
下面是筆者所用服務(wù)器的具體配置:
聯(lián)想服務(wù)器:萬全T100。
處理器:Intel Pentium IV 1.7 GHz 處理器。
內(nèi)存:256 MB ECC DDR內(nèi)存(筆者給該服務(wù)器升級到512 MB)。
硬盤:80 GB。
2.安裝服務(wù)器操作系統(tǒng)和服務(wù)基礎(chǔ)組件
在上面的服務(wù)器上,安裝好服務(wù)器版本的操作系統(tǒng)和IIS等服務(wù)組件。
目前,雖然軟件公司在開發(fā)這樣的系統(tǒng)時更加專業(yè),但基本方法都是一致的,對于經(jīng)費有限而且數(shù)據(jù)保密級別不高的調(diào)查都可以采用類似本文的系統(tǒng)。也希望越來越多的這樣的小型網(wǎng)絡(luò)填報系統(tǒng)出現(xiàn),方便大家的工作和學(xué)習(xí)。
2011-09-28
代成杰,本科,中教二級,教研員。
遼寧省沈陽市鐵西區(qū)教師進(jìn)修學(xué)校。
筆者在服務(wù)器上安裝的是Windows Server 2003操作系統(tǒng),安裝并配置好IIS組件。
3.編寫網(wǎng)絡(luò)填報網(wǎng)站代碼
可以使用的語言有很多,由于可以進(jìn)行網(wǎng)絡(luò)填報,所以一定要使用動態(tài)網(wǎng)站語言。由于服務(wù)器使用Windows Server 2003操作系統(tǒng),所以建議使用ASP語言或者ASP.NET語言。
ASP是Active Server Page的縮寫,是微軟公司開發(fā)的代替CGI腳本程序的一種應(yīng)用,它可以與數(shù)據(jù)庫和其他程序進(jìn)行交互,是一種簡單、方便的編程工具。ASP誕生于1996年,并且不斷發(fā)展,直到后來ASP.NET出現(xiàn)。
ASP.NET比ASP的功能更強大,執(zhí)行效率更高,而且安全性更高。ASP.NET一般可以分為兩種開發(fā)語言,VB.NET和C#。這兩種語言都比較簡單易學(xué)。而且微軟為ASP.NET設(shè)計開發(fā)了所見即所得的開發(fā)工具Visual Studio.NET。鑒于ASP.NET的優(yōu)越性,筆者選擇了ASP.NET中C#語言來編寫網(wǎng)絡(luò)填報網(wǎng)站的代碼。
(1)登錄
網(wǎng)絡(luò)填報系統(tǒng)登錄界面的主窗口如圖2所示。
圖2 登錄界面
由于系統(tǒng)數(shù)據(jù)全部要求是真實有效數(shù)據(jù),所以,網(wǎng)站一定要求用戶登錄后才能進(jìn)行數(shù)據(jù)填報。
在保存用戶身份上,可以使用Cookie或者Session這兩種方式,我們一般使用Cookie來記錄用戶的身份,而且需要在每次用戶提交填報數(shù)據(jù)時都進(jìn)行Cookie的用戶身份驗證。
在設(shè)置輸入密碼文本框的時候,注意一定要設(shè)置成密碼類型,這樣可以防止用戶輸入密碼時被別人看到。本系統(tǒng)需要給每所學(xué)校分配一個初始密碼,同時也建議在做此類系統(tǒng)時給每個用戶分配不同的初始密碼,這樣可以防止某些人很隨意地用統(tǒng)一的密碼使用其他人的用戶身份登錄系統(tǒng),并隨意增加、修改數(shù)據(jù)。另外后臺數(shù)據(jù)庫可以對密碼字段使用MD5進(jìn)行加密,這樣又增加了系統(tǒng)安全性。
(2)填寫數(shù)據(jù)
用戶進(jìn)入填寫數(shù)據(jù)頁面就可以進(jìn)行數(shù)據(jù)填寫了。圖3是筆者做的填報系統(tǒng)的頁面。
圖3 填報頁面
在這樣一個頁面上,我們需要對用戶填寫的數(shù)據(jù)進(jìn)行驗證,防止用戶填寫不規(guī)范的數(shù)據(jù)。比如,在需要填寫人數(shù)的文本框中限定“用戶只能填寫數(shù)字”,并且必須是整數(shù)。而且,一般教師數(shù)會多于學(xué)生數(shù),所以,還可以添加限定“教師數(shù)多于學(xué)生數(shù)”,否則不允許數(shù)據(jù)提交到后臺數(shù)據(jù)庫。
另外,考慮到用戶可能已經(jīng)填寫完數(shù)據(jù)了,本次登錄僅僅為了修改錯誤的數(shù)據(jù)。所以,我們在每次用戶進(jìn)入填寫頁面時,進(jìn)行數(shù)據(jù)預(yù)讀取。如果讀取到原來填寫的數(shù)據(jù),說明用戶已經(jīng)填報了,我們可以認(rèn)為用戶本次登錄是為了查看數(shù)據(jù)或者修改錯誤的數(shù)據(jù)。如果沒有讀到數(shù)據(jù),那么用戶可以逐項填寫,最后點擊提交以便將數(shù)據(jù)寫入后臺數(shù)據(jù)庫。
(3)數(shù)據(jù)明細(xì)顯示
在所有數(shù)據(jù)完成輸入后,建議大家將所有數(shù)據(jù)明細(xì)進(jìn)行顯示,以便用戶最后確認(rèn),筆者抓取該界面的部分作為示范(如圖4所示)。不便于泄漏系統(tǒng)真實數(shù)據(jù),這里使用虛數(shù)示例。
圖4 數(shù)據(jù)明細(xì)顯示頁面
(4)虛擬用戶
一般的軟件公司在做系統(tǒng)時,往往會有專業(yè)的測試隊伍對系統(tǒng)進(jìn)行測試。但作為一個人或者幾個人開發(fā)的小型系統(tǒng),往往可能有潛在的漏洞或錯誤,所以,對于這個僅由筆者一人開發(fā)的小系統(tǒng),筆者在其中保留了一個測試賬戶,這個賬戶一直可以像普通登錄用戶一樣使用,以便在任何時候,筆者都可以模仿普通用戶登錄,并重復(fù)真實用戶遇到的某個錯誤,這樣便容易發(fā)現(xiàn)系統(tǒng)問題。但是在最后處理數(shù)據(jù)的時候要記得將這個虛擬用戶的所有數(shù)據(jù)剔除。
4.網(wǎng)站后臺數(shù)據(jù)庫
最初筆者使用了SQL Server 2000作為后臺數(shù)據(jù)庫,原因如下:SQL Server 2000是網(wǎng)絡(luò)級數(shù)據(jù)庫,并且SQL Server 2000比Access數(shù)據(jù)庫要安全很多,而且SQL Server 2000的操作非常簡單,既可以使用圖形界面,也可以使用SQL語言代碼進(jìn)行操作。
但是運行中發(fā)現(xiàn),SQL Server 2000對系統(tǒng)的資源耗費很大,加之網(wǎng)絡(luò)帶寬的原因,有時候服務(wù)器響應(yīng)速度很慢。
同時,鑒于筆者服務(wù)器所在網(wǎng)絡(luò)環(huán)境比較安全,筆者將網(wǎng)站后臺數(shù)據(jù)庫改用Access。雖然Access屬于桌面級的數(shù)據(jù)庫,但我們是通過網(wǎng)站代碼直接訪問Access數(shù)據(jù)庫文件,所以,使用Access數(shù)據(jù)庫對系統(tǒng)的資源耗費是極其小的,實踐應(yīng)用中,效果也非常明顯。使用SQL Server 2000作為后臺數(shù)據(jù)庫時,有很多基層信息技術(shù)教師反應(yīng)服務(wù)器響應(yīng)緩慢,現(xiàn)在都反應(yīng)服務(wù)器響應(yīng)很快,鼠標(biāo)點擊后,服務(wù)器就能夠響應(yīng)了。
由此可見,后臺數(shù)據(jù)庫更改為Access還是非常成功的,這也是為什么很多小型網(wǎng)站使用Access作為后臺數(shù)據(jù)庫的原因。當(dāng)然,如果服務(wù)器配置比較高,還是建議使用SQL Server數(shù)據(jù)庫,可以使用SQL Server 2000或更高版本。
5.數(shù)據(jù)統(tǒng)計
SQL Server 2000或者Access都支持SQL查詢,而且它們中的數(shù)據(jù)也可以方便地進(jìn)行導(dǎo)出,所以在數(shù)據(jù)處理上,我們可以使用SQL查詢的方式,如下面一句代碼:
SELECT sum(tx_Basic.StuNum) AS 學(xué)生總數(shù), sum(tx_Info.CpuStuNum) AS 學(xué)生機總數(shù) FROM (tx_ Basic INNER JOIN tx_ Info ON tx_ Basic.SchNam=tx_ Info.SchNam)
部分?jǐn)?shù)據(jù)也可以通過導(dǎo)出到Excel中進(jìn)行處理,總之,自己習(xí)慣使用哪種方法就使用哪種方法,只要能夠又快又好又準(zhǔn)確地完成工作任務(wù)就可以。