基于android平臺的移動電子商務客戶端設計與實現_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  本科生畢業(yè)論文</b></p><p>  題 目: 基于Android平臺的移動電子 </p><p>  商務客戶端設計與實現 </p><p>  系 別: </p><p>  專 業(yè): </p>

2、;<p>  學 號: </p><p>  姓 名: </p><p>  指導教師: </p><p>  完成時間: </p><p><b>  摘要</

3、b></p><p>  隨著移動電子商務的快速發(fā)展,傳統(tǒng)互聯網企業(yè)的移動化是現在和未來的一種必然趨勢。該論文講述針對基于Android平臺的移動電子商務平臺的移動電子商務客戶端設計與實現。</p><p>  設計實現了一個電子商務網站的智能手機應用。</p><p>  該論文主要從Android端APP的分析,設計和開發(fā)的全部過程。結合數據流圖,ER圖,

4、程序流程圖等對系統(tǒng)的設計過程進行詳盡的描述。本文共分成緒論、需求分析、程序分析、詳細設計、代碼的編碼等著幾個部分。該系統(tǒng)采用的是C/S的開發(fā)模式,開發(fā)語言是JAVA語言,主要使用的開發(fā)工具是Eclipse 4.2以及Google的Android開發(fā)插件ADT22.0。</p><p>  關鍵字:android,java,智能,電子商務,移動互聯網,移動購物,C/S開發(fā)模式</p><p>

5、;<b>  ABSTRACT</b></p><p>  With the rapid development of mobile e-commerce, mobile and traditional Internet business now and in the future an inevitable trend. The paper describes the platform f

6、or android based mobile e-commerce platform for mobile e-commerce clients design and implementation.</p><p>  The thesis of APP from the Android side analysis, design and development of the whole process. Co

7、mbines data flow diagram, ER diagram, process flow chart of the system design process detailed description. This paper is divided into an introduction, needs analysis, program analysis, detailed design, code, coding wait

8、ed several parts. The system uses the C / S development model, development of language is JAVA language, the main use of development tools is Eclipse 4.2 and Google's Android developm</p><p>  Key Words:

9、 android, java, intelligence, e-commerce, mobile Internet, mobile shopping, C / S development model</p><p><b>  目錄</b></p><p><b>  摘要2</b></p><p>  ABSTRAC

10、T3</p><p><b>  目錄4</b></p><p><b>  1緒論6</b></p><p>  1.1課題背景6</p><p>  1.2課題的意義6</p><p>  1.3開發(fā)工具、開發(fā)語言的選用及介紹7</p>

11、<p>  1.3.1開發(fā)工具7</p><p>  1.3.2JAVA語言7</p><p>  2Android平臺簡介8</p><p>  2.1系統(tǒng)簡介8</p><p>  2.2系統(tǒng)層次架構8</p><p>  2.2.1應用程序層8</p><p&

12、gt;  2.2.2應用程序框架層9</p><p>  2.2.3Android運行時庫與其他庫9</p><p>  2.2.4Linux內核層10</p><p><b>  3系統(tǒng)分析11</b></p><p>  3.1可行性分析11</p><p>  3.2需

13、求分析11</p><p>  4系統(tǒng)總體設計12</p><p>  4.1框架設計12</p><p>  4.2首頁設計13</p><p>  4.3分類設計14</p><p>  4.4購物車設計14</p><p>  4.5會員中心設計15</p&

14、gt;<p>  4.6更多設計16</p><p>  4.7系統(tǒng)模塊化設計17</p><p><b>  5詳細設計19</b></p><p>  5.1首頁設計19</p><p>  5.1.1首頁默認頁面設計19</p><p>  5.1.2首頁

15、右劃頁面設計20</p><p>  5.2分類設計21</p><p>  5.3購物車設計24</p><p>  5.3.1有商品情況的設計24</p><p>  5.3.2無商品情況的設計28</p><p>  5.4會員中心設計29</p><p>  5.4

16、.1頭像部分設計30</p><p>  5.4.2交易管理30</p><p>  5.4.3我的特權30</p><p>  5.4.4賬號管理31</p><p>  5.5“更多”設計31</p><p>  5.6搜索設計33</p><p>  5.7菜單鍵

17、設計36</p><p><b>  結論40</b></p><p><b>  參考文獻41</b></p><p><b>  致謝42</b></p><p><b>  緒論</b></p><p><b&g

18、t;  課題背景</b></p><p>  隨著寬帶無線接入技術和移動終端技術的飛速發(fā)展,伴隨著移動智能終端的快速普及,人們迫切希望能夠隨時隨地乃至在移動過程中都能方便地從互聯網獲取信息和服務,移動互聯網應運而生并迅猛發(fā)展。其中移動電子商務領是移動互聯網重大組成領域之一。移動電子商務就是利用手機、PDA及掌上電腦等無線終端進行的B2B、B2C或C2C的電子商務。它將因特網、移動通信技術、短距離通信技

