當前網上購物以其方便快捷等優勢成為了很多消費者青睞的消費模式。 高校師生更是將此作為購物的首選, 每日各大高校都有著數量巨大的郵遞快件, 各快遞公司都在高校成立了快遞接收與寄送代理點, 但通過電話或者短信等方式讓老師、同學領取快遞的方式嚴重影響校園的教學秩序。 古貞等的大學校園設立快遞超市的可行性分析研究[1], 劉珍的高校校園快遞新模式研究[2]等從理論方面進行了闡述; 但很少有關校園快遞超市系統設計的相關文獻; 大部分文獻主要集中在快遞管理系統的設計與實現上, 像張芳的基于J2EE 的快遞管理系統的設計與實現[3], 蔡磊的基于架構技術的快遞管理系統的設計與實現[4], 劉振庭的基于 Web Services 快遞管理系統解決方案[5]. 而且文獻都沒有涉及當訪問量過高以及遇到攻擊時的解決方案。
本文從并發性、安全性等角度出發, 結合校園快遞超市的實際需求, 設計與實現了一套校園快遞超市系統。
1 總體設計
1.1 模塊設計
基于 PHP+MySQL 的校園超市快遞管理系統分為4 個主要功能模塊: 快件操作、統計報表、收派終端以及結算管理。 在前臺頁面中包括用戶登錄、快件查詢、運價查詢 3 個主要模塊; 快遞管理系統的總體功能架構設計, 如圖 1 所示:
各功能模塊說明如下:
用戶登錄: 系統操作員登錄系統, 實現快遞快件的各種操作。
快件查詢: 學院師生輸入快件運單號, 查詢快遞是否到達。
運價查詢: 學院師生可輸入快件的目的地、重量等信息查詢寄送快件的運價。
快件信息: 包含快件信息錄入、快件信息簽收、快件信息攬入三個模塊。
(1)快件信息錄入主要是錄入到達快件的運單號、收件人姓名、聯系方式、到達日期等信息。
(2)快件信息簽收模塊主要是實現收件人簽收快件,包括單次簽收與批量簽收功能。
(3)快件信息攬入主要錄入學院師生郵寄快件的基本信息, 包括單號、寄送人姓名、寄送日期、快件的重量、保費、運價等。
統計報表: 包括所有快件信息與監控對比兩個模塊。 所有快件信息模塊主要是展示各快遞公司的到件情況, 監控對比模塊主要是監控各快遞公司已派件情況和未派件情況的對比; 對于未派送快件以進行發送短信進行提醒。
收派終端: 主要是給系統管理員使用, 包括派費設定與運價設定兩個子模塊。 派費設定主要是設置各快遞公司的派送價格; 運價設定主要是根據目的地和重量設定保費、首重、續重等參數。
結算管理: 包含收派件收入明細與收入總計兩個子模塊;(1)收派件收入明細模塊可以查詢各個時間段各快遞公司的派件數量、收件數量、派費、運費以及費用合計等詳細信息。(2)收入總計模塊可查詢各時間段的收派費用以及總的收入合計。 結算管理模塊可以實時監控各時間段校園快遞的盈利情況。
1.2 數據庫設計
本項目采用MySQL數據庫, PHP自身可以與大多數數據庫進行連接, 但 MySQL 數據庫是開源界所公認的與 PHP 結合最好的數據庫, 其具有安全、跨平臺、體積小、高效等特點, 是 PHP 的黃金搭檔。 本系統共設計了派件信息表、攬件信息表、價格表、快遞公司表以及用戶信息表 5 張表, 其 ER 圖如下圖 2 所示。
2 系統實現
2.1 前端界面實現
前端界面呈現主要是采用 HTML+CSS+jQuery 方式, 同時為提高 Web 前端性能, 采用文獻[6]的方式進行了瀏覽器訪問優化實現, 如通過合并 CSS 以及 JS、圖片等來減少HTTP請求;使用瀏覽器緩存、啟用壓縮、減少 COOKIE 傳輸等。
2.1.1 條碼掃描槍自動錄入
本系統的錄入采用條碼掃描槍掃描快件運單號,進行批量自動錄入, 如圖 3 所示。 掃描槍掃描系統默認鍵為鍵盤上的 ENTER 鍵, 編寫文本框事件響應函數addRow(),函數功能為識別掃描槍, 動態生成表格行,其關鍵代碼如下:
function addRow(evt){
var k=window.event?evt.keyCode:evt.which;
if (k==13){
clearTimeout(firstTime);
var addTable=document.getElementById(“addpage”);
var row_index=addTable.rows.length;
//新插入行在表格中的位置
var newRow=addTable.insertRow(row_index);
//插入新行
newRow.id=“row”+row_index;
//設置新插入行的 ID
var col2=newRow.insertCell(0);
col2.innerHTML=“ name='b”+row_index+“‘id='b”+row_index+“' type='text' onkeypress=\\”addRow(event)\\“ />”; } 2.2 高訪問量高并發解決方案 因系統為 B/S 結構以及系統是面向高校師生, 可能會出現某一時間段集中訪問系統進行并發查詢的高訪問量情況, 本文采用兩種策略來解決這種流量激增的狀況。 2.2.1 頁面靜態化 靜態化可以有效提高系統的訪問效率、降低服務器負載[7], PHP 中動態生成靜態頁面主要應用 PHP 中的緩存函數, 本文主要創建了一個 StaticPage 類; 在StaticPage 類中, 定義 pageBegin()和 pageEnd()方法分別用來定義所要生成靜態頁面的開始和結束位置; 定義 getStaticPageName()方法根據實際的 PHP 頁面的請求地址生成靜態頁面地址; 定義 makeStaticPage()方法創建靜態頁面;StaticPage 類中生成靜態頁的方法是真正意義地生成靜態頁面, 而非偽靜態, 其好處是不受服務器局限, 如果使用偽靜態的方法則要開啟Apache服務器的Rewrite 功能。 2.2.2 引入 MemCache 緩存技術 memcache 是一個高性能的分布式的內存對象緩存系統, 它能夠用來存儲各種格式的數據, 包括圖像、視頻、文件以及數據庫檢索的結果等。 使用 Memcache能減少服務器壓力和數據庫讀取次數, 緩解數據庫的壓力[8], 讓 Memcache 作為一個緩存區域, 把部分信息保存在內存中, 在前端能夠迅速的進行存取。 首先在服務器端開啟 Memcache 擴展, 然后下載安裝好Memcache;其關鍵代碼如下: $mem=new Memcache; $mem->connect(“localhost”,11211); $sql=“select * from tb_express”; $key=substr(md5($sql), 10, 8); $data=$mem->get($key); if(!$data){ $mysqli=new mysqli(“localhost”, “root”, “123456”, “db_express”); $result=$mysqli->query($sql); $data=array(); while($row=$result->Fetch_assoc()){ $data[]=$row; } $result->free(); $mysqli->close(); $mem->set($key,$data, MEMCACHE_COMPRESSED, 3600); echo $sql; } echo '';
print_r($data);
?>
2.3 安全保障
為了保證系統的安全運行, 系統從客戶端與服務器端都進行了安全設計。 在客戶端采用用戶名和口令字的身份鑒別技術, 對密碼使用 MD5 加密; 通過編寫jQuery 組件類來驗證用戶輸入的合法性,防御跨站腳本(XSS)攻擊; 同時采用驗證碼技術, 在一定程度上對跨站點請求偽造攻擊(CSRF)進行防御;服務器端設計對用戶分角色管理, 對訪問控制進行了詳細設計與實現, 針對不同的角色賦于不同的操作權限。 在防御 SQL 注入方面使用預編譯語句、存儲過程以及編寫安全函數等方法; 同時對 SessionFixation 攻擊與 Session 保持攻擊方面進行了有效預防;編寫代碼時針對 PHP 中常見的文件包含漏洞、變量覆蓋漏洞和代碼執行漏洞分別進行了有效防御。
運行實踐表明, 該系統具有良好的安全性、可操作性、可移植性和可擴展性。 基于 WEB 管理,提高了快件信息管理工作的實時性和準確性。 本系統目前正在推廣之中, 其開發技術也將適合其它網絡化管理信息系統的開發與實施。 圖 4 是登錄查詢界面,圖 5 是快件信息界面, 圖 6 是收入總計界面。
3 總結
本文主要介紹基于 PHP 與 MySQL 的校園超市快遞管理系統的設計與實現。 系統的設計與實現過程中主要采用了軟件工程的分析模式, 針對設計與實現進行了詳細描述。 系統主要基于 B/S 結構, 釆用 PHP 語言, 使用 JS、JQUERY 等前沿網頁處理技術, 數據庫采用 MySQL, 進行數據庫表及表關系的設計。 實現了高訪問高并發的解決方案, 同時對系統的安全方面進行了詳細設計與實現。
參考文獻
1 古貞,單曉曦,鄒亞清,周肖芳,陸霞。大學校園設立快遞超市的可行性分析研究。物流工程與管理,2014,36(5):206–207.
2 劉珍。高校校園快遞新模式研究。武漢商業服務學院學報,2013,27(1):27–29.
3 張芳?;?J2EE 的快遞管理系統的設計與實現[碩士學位論文].濟南:山東大學,2013.
4 蔡磊?;诩軜嫾夹g的快遞管理系統的設計與實現[碩士學位論文].武漢:華中科技大學,2011.
5 劉振庭,畢楊?;?Web Services 快遞管理系統解決方案?,F代電子技術,2012,35(8):33–34.
6 李雨晨。WEB 系統前端性能優化方法研究[碩士學位論文].長沙:湖南大學,2013.
7 白萬民,吳夫丹,白小軍。Web 應用中的網頁靜態化技術研究。西安工業大學學報,2014,34(1):34–37.
8 謝杰濤,吳敏,吳娟,史睿冰。Web 系統高性能本地數據緩存實現機制。計算機應用研究,2014,31(7):74–77.