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