19、術及其它信息處理技術完美的結合,使人們可以在任何時間、任何地點進行各種商貿活動,實現隨時隨地、線上線下的購物與交易、在線電子支付以及各種交易活動、商務活動、金融活動和相關的綜合服務活動等。移動電子商務的突飛猛進,帶來的是該領域的支持產業(yè)之一軟件服務的快速變革。很多傳統(tǒng)的互聯網產業(yè)主動或者被動進行布局移動互聯網。Google公司的android平臺是目前各大主流的移動操作系統(tǒng)之一。緊隨其后的是蘋果公司的IOS平臺。這兩個平臺的市場占有率達

20、到了91.1%以上。所以該論文講述針對基于android平臺的移動電子商務平臺的移動電子商務客戶端設計與實現。</p><p>  移動電子商務以及得到了快速的發(fā)展。例如當當網在2013年第一季度移動端的交易量與傳統(tǒng)PC互聯網交易量的比例是1:3。移動電子商務目前還處于強勁增長趨勢。傳統(tǒng)互聯網企業(yè)大部分已經向移動端轉移。以傳統(tǒng)的運動服裝業(yè)領軍企業(yè)之一的特步為例。移動智能設備的交易比例正在呈現不斷上漲的趨勢。移動電

21、子商務比傳統(tǒng)企業(yè)相比,在成本優(yōu)勢上非常明顯。所以本課題選用的設計和實現高性能的移動電子商務APP為研究課題。</p><p><b>  課題的意義</b></p><p>  設計高效的移動智能端APP能夠提升用戶使用移動端的購物體驗。都死實現相同功能的APP,良好的界面,流暢的操作能夠給消費者良好的購物體驗,同時也是提升企業(yè)品牌的重要手段之一。</p>

22、<p>  一個APP要具備的功能不僅僅是實現了它的功能,如果沒有一個良好的用戶接口,將對該APP的使用率大打折扣。用戶體驗主要體現在兩個方面,一是用戶感受到的軟件的性能,比如操作的反應速度,另一方面是軟件的界面,良好的界面能夠感知良好的。</p><p>  以當當網為例,當當網在2013年第一季度中移動端的交易量占到總交易量的三分之一,并且處于不斷增長的勢頭。雖然目前還沒有到完全取代的地步,傳統(tǒng)

23、企業(yè)的向移動化轉型是必然的趨勢。</p><p>  開發(fā)工具、開發(fā)語言的選用及介紹</p><p><b>  開發(fā)工具</b></p><p>  設計和實現該系統(tǒng)主要要用到的工具是Balsamiq Mockups、Eclipse和android系統(tǒng)手機或者是想要的模擬器。其中BM主要的用途是用作原型圖的設計,當需求基本確定的時候,根據相應

24、的需求繪制出原型圖。Eclipse主要功能是編寫代碼并且調試程序。Android手機或者模擬器主要的作用是調試程序,顯示出程序的運行效果。</p><p><b>  JAVA語言</b></p><p>  Java 編程語言是個簡單、面向對象、分布式、解釋性、健壯、安全與系統(tǒng)無關、可移植、高性能、多線程和動態(tài)的語言。</p><p>  J

25、ava編程語言的風格十分接近C、C++語言。Java是一個純粹的面向對象的程序設計語言,它繼承了 C++語言面向對象技術的核心。Java舍棄了C語言中容易引起錯誤的指針(以引用取代)、運算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對象所占據的內存空間,使得程序員不用再為內存管理而擔憂。在 Java 1.5 版本中,Java 又引入了泛型編程(Generic

26、Programming)、類型安全的枚舉、不定長參數和自動裝/拆箱等語言特性。</p><p>  Java不同于一般的編譯執(zhí)行計算機語言和解釋執(zhí)行計算機語言。它首先將源代碼編譯成二進制字節(jié)碼(bytecode),然后依賴各種不同平臺上的虛擬機來解釋執(zhí)行字節(jié)碼。從而實現了“一次編譯、到處執(zhí)行”的跨平臺特性。不過,每次的執(zhí)行編譯后的字節(jié)碼需要消耗一定的時間,這同時也在一定程度上降低了 Java 程序的運行效率。&l

27、t;/p><p>  Android平臺簡介</p><p><b>  系統(tǒng)簡介</b></p><p>  Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初

28、由Andy Rubin開發(fā),主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機聯盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權方式,發(fā)布了Android的源代碼。第一部Android智能手機發(fā)布于2008年10月。Android逐漸擴展到平板電腦及其他領域上,如電視、數碼相機、游戲機等。2011年第一季度,Androi

