張建峰,陳瓊鶯,禹謝華(福建師范大學(xué)閩南科技學(xué)院,福建 泉州 362332)
便捷式SM系統(tǒng)的設(shè)計(jì)與開發(fā)
張建峰,陳瓊鶯,禹謝華
(福建師范大學(xué)閩南科技學(xué)院,福建 泉州 362332)
摘 要:隨著現(xiàn)階段各類中小型商鋪對(duì)商品管理需求的日益增多,設(shè)計(jì)和實(shí)現(xiàn)便捷式SM(salesystem management)系統(tǒng)顯得尤為重要。本系統(tǒng)將涉及到商鋪中所有帶條形碼的商品信息管理,數(shù)據(jù)統(tǒng)計(jì),表格圖形顯示,消息推送等功能。應(yīng)用目前流行的java語言,jsp技術(shù),微信平臺(tái)等方式,實(shí)現(xiàn)中小型商家實(shí)時(shí)零距離接觸商品,賬單,利潤(rùn)報(bào)表等功能,提供給商家一個(gè)貼心的小助手。
關(guān)鍵詞:便捷式;SM系統(tǒng);設(shè)計(jì);開發(fā)
在當(dāng)今科技發(fā)展迅速的世界中,產(chǎn)品進(jìn)銷存系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方式已經(jīng)較大程度上滿足了商家在這方面的需求,不僅涉及到網(wǎng)絡(luò)技術(shù)的應(yīng)用,更是將信息化數(shù)據(jù)時(shí)代普及到中小型商鋪世界中。這種系統(tǒng)的開發(fā)重點(diǎn)主要集中于能在不同地點(diǎn),不同時(shí)間,不同人員實(shí)時(shí)對(duì)自己商鋪的商品管理,銷售情況,庫存情況等了解和操作,系統(tǒng)還可通過微信平臺(tái),向用戶提供類型查詢接口,真正實(shí)現(xiàn)對(duì)話式商品管理,在交互方式上邁出了極大一步,且在將來會(huì)越來越便捷,越來越普及。
本系統(tǒng)采用B/S結(jié)構(gòu),它是(Browser/Server,瀏覽器/服務(wù)器模式)的簡(jiǎn)稱,是網(wǎng)頁技術(shù)發(fā)展后的一種訪問網(wǎng)絡(luò)結(jié)構(gòu)模式,網(wǎng)頁瀏覽器是客戶端最主要的應(yīng)用軟件。這種模式具有很大的便捷性,實(shí)現(xiàn)了統(tǒng)一的客戶端,能將所開發(fā)的系統(tǒng)功能實(shí)現(xiàn)的核心部分集中到web服務(wù)器上,在很大程度上簡(jiǎn)化了應(yīng)用系統(tǒng)的開發(fā)、維護(hù)以及使用。所以客戶機(jī)上只需要安裝一個(gè)瀏覽器(Browser),如谷歌瀏覽器(Chrome)火狐瀏覽器(Firefox)或IE瀏覽器(Internet Explorer),服務(wù)器可以安裝Oracle數(shù)據(jù)庫、MySQL數(shù)據(jù)庫或 SQL Server數(shù)據(jù)庫。瀏覽器通過Web Server同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)訪問和操作。這樣就大大簡(jiǎn)化了客戶端電腦載荷,俗稱廋客戶端。減輕了開發(fā)人員在系統(tǒng)維護(hù)與升級(jí)上的成本與工作量,減少了用戶的總體成本。
瀏覽器/服務(wù)器模式的一個(gè)最大的優(yōu)點(diǎn)就是可以在任何時(shí)間,任何地點(diǎn)進(jìn)行網(wǎng)絡(luò)操作而不用安裝任何專門的應(yīng)用軟件。只要有一臺(tái)能上網(wǎng)的電腦或手機(jī)就能使用,真正實(shí)現(xiàn)客戶端無需維護(hù)的功能。而且系統(tǒng)擴(kuò)展性非常容易,只要能上網(wǎng),再由系統(tǒng)管理員分配一個(gè)用戶名和密碼,就可以使用了。甚至可以在線申請(qǐng),通過公司內(nèi)部的安全認(rèn)證(如CA證書)后,不需要人的參與,系統(tǒng)可以自動(dòng)分配給用戶一個(gè)賬號(hào)進(jìn)入系統(tǒng)。
在設(shè)計(jì)本系統(tǒng)時(shí),最先考慮的當(dāng)然是系統(tǒng)的需求分析,主要針對(duì)系統(tǒng)的幾個(gè)核心模塊進(jìn)行拆分,將系統(tǒng)整體拆分成幾個(gè)小模塊,細(xì)化設(shè)計(jì),測(cè)試,然后將各個(gè)小模塊重新再拼接起來,即從大到小,再從小到大的設(shè)計(jì)思路。
系統(tǒng)總體模塊圖如圖1。
便捷式SM系統(tǒng)主要分為三個(gè)大模塊:系統(tǒng)后臺(tái)管理,系統(tǒng)前臺(tái)使用,微信平臺(tái)。由這三個(gè)大方向入手,使得設(shè)計(jì)變得清晰,然后再將各個(gè)大模塊進(jìn)行細(xì)分。
系統(tǒng)后臺(tái)分為用戶管理和商品管理。
(1)用戶管理的設(shè)計(jì)采用RBAC(Role Based Access Control)模式,是“基于角色的權(quán)限管理”,由于本系統(tǒng)涉及到不同的角色對(duì)應(yīng)使用不同的功能,因此需要對(duì)用戶進(jìn)行權(quán)限設(shè)置,權(quán)限設(shè)置機(jī)制可以分為三個(gè)實(shí)體,分別是用戶實(shí)體,角色實(shí)體,功能實(shí)體。關(guān)系圖如圖2。
由于RBAC實(shí)現(xiàn)了用戶與訪問權(quán)限的邏輯分離,因此它極大的方便了權(quán)限管理。例如,如果一個(gè)用戶的職位發(fā)生變化,只要將用戶當(dāng)前的角色去掉,加入代表新職務(wù)或新任務(wù)的角色即可,角色/權(quán)限之間的變化比角色/用戶關(guān)系之間的變化相對(duì)要慢得多,并且委派用戶到角色不需要很多技術(shù),可以由行政管理人員來執(zhí)行,而配置權(quán)限到角色的工作比較復(fù)雜,需要一定的技術(shù),可以由專門的技術(shù)人員來承擔(dān),但是不給他們委派用戶的權(quán)限,這與現(xiàn)實(shí)中情況正好一致。
(2)商品管理模塊,包括商品類別,商品信息,商店信息,商店商品,訂單記錄,利潤(rùn)報(bào)表等。各個(gè)實(shí)體都具有各自的相關(guān)屬性,以商品實(shí)體為例,其模型主要代碼如下:
//商品類型,在數(shù)據(jù)庫中存的是商品類別的外鍵id,java語言中是以整個(gè)對(duì)象為屬性
而封裝好對(duì)象后,向數(shù)據(jù)庫插入一件商品時(shí),核心代碼如下:
頁面效果圖如圖3:
在頁面效果中,我們看到商品類別是以下列框的形式展現(xiàn)的,表明當(dāng)新增一個(gè)商品記錄之前,必須先將商品類型表中的記錄取出,顯示在新增對(duì)話框中讓用戶選擇,而不是將商品類型的選項(xiàng)寫死在頁面代碼中,這樣的設(shè)計(jì)方式提供了良好的系統(tǒng)維護(hù)性和交互性。而商品類型在頁面中的獲取方式是使用了javascript的異步請(qǐng)求方式,它相對(duì)于同步請(qǐng)求具有極大的特性。
區(qū)別如下:
同步:提交請(qǐng)求->等待服務(wù)器處理->處理完畢返回 這個(gè)期間客戶端瀏覽器不能干任何事
異步: 請(qǐng)求通過事件觸發(fā)->服務(wù)器處理(這是瀏覽器仍然可以作其他事情)->處理完畢
因此,在本系統(tǒng)的設(shè)計(jì)中,頁面基本上采用的都是ajax異步請(qǐng)求,核心代碼如下:
總的來說,雖然使用異步執(zhí)行模式在編程序時(shí)十分復(fù)雜,但可以實(shí)現(xiàn)多任務(wù)并行執(zhí)行,使執(zhí)行的效率大大提高。接下來需要設(shè)計(jì)的則是訂單查詢和商品統(tǒng)計(jì)報(bào)表。
(1)訂單查詢,即當(dāng)消費(fèi)者付款時(shí),生成的一條記錄,內(nèi)容包括營業(yè)員,消費(fèi)者,訂單號(hào),總價(jià)格,折扣,訂單時(shí)間,訂單商品,訂單支付等。列表形式如圖4:
由圖4可知,在操作一欄有訂單商品和訂單支付按鈕,訂單商品表示此消費(fèi)者在本次購買中的所有商品信息,訂單支付表示消費(fèi)者使用的支付方式,支付方式有現(xiàn)金支付,會(huì)員卡支付等。
(2)商品統(tǒng)計(jì)報(bào)表,采用表格和圖形兩種方式展現(xiàn),以日期yyyy-mm-dd和月份yyyy-mm兩種方式查詢,日期查詢返回的是某一天的銷售情況和利潤(rùn)情況,而月份查詢方式即顯示某一個(gè)月的銷售情況和利潤(rùn)情況,如圖5所示:
兩種選擇,讓用戶體驗(yàn)更好,讓用戶了解更清晰,表格顯示與圖形顯示,更直觀,對(duì)比更強(qiáng)烈。
后臺(tái)系統(tǒng)管理核心內(nèi)容的實(shí)現(xiàn)重點(diǎn)就在于兩大塊,即基于角色的權(quán)限管理和商品相關(guān)信息的怎刪改查。權(quán)限管理側(cè)重于本系統(tǒng)的安全性考慮,商品相關(guān)信息管理便是系統(tǒng)要實(shí)現(xiàn)的主要功能。
當(dāng)后臺(tái)的大部分功能設(shè)計(jì)完成后,要實(shí)現(xiàn)前臺(tái)的一個(gè)POS機(jī)功能就顯的簡(jiǎn)單多啦,由于商品的銷售在錄入系統(tǒng)時(shí),都有一個(gè)條形碼的屬性,因此,本系統(tǒng)在使用過程中需要用到一個(gè)條形碼掃描設(shè)備,它將掃描口對(duì)著商品的條形碼進(jìn)行掃描,設(shè)備會(huì)自動(dòng)將商品條形碼輸入到頁面的條形碼輸入框中,POS機(jī)操作界面如圖7:
使用設(shè)備掃描條形碼,設(shè)備自動(dòng)在圖中的條形碼輸入框中輸入數(shù)值串,并在上方顯示商品信息,默認(rèn)購買數(shù)量為1,營業(yè)員可以手動(dòng)修改數(shù)量,也可以繼續(xù)掃除同類型商品條形碼,系統(tǒng)自動(dòng)計(jì)算價(jià)格,顯示在圖中相應(yīng)位置,系統(tǒng)設(shè)有會(huì)員卡制度,會(huì)員等級(jí)的不同,打折率也不一樣,系統(tǒng)自動(dòng)計(jì)算折扣后的總價(jià)并顯示出來,用戶可以選擇支付方式,當(dāng)消費(fèi)者付整百時(shí),營業(yè)員在付款輸入框輸入100,如圖,付款輸入框右側(cè)會(huì)自動(dòng)顯示找零多少,這也是系統(tǒng)設(shè)計(jì)的一個(gè)貼心計(jì)算器。在這個(gè)營業(yè)員操作界面中,步驟也是相對(duì)簡(jiǎn)單。PC端的設(shè)計(jì)大致到此就完成了,當(dāng)然還有一些細(xì)節(jié)還沒有介紹,開發(fā)者在后期測(cè)試時(shí)有對(duì)其進(jìn)行詳細(xì)的解決,比如商品查重,數(shù)據(jù)類型轉(zhuǎn)換,數(shù)據(jù)庫優(yōu)化等。
最后,本系統(tǒng)最體現(xiàn)便捷性的一個(gè)重點(diǎn)就在于利用微信平臺(tái),注冊(cè)申請(qǐng)微信訂閱號(hào),利用第三方微信接口設(shè)計(jì),轉(zhuǎn)接url訪問到本系統(tǒng)中,商家就可以隨時(shí)隨地的使用手機(jī)微信進(jìn)行對(duì)商品的銷售情況進(jìn)行查詢和其它操作了。
大致步驟為:申請(qǐng)微信訂閱號(hào),進(jìn)入開發(fā)者中心,填寫相應(yīng)的信息,最關(guān)鍵的是填寫服務(wù)器配置,一個(gè)便是本系統(tǒng)對(duì)接微信的一個(gè)url訪問接口,還有一個(gè)Token令牌,具體使用方式可查看微信官方提供的開發(fā)文檔,微信訂閱號(hào)的主要功能就是,用戶向訂閱號(hào)發(fā)送文本信息,微信平臺(tái)將信息轉(zhuǎn)發(fā)給本系統(tǒng),本系統(tǒng)接受用戶發(fā)送的信息后,進(jìn)行后臺(tái)處理,結(jié)果返回給微信平臺(tái),微信平臺(tái)再將該結(jié)果轉(zhuǎn)發(fā)給用戶。流程圖如圖8:
這里的用戶指的是商家,商家在進(jìn)行訂閱號(hào)查詢是,必須先進(jìn)行用戶名密碼驗(yàn)證,防止非本系統(tǒng)用戶偷窺商家機(jī)密,即商家在進(jìn)行發(fā)送查詢關(guān)鍵詞時(shí),系統(tǒng)返回提示語:“請(qǐng)輸入用戶名和密碼,以逗號(hào)隔開”,用戶向訂閱號(hào)輸入用戶名密碼后,轉(zhuǎn)發(fā)給本系統(tǒng),系統(tǒng)進(jìn)行數(shù)據(jù)庫查詢用戶表后,若查詢到結(jié)果,則允許用戶繼續(xù)查詢,否則,提示用戶無法查詢,請(qǐng)重新驗(yàn)證。在用戶名密碼正確的情況下,用戶可以根據(jù)關(guān)鍵字:“今日利潤(rùn)查詢”,“本月利潤(rùn)查詢”,“XX商品銷售量”,“XX商品庫存量”等進(jìn)行查詢。至此,真正體現(xiàn)了商家零距離管理和查詢商品的功能,實(shí)現(xiàn)本系統(tǒng)便捷性的操作。
在設(shè)計(jì)系統(tǒng)的過程中,遇到過諸多問題,比如權(quán)限管理,如何合理的設(shè)置角色的權(quán)限是一個(gè)頭疼的問題,系統(tǒng)最終采用逗號(hào)分隔式,將某角色所具備的所有權(quán)限以逗號(hào)的方式連接成一個(gè)字符串,存儲(chǔ)在表的一個(gè)字段中,每次驗(yàn)證角色的權(quán)限時(shí),使用split(“,”)的方式,將其分隔成權(quán)限數(shù)組。應(yīng)該還有更好的方式,因此這一模塊還有待更深入的研究,系統(tǒng)的安全性在對(duì)外公網(wǎng)的發(fā)布中還有待進(jìn)一步測(cè)試,最關(guān)鍵的是要防止XSS攻擊,它是web中最常見的javascript腳本攻擊,因此后臺(tái)在接受數(shù)據(jù)時(shí),一定要進(jìn)行一些特殊字符的過濾和轉(zhuǎn)義。除此之外,在頁面的顯示效果也有待加強(qiáng),布局的合理以及美工效果。當(dāng)然,在微信端,本系統(tǒng)具有極大的可擴(kuò)展性,后期還可以對(duì)系統(tǒng)進(jìn)行APP開發(fā),接口統(tǒng)一使用WEB的HTTP請(qǐng)求方式。在條件允許的情況下,還可以進(jìn)行微信服務(wù)號(hào)開發(fā),服務(wù)號(hào)與訂閱號(hào)的差別主要在于是否有自定義菜單,訪問更加方便,可以直接點(diǎn)擊自定義菜單操作查詢,無需進(jìn)行發(fā)送信息查詢。提高用戶的體驗(yàn)效果,這也是系統(tǒng)在后期開發(fā)的一個(gè)展望。
基金項(xiàng)目:國家級(jí)“大學(xué)生創(chuàng)新性實(shí)驗(yàn)計(jì)劃項(xiàng)目”(批準(zhǔn)號(hào):201412992003);福建省教育廳科研資助項(xiàng)目(批準(zhǔn)號(hào):JA13369);福建師范大學(xué)閩南科技學(xué)院“青年骨干教師重點(diǎn)培養(yǎng)對(duì)象”基金資助項(xiàng)目(批準(zhǔn)號(hào):mkq201008)
作者簡(jiǎn)介:張建峰(1991-),男,福建壽寧人,本科,研究方向:網(wǎng)絡(luò)工程,計(jì)算機(jī)應(yīng)用,人工智能。