基于B/S結(jié)構(gòu)的卡務(wù)管理系統(tǒng)的設(shè)計(jì)
文章出處:http://5052h112.com 作者:袁振坤 溫遇華 人氣: 發(fā)表時(shí)間:2011年10月10日
隨著IC及其終端設(shè)備的技術(shù)的成熟,企業(yè)采用IC卡進(jìn)行輔助運(yùn)營管理的成本降低,因此,IC卡的使用逐步由這些規(guī)模較大的企業(yè)或機(jī)構(gòu),向一些規(guī)模較小、運(yùn)營比較分散的連鎖機(jī)構(gòu)發(fā)散。由于連鎖經(jīng)營機(jī)構(gòu)經(jīng)營方式和規(guī)模等方面的制約,其卡務(wù)管理系統(tǒng),不適合用傳統(tǒng)的C/S 結(jié)構(gòu)進(jìn)行開發(fā)。
1.引言
傳統(tǒng)上,由于成本的原因,IC卡一般都是用于規(guī)模較大的企業(yè)或部門,例如用于學(xué)校作為結(jié)算工具的“一卡通”,用于公司作為考勤的考勤卡,等等。因此,卡務(wù)管理系統(tǒng)——其功能包括卡片發(fā)行、充值、掛失等,其客戶機(jī)數(shù)目較少、相對固定、相對集中,一般采用的是C/S 結(jié)構(gòu)進(jìn)行開發(fā)。
但隨著IC 及其終端設(shè)備的技術(shù)的成熟,企業(yè)采用IC卡進(jìn)行輔助運(yùn)營管理的成本降低,因此,IC卡的使用逐步由一些比較大的企業(yè)或機(jī)構(gòu),向一些規(guī)模較小、運(yùn)營比較分散的連鎖機(jī)構(gòu)發(fā)散。由于連鎖經(jīng)營機(jī)構(gòu)分店數(shù)目較多、規(guī)模較小小、經(jīng)營地域分散等特點(diǎn),采用傳統(tǒng)的C/S 結(jié)構(gòu)的卡務(wù)管理系統(tǒng),帶來大量的系統(tǒng)維護(hù)、擴(kuò)充、使用上的成本,不利于IC卡與連鎖經(jīng)營機(jī)構(gòu)的有效融合。因此,本文提出,采用B/S 結(jié)構(gòu),進(jìn)行該卡務(wù)管理系統(tǒng)的開發(fā)。B/S 結(jié)構(gòu)的卡務(wù)管理系統(tǒng)的開發(fā),與C/S 結(jié)構(gòu)不同。由于B/S 結(jié)構(gòu)的系統(tǒng)其客戶機(jī)只有通用的瀏覽器,因此本文提出采用OCX 嵌入網(wǎng)頁的方法,提供瀏覽器操作讀卡器等硬件設(shè)備的接口;由于B/S 結(jié)構(gòu)的系統(tǒng)服務(wù)器負(fù)擔(dān)較重的問題,本文提出采用數(shù)據(jù)庫分裂表設(shè)計(jì)、瀏覽器頁面請求均衡設(shè)計(jì)等方法,來盡可能的減輕服務(wù)器負(fù)擔(dān)、降低系統(tǒng)對服務(wù)器性能的要求;由于B/S 面對廣域網(wǎng),本文提出采用信息加密的方法,保證系統(tǒng)帳號等信息的安全性。
2. 連鎖經(jīng)營機(jī)構(gòu)的卡務(wù)管理系統(tǒng)
2.1 連鎖經(jīng)營卡務(wù)管理系統(tǒng)的提出
所謂連鎖經(jīng)營,是指在流通領(lǐng)域中,若干同業(yè)商店以統(tǒng)一的店名、統(tǒng)一的標(biāo)志、統(tǒng)一的經(jīng)營方式、統(tǒng)一的管理手段連接起來,共同進(jìn)貨、分散銷售,共享規(guī)模效益的一種現(xiàn)代組織形式和經(jīng)營方式,已成為我國零售業(yè)、餐飲業(yè)和服務(wù)業(yè)普遍應(yīng)用的經(jīng)營方式和組織形式,并加快向汽車、醫(yī)藥、家居建材、加油站等多業(yè)種滲透,顯示出廠強(qiáng)大的生命力和發(fā)展?jié)摿ΑD壳皝碚f,IC卡在連鎖經(jīng)營中已經(jīng)得到了廣泛的應(yīng)用,但是,它們更多的是作為一種“電子錢包”,消費(fèi)者在刷卡消費(fèi)過程中,產(chǎn)生的反應(yīng)連鎖經(jīng)營機(jī)構(gòu)經(jīng)營情況的信息,沒有得到利用。連鎖經(jīng)營機(jī)構(gòu)管理層對該機(jī)構(gòu)經(jīng)營活動的管理和決策所需的信息,仍然是通過各分店傳統(tǒng)的紙質(zhì)報(bào)表方式獲得,信息反饋不及時(shí)、效率低。因此,為連鎖經(jīng)營機(jī)構(gòu)開發(fā)一個(gè)卡務(wù)管理系統(tǒng),收集由于消費(fèi)者刷卡等行為產(chǎn)生的信息,并能進(jìn)行必要的統(tǒng)計(jì)分析,為決策層提供決策支持,取代傳統(tǒng)做法上人工、紙質(zhì)的方式,能提高機(jī)構(gòu)的運(yùn)行效率和決策的準(zhǔn)確性。
連鎖經(jīng)營機(jī)構(gòu)的卡務(wù)管理系統(tǒng),需要實(shí)現(xiàn)如下功能:[1]總公司管理層通過登陸進(jìn)入系統(tǒng),通過選擇和輸入檢索條件,對會員信息、分店運(yùn)營信息、商品銷售信息等進(jìn)行檢索和統(tǒng)計(jì)等管理操作,為實(shí)行新的廣告策略、分店經(jīng)營范圍優(yōu)化、制定商品進(jìn)銷計(jì)劃等提供決策支持;[2]分店通過通過登陸進(jìn)入系統(tǒng),進(jìn)行新會員的開通、會員的刷卡消費(fèi)、會員卡的充值、會員卡的掛失、對本店運(yùn)營信息的檢索統(tǒng)計(jì)等操作。如圖1 所示。
2.2 B/S 機(jī)構(gòu)的卡務(wù)管理系統(tǒng)的設(shè)計(jì)
由于連鎖經(jīng)營機(jī)構(gòu)對卡務(wù)管理系統(tǒng)的使用,分店與總公司使用頻率不同。分店很頻繁,而管理層對系統(tǒng)的使用頻率,遠(yuǎn)遠(yuǎn)要比分店小,所以為了盡可能的保證系統(tǒng)的健壯性,同時(shí)為了保證各分店對該卡務(wù)系統(tǒng)的使用,和總公司決策人員或管理人員對卡務(wù)系統(tǒng)的使用或管理相對獨(dú)立性,本文把整個(gè)卡務(wù)管理系統(tǒng)分為如下兩個(gè)分系統(tǒng):僅對決策人員/管理人員開放的管理中心系統(tǒng),僅對分店開放的分店系統(tǒng)。與傳統(tǒng)的卡務(wù)管理系統(tǒng)不同,由于連鎖經(jīng)營機(jī)構(gòu)具有分店規(guī)模小、經(jīng)營地域分散、擴(kuò)展較頻繁等特點(diǎn),所以,系統(tǒng)的開發(fā)不能采用一般的C/S 軟件結(jié)構(gòu)。用B/S 結(jié)構(gòu)進(jìn)行該系統(tǒng)的開發(fā),能很好的滿足連鎖經(jīng)營機(jī)構(gòu)擴(kuò)展性的要求,而且由于其維護(hù)成本低、使用簡單等特色,降低了系統(tǒng)的維護(hù)和使用費(fèi)用,節(jié)約了成本。
在此類連鎖經(jīng)營中,分店是直接面對會員的窗口,直接與會員活動打交道,還可以依據(jù)分店權(quán)限的不同,給會員提供不同的服務(wù),例如會員的刷卡消費(fèi)、刷卡充值、以及新增會員等,這些信息就是該店的運(yùn)營情況信息。這些信息,通過分店對系統(tǒng)的使用,采集和匯總到系統(tǒng)的中心數(shù)據(jù)庫,為管理層的決策支持等行為,提供依據(jù)。分店對該系統(tǒng)的使用,至少應(yīng)該提高兩個(gè)接口:一是提供對系統(tǒng)的手動操作,例如:信息錄入、意外情況下對系統(tǒng)的處理的人機(jī)交互界面;二是提供讀卡設(shè)備等終端,連接到系統(tǒng)的接口。有些操作,例如會員卡充值,既需要讀卡器讀取卡號,有需要手動輸入充值金額信息;
分店系統(tǒng),通過如下方式,采集公司管理層所需的相關(guān)信息:一方面,在消費(fèi)者直接刷卡消費(fèi)活動時(shí),系統(tǒng)自動匯總到中心數(shù)據(jù)庫;另一方面,分店的手動操作分店系統(tǒng),實(shí)現(xiàn)信息的采集。
管理中心系統(tǒng)需要能對所有會員、分店的信息提供方便高效的管理,為公司決策層的決策、加強(qiáng)與會員的聯(lián)系互動,提供依據(jù);因?yàn)榉值陮ο到y(tǒng)的使用,是通過中心系統(tǒng)授權(quán)的合法帳號進(jìn)行的,分店對會員提供的服務(wù),是由中心系統(tǒng)授權(quán)決定的,所以中心系統(tǒng)必須擁有嚴(yán)格的分店授權(quán)和管理機(jī)制;中心系統(tǒng)還必須能對系統(tǒng)采集到的信息提供必要的分析、匯總的決策支持手段,例如:按要求生成和打印各種報(bào)表、生成和打印特定的曲線或走勢圖等,取代傳統(tǒng)上手工做法,達(dá)到提高企業(yè)運(yùn)行效率的目的。
2.3 B/S 結(jié)構(gòu)卡務(wù)管理系統(tǒng)的幾個(gè)關(guān)鍵問題
正如前文所述,要實(shí)現(xiàn)這種新的卡務(wù)管理系統(tǒng),與傳統(tǒng)的C/S 架構(gòu)不同之處,就是要解決/實(shí)現(xiàn)這樣三個(gè)問題: 瀏覽器實(shí)現(xiàn)對讀卡器等終端設(shè)備的操作;盡可能的減輕服務(wù)器的負(fù)擔(dān),增加系統(tǒng)的可靠性;如何保證系統(tǒng)的安全性。
在下文,作者采用了三種方法,以期能對B/S 架構(gòu)系統(tǒng)可能面臨的,上文所述的三個(gè)方面的問題,作出盡可能的解決/改善。
2.3.1 用OCX 提供瀏覽器與終端之間的接口
我們知道,B/S 架構(gòu)的軟件,它沒有專門的“客戶端”軟件,只有一個(gè)通用的瀏覽器,例如:IE。瀏覽器只是一個(gè)瀏覽工具,本身并不能對讀卡器等終端設(shè)備進(jìn)行操作,因此,我們必須采取其他方式,來解決這一問題,我們采用的是通過開發(fā)相應(yīng)的OCX 控件,嵌入網(wǎng)頁,提供瀏覽器與終端設(shè)備之間的接口,這樣,在沒有專門客戶端軟件的情況下,僅僅通過使用瀏覽器,也能實(shí)現(xiàn)對終端設(shè)備的讀/寫等操作。每個(gè)OCX 控件都有一個(gè)唯一的ID, 在網(wǎng)頁中,可以可以通過Javascript 腳本語言,把OCX 控件潛入網(wǎng)頁[1]。示例如下:
OBJ = document.getElementById("OcxID");
OBJ.Function(parameter);
2.3.2 海量數(shù)據(jù)表的分裂表設(shè)計(jì)
用戶對數(shù)據(jù)庫最頻繁的操作是數(shù)據(jù)查詢。為了提高數(shù)據(jù)檢索的能力,數(shù)據(jù)庫引入了索引機(jī)制。按照一種最頻繁的訪問習(xí)慣在某列建立簇索引,能極大地提高數(shù)據(jù)庫的訪問效率[2]。然而,索引雖然能提高數(shù)據(jù)庫表的查詢性能,但影響了數(shù)據(jù)庫表的更新,所以對那些更新頻繁的表,不適合建立索引。同時(shí),對一個(gè)海量數(shù)據(jù)表里數(shù)據(jù)的訪問,不是均等的,人們常常對某個(gè)范圍內(nèi)的數(shù)據(jù)更感興趣一些。基于上文兩點(diǎn)原因,有研究者提出,按照一定原則對海量數(shù)據(jù)表進(jìn)行分表設(shè)計(jì),能有效地減少數(shù)據(jù)查詢的時(shí)間。
已有研究證明,一個(gè)分裂成n 個(gè)子表的分裂表設(shè)計(jì),當(dāng)查詢無分組統(tǒng)計(jì)(即group)時(shí),分裂表設(shè)計(jì)的查詢時(shí)間,最佳情況可以達(dá)到分裂表之前的1/n,最差情況約與分裂前相當(dāng);當(dāng)查詢有分組統(tǒng)計(jì)時(shí),最佳查詢時(shí)間為分裂表之前的1/n2,最差時(shí)間與分裂表之前相當(dāng)[3]。那么如何確定該分裂表的原則呢?參考建立簇索引時(shí),一條重要原則就是:簇索引要建在最常被用來作為查詢條件的列,因此本文提出這樣的“分列表”設(shè)計(jì)的原則:不考慮約束因素,假設(shè)大表能建簇索引。那么,“簇索引”列,就是進(jìn)行分裂表的“分表列”。以該列進(jìn)行分裂表的查詢效率提高,類似于索引對查詢效率的提高,取決于對該表進(jìn)行查詢時(shí),該列作為查詢條件的頻率。頻率越高,效率提升越多。
2.3.3 客戶端數(shù)據(jù)請求的優(yōu)化
除了上文所說的,由于單次查詢數(shù)據(jù)庫時(shí)間過長,增加服務(wù)器負(fù)擔(dān)外,還有一種情況,也增加了服務(wù)器負(fù)擔(dān),那就是“客戶端”對服務(wù)器端的頻繁數(shù)據(jù)請求。這種情況可能經(jīng)常發(fā)生,例如:在百度輸入關(guān)鍵字進(jìn)行檢索,百度并不會一次把所有頁都返回給瀏覽器,而是返回搜索結(jié)果的第一頁,當(dāng)人們對后續(xù)的某頁感興趣時(shí),瀏覽器再次向服務(wù)器提交請求,由服務(wù)器返回該頁信息。每點(diǎn)擊一次后續(xù)頁的連接頁碼,就需要對服務(wù)器提交一次頁面請求,這樣,就造成了對服務(wù)器甚至數(shù)據(jù)庫的頻繁訪問。
我們注意到,通常我們獲取到的檢索結(jié)果往往比較多,而人們并不會每個(gè)結(jié)果都去一一察看,人們總是看有限幾頁后,就失去了繼續(xù)看下去的興趣[4]。因此我們設(shè)計(jì)一個(gè)合適的P,瀏覽器每一次向服務(wù)器提交頁面請求時(shí),服務(wù)器不是返回一頁,而是返回P 頁。在接下來的P-1 頁請求中,瀏覽器直接使用已儲存在緩存中的結(jié)果,而不需要再向服務(wù)器請求,如圖3。這樣,把訪問服務(wù)器的頻率最好情況下,可以降低到原來的1/P。
作者通過調(diào)查發(fā)現(xiàn),75%以上的用戶,興趣范圍在3 頁以內(nèi),這說明,盡管檢索獲得了大量的數(shù)據(jù),大部分情況下,人們只對前3 頁感興趣。考慮到每個(gè)結(jié)果網(wǎng)頁超文本的大小,以及目前的網(wǎng)絡(luò)帶寬,一次訪問,取合適的冗余數(shù)據(jù)(例如3 頁),是可行的。
2.3.4 系統(tǒng)安全性設(shè)計(jì)
加密技術(shù)是網(wǎng)絡(luò)安全的核心[5]。由于本系統(tǒng)用B/S 開發(fā),運(yùn)行在廣域網(wǎng)上,因此必須對系統(tǒng)的安全性和關(guān)鍵信息的保密性進(jìn)行考慮。對于一個(gè)運(yùn)行在廣域網(wǎng)上,但是僅對特定用戶開發(fā)的系統(tǒng)來說,目前最主要的準(zhǔn)入手段就是帳號,通過建立嚴(yán)密的帳號和權(quán)限管理機(jī)制,來實(shí)現(xiàn)系統(tǒng)對特定用戶的、分層次的開放。
用戶口令的保密性,是保證系統(tǒng)安全性的基本。然而,通過網(wǎng)絡(luò)監(jiān)聽、種植木馬病毒等手段,使口令的安全性受到嚴(yán)重的威脅。口令在瀏覽器端提交到服務(wù)器端進(jìn)行驗(yàn)證的過程中,可能被竊取。因此,我們需要對密碼進(jìn)行加密,再進(jìn)行傳輸。目前來說,MD5 是一種較好的加密算法,對口令的加密足夠了。針對加密對口令的保護(hù),出現(xiàn)了木馬病毒,它不需要監(jiān)聽數(shù)據(jù)報(bào),從而獲取口令信息,而是通過感染目標(biāo)客戶端,用戶進(jìn)入登陸界面,進(jìn)行登陸時(shí),記錄用戶的鍵盤動作。所以,可以通過設(shè)計(jì)動態(tài)軟鍵盤的方式,進(jìn)行有效的預(yù)防。
3.實(shí)現(xiàn)和應(yīng)用
本文針對連鎖經(jīng)營卡務(wù)管理系統(tǒng)所提出的結(jié)構(gòu)和設(shè)計(jì),已經(jīng)成功的應(yīng)用于一個(gè)連鎖經(jīng)營機(jī)構(gòu)的卡務(wù)管理系統(tǒng)的開發(fā)和實(shí)踐中,該連鎖經(jīng)營機(jī)構(gòu)下設(shè)分店數(shù)目為20 個(gè)。在該系統(tǒng)中,需要維護(hù)一個(gè)消費(fèi)流水表,數(shù)目每天2 萬左右,分列表的方式采用的是按月分列表,由于流水更新主要在當(dāng)前月,往月更新極少,所以在往月建立索引,當(dāng)前月不建任何索引;在系統(tǒng)中,數(shù)據(jù)訪問均衡設(shè)計(jì)里的P 取了3;加密算法采用的MD5。系統(tǒng)運(yùn)行穩(wěn)定,用戶反應(yīng)良好。
4.結(jié)論
IC卡在連鎖經(jīng)營中得到越來越廣泛的應(yīng)用,開發(fā)一個(gè)適合于連鎖經(jīng)營模式的卡務(wù)管理系統(tǒng),很有意義。本文針對連鎖經(jīng)營的特點(diǎn),提出采用B/S 結(jié)構(gòu),進(jìn)行該系統(tǒng)的開發(fā),并針對系統(tǒng)中可能出現(xiàn)的幾個(gè)問題,進(jìn)行了探討,提出了解決或改善的辦法。并通過實(shí)際的系統(tǒng)開發(fā)和運(yùn)行,得到了驗(yàn)證。
參考文獻(xiàn)
[1] 孫銳,苗放。ActiveX 與服務(wù)器端對象級交互[J]。電腦編程技巧與維護(hù),2008,第1 期
[2] 宗薇,董占球。聚簇索引在數(shù)據(jù)庫查詢中的重要作用[J].微機(jī)發(fā)展,2000,(5):70-73
[3] 尚展壘,陳慧,宋于偉。一種改進(jìn)的查詢優(yōu)化技術(shù)——分裂大表[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào)(自然科學(xué)版),2002,(9):61-63
[4] 科學(xué)信息離散分布規(guī)律的研究——從文獻(xiàn)單元到內(nèi)容單元的實(shí)證分析(Ⅵ):內(nèi)容單元的齊夫分布[J].情報(bào)學(xué)報(bào),1999,6
[5] 蔡勉,衛(wèi)宏儒。信息系統(tǒng)安全理論與技術(shù)。北京工業(yè)大學(xué)出版社
作者簡介:南開大學(xué)信息技術(shù)科學(xué)學(xué)院 袁振坤
天津市南開太陽高技術(shù)有限公司 溫遇華