29、d在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2012年11月數據顯示,Android占據全球智能手機操作系統(tǒng)市場76%的份額,中國市場占有率為90%。</p><p><b>  系統(tǒng)層次架構</b></p><p>  Android系統(tǒng)包括了移動電話所需的全部軟件,由操作系統(tǒng)、中間件、UI(UserInterface)及應用程序組成。開發(fā)人員使用Java語

30、言,開發(fā)運行于Dalvik虛擬機上的應用程序。其運行效率比一般嵌入式“l(fā)inux操作系統(tǒng)上的J2ME程序高。Android系統(tǒng)架構自底向上由以下4個層次組成:基于Linux的內核模塊、運行時庫與其他庫、應用程序框架、應用程序。</p><p><b>  應用程序層</b></p><p>  Android會同一系列核心應用程序包一起發(fā)布,該應用程序包包括客戶端,S

31、MS短消息程序,日歷,地圖,瀏覽器,聯系人管理程序等。所有的應用程序都是使用JAVA語言編寫的。</p><p><b>  應用程序框架層</b></p><p>  開發(fā)人員也可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發(fā)布它的功能塊并且任何其它的應用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性

32、)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。</p><p>  隱藏在每個應用后面的是一系列的服務和系統(tǒng), 其中包括;</p><p>  豐富而又可擴展的視圖(Views),可以用來構建應用程序, 它包括列表(Lists),網格(Grids),文本框(Text boxes),按鈕(Buttons), 甚至可嵌入的web瀏覽器。</p><p> 

33、 內容提供器(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯系人數據庫), 或者共享它們自己的數據</p><p>  資源管理器(Resource Manager)提供 非代碼資源的訪問,如本地字符串,圖形,和布局文件(Layout files )。</p><p>  通知管理器 (Notification Manager) 使得應用程序可以在狀態(tài)欄

34、中顯示自定義的提示信息。</p><p>  活動管理器(Activity Manager) 用來管理應用程序生命周期并提供常用的導航回退功能。</p><p>  Android運行時庫與其他庫</p><p>  Android 包含一些C/C++庫,這些庫能被Android系統(tǒng)中不同的組件使用。它們通過 Android 應用程序框架為開發(fā)者提供服務。以下是一些

35、核心庫:</p><p>  系統(tǒng) C 庫:一個從BSD繼承來的標準C系統(tǒng)函數庫 Libc , 它是專門為基于Embedded linux的設備定制的。</p><p>  媒體庫:基于PacketVideo OpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態(tài)圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。<

36、/p><p>  Surface Manager:對顯示子系統(tǒng)的管理,并且為多個應用程序提 供了2D和3D圖層的無縫融合。</p><p>  LibWebCore:一個最新的web瀏覽器引擎用,支持Android瀏覽器和一個可嵌入的web視圖。</p><p><b>  Linux內核層</b></p><p>  An

37、droid基于Linux操作系統(tǒng),由硬件、系統(tǒng)內核、系統(tǒng)服務和應用程序等四大部分組成。其中,內核(Kerne1)是最核心的部分。其主要作用在于與計算機硬件進行交互,實現對硬件的編程控制和接口操作。調度訪問硬件資源,同時向應用程序提供一個高級的執(zhí)行環(huán)境和對硬件的虛擬接口。主要功能包括:中斷服務程序、進程調度程序、進程地址空間的內存管理、進程間通信。內核與普通應用程序不同,其擁有所有硬件設備的訪問權限以及啟動時即劃分的受保護的內存空間。&l

38、t;/p><p>  和標準的Linux內核一樣,Android內核主要實現內存管理、進程調度、進程間通信等功能。Android內核是在標準Linux內核的基礎上修改而成。為了適應嵌入式硬件環(huán)境和移動應用程序的開發(fā)。Android對標準Linux內核進行了一定的修改。為了對比分析Android內核,在Ubuntu操作系統(tǒng)上搭建了Android內核的編譯開發(fā)平臺,通過repo,下載最新的Android內核代碼版本cup

39、cake從獲得的內核源碼樹的根目錄結構看,Android內核源碼與標準Linux內核并無不同。 </p><p><b>  系統(tǒng)分析</b></p><p>  系統(tǒng)分析包含兩個內容,一是可行性分析,另一個是需求分析。開發(fā)APP之前必須進行充分的分析。只有通過充分分析后再做設計才能是后續(xù)工作更加順利??尚行苑治鍪菫榱伺宄到y(tǒng)開發(fā)的項目是不是可以實現和值得進行研究的

40、過程,所以,進行可執(zhí)行性的分析是非常必要的。需求分析是搞清楚APP要做什么,只有知道要做什么才能使開發(fā)出來的APP符合用戶的需求。</p><p><b>  可行性分析</b></p><p>  經濟可行性:該APP的設計開發(fā)需要一定的時間成本,由于完成該APP主要是利用了一些閑余時間進行開發(fā)的,時間成本可以忽視不記。由于APP的美工部分是認識的朋友幫忙設計的,所

