陸文玲 劉新光 竇立君 王立琦
摘要:該文通過對校園報亭銷售管理系統(tǒng)的需求、校園一卡通的研究背景、內(nèi)容及意義進(jìn)行了詳細(xì)的分析,利用JSP技術(shù)結(jié)合MVC模型,詳細(xì)介紹基于一卡通的校園報亭管理系統(tǒng)的設(shè)計全過程。
關(guān)鍵詞:一卡通;校園報亭;管理系統(tǒng)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)31-0087-02
1 概述
目前高校的學(xué)生生活中,學(xué)校為了方便統(tǒng)一的管理,基本都是實現(xiàn)刷卡管理,包括消費方面的學(xué)校食堂、教育超市、浴室、洗衣機(jī)等;管理方面的圖書館書籍借閱、體育刷卡、門禁刷卡等方面。校園報亭是我校學(xué)生勤工助學(xué)的重要基地,本文針對校園一卡通在本校報亭銷售系統(tǒng)中的應(yīng)用,采用JSP技術(shù),基于Mysql數(shù)據(jù)庫,設(shè)計了一個報亭銷售管理系統(tǒng),體現(xiàn)了校園一卡通在方便學(xué)生生活中的一方面的實際應(yīng)用。
2 系統(tǒng)總體結(jié)構(gòu)設(shè)計
2.1 功能需求分析
校園報亭銷售系統(tǒng)是以在服務(wù)在校學(xué)生為目標(biāo),其主要的功能就是可以方便學(xué)生直接網(wǎng)上購買報亭內(nèi)的各類書刊、雜志等。因此本系統(tǒng)主要的用戶分為普通用戶和系統(tǒng)管理員這兩類。
系統(tǒng)管理員的主要功能有:
對報亭銷售的商品進(jìn)行管理,主要包括:商品上架、商品信息修改、商品刪除、商品信息查詢;
對個人信息的管理,包括:查詢個人的賬戶信息、修改個人信息、修改密碼等基本的功能;
對商品銷售情況的管理:查詢商品的銷售信息,按時間統(tǒng)計銷售額,銷售報表的輸出與打印。
對校園用戶的管理,主要包括:查詢校園用戶的基本信息、刪除校園用戶信息、查詢校園用戶的交易記錄等。
校園用戶的主要功能有:
查看報亭的商品信息;個人信息管理,主要有:賬戶管理、信息查看、密碼修改等;商品選擇、購物車管理、結(jié)算等功能,可以批量也可以單獨購買網(wǎng)站里的任何的商品,現(xiàn)場購物用戶可直接刷校園卡結(jié)算。
2.2 數(shù)據(jù)庫設(shè)計
校園報亭銷售管理系統(tǒng)的數(shù)據(jù)庫是通過MySql建立的,根據(jù)功能分析,理清了數(shù)據(jù)流向及實體之間的各種關(guān)鍵后,建立了管理員表、校園用戶表、報亭商品表、購物車表、校園用戶購買記錄表。
首先,對于用戶的管理方面,必須要有管理員信息表和用戶信息表,將管理員用戶和普通用戶的信息都存在這些表內(nèi)。同時商品信息也要單獨存放。另外因為要實現(xiàn)用戶可以同時購買多種商品,所以也添加了一張購物車信息表,用來保存購買過程中的信息,同時方便在后臺中批量管理。最后還有一張用戶購買記錄表,這張表存放了用戶的交易信息,方便查看用戶的信息。
在這些數(shù)據(jù)表中,相互關(guān)聯(lián)的主要有用戶信息表字段、商品信息表字段和購物車信息表字段之間的有關(guān)聯(lián);用戶信息表字段、商品信息表字段和用戶購買記錄表字段之間有關(guān)聯(lián),下面介紹部分關(guān)鍵的表。
1) 管理員信息表
管理員信息表,用來存儲管理員賬戶的基本信息,包括管理員ID、姓名、密碼、密碼鹽(為增強(qiáng)密碼保密性,而創(chuàng)建管理員時隨機(jī)生成的一串字符,與用戶密碼運(yùn)算后保存在用戶密碼字段)、報亭ID,并留一個備用字段。管理員信息表的設(shè)計信息如表1所示。
2) 商品信息表
商品信息表主要是用來保存商品信息。其字段主要有:商品ID、商品名、商品圖片的鏈接、商品單價、商品的詳細(xì)說明、發(fā)布的時間、商品庫存,并留兩個備用字段作為將來的其他功能的使用。商品信息表的設(shè)計如表2所示。
3 一卡通第三方介紹
一卡通系統(tǒng)中,為統(tǒng)一數(shù)據(jù)格式,對持卡人所屬部門做了定義:一卡通定義的持卡人的部門對應(yīng)的代碼,長度18個字節(jié),下面是代碼對應(yīng)的意義:1~3:校區(qū)代碼,4~6:一級部門代碼,4~9:二級部門代碼,4~12:三級部門代碼,4~15:四級部門代碼,4~18:五級部門代碼。
為提高校園一卡通的安全性,除一卡通自身業(yè)務(wù)外,其它第三方的業(yè)務(wù)都是通過校園一卡通系統(tǒng)提供的第三方接口安全接入一卡通系統(tǒng),下面簡要介紹幾個重要的接口:
3.1 第三方接入初始化函數(shù)
Bool TA_Init(string ServerIP , int PortNumber , int SysCode, int TerminalNo, boolean *ProxyOffline, long *MaxSno)
該接口的功能是實現(xiàn)第三方的業(yè)務(wù)系統(tǒng)初始化與第三方代理服務(wù)器的連接,其中:ServerIP表示第三方代理服務(wù)器的IP地址;PortNumber表示第三方代理服務(wù)器的端口號;SysCode表示一卡通系統(tǒng)給第三方業(yè)務(wù)系統(tǒng)分配的系統(tǒng)代碼;TerminalNo表示第三方系統(tǒng)當(dāng)前連接第三方的終端編號;出口參數(shù)ProxyOffline表示代理服務(wù)是否脫機(jī);MaxSno表示當(dāng)前第三方業(yè)務(wù)系統(tǒng)已有的最大流水號。返回True表示該接口調(diào)用成功,返回False表示接口調(diào)用失敗。
3.2 跟讀卡器操作相關(guān)的函數(shù)
1) int TA_CRInit(char CdReaderType,int ReaderPort,long BaudRate);
該接口的功能是實現(xiàn)讀卡器的初始化,其中:CdReaderType表示讀卡器類型,0表示接口為USB,1表示接口為串口,ReaderPort表示串口讀卡器的串口號,0~1分別代表串口1~4;
BaudRate表示串口讀卡器的波特率。返回0表示初始化讀卡器成功,非0值表示讀卡器初始化失敗。
2) BOOL TA_CRClose();
該接口的功能是關(guān)閉當(dāng)前會話中的讀卡器,返回True表示關(guān)閉成功,F(xiàn)alse表示關(guān)閉失敗。
3) int TA_FastGetCardNo(int *CardPhyNo);
該接口的功能用來快速輪詢讀取卡片內(nèi)的物理序列號,通過出口參數(shù)記錄當(dāng)前讀到的物理序列號,如果沒有卡在上面則出口參數(shù)里面記錄為-1。
通過該接口結(jié)合程序設(shè)計中的循環(huán)結(jié)構(gòu),可以輕松實現(xiàn)讀卡器的無限輪詢,讓讀卡器隨時讀取上面的卡片。
4) int TA_CRBeep(int BeepTime);
該接口的功能是用來啟動讀卡器的蜂鳴功能,通過該接口來提醒用戶本次讀卡已經(jīng)完成,不表明讀卡成功或失敗,BeepTime表示讀卡器蜂鳴的時間長度,單位為毫秒。
4 關(guān)鍵代碼分析
代碼設(shè)計對系統(tǒng)的安全性和性能都有著直接的影響,因此,代碼設(shè)計也是整個設(shè)計中關(guān)鍵部分。數(shù)據(jù)庫連接是系統(tǒng)具體實現(xiàn)與數(shù)據(jù)存儲之間的橋梁,系統(tǒng)中的增、刪、改、查都是基于這個橋梁,在系統(tǒng)的設(shè)計過程中,把數(shù)據(jù)庫的四大基本操作都集成到一個模塊中。具體代碼如:
4.1 數(shù)據(jù)庫連接代碼,系統(tǒng)中所有的數(shù)據(jù)庫操作都基于這個連接。
public ComDbOpt()
{ if( ds == null )
{ try
{ Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:comp/env");
ds = (DataSource) envContext.lookup("jdbc/mysql");// 這里根據(jù)配置更改 }
catch (Exception e)
{ System.err.println(e.getMessage()); }
}
}
4.2 數(shù)據(jù)庫中數(shù)據(jù)的四大基本操作是最平常的,系統(tǒng)里通過一定的集成,將數(shù)據(jù)庫的基本融合到一個函數(shù)里,其它地方需要時只需簡單的調(diào)用
public boolean update() throws java.io.UnsupportedEncodingException
{ try {
if (query_statement.equals("")) return false;
if(IsConnClosed()) this.getConnection();
if (null == this.con) {
throw new NullPointerException("未獲得數(shù)據(jù)連接");
}
PreparedStatement update_stm = con.prepareStatement(query_statement);
if (param != null) {
for (int i = 0; i < param.length; i++) {
update_stm.setString(i + 1, param[i]); }
}
int rowsaffected = update_stm.executeUpdate();
update_stm.close();
this.param = null;
return true;
} catch (SQLException ex) {
System.out.println(ex.getMessage());
return false;
} catch (NamingException ex) {
System.out.println(ex.getMessage());
return false;
} finally {// 這里可以關(guān)閉,不會有錯!
this.param = null;
try { this.con.close();
} catch (SQLException ex) {
System.out.println("數(shù)據(jù)連接關(guān)閉失敗");
}
}
}
5 結(jié)束語
基于校園一卡通的報亭銷售管理系統(tǒng)是根據(jù)軟件開發(fā)的流程來設(shè)計和實現(xiàn)的,通過系統(tǒng)需求分析、系統(tǒng)設(shè)計來分析劃分系統(tǒng)功能,并且以此為基礎(chǔ)內(nèi)容來設(shè)計并實現(xiàn)數(shù)據(jù)庫。系統(tǒng)的投入使用,更加方便地實現(xiàn)同學(xué)們及時了解某個校園報亭的書籍、雜志、報紙、飲料等商品情況的需求,通過該系統(tǒng)可以在線下單并使用校園一卡通在線支付或者到報亭刷卡支付,提高了校園報亭的勤工助學(xué)同學(xué)的工作效率,同時對校園報亭的銷售額的提升也做出了一定的貢獻(xiàn)。