西安文理學(xué)院 詹 鑫 魏建軍 韓利凱
基于J2EE的B2C電子商務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
西安文理學(xué)院 詹 鑫 魏建軍 韓利凱
采用B/S架構(gòu)設(shè)計(jì)模式,實(shí)現(xiàn)了商品分類(lèi),訂單,公告和購(gòu)物車(chē)的展示和詳細(xì)信息的查詢(xún),用戶(hù)可以通過(guò)注冊(cè)和登錄、對(duì)商品進(jìn)行選購(gòu),最后結(jié)賬生成訂單,并且管理員可以對(duì)商品進(jìn)行更新維護(hù)等。
電子商務(wù);J2EE;購(gòu)物B/S;myEclipse
隨著互聯(lián)網(wǎng)+的快速發(fā)展,網(wǎng)購(gòu)越來(lái)越受到廣大人們的喜愛(ài),與傳統(tǒng)的商場(chǎng)購(gòu)物方式相比,網(wǎng)上購(gòu)物可以隨時(shí)隨地進(jìn)行,而且種類(lèi)繁多,與傳統(tǒng)的銷(xiāo)售模式相比,網(wǎng)上銷(xiāo)售不需要太多的銷(xiāo)售人員和占用太多的場(chǎng)地成本較低,是今后購(gòu)物的發(fā)展趨勢(shì)[1]。本文基于J2EE的B2C電子商務(wù)系統(tǒng)(購(gòu)物網(wǎng)站)的設(shè)計(jì)與實(shí)現(xiàn),在該平臺(tái)上,用戶(hù)可以直接在瀏覽器登錄該網(wǎng)站,注冊(cè)用戶(hù),瀏覽商品,選購(gòu)商品,加入購(gòu)物車(chē),提交訂單,支付等,而管理員則可以通過(guò)網(wǎng)絡(luò)購(gòu)物系統(tǒng)維護(hù)和修改后臺(tái)數(shù)據(jù),作為數(shù)據(jù)庫(kù)的更新,用于給用戶(hù)提供訪問(wèn)的數(shù)據(jù)等。
系統(tǒng)前臺(tái)功能如圖1 所示:
圖1 系統(tǒng)前臺(tái)功能圖
后臺(tái)功能和圖2所示。
前臺(tái)實(shí)現(xiàn)注冊(cè)、登錄、對(duì)商品進(jìn)行選購(gòu),最后結(jié)賬生成訂單等,后臺(tái)模塊實(shí)現(xiàn)設(shè)置商品、訂單設(shè)置、公告設(shè)置、系統(tǒng)基本設(shè)置、廣告和鏈接設(shè)置等。當(dāng)后臺(tái)數(shù)據(jù)發(fā)生變化時(shí),管理員登錄后可對(duì)這些模塊的數(shù)據(jù)進(jìn)行更新和修改。例如,當(dāng)有新品上架時(shí),管理人員登錄后臺(tái),修改商品設(shè)置模塊,選擇添加商品,然后將商品信息添加到后臺(tái)數(shù)據(jù)庫(kù),前端頁(yè)面通過(guò)請(qǐng)求將后臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)調(diào)出,然后通過(guò)前端顯示出來(lái)。
圖2 系統(tǒng)后臺(tái)功能圖
數(shù)據(jù)流圖整個(gè)過(guò)程反映了自上而下進(jìn)行功能分析和細(xì)化的分析過(guò)程,數(shù)據(jù)流圖便于用戶(hù)理解和開(kāi)發(fā)人員分析數(shù)據(jù)流的圖形化工具,從系統(tǒng)開(kāi)發(fā)開(kāi)始,然后逐層向下,直到完成系統(tǒng)所有描述為止[2]。該系統(tǒng)的頂層數(shù)據(jù)流圖主要是對(duì)管理員,用戶(hù),商品分類(lèi),商品,用戶(hù)等信息的管理,上層數(shù)據(jù)流圖,如圖3所示。
圖3 系統(tǒng)頂層數(shù)據(jù)流圖
(1)管理員模塊和用戶(hù)設(shè)置模塊
這兩個(gè)模塊分別是對(duì)于后臺(tái)登錄人員信息的一個(gè)綜合管理,對(duì)于前臺(tái)注冊(cè)用戶(hù)的信息進(jìn)行維護(hù)。
管理員模塊可以進(jìn)行添加和刪除管理員,這部分的信息是維護(hù)登錄后臺(tái)人員的信息,還包括修改密碼等操作,管理員登錄后,先判定有沒(méi)有權(quán)限,如果有則對(duì)后臺(tái)數(shù)據(jù)進(jìn)行操作。
(2)購(gòu)物車(chē)管理模塊
這個(gè)模塊主要是用戶(hù)對(duì)于自己的購(gòu)物車(chē)進(jìn)行管理和維護(hù),將商品放入購(gòu)物車(chē)之后可以繼續(xù)購(gòu)物,也可以直接選擇結(jié)賬,系統(tǒng)自動(dòng)生成訂單,也可以清空購(gòu)物車(chē)。
(3)訂單模塊
這個(gè)模塊主要是用戶(hù)結(jié)賬時(shí)生成訂單時(shí)必須要填寫(xiě)的內(nèi)容,主要包括詳細(xì)的地址,電話,用戶(hù)名等。
(4)加入購(gòu)物車(chē)模塊
這個(gè)模塊主要是對(duì)用戶(hù)選中的商品進(jìn)行存儲(chǔ)和展示,方便用戶(hù)對(duì)商品進(jìn)行下一步的操作和處理, 有了這個(gè)模塊能夠更加方便用戶(hù)購(gòu)物,用戶(hù)可以將喜歡的商品存到購(gòu)物車(chē),等方便的時(shí)候再去支付,這樣就省去了來(lái)回查看商品的麻煩,方便了用戶(hù)購(gòu)物。
系統(tǒng)使用MySQL作為數(shù)據(jù)庫(kù),利用java語(yǔ)言JDBC技術(shù)進(jìn)行與MYSQL數(shù)據(jù)庫(kù)的連接、通過(guò)在java代碼中寫(xiě)SQL語(yǔ)句進(jìn)行頓時(shí)數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀存取和更新、刪除操作[3]。連接數(shù)據(jù)庫(kù)的代碼如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/bookstore
uname=root
upwd=
static{
Properties properties = new Properties();
InputStream in = BaseDao.class.getResourceAsStream ("/database.properties");
try {
properties.load(in);
Class.forName(properties.getProperty("driver"));
url = properties.getProperty("url");
uname = properties.getProperty("uname");
upwd = properties.getProperty("upwd");
conn = DriverManager.getConnection(url, uname, upwd);
} catch (ClassNotFoundException e) {
System.out.println("沒(méi)有加載驅(qū)動(dòng)程序");
e.printStackTrace();
} catch (IOException e) {
System.out.println("未找到配置文件");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("連接數(shù)據(jù)庫(kù)失敗");
e.printStackTrace();
}
}
public Connection getConn() throws SQLException{
if(conn == null){
conn = DriverManager.getConnection(url, uname, upwd);
}
return conn;
}
采用Junit設(shè)計(jì)了多個(gè)對(duì)應(yīng)的測(cè)試用例,對(duì)系統(tǒng)進(jìn)行了單元測(cè)試,結(jié)果證明系統(tǒng)運(yùn)行穩(wěn)定達(dá)到了設(shè)計(jì)要求。
[1]王海濤,賈宗璞.基于Struts和Hibernate的Web應(yīng)用開(kāi)發(fā)[J].計(jì)算機(jī)工程,2013,37(9):113.
[2]雷景生,葉文珺,李永斌.數(shù)據(jù)庫(kù)原理及應(yīng)用[M].北京:清華大學(xué)出版社.2012.
[3]鄭巖.數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)挖掘原理及應(yīng)用[M].北京:清華大學(xué)出版社.2013.
詹鑫(1994—),陜西安康人,研究方向:軟件工程。
魏建軍(1992—),陜西延安人,研究方向:軟件工程。