41、以這點成本也可以相對忽略不計,所以自己個人投入的各種成本可以忽略不計,這點是可行的。由于開發(fā)該APP所使用的開發(fā)工具是自己的Android智能手機和一些開源的開發(fā)工具Eclipse和Google的ADT開發(fā)插件。所以開發(fā)工具上沒有相應的費用投入??傮w來說該APP的開發(fā)在人力、物力和財力的投入上是可行的,所以經濟方面是可行的。</p><p>  技術可行性:開發(fā)該APP主要要用到的語言是JAVA,由于本人在大學期

42、間較早自學了JAVA編程語言,能夠勝任一些大部分的功能開發(fā)。如果遇到相對較難的技術難點??梢酝ㄟ^網絡或者專業(yè)書的方式來提供解決方案。目前來說android技術已經是相對成熟的開發(fā)技術。所以在技術方面是可行的。</p><p>  法律可行性:由于android系統(tǒng)開源系統(tǒng),只要符合google的相關的服務條款任何人都可以免費獲取。該APP的開發(fā)已經經過各方權利所有人的授權,在法律上不構成任何的侵權,在法律上是可行

43、的。</p><p><b>  需求分析</b></p><p>  根據客戶需求,該APP主要是實現的功能是將客戶網站的相應功能進行技術上的轉移,將傳統(tǒng)網頁上的功能轉移到相應的移動客戶端。所有的相關需求通過需求文檔的方式進行確定。</p><p><b>  系統(tǒng)總體設計</b></p><p>

44、;  由于該APP總體上功能繁多,如何設計界面優(yōu)美且高效的APP是一種設計上的挑戰(zhàn)。設計主要考慮一下幾個方面:</p><p>  用戶體驗。良好的用戶體驗主要表現在兩個方面,一是總體的UI風格,另一個方面是用戶操作時的感受到的流暢度、完整度和方便性。UI風格應該與WEB端的界面風格保持一致,這樣可以減弱消費者的警惕性。風格一致還可以是移動端和WEB端更加具有一致性和整體性。</p><p&g

45、t;  APP運行效率。在最短的時間內完成用戶所要做的操作,盡量減少APP反應的滯后。要實現這點,可以通過兩個方面來提升:一是減少網絡數據傳輸的延遲性。另一個是在完成相應功能的前提下減少APP所要做的操作,避免一些不必要的操作。</p><p>  代碼的效率。良好的編程習慣是編寫高效代碼的基本功。代碼應該少而優(yōu)。代碼必須具備一定的健壯性、安全性和高效性。</p><p><b>

46、;  框架設計</b></p><p>  該APP的框架主要依靠功能的劃分進行設計的。首先分成五大部分,分別是:首頁、分類、購物車、會員中心、更多。</p><p>  首頁主要組成部分有:首頁頭部廣告區(qū)、功效專區(qū)、固定功能菜單、四大專區(qū)、買家說說、搜索。首頁右劃區(qū)的組成界面是:美妝時尚。</p><p>  分類部分主要有兩個部分組成。一個是有二級子

47、目錄的選項,一種是指向單個功效商品的選項。</p><p>  購物車的主要組成部分是:顯示購物車數量的詳情,其中包括顯示商品的數量、購物車中總的費用以及列出所購商品的基本詳情。當購物車中的數量為空的時候,顯示購物車為空,還顯示最近的瀏覽記錄。</p><p>  會員中心的主要組成部分是:個人基本信息、交易管理、我的特權、賬號管理和結算。其中交易管理的只能夠有:我的訂單、物流管理、正品查

48、詢、我的優(yōu)惠券、我的收藏夾。我的特權部分包括:VIP特賣、生日優(yōu)惠券。賬號管理包括:個人資料的修改、修改密碼、收貨地址的管理、微博同步設置。</p><p>  更多部分組成部分是:客服熱線、檢查更新、清除緩存、使用幫助、關于。</p><p>  從圖 4-1 可以比較明了的看出各個功能結構</p><p>  圖4-1 功能模塊圖</p><

49、p><b>  首頁設計</b></p><p>  首頁分成兩個部分。一個是默認的首頁部分,另一個部分是首頁右劃部分。</p><p>  默認的首頁部分主要分為廣告區(qū)、功效專區(qū)、常用菜單區(qū)、四大專區(qū)和買家說說。</p><p>  首頁右劃部分只有一個功能,就是美妝說說。</p><p>  廣告區(qū):可以根據后

50、臺的提供的字段type改變點擊后跳轉的去處。如果選項包含的type字段的值是keyword則跳轉到具體的商品詳情界面。如果type字段的值是pop_id則跳轉到產品列表。</p><p>  功效專區(qū):該區(qū)主要處理的事情是根據產品的功效設置相應的專區(qū),如面膜專區(qū)、彩妝專區(qū)、護膚專區(qū)。點擊該區(qū)域將根據選項中包含的brand_id進行遠程數據請求,解析返回的數據后進入產品列表。</p><p>

