葉建林 陳銳植 吳秋坤 方燦坤 林均濤
摘要:現(xiàn)如今,隨著人們生活水平提高,寵物在人們心中的地位也越來越高。伴隨著Android和iOS移動平臺的普及,人們對服務于他們的愛寵的APP的需求也越來越大。伴隨線下實體店的寵物美容和用品店之間競爭的增加,實體店老板們對于打通線上銷售的渠道的需求也越來越大。綜合以上原因,團隊設計開發(fā)這么一款將寵物,寵物主人和寵物美容店三者緊緊聯(lián)系在一起的APP。根據(jù)軟件工程的相關知識,在需求分析的基礎上,設計了系統(tǒng)總體架構及功能。使用Java語言和Android Studio開發(fā)工具開發(fā)App,運用Service和Intent實現(xiàn)頁面的跳轉(zhuǎn),Share Preference和SQLite實現(xiàn)商品的數(shù)據(jù)中心,最后將產(chǎn)品UI、界面控制和數(shù)據(jù)庫整合,通過運行和測試。這款APP不但可以解決寵物主人不知去哪為愛寵美容的問題,而且提供給了寵物優(yōu)質(zhì)生活用品和提高了寵物美容店和用品店的營收。而且通過測試表明,該APP為用戶解決了相應的難處,并給用戶的日常生活帶來了更多的便利和更好的體驗。
關鍵詞:Android;Servlet;寵物服務;網(wǎng)上商城;移動APP
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2018)13-0100-04
The Design and Application of Pap, an Interactive Platform Based on Android
YE Jian-lin, CHEN Rui-zhi, WU Qiu-kun, FANG Chan-kun, LIN Jun-tao
(Xinhua College of Sun yat-sen University, Dongguan 512133, China)
Abstract: Nowadays, with the improvement of people's living standards, pets have a higher and higher status in people's hearts. With the popularity of Android and iOS mobile platforms, there is a growing demand for apps that serve their loved ones. With the increase in competition between the pet grooming and supply stores in offline stores, physical store owners are increasingly demanding access to online sales. For the above reasons, the team designed and developed an APP that connects pets, pet owners and pet beauty stores. Based on the knowledge of software engineering, the overall architecture and function of the system are designed on the basis of demand analysis. Using the Java language and Android Studio development tool App, use the Service and the Intent to realize the jump of the page, Share Preference and SQLite data center for their goods, finally the product UI, interface control and database integration, by running and testing. The APP will not only solve the problem of pet owners not knowing where to go for beauty, but also provide the pet with quality living products and increase the revenue of pet beauty shop and store. Moreover, the test shows that the APP solves the corresponding difficulties for users and brings more convenience and better experience to users' daily life.
Key words: Android; Servlet; Pet service; Online mall; Mobile APP
1 背景
根據(jù)中國產(chǎn)業(yè)信息網(wǎng)資料顯示,2015年中國寵物行業(yè)市場規(guī)模約為978億元,到2020年有望突破2000億元,2010-2020這十年增長期的年均復合增長率預計可達32.8%。而根據(jù)中國產(chǎn)業(yè)信息網(wǎng)資料顯示,2016年全球手機出貨量為14.7 億部,預計2017年和2018年全球手機出貨量分別為15.2億和15.8億部,未來幾年復合增速在3.5%左右。在寵物行業(yè)市場和手機行業(yè)市場良性發(fā)展的大背景下,現(xiàn)實生活當中,有著許多的因主人臨時外出而寵物無人看管的場景。比如,某白領王某因公出差而家里的愛寵無人撫養(yǎng),所以急迫尋找可以代勞的人。其次,愛寵人士一定會為其愛寵的食物質(zhì)量是否安全健康有保障而擔憂。另外,愛寵們的主人們還會為尋找到可以給自己的愛寵修剪指甲、整理毛發(fā)、清潔全身、購買漂亮的小衣物的地方而發(fā)愁。
2 系統(tǒng)分析
2.1 系統(tǒng)目標
為解決現(xiàn)實生活中存在的各種寵物與人之間的常見的生活上的各種問題,Pap寵物商城交流互動平臺需要以技術為主,必須開發(fā)出相應的計算機平臺系統(tǒng)。該平臺系統(tǒng)主要包括以下組成部分:服務器端,接收客戶端所有請求,同時提供數(shù)據(jù)存儲服務;客戶端,提供用戶注冊、登錄、發(fā)布寄養(yǎng)信息、接收寄養(yǎng)信息以及商城購物等功能。
2.2 系統(tǒng)功能
寵物商城交流互動平臺Pap的主要功能有:發(fā)布寄養(yǎng)信息、接收寄養(yǎng)信息、完成寄養(yǎng)和商城購物。如圖1。
注冊登錄:為確保每個用戶的信息的完整性,用戶除填寫賬號密碼外還需要提供手機號碼、通訊地址和郵箱等信息進行注冊。注冊時將會提交數(shù)據(jù)到Pap的服務器端,然后服務器端校驗數(shù)據(jù)庫中是否存在相同的賬號信息。如若信息匹配相同則不通過,反之注冊登錄成功。
發(fā)布寄養(yǎng)信息:注冊登錄后便可發(fā)布寄養(yǎng)信息,在填寫好相關信息,如寵物名字、寄養(yǎng)天數(shù)、寄養(yǎng)酬勞和備注等信息后便可以發(fā)布了。
接收寄養(yǎng)信息:注冊登錄后便可接收寄養(yǎng)信息,在根據(jù)自身實際情況,在寄養(yǎng)欄選定合適的寄養(yǎng)訂單后,便可以接下寄養(yǎng)信息了。
商城購物:注冊登錄后便可以通過購物欄進行商品的瀏覽,加入購物車或者立即購買。
3 系統(tǒng)設計
3.1 寵物商城互動平臺關鍵抽象
關鍵抽象是概要設計的不,即將需求模型中的關鍵實體以及實體之間的關系識別并抽取出來,亦即領域模型,如圖2所示為寵物商城互動平臺的關鍵抽象。
3.2 寵物商城互動平臺架構描述
該平臺系統(tǒng)采用了 MVC(Model-View-Controller)設計模式,實現(xiàn)一個典型的三層架構模型。三層模型包括:表示層(UI 層),業(yè)務邏輯層以及數(shù)據(jù)訪問層。
1)表示層
表示層負責接收用戶的命令,交給控制層處理,并顯示處理結果。實現(xiàn)上,我們將采用 J2SE 的 SWING 框架,則表示層主要由一系列的窗體和控件組成。監(jiān)聽器的功能是對用戶的輸入進行監(jiān)聽,并調(diào)用控制層提供的接口進行數(shù)據(jù)傳遞。
2)業(yè)務邏輯層
業(yè)務邏輯層是系統(tǒng)的核心組成部分。管理所有系統(tǒng)功能有關的數(shù)據(jù)流和控制流,從而實現(xiàn)系統(tǒng)的邏輯功能。向上提供服務接口給表示層調(diào)用。在控制層中,不同的子系統(tǒng)提供獨立的服務接口,各自獨立實現(xiàn),互不干預影響。
3)數(shù)據(jù)訪問層
數(shù)據(jù)訪問層是包括了數(shù)據(jù)實體和持久化邏輯實現(xiàn),并向上提供接口。屬于不同子系統(tǒng)的數(shù)據(jù)實體放置在不同的包中。而持久化邏輯統(tǒng)一實現(xiàn),本系統(tǒng)將采用輕量級的嵌入式數(shù)據(jù)庫derby,其優(yōu)點是小巧方便,客戶機上無需進行復雜的數(shù)據(jù)庫服務器的安裝和配置。持久化邏輯可以采用不同的實現(xiàn),不同的子系統(tǒng)不規(guī)定要使用同一個持久化邏輯。
3.3 界面流程設計
寵物商城互動平臺Pap的界面流程設計如圖3所示。
4 系統(tǒng)實現(xiàn)
寵物商城互動平臺Pap采用C/S架構,它由客戶端和服務器端兩個部分組成。
4.1 客戶端應用程序
客戶端采用Java編寫以及Android studio來開發(fā)。采用MVC(Model-View-Controller)設計模式,網(wǎng)絡請求通過Http Client類實現(xiàn),本地數(shù)據(jù)存儲則通過Shared Preference類實現(xiàn)。寵物商城互動平臺實現(xiàn)如圖4所示。
Pap當中的主要功能發(fā)布寄養(yǎng)信息是通過發(fā)送http請求到服務端,然后再從服務端返回數(shù)據(jù)到客戶端來實現(xiàn)的。其中主要通過線程類Thread提交數(shù)據(jù)到服務端,然后通過JSON Array解析數(shù)據(jù)集合取出消息對象,最后通過List View展示數(shù)據(jù)。代碼如下:
提交數(shù)據(jù)給服務端:
new Thread(new Runnable() {
@Override
public void run() {
BasicNameValuePair bnvp0 = new BasicNameValuePair("uid",Constant.user.getUserid()); //userlist.get(0).getUerid().toString()
BasicNameValuePair bnvp1 = new BasicNameValuePair("brand",EtBrand.getText().toString());
BasicNameValuePair bnvp2 = new BasicNameValuePair("price",EtPrice.getText().toString());
BasicNameValuePair bnvp3 = new BasicNameValuePair("des",EtDes.getText().toString());
BasicNameValuePair bnvp4 = new BasicNameValuePair("dic",imagepath);
BasicNameValuePair bnvp5 = new BasicNameValuePair("pic",imageName);
BasicNameValuePair bnvp6 = new BasicNameValuePair("bcount","0");
String response = UploadByServlet.post(url,bnvp0,bnvp1,bnvp2,bnvp3,bnvp4,bnvp5,bnvp6);
Message msg = new Message();
msg.obj = response;
msg.what = 1;
handler.sendMessage(msg);
}
}).start();
發(fā)送數(shù)據(jù)給客戶端:
public List
List
String response = getByServlet(url); //獲取list
try{
JSONArray ja = new JSONArray(response);
for(int i = 0;i < ja.length(); i++) {
JSONObject jo = ja.getJSONObject(i);
Fosterage fosterage = new Fosterage();
fosterage.setId(jo.getInt("id"));
fosterage.setTitle(jo.getString("title"));
fosterage.setDes(jo.getString("des"));
fosterage.setPrice(jo.getDouble("price"));
fosterage.setDic(jo.getString("dic"));
fosterage.setPic(jo.getString("pic"));
fosterage.setAddress(jo.getString("address"));
fosterage.setDay(jo.getString("day"));
fosterage.setDate(jo.getString("date"));
fosterage.setUid(jo.getString("uid"));
mylist.add(fosterage);
}
}catch(Exception e){
e.printStackTrace();
}
return mylist;
}
4.2 后臺服務器端實現(xiàn)
客戶端應用程序主要通過WiFi或3G、4G網(wǎng)絡連接方式連接到Web服務器端。客戶端通過http請求將相關參數(shù)傳輸?shù)椒掌鞫耍〝?shù)據(jù)采用AES雙向加密傳輸),服務器端接收數(shù)據(jù)后進行業(yè)務邏輯處理,對數(shù)據(jù)庫的數(shù)據(jù)根據(jù)相應的操作進行增刪改查,并將查詢結果以JSON數(shù)據(jù)格式返回給客戶端。服務器端則采用了Servlet提供后臺服務和管理。其中,Servlet用于接收服務器請求,并將處理后的響應內(nèi)容傳給服務器,由服務器將響應內(nèi)容返回給客戶端。服務器端是部署在騰訊云上,數(shù)據(jù)采用MySQL數(shù)據(jù)庫存儲。
Servlet是Java Servlet的簡稱,稱為服務連接器,用Java語言編寫的服務器端程序,主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內(nèi)容。在本系統(tǒng)中,服務器端應用程序使用Servlet的do Post方法返回JSON數(shù)據(jù)給客戶端。代碼如下:
protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
String state1 = "";
request.setCharacterEncoding("utf-8");
String uid = request.getParameter("uid");
String name = request.getParameter("name");
String price1 = request.getParameter("price");
String des = request.getParameter("require");
String day = request.getParameter("day");
String date = request.getParameter("date");
String address = request.getParameter("address");
String dir = UploadServlet.getPath();
String pic = UploadServlet.getName();
double price = Double.parseDouble(price1);
DBUtil dbutil = new DBUtil();
state = dbutil.setFosterageState(uid, name, price,des, pic, dir, day,date);
state1 = String.valueOf(state);
OutputStream os = response.getOutputStream();
os.write(state1.toString().getBytes());