51、;  常用菜單區(qū):該區(qū)有四個常用的功能按鈕。分別是物流查詢、防偽驗證、收藏夾、簽到中心。</p><p>  四大專區(qū):分別是VIP俱樂部、限時特賣、爆款推薦、超值套裝。</p><p>  買家說說只顯示五條評價最多的記錄。</p><p>  首頁右劃部分只有美妝時尚一個列表。點擊列表選項進入到商品詳情頁面。</p><p>  圖4-2

52、 首頁功能模塊圖</p><p><b>  分類設計</b></p><p>  對于一個電子商務類的APP,其分類功能是很重要的一項。它能將消費者的購買欲轉化成實實在在的訂單,所以分類功能在導航菜單中占有一席之地。一個分類設計的好壞也是直接影響到用戶的體驗。一個良好的分類設計能夠簡單快速準確的定位消費者的需求。</p><p>  該APP

53、的分類設計分成兩個部分。一個是有二級子目錄的選項,一種是指向單個功效商品的選項。點擊一級菜單展開二級菜單。目前設計的菜單的最深級別就是二級菜單。到了二級菜單再點擊就進入了商品列表或者商品詳情。</p><p><b>  購物車設計</b></p><p>  該APP的購物車采用離線方式。這樣設計的原因是考慮到流量的限制問題。由于該APP要顯示較多的流量。所以在一些

54、不是很重要的地方盡量減少與遠程服務器的交互。</p><p>  購物車有兩種情況。一種情況是購物車中有商品,另一種是購物車為空。</p><p><b>  這兩種顯示的。</b></p><p>  購物車中有商品時。要顯示商品的數量、總費用以及具體的商品列表。商品列表顯示商品的圖片、名稱、價格、數量、原價以及對數量增加的按鈕和刪除該商品的

55、按鈕。</p><p>  購物車中無商品時。提示目前的購物車是為空,引導用戶去首頁逛逛。同時增加了瀏覽記錄,方便消費者查找瀏覽過得商品。</p><p><b>  會員中心設計</b></p><p>  會員中心是導航菜單欄中最復雜的一個。主要功能繁多。會員中心主要分成四個部分。分別是個人信息、交易管理、我的特權和賬號管理。</p&

56、gt;<p>  個人信息。個人信息主要顯示一些基本的會員信息。</p><p>  交易管理。交易管理分為我的訂單、物流管理、正品驗證、我的優(yōu)惠券、我的收藏夾。我的訂單主要處理三個功能,正在進行的訂單、已經完成訂單、已經取消三大功能。物流管理處理的根據訂單號查詢物流和根據手機號碼查詢物流。正品驗證處理的是查詢商品是否為正品。我的優(yōu)惠券主要負責管理會員的各種訂單。</p><p&

57、gt;  我的特權。我的特權有兩項,一項是VIP特賣,另一項是生日特權。VIP特賣是正對不同等級的會員享受不同的購物優(yōu)惠。生日特權是在會員生日的當天有相應的購物優(yōu)惠。修改生日是一次性的。如果會員還沒有填寫生日,要提示信息不夠完善,并且跳轉到修改個人信息的界面。在修改界面中修改會員的生日信息。如果原先已有生日,則判斷今天是否是會員的生日。如果是可以領取相應的生日優(yōu)惠券。</p><p>  賬號管理。賬號管理一般來

58、說使用的頻率相對較低,所以放在最下面。雖然使用少,但是這些功能還是很重要的。賬號管理分為個人資料、修改密碼、收貨地址管理和微博同步設置。個人資料的主要作用是查看和修改個人信息資料。修改密碼指的是修改登錄密碼。收貨地址管理主要要實現的功能是添加、修改和刪除收貨地址。微博同步設置指調用新浪微博和騰訊微博的接口,可以用于登錄APP和分享購物喜悅。</p><p>  圖4-5 會員中心功能結構圖</p>

59、<p><b>  更多設計</b></p><p>  “更多”選項主要是一些輔助性功能的設置?!案唷边x項包含的主要功能有:客服熱線、檢測更新、清除緩存、使用幫助、關于。</p><p>  客服服務。該功能主要實現的是方便消費者呼叫客服熱線。</p><p>  檢測更新。該APP設計的程序更新需要手動點擊檢測更新。所以該功能的

60、是為了更新APP的版本,進行升級優(yōu)化。Google的最新政策是不推薦使用APP自帶的升級功能,主要是處于安全性考慮。</p><p>  清除緩存。由于android手機的版本千差萬別。一方面是手機的硬件配置也不盡相同。由于電子商務類的APP要進行較多的圖片加載,所以造成大量的圖片緩存。清除這些大量的數據緩存有利于減輕手機的運行負擔,釋放出資源供其他APP使用。另一方面是因為處于安全隱私的保護。將保持在手機上的個

61、人信息和APP設置信息進行清除也是很有必要的。</p><p>  使用幫助。該功能主要是為了給一些新用戶進行使用。用戶可以通過這種自助的服務幫助解決一些疑問。</p><p>  關于。該模塊是為介紹一些企業(yè)信息和APP信息。</p><p>  圖4-6 更多模塊的功能結構圖</p><p><b>  系統(tǒng)模塊化設計</

62、b></p><p>  模塊化是指解決一個復雜問題時自上而下逐層將系統(tǒng)劃分成若干塊的過程。每一個模塊完成一個特定的功能,所有的模塊按某種方法組織起來,成為一個整體,完成整個系統(tǒng)所要求的功能。系統(tǒng)模塊劃分不能使任意,要遵循高內聚低耦合的設計思路,應盡量保持其獨立性。是為了降低系統(tǒng)和復雜性,提高可讀性、可維護性。也就是說,每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯系最少且接口簡單,盡量做到提高模

63、塊的獨立,為設計高質量的系統(tǒng)結構奠定基礎。</p><p>  系統(tǒng)模塊化設計的任務是劃分子系統(tǒng),然后確定子系統(tǒng)的模塊結構,并畫出模塊結構圖。在這個過程中必須考慮以下幾個問題:</p><p>  如何將一個系統(tǒng)劃分成多個子系統(tǒng)。</p><p>  每個子系統(tǒng)如何劃分成多個模塊。</p><p>  如何確定子系統(tǒng)之間、模塊之間傳遞的數據及

64、其調用關系。</p><p>  如何評價并改進模塊結構的質量。</p><p>  該方法適合于軟件系統(tǒng)的總體設計和詳細設計,特別是將一個復雜的系統(tǒng)轉換成模塊化結構系統(tǒng),該方法具有它的優(yōu)勢。在使用過程中可以將結構化設計方法與結構化分析(SA)方法及編程階段的結構化程序設計方法(SP)前后銜接起來。</p><p>  系統(tǒng)功能模塊的優(yōu)點:</p>&

65、lt;p>  系統(tǒng)功能模塊劃分清晰,區(qū)別明顯,易于操作。</p><p>  操作界面友好,簡單易懂適合不同層次的操作人員。</p><p>  子系統(tǒng)之間的數據交換操作簡單、快捷。</p><p>  根據該系統(tǒng)的需求分析,設計可實現的模塊組織結構。該APP的項目結構如圖4-7。</p><p>  圖4-7 項目的結構圖</p

66、><p><b>  詳細設計</b></p><p><b>  首頁設計</b></p><p><b>  首頁默認頁面設計</b></p><p>  由于該模塊的子模塊較多,所以技術難點主要在與如果協(xié)調好各個子模塊之間的關系。該模塊也是該APP的難點之一。該模塊的核心代碼

67、是:</p><p>  HomeActivity.java</p><p>  private void getData() {</p><p>  // TODO Auto-generated method stub</p><p>  progressDialog.show();</p><p><b>

68、;  //加載四大專區(qū)</b></p><p>  fourAreaThread = new NetThread(ServerAPI.API_FOUR_AREA, null,</p><p>  FourAreaBean.class, handler, Constans.HOME_FOUR);</p><p>  fourAreaThread.start

69、();</p><p><b>  }</b></p><p>  private void getFashionData() {</p><p>  if (currentIndex == 0) {</p><p>  progressDialog.show();</p><p><b&g

70、t;  }</b></p><p>  fashionThread = null;</p><p>  fashUrl = ServerAPI.API_FASHION+ "&pageCount=" + pageCount + "&pageNo="</p><p><b>  + pageN

71、o;</b></p><p>  fashionThread = new NetThread(fashUrl, null, FashionBean.class,</p><p>  handler, Constans.HOME_FASHION);</p><p>  fashionThread.start();</p><p>&

72、lt;b>  }</b></p><p>  該模塊實際運行效果如圖5-1-1。</p><p>  圖5-1-1 默認首頁的實際運行效果圖</p><p><b>  首頁右劃頁面設計</b></p><p>  首頁右劃部分和默認頁面在同一個模塊下。該模塊功能較單一,如技術難點。該模塊的實際運行效

73、果如圖5-1-2。</p><p>  圖5-1-2 首頁右劃實際運行效果圖</p><p><b>  分類設計</b></p><p>  分類模塊相對設計單一,這模塊的難點是GridView視圖的顯示調試部分。實際運行效果如圖5-2.</p><p><b>  核心代碼如下:</b><

74、/p><p>  CategoryActivity.java</p><p>  private void getData() {</p><p>  // TODO Auto-generated method stub</p><p>  progressDialog.show();</p><p>  netThrea

75、d = new NetThread(ServerAPI.API_CATEGORY, null,</p><p>  CategoryBean.class, handler, Constans.HANDLER_CATEGORY_RESULT);</p><p>  netThread.start();</p><p><b>  }</b><

76、;/p><p>  private Handler handler = new Handler() {</p><p>  public void handleMessage(Message msg) {</p><p>  super.handleMessage(msg);</p><p>  switch (msg.what) {</p

77、><p>  case Constans.HANDLER_CATEGORY_RESULT:</p><p>  CategoryBean bean = (CategoryBean) msg.obj;</p><p>  if (bean == null) {</p><p>  if(!BaseApp.checkNet(getApplicatio

78、nContext())){</p><p>  BaseApp.showToast(R.string.network_is_error);</p><p><b>  }else{</b></p><p>  BaseApp.showToast(R.string.sorry);</p><p><b>  }

79、</b></p><p><b>  } else {</b></p><p>  if (bean.status != 1) {</p><p>  BaseApp.showToast(bean.msg);</p><p><b>  } else {</b></p>&

80、lt;p>  categoryBean = bean;</p><p>  categoryGroupAdapter = new CategoryGroupAdapter(</p><p>  CategoryActivity.this, categoryBean,</p><p>  CategoryActivity.this);</p>&l

81、t;p>  expandableListView.setAdapter(categoryGroupAdapter);</p><p>  imagesThread = new ImagesThread(handler,</p><p>  categoryBean.getImages(),</p><p>  Constans.HANDLER_CATEGORY

82、_IMG);</p><p>  imagesThread.start();</p><p><b>  }</b></p><p><b>  }</b></p><p>  progressDialog.dismiss();</p><p><b>  brea

83、k;</b></p><p>  case Constans.HANDLER_CATEGORY_IMG:</p><p>  if (categoryGroupAdapter != null) {</p><p>  categoryGroupAdapter.notifyDataSetChanged();</p><p><

84、b>  }</b></p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  break;</b></p><p><b>  }</b></p>&

85、lt;p><b>  }</b></p><p><b>  };</b></p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public boolean onGroupClick(E

86、xpandableListView parent, View v,</p><p>  int groupPosition, long id) {</p><p>  // TODO Auto-generated method stub</p><p>  CategoryData parentCategoryData;</p><p>  

87、parentCategoryData=categoryBean.list.get(groupPosition);</p><p>  boolean bool = true;</p><p>  for (int i = 0; i < categoryBean.list.size(); i++) {</p><p>  CategoryData categor

88、yData = categoryBean.list.get(i);</p><p>  if (categoryData.parentId.equals(parentCategoryData.catId)){</p><p>  bool = false;</p><p><b>  break;</b></p><p>

89、;<b>  }</b></p><p><b>  }</b></p><p><b>  if(bool){</b></p><p>  Intent intent=new Intent(this,ProductActivity.class);</p><p>  inte

90、nt.putExtra("keyword","");</p><p>  intent.putExtra("title",parentCategoryData.catName);</p><p>  intent.putExtra("value",parentCategoryData.catId);</p

91、><p>  intent.putExtra("type",parentCategoryData.type);</p><p>  startActivity(intent);</p><p>  return true;</p><p><b>  }</b></p><p

92、>  if (expandFlag == -1) {</p><p>  expandableListView.expandGroup(groupPosition);</p><p>  expandableListView.setSelectedGroup(groupPosition);</p><p>  expandFlag = groupPositio

93、n;</p><p>  } else if (expandFlag == groupPosition) {</p><p>  expandableListView.collapseGroup(expandFlag);</p><p>  expandFlag = -1;</p><p><b>  } else {</b&

94、gt;</p><p>  expandableListView.collapseGroup(expandFlag);</p><p>  expandableListView.expandGroup(groupPosition);</p><p>  expandableListView.setSelectedGroup(groupPosition);</p

95、><p>  expandFlag = groupPosition;</p><p><b>  }</b></p><p>  return true;</p><p><b>  }</b></p><p><b>  @Override</b><

96、/p><p>  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) </p><p>  // TODO Auto-generated method stub</p><p>  switch (arg0.getId()) {</p><

97、;p>  // 這是二級監(jiān)聽,點擊二級的時候才會用到</p><p>  case R.id.category_child_grid:</p><p>  CategoryData categoryData = (CategoryData) categoryGroupAdapter.categoryChildAdapter</p><p>  .getItem

98、(arg2);</p><p>  Intent intent = new Intent(CategoryActivity.this,</p><p>  ProductActivity.class);</p><p>  intent.putExtra("keyword","");</p><p> 

99、 intent.putExtra("title", categoryData.catName);</p><p>  intent.putExtra("value", categoryData.catId);</p><p>  intent.putExtra("type", categoryData.type);</p&g

100、t;<p>  startActivity(intent);</p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  break;</b></p><p><b>  }<

101、/b></p><p><b>  }</b></p><p>  圖5-2 分類模塊的實際運行效果圖</p><p><b>  購物車設計</b></p><p><b>  有商品情況的設計</b></p><p>  購物車兩個邏輯模塊實際

102、上只有一個模塊。該模塊的主要難點在于如何較好的區(qū)別有商品和無商品的狀態(tài),并且要實時的根據數量或者其他來調整顯示的數據,從而達到數據與顯示的一致性。</p><p>  有商品時的實際運行效果如圖5-3-1。</p><p><b>  核心代碼如下:</b></p><p>  ShoppingCartActivity.java</p&g

103、t;<p>  // 當購物車中有商品時獲得相應數據</p><p>  private void getCartData() {</p><p>  // TODO Auto-generated method stub</p><p>  viewEmpty.setVisibility(View.INVISIBLE);</p><

104、p>  viewNoEmpty.setVisibility(View.VISIBLE);</p><p>  cartTotalCountsText.setText(shoppingGoodBean.getTotalCounts() + "");</p><p>  cartTotalPriceText.setText(shoppingGoodBean.getTo

105、talSalePrice() + "");</p><p>  cartListAdatper = new CartListAdatper(this, shoppingGoodBean, handler,</p><p><b>  this);</b></p><p>  cartList.setAdapter(cartL

106、istAdatper);</p><p><b>  }</b></p><p>  // 當購物車中沒有相應的商品時獲得相應的數據</p><p>  private void getEmptyData() {</p><p>  viewEmpty.setVisibility(View.VISIBLE);</p

107、><p>  viewNoEmpty.setVisibility(View.INVISIBLE);</p><p>  historyAdapter = new HistoryAdapter(this);</p><p>  historyGallery.setAdapter(historyAdapter);</p><p>  historyG

108、allery.setOnItemClickListener(this);</p><p>  historyGallery.setSelection((historyGallery.getCount() > 1) ? 1 : 0);</p><p>  historyGallery.setAdapter(historyAdapter);</p><p>  h

109、istoryGallery.setSelection(2);</p><p>  imagesThread = null;</p><p>  imagesThread = new ImagesThread(handler, HistoryBean.getInstance()</p><p>  .getImages(), Constans.HANDLER_HIST

110、ORY_IMG);</p><p>  imagesThread.start();</p><p><b>  }</b></p><p>  private void goToPayMain(){</p><p><b>  try {</b></p><p>  JSO

111、NArray prodArrayObject = new JSONArray();</p><p>  for (int i = 0; i < shoppingGoodBean.list.size(); i++) {</p><p>  JSONObject prodObject = new JSONObject();</p><p>  prodObj

112、ect.put("prodId",</p><p>  shoppingGoodBean.list.get(i).goodsBean.productId);</p><p>  prodObject.put("count",shoppingGoodBean.list.get(i).count);</p><p>  prodO

113、bject.put("price", shoppingGoodBean.list.get(i).goodsBean.price);</p><p>  prodObject.put("type",</p><p>  shoppingGoodBean.list.get(i).goodsBean.type);</p><p> 

114、 prodArrayObject.put(prodObject);</p><p><b>  }</b></p><p>  proListStr = prodArrayObject.toString();</p><p>  } catch (JSONException e) {</p><p>  e.printS

115、tackTrace();</p><p><b>  }</b></p><p>  proListStr = URLEncoder.encode(proListStr);</p><p>  String checkUrl = ServerAPI.API_CARTCHECK + "&sessionId=" + Ba

116、seApp.sessionId</p><p>  + "&prod=" + proListStr;</p><p>  checkThread = new NetThread(checkUrl, null, CartCheckBean.class,</p><p>  handler, Constans.HANDLER_GOODS_ST

117、OCK);</p><p>  checkThread.start();</p><p><b>  }</b></p><p>  private Handler handler = new Handler() {</p><p><b>  @Override</b></p>&l

118、t;p>  public void handleMessage(Message msg) {</p><p>  super.handleMessage(msg);</p><p>  switch (msg.what) {</p><p>  case Constans.HANDLER_IMG_NOLOAD://獲得購物車中商品列表的圖片</p>

119、<p>  if (shoppingGoodBean == null</p><p>  || shoppingGoodBean.list.size() == 0) {</p><p><b>  return;</b></p><p><b>  } else {</b></p><p&

120、gt;  String[] imgs = shoppingGoodBean.getImages();</p><p>  if (imagesThread == null) {</p><p>  imagesThread = new ImagesThread(handler, imgs,</p><p>  Constans.HANDLER_IMG_LOADED)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論