版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于安卓的超市購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要:在現(xiàn)代生活中,安卓智能手機(jī)的各類應(yīng)用所帶來(lái)的便利已經(jīng)影響我們生活的方方面面,對(duì)人們的生產(chǎn)生活、衣食住行產(chǎn)生了積極的作用。同時(shí),手機(jī)智能平臺(tái)的快速發(fā)展也給各行各業(yè)帶來(lái)了新挑戰(zhàn),對(duì)于任意行業(yè),如果不能適應(yīng)信息化的潮流、跟上時(shí)代發(fā)展的步伐,都會(huì)被殘酷的市場(chǎng)競(jìng)爭(zhēng)所淘汰。本論文課題是基于安卓的超市購(gòu)物系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),利用移動(dòng)開發(fā)技術(shù)初步實(shí)現(xiàn)了用基本的智能手機(jī)來(lái)管理超市的日常經(jīng)營(yíng)。該系統(tǒng)改善了傳統(tǒng)購(gòu)物體驗(yàn)的多種弊端,最終目的當(dāng)然就是給用戶提供一種方便的購(gòu)物體驗(yàn)。本設(shè)計(jì)是基于安卓的一款便于在智能平臺(tái)上購(gòu)物的手機(jī)APP,開發(fā)工具是AndroidStudio,編程語(yǔ)言用的是Java,開發(fā)實(shí)現(xiàn)了引導(dǎo)界面、可自由加載和轉(zhuǎn)換的菜單以及其他模塊的功能。用手機(jī)代替超市實(shí)體店從而實(shí)現(xiàn)了足不出戶的手機(jī)超市購(gòu)物,為人們節(jié)約了排隊(duì)等待付款、挑選商品的時(shí)間。本系統(tǒng)有較強(qiáng)的實(shí)用性,因?yàn)槭謾C(jī)攜帶很方便,該APP操作起來(lái)也不費(fèi)力,要實(shí)現(xiàn)的功能也相對(duì)完善,一些購(gòu)物系統(tǒng)的經(jīng)典頁(yè)面比如添加商品至購(gòu)物車中、查看已提交的訂單、秒殺很多做活動(dòng)的商品等也能正常運(yùn)行和顯示,更重要的是本軟件已在市內(nèi)的若干超市進(jìn)行成功的模擬測(cè)試,并成功進(jìn)行了小規(guī)模的實(shí)際應(yīng)用,反饋回來(lái)的信息表明其市場(chǎng)應(yīng)用前景非常廣闊。關(guān)鍵字:安卓開發(fā)Java程序設(shè)計(jì)語(yǔ)言超市購(gòu)物系統(tǒng)
DesignandimplementationofsupermarketshoppingsystembasedonAndroidAbstract:Inmodernsociety,theconveniencebroughtbythevariousapplicationsofmobilephoneshasbenefitedallaspectsofourlives,givingtheproductionandlivingofthepeopleandbasicnecessitiesoflifeapositiveeffect.Atthesametime,therapiddevelopmentofintelligentplatformalsobringsnewchallengestoallwalksoflife,foranyindustry,Ifyoucannotadapttothetrendofinformation,tokeepupwiththepaceofdevelopmentofthetimes,youwillbeburiedbythebrutalcompetitioninthemarket.ThetopicofthisthesisisthedesignandimplementationofthesupermarketshoppingsystembasedonAndroid,usingmobiledevelopmenttechnologytoachieveapreliminaryrealizationofthebasicsmartphonetomanagethedailyoperationofthesupermarket.Thesystemimprovesthetraditionalshoppingexperienceofavarietyofdrawbacks,ofcourse,it’sfinalpurposeisprovidinganovelandconvenientshoppingexperience.ThedesignisbasedonAndroid'smobilephoneAPPtofacilitateshoppingonthesmartplatform,usingAndroid5.0asadevelopmenttool,Javaasaprogramminglanguage,thedevelopmentandimplementationofthebootinterface,freetoloadandconvertmenusandothermodulesofthefunction.Usingamobilephoneinsteadofasupermarketstoresoastorealizetheonlineshoppingathome,forthepublictosavethequeuetowait,longdistanceruntime.Thesystemhasstrongpracticability,becauseitisconvenienttocarryamobilephone,thesystemiseasytooperate,toachievethefunctionisrelativelyperfect,someoftheclassicshoppingsystempages,suchasaddingmerchandisetotheshoppingcart,viewsubmittedorders,spikealotofactivitiestodothegoods,etc.canalsobenormaloperationanddisplay,andthissoftwaresystemhasbeeninthesupermarketandafast-foodchainthroughthesimulationtestundertheLANenvironment,andsuccessfullycarriedoutthepracticalapplicationofsmallscale,thefeedbackinformationindicatesthatthemarkethasaverybroadapplicationprospects.Keywords:GoogleandroidSDKJavaprogramminglanguageShoppingsystem引言現(xiàn)在的社會(huì)經(jīng)濟(jì)和網(wǎng)絡(luò)發(fā)展得愈來(lái)愈快,喜歡在手機(jī)購(gòu)物的人越來(lái)越多,傳統(tǒng)的購(gòu)物方式已經(jīng)滿足不了人們追求方便快捷的購(gòu)物心理,現(xiàn)在手機(jī)已經(jīng)是人們不可缺少的一部分,幾乎每個(gè)人都有手機(jī),它也是人們生活中必不可少的溝通工具?;谑謾C(jī)端的在線購(gòu)物系統(tǒng)能使人們隨時(shí)隨地選購(gòu)自己喜歡的商品,現(xiàn)在國(guó)內(nèi)的很多中、小型超市每天都要查看庫(kù)存信息還要及時(shí)更新訂單信息等,可是經(jīng)濟(jì)市場(chǎng)的變化不會(huì)等待,所以高效的、現(xiàn)代化的管理超市的方法就受到了各大、中、小型超市的喜愛。
各種實(shí)體店超市給我們的生活帶來(lái)了很多便利,不可避免的是這些實(shí)體店超市也有各種缺點(diǎn),如:每天都要處理入庫(kù)的大量商品導(dǎo)致其效率降低,時(shí)刻都需要有人結(jié)算付款,人工的速度當(dāng)然是有限的而且特別容易有細(xì)微的差錯(cuò),每次有活動(dòng)的商品都要重新打印價(jià)簽,其效率一定不會(huì)高。另外一方面,對(duì)于一個(gè)稍微有規(guī)模的超市來(lái)說(shuō),每天都會(huì)有商品的入庫(kù)、銷售和更新等信息需要處理,這些都要一些有經(jīng)驗(yàn)的管理人員進(jìn)行決策、分析和處理,不像計(jì)算機(jī)或者手機(jī)能實(shí)現(xiàn)實(shí)時(shí)分析,這樣,這些管理人員一直都不能對(duì)及時(shí)傳遞的資料進(jìn)行分析和研究。因此,在進(jìn)行市場(chǎng)調(diào)查之后,我選擇了超市購(gòu)物系統(tǒng)設(shè)計(jì)題目,這種用手機(jī)客戶端實(shí)現(xiàn)的購(gòu)物平臺(tái)能實(shí)時(shí)、精確的掌握超市中的各項(xiàng)工作的工作情況,從而能使超市管理者在最短的時(shí)間、最少的人力物力的情況下加速商品的周轉(zhuǎn)率,這樣做還能滿足客戶的需求并提高服務(wù)質(zhì)量,也能夠很好的處理產(chǎn)品售價(jià)的更新等銷售問題,讓超市的管理人員面對(duì)市場(chǎng)變幻莫測(cè)的情況做出最適合最正確的決策,這在一定程度上就加快了超市的經(jīng)營(yíng)效率。我設(shè)計(jì)的這個(gè)購(gòu)物系統(tǒng)實(shí)現(xiàn)的功能主要有:新用戶注冊(cè)登錄,瀏覽新添加和原來(lái)的商品,購(gòu)買想買或者需要買的商品,添加要買的商品至購(gòu)物車中,查看剛完成的和歷史的訂單等功能;管理員能夠處理更新用戶、添加刪除商品信息、處理訂單信息、等功能。超市購(gòu)物系統(tǒng)目前在各個(gè)商業(yè)領(lǐng)域都發(fā)揮了很大的作用,也得到了越來(lái)越多的大、中、小型超市的應(yīng)用。第1章緒論1.1設(shè)計(jì)的目的和意義通過對(duì)市場(chǎng)的調(diào)查和對(duì)未來(lái)前景的分析,針對(duì)目前大多數(shù)中、小型超市的實(shí)際需求,開發(fā)了這款手機(jī)購(gòu)物APP。作為一家超市工作人員,每天都要分析研究商品的入庫(kù)、銷售、更新等各種信息,設(shè)計(jì)本系統(tǒng)的最終目的是要提高超市的銷售額,給這些超市帶來(lái)更多的經(jīng)濟(jì)效益。在一定程度上也實(shí)現(xiàn)了超市實(shí)體店與互聯(lián)網(wǎng)、手機(jī)的有效結(jié)合,促進(jìn)了周邊地區(qū)的消費(fèi)和超市的收入。1.1.1設(shè)計(jì)的目的隨著時(shí)代的發(fā)展,網(wǎng)絡(luò)已經(jīng)被應(yīng)用到很多行業(yè)和領(lǐng)域?,F(xiàn)如今,信息技術(shù)和網(wǎng)絡(luò)的發(fā)展給商家們提供了一個(gè)更廣闊的商品推廣渠道。借助于支付方式的不斷完善,開發(fā)超市購(gòu)物APP應(yīng)用,不僅給商家?guī)?lái)成本低廉的宣傳、推廣、銷售等好處,還可以幫顧客節(jié)約時(shí)間,減去排隊(duì)等候付款的煩惱,感受全新的購(gòu)物體驗(yàn)。設(shè)計(jì)此手機(jī)超市購(gòu)物應(yīng)用,使超市管理員能夠很方便地查詢商品銷售情況以及對(duì)商品種類、價(jià)格進(jìn)行添加、刪除,以促進(jìn)營(yíng)業(yè)額的上升,提高工作效率,節(jié)省了成本。該軟件的設(shè)計(jì)目標(biāo)是盡量降低人力與物力資源的消耗,提高處理數(shù)據(jù)的速度,面向各超市,實(shí)現(xiàn)對(duì)商品進(jìn)行有序快速的交易。1.1.2設(shè)計(jì)的意義我這次設(shè)計(jì)的是一個(gè)基于Android的超市購(gòu)物系統(tǒng),超市管理者或者消費(fèi)者用一部普通的Android手機(jī),登錄進(jìn)入該軟件,就可以對(duì)商品進(jìn)行一些基本操作。
該購(gòu)物軟件成功地讓使用它的人不用非要在電腦端購(gòu)物,也不用抽大量的時(shí)間去超市查詢各類商品。只要擁有Android手機(jī),用戶就可以隨時(shí)隨地的購(gòu)買商品。對(duì)超市管理者而言,在網(wǎng)絡(luò)平臺(tái)上銷售商品使得庫(kù)存的壓力變小了、成本變低了,況且管理者用手機(jī)就能看到新老顧客購(gòu)物過后的反饋信息和建議,這樣方便經(jīng)營(yíng)者調(diào)整營(yíng)銷戰(zhàn)略,獲得更大的收益。手機(jī)購(gòu)物打破了傳統(tǒng)商務(wù)的障礙,對(duì)很多消費(fèi)者、各中、小型超市還有經(jīng)濟(jì)市場(chǎng)起到了很大的影響,順應(yīng)了社會(huì)的發(fā)展,使購(gòu)物更加便利而又人性化。1.2設(shè)計(jì)的方法和技術(shù)1.2.1開發(fā)環(huán)境系統(tǒng)的軟硬件平臺(tái)表1-1硬件運(yùn)行環(huán)境的配置要求:環(huán)境配置CPU建議i7內(nèi)存建議4G以上硬盤空間建議8G以上表1-2軟件運(yùn)行環(huán)境的配置要求:環(huán)境配置操作系統(tǒng)Microsoft10數(shù)據(jù)庫(kù)SQLServer開發(fā)工具AndroidStudio1.2.2開發(fā)語(yǔ)言面向?qū)ο笫钱?dāng)前相對(duì)而言比較流行的一種程序設(shè)計(jì)思想,其基本的設(shè)計(jì)思路是使用對(duì)象、類、方法等基本的軟件設(shè)計(jì)概念來(lái)進(jìn)行程序開發(fā)復(fù)用性增強(qiáng)。對(duì)象是指現(xiàn)實(shí)世界中客觀存在的事物擬物成軟件系統(tǒng)的組成元素,并且在軟件系統(tǒng)開發(fā)過程中運(yùn)用人類自己的自然思維方式進(jìn)行軟件開發(fā)過程。面向?qū)ο蠹夹g(shù)強(qiáng)調(diào)在軟件開發(fā)過程中面向客觀世界真實(shí)存在的事物,采用人類在認(rèn)識(shí)客觀世界的過程中普遍運(yùn)用的思維方法,直觀、自然地描述客觀世界中的有關(guān)事物[8]。面向?qū)ο蠹夹g(shù)的基本特征主要有封裝、繼承和多態(tài)[5]。(1)封裝:封裝是指將具有一致的屬性和行為的對(duì)象抽象成單獨(dú)的類。一個(gè)類就是這樣的一種單獨(dú)的抽象模式,它包含了與程序的對(duì)象有關(guān)的重要的性質(zhì),而忽略其他無(wú)關(guān)的內(nèi)容。任何類的劃分都是我們主觀意義上的,但是類的劃分必須是和我們?cè)O(shè)計(jì)的程序有關(guān)[13]。(2)繼承:繼承性是子類共享父類數(shù)據(jù)結(jié)構(gòu)和方法的一種方便的實(shí)現(xiàn)代碼結(jié)構(gòu)完整性的機(jī)制,子類可以共享父類的全部公有描述,但是還可以進(jìn)行必要的修改和擴(kuò)充[13]。(3)多態(tài):多態(tài)性使指相同的操作或函數(shù)其過程可作用于多種類型的對(duì)象上并獲得不同的結(jié)果。不同的對(duì)象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。多態(tài)指允許每個(gè)對(duì)象以適合自身的方式去響應(yīng)共同的消息[8]。多態(tài)性增強(qiáng)了軟件的靈活性[13]。
第2章系統(tǒng)分析2.1業(yè)務(wù)流程的概述用戶進(jìn)入首頁(yè)后看到的界面從上到下依次是位置定位、新品圖片、功能條款、秒殺促銷,用戶點(diǎn)擊“分類”即可進(jìn)入所有的商品列表,在商品列表界面點(diǎn)擊任意商品,用戶就能了解該商品的詳細(xì)信息。若用戶喜歡該商品,可將其加入購(gòu)物車,隨時(shí)結(jié)算,提交訂單,即完成了一次購(gòu)物。2.2可行性分析該系統(tǒng)從經(jīng)濟(jì)、操作、運(yùn)行、技術(shù)多個(gè)方面進(jìn)行分析其可行性,按照我本人對(duì)Java程序設(shè)計(jì)語(yǔ)言和安卓知識(shí)的了解,本系統(tǒng)的可行性分析主要從以下四個(gè)方面進(jìn)行介紹。2.2.1經(jīng)濟(jì)可行性分析該系統(tǒng)要用到的AndroidStudio軟件獲得很便捷,就是直接從網(wǎng)上下載,不需要任何費(fèi)用,并且該系統(tǒng)又是我自己獨(dú)立完成,可以節(jié)省很多花銷,在一定程度上也提高了自己的動(dòng)手能力。2.2.2操作可行性分析該軟件操作起來(lái)非常簡(jiǎn)便,只要會(huì)用安卓手機(jī)的人都可以輕松上手,軟件的所有購(gòu)物流程都使用了很好用的交互界面,操作起來(lái)也很簡(jiǎn)單便利,用戶也不用非要掌握它的工作原理和流程。所以來(lái)說(shuō),該軟件在操作方面是可行的。2.2.3技術(shù)可行性分析從事IT行業(yè)的人們一般至少都要懂得計(jì)算機(jī)和手機(jī)的一些基礎(chǔ)知識(shí),也就是說(shuō)一定要有一定的軟硬件基礎(chǔ)知識(shí),也要會(huì)用各種基本的管理軟件。在現(xiàn)在社會(huì)人們都有或多或少的電腦知識(shí),跟不用說(shuō)企業(yè)高層的管理層人員了,只要會(huì)一些電腦知識(shí),在投入使用已設(shè)計(jì)好的新軟件時(shí),只要培訓(xùn)一些少量的管理人員,軟件就能夠順利的使用和運(yùn)行了,因?yàn)槠浜笈_(tái)管理界面友好,整個(gè)軟件的功能和使用方法也能夠被大多數(shù)員工了解并掌握,操作管理員即使不會(huì)任何數(shù)據(jù)庫(kù)知識(shí)也能很快使用。2.2.4運(yùn)行可行性分析本系統(tǒng)為一個(gè)簡(jiǎn)單的手機(jī)網(wǎng)上購(gòu)物系統(tǒng),所消耗的資源比較少,電腦配置能夠支持開發(fā)軟件的正常運(yùn)行,又由于開發(fā)環(huán)境的搭建成功,所以本系統(tǒng)運(yùn)行上是可行的。2.3系統(tǒng)結(jié)構(gòu)分析本系統(tǒng)是一款在智能手機(jī)上網(wǎng)上購(gòu)物的應(yīng)用,總共分為五個(gè)大功能模塊:首頁(yè)顯示模塊、商品分類模塊、添加購(gòu)物車模塊、查看訂單模塊、個(gè)人中心模塊,主要目的是設(shè)計(jì)一款方便消費(fèi)者在手機(jī)上超市購(gòu)物的應(yīng)用。2.3.1首頁(yè)模塊首頁(yè)模塊顯示的首先豎列的秒殺信息和橫向的廣告,橫向能左右滑動(dòng)豎向能上下,用戶在首頁(yè)上方或下方秒殺商品處點(diǎn)擊商品的圖片就能進(jìn)入到該商品的詳情頁(yè)面,在詳情頁(yè)面中用戶可根據(jù)自己的需要將該商品加入購(gòu)物車或者直接購(gòu)買,數(shù)量也是可自由增加或減少的,也是附近店鋪,促銷專場(chǎng),禮券,錢包等功能的入口界面。2.3.2商品分類模塊在商品分類模塊用戶可以選擇查看不同類別的商品,比如食品部和聯(lián)營(yíng)部等等,每一類別的商品又有不同的分區(qū),例如生鮮類就包括蔬菜和雜糧分區(qū)。每一個(gè)分區(qū)又包含了很多商品種類,此時(shí)點(diǎn)擊這些商品種類,會(huì)顯示這類商品的全部品牌,用戶根據(jù)自己的喜好來(lái)選擇不同品牌不同類別的商品。豐富而又不復(fù)雜的分類模塊能讓用戶簡(jiǎn)便快速找到自己心儀的商品。2.3.3購(gòu)物車模塊用戶在查看購(gòu)物車之前須先登錄自己的賬號(hào)和密碼,沒有登錄的話該界面會(huì)提示“請(qǐng)登錄”的消息。該模塊能實(shí)現(xiàn)的功能有:將要買的商品添加至購(gòu)物車中、編輯商品數(shù)量直到滿足自己的需求、把加入購(gòu)物車中的商品顯示出來(lái)。2.3.4訂單模塊該模塊的功能有:提交已付款的訂單、選擇適合自己的支付方式、全部費(fèi)用結(jié)算、查看已完成的和未完成的訂單。在購(gòu)物車中確定要買的商品進(jìn)行費(fèi)用結(jié)算,然后完善收貨信息(對(duì)于備注,可表明對(duì)商品的需求)就完成了訂單,跳轉(zhuǎn)到支付頁(yè)面,顯示若干種付款方式,用戶按照適合自己的付款方式,此項(xiàng)訂單就產(chǎn)生了。2.3.5個(gè)人中心模塊個(gè)人中心模塊主要包括:管理收貨地址、服務(wù)與用戶反饋、配送管理、幫助說(shuō)明、給朋友們推薦使用該應(yīng)用。例如:增加新的收貨地址或者刪除已經(jīng)不用的收貨地址,服務(wù)與用戶反饋則給客戶提交自己建議的空間,主要是一些輔助功能。
第3章總體設(shè)計(jì)3.1系統(tǒng)功能結(jié)構(gòu)該系統(tǒng)分為客戶端和服務(wù)端:客戶端主要是用戶的注冊(cè)、登錄、瀏覽商品、選購(gòu)商品、加入購(gòu)物車、查看訂單;服務(wù)端主要是管理員對(duì)用戶、商品、訂單的管理,在整個(gè)系統(tǒng)中他們具有不同的功能和權(quán)限。該軟件系統(tǒng)功能結(jié)構(gòu)圖如圖3-1所示: 圖3-1系統(tǒng)功能結(jié)構(gòu)圖3.1.1客戶端客戶端是供用戶購(gòu)物的,其包含了用戶的注冊(cè)與登錄、瀏覽商品、加入購(gòu)物車、查詢訂單、支付等功能,它負(fù)責(zé)直接和用戶交互的功能。用戶進(jìn)入軟件如果以前注冊(cè)過就會(huì)把以前加入購(gòu)物車的記錄和訂單記錄重新顯示,只有登錄過后才能把商品加入購(gòu)物車或夠買商品,沒有登錄的話系統(tǒng)會(huì)跳到登錄界面提示用戶先登錄,在用戶注冊(cè)的時(shí)候必須用不同的信息注冊(cè),例如用戶的手機(jī)號(hào)以前注冊(cè)過就會(huì)提示用戶此手機(jī)號(hào)已注冊(cè),當(dāng)用戶購(gòu)買的時(shí)候用戶能根據(jù)支付方式去選擇自己需要的支付方式,只有在輸入正確的用戶名和密碼的情況下才能購(gòu)買,否則會(huì)提示密碼錯(cuò)誤,當(dāng)購(gòu)買成功后會(huì)調(diào)到購(gòu)買成功界面,其功能流程圖如圖3-2所示:圖3-2系統(tǒng)流程圖3.1.2服務(wù)端服務(wù)端主要用于服務(wù)端的管理員管理用戶、商品和訂單等方面,用戶包括用戶名、密碼、電話等一些個(gè)人信息,商品包含商品名、圖片、價(jià)格、數(shù)量等信息,訂單包括時(shí)間、地址等屬性信息。其E-R圖如下3-3所示:圖3-3E-R圖3.2軟件的體系結(jié)構(gòu)本軟件是典型的Android超市購(gòu)物客戶端,采用建立在Android系統(tǒng)之上的ApplicationFramework應(yīng)用程序架構(gòu)。本軟件遵循MVC架構(gòu)設(shè)計(jì)原則,即數(shù)據(jù)(模型,Model)、視圖(View)和控制器(Controller),三層有自己所要完成的任務(wù),但又相互聯(lián)系。模型層中主要封裝了要用到的實(shí)體類,因?yàn)檫@些類要重復(fù)利用,本軟件主要數(shù)據(jù)來(lái)源于服務(wù)器,數(shù)據(jù)層中存儲(chǔ)了所有數(shù)據(jù)列表的信息、圖片列表信息,內(nèi)容以JSON文件形式保存于緩存空間里,這些JavaBean主要就是封裝從服務(wù)器請(qǐng)求數(shù)據(jù)的信息??刂破鲗臃庋b了一些程序的邏輯。為視圖層展示做準(zhǔn)備,控制器主要負(fù)責(zé)本項(xiàng)目的邏輯部分,包括數(shù)據(jù)調(diào)用邏輯、數(shù)據(jù)計(jì)算與視圖關(guān)系的邏輯處理等等。邏輯層在代碼上主要表現(xiàn)為各個(gè)視圖控制器,設(shè)置了整個(gè)應(yīng)用各個(gè)視圖之間如何切換,數(shù)據(jù)關(guān)系如何協(xié)調(diào)等,其中在本次設(shè)計(jì)中我使用了很多的方法來(lái)簡(jiǎn)化代碼,也是銜接視圖層和數(shù)據(jù)層最重要的部分。視圖層中處理數(shù)據(jù)顯示的部分,XML布局可以視為V層,顯示Model層的數(shù)據(jù)結(jié)果Google提供了Android視圖層中的各個(gè)類,自己可以對(duì)各種基本控件進(jìn)行組裝和排版,構(gòu)成應(yīng)用需要的特定的視圖控件,如軟件標(biāo)題設(shè)置紅底白字、在用戶體驗(yàn)至關(guān)重要的點(diǎn)擊處理過程中,大部分控件設(shè)置了相應(yīng)的視覺效果,如各種控件按鈕點(diǎn)擊后變色、背景圖片和部分視覺效果等。3.3界面設(shè)計(jì)目前Android界面設(shè)計(jì)的方法主要有兩種:第一種是用Java編寫的代碼實(shí)現(xiàn)。第二種是基于xml的實(shí)現(xiàn)。對(duì)于界面設(shè)計(jì)而言,客戶端注重用戶的操作體驗(yàn)和頁(yè)面之間的層級(jí)關(guān)系。受“屏幕小、觸屏操作容易出現(xiàn)錯(cuò)誤、網(wǎng)速的限制問題”等的條件制約,移動(dòng)的UI設(shè)計(jì)需要考慮精簡(jiǎn)頁(yè)面布局、提高圖片的加載效率、減少輸入等問題。具體辦法可以這么做:(1)對(duì)原有的信息進(jìn)行簡(jiǎn)要整合分析并重組,避免頁(yè)面布局的復(fù)雜性。(2)為了更多的展示信息,本軟件整體用Fragment和ViewPager實(shí)現(xiàn)讓用戶既能點(diǎn)擊下面的按鈕切換又能左右滑動(dòng)來(lái)切換不同的功能界面。(3)以精簡(jiǎn)為主??紤]到手機(jī)屏幕的尺寸問題,因此頁(yè)面內(nèi)容要足夠的精簡(jiǎn),這就要求主元素內(nèi)容要夠“大”,同時(shí)去掉不必要的元素。
第4章詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)本章主要闡述了首頁(yè)模塊,所有商品各種分類模塊、整理購(gòu)物車模塊、處理所有訂單模塊、個(gè)人中心模塊五大模塊的詳細(xì)內(nèi)容,并且詳細(xì)介紹了各個(gè)模塊主要功能的實(shí)現(xiàn)方法。每塊功能都用實(shí)際效果截圖來(lái)更加清晰的展示了該模塊用到的知識(shí)和技術(shù),接著用部分典型功能的實(shí)現(xiàn)代碼來(lái)進(jìn)行進(jìn)一步說(shuō)明。4.1基本功能類設(shè)計(jì)在基類功能模塊中,主要實(shí)現(xiàn)了各模塊所用到的一些復(fù)用類以及若干視圖控制器類,主要是視圖控制器方法的封裝,供各個(gè)實(shí)體控制器調(diào)用,這里說(shuō)幾個(gè)。UtilTool類為了提高性能,利用線程池創(chuàng)建線程了10個(gè)線程利用handler和接口回調(diào)供各實(shí)體控制器調(diào)用,調(diào)用此類能得到正確的返回的字符串,和錯(cuò)誤的信息然后供調(diào)用者根據(jù)不同的返回信息進(jìn)行不同的處理。UserManager類該類是工具類,是保存一些信息到本地,主要用途是封裝用戶的數(shù)據(jù)到本地,例如登錄記錄,錢包登錄記錄,當(dāng)用戶再次登錄的時(shí)候不用再次輸入,提高用戶體驗(yàn),供各個(gè)實(shí)體類調(diào)用。3.StringUtils類該類是一些字符串的轉(zhuǎn)換,主要功能是一些驗(yàn)證的正則表達(dá)式,對(duì)手機(jī)號(hào)的驗(yàn)證,郵箱的驗(yàn)證double和int的轉(zhuǎn)換,取整和保留位數(shù)的使用。MD5key類和Coder類整兩個(gè)類是加密類,MD5key是用來(lái)MD5加密,當(dāng)用戶注冊(cè)的時(shí)候密碼直接用MD5加密,因?yàn)镸D5加密是不可逆的和唯一的,所以直接把MD5加密后的字符串存到數(shù)據(jù)庫(kù),登錄驗(yàn)證的時(shí)候也用MD5加密的字符串驗(yàn)證,Coder是RAS加密的工具類,該類用于當(dāng)用戶支付的時(shí)候和轉(zhuǎn)賬的時(shí)候確保安全性。AddBuyCar這兩個(gè)類會(huì)在帶有加入購(gòu)物車功能的界面用到,用來(lái)添加商品到購(gòu)物車,為了提高代碼的復(fù)用性,我把這這個(gè)功能封裝成一個(gè)類4.2首頁(yè)功能模塊首頁(yè)功能模塊是用戶進(jìn)入軟件后首次看到的模塊主要用來(lái)瀏覽廣告列表、進(jìn)入附近店鋪,錢包,促銷專場(chǎng),名優(yōu)特產(chǎn),滴購(gòu),禮來(lái)了等功能的入口,用戶可根據(jù)需要選擇點(diǎn)擊進(jìn)入任意功能,這個(gè)模塊也是整個(gè)購(gòu)物軟件中最重要的功能模塊。4.2.1首頁(yè)功能模塊架構(gòu)首頁(yè)包括廣告頁(yè)和內(nèi)容頁(yè),分別由Scrolview,ListView和ViewPager三個(gè)控件實(shí)現(xiàn)。ListView控件控制豎向的廣告,ViewPager控件控制橫向的廣告,Scrolview主要的作用是控制整體滑動(dòng)。Include封裝了八個(gè)入口列表視圖,而由于主頁(yè)場(chǎng)景中分布了多個(gè)功能模塊的視圖界面,此頁(yè)面作為主頁(yè)界面,該頁(yè)面中同時(shí)包含了其他模塊的部分邏輯功能,也是其它模塊的入口。主頁(yè)模塊主要涉及了若干視圖類,封裝了程序的主要應(yīng)用邏輯以及界面布局構(gòu)造。主要的類如下:FirstpageFragment類該類是的軟件首頁(yè)類,首頁(yè)的所有控件都是在此類中實(shí)現(xiàn)。該類盛放了首頁(yè)的所有控件和邏輯。Typesleftadapter類該類繼承于BaseAdapter,主要是Listview控件的數(shù)據(jù)的填充,主要實(shí)現(xiàn)了省份列表各視圖的設(shè)計(jì),提供了主頁(yè)列表單元格的共有模型,點(diǎn)擊此控件城市和店鋪會(huì)跟隨變化,其他入口的界面也會(huì)更具不同的選擇具有不同的變化。3.Typesadapter類該類是GridView的適配器,GridView的所有數(shù)據(jù)填充都在此類中。4.2.2廣告頁(yè)面的實(shí)現(xiàn)ViewPager是Android開發(fā)中最常用的基本視圖控件之一,用于構(gòu)建橫向列表視圖控件。軟件中所有列表控件,如五個(gè)主要視圖的切換、橫向廣告的切換列表均使用了ViewPager控件進(jìn)行列表的構(gòu)造。通過FirstPageradapter適配器事項(xiàng)橫向列表數(shù)據(jù)的填充。FirstPageradapter繼承于PagerAdapter(滾動(dòng)視圖),可對(duì)各種列表拖動(dòng)過程操作進(jìn)行控制和監(jiān)控。ViewPager通過重寫instantiateItem和destroyItem的委托方法來(lái)讀取數(shù)據(jù)和實(shí)現(xiàn)數(shù)據(jù)的加載銷毀,涉及的主要方法和相應(yīng)邏輯如下:1.列表中橫向廣告數(shù)量:@OverridepublicintgetCount(){returnInteger.MAX_VALUE;}讓適配器默認(rèn)返回最大值返回?zé)o數(shù)多個(gè)用于循環(huán)滑動(dòng)2.返回需要顯示的視圖:@OverridepublicObjectinstantiateItem(ViewGroupcontainer,intposition){position%=listimage.size();ImageViewview=listimage.get(position);ViewParentvp=view.getParent();if(vp!=null){ViewGroupparent=(ViewGroup)vp;parent.removeView(view);}container.addView(view);returnview;}。返回列表中對(duì)應(yīng)的對(duì)象,包含了圖片、文本等多種視圖控件和一部分排版邏輯代碼。設(shè)計(jì)樣式具體如圖4-1所示:圖4-1ViewPager效果圖實(shí)現(xiàn)的關(guān)鍵代碼:privatevoidinitImageView(){listimage=newArrayList<ImageView>();for(inti=0;i<list.size()*100;i++){finalinta=(i%list.size());finalImageViewimageView=newImageView(getActivity());imageView.setTag(list.get(a).getbGoodsORStoreNo());imageView.setScaleType(ImageView.ScaleType.FIT_XY);imageView.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Stringpage=(String)imageView.getTag();if(page.equals("2")){Intentintent=newIntent(getActivity(),GoodsDetailsActivity.class);intent.putExtra("storeno",list.get(a).getcStoreNo());intent.putExtra("goodsno",list.get(a).getAdcGoodsNo());intent.putExtra("type","FirstpageFragment");intent.putExtra("cMall_No",list.get(a).getcMall_No());startActivity(intent);}elseif(page.equals("1")){Intentintent=newIntent(getActivity(),AroundContentActivity.class);intent.putExtra("storeno",list.get(a).getcStoreNo());intent.putExtra("storename",list.get(a).getcStoreName());intent.putExtra("cMall_No",list.get(a).getcMall_No());intent.putExtra("type","FirstpageFragment");startActivity(intent);}if(page.equals("0")){Intentintent=newIntent(getActivity(),WebViewActivity.class);intent.putExtra("url",list.get(a).getAdSkipUrl());Log.i("tag",list.get(a).getAdSkipUrl());intent.putExtra("cMall_No",list.get(a).getcMall_No());startActivity(intent);}}});listimage.add(imageView);}FirstPageradapterfirstPageradapter=newFirstPageradapter(listimage);viewpagerfirst.setCurrentItem(Integer.MAX_VALUE/2);viewpagerfirst.setAdapter(firstPageradapter);problem();for(inti=0;i<listimage.size();i++){Picasso.with(getActivity()).load(URLConfig.imageUrl+list.get((i%list.size())).getAdImagePath()).into(listimage.get(i));}}使用ListView實(shí)現(xiàn)加載數(shù)據(jù)madapter=newFirstListAdapter(getActivity());id_listview.setAdapter(madapter);利用ListView實(shí)現(xiàn)加載豎向的數(shù)據(jù)ListView是應(yīng)用中使用數(shù)量最多的控件也是應(yīng)用中最流行的數(shù)據(jù)加載控件。在現(xiàn)在的開發(fā)模式中,用到了listView和ViewPagerd的功能這一功能是非常流行的,這樣既能橫向滑動(dòng)用能豎向滑動(dòng),也是用戶最為接受的,同時(shí)進(jìn)行了創(chuàng)新的用戶界面設(shè)計(jì)。由于動(dòng)作邏輯和實(shí)現(xiàn)代碼非常相似,故本節(jié)介紹該功能的操作流程。其實(shí)現(xiàn)的效果圖如下圖4-2所示:圖4-2實(shí)現(xiàn)的效果圖關(guān)鍵代碼如下:@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
ViewHoldviewHold;
if(convertView==null){
viewHold=newViewHold();
convertView=LayoutInflater.from(context).inflate(R.layout.firstlistadapter,null);
viewHold.imageView=(ImageView)convertView.findViewById(R.id.imagefirst);
convertView.setTag(viewHold);
}
else{
viewHold=(ViewHold)convertView.getTag();
}
Stringurl=list.get(position).getAdImagePath();
url=URLConfig.imageUrl+url;
Picasso.with(context).load(url).into(viewHold.imageView);
returnconvertView;
}
classViewHold{
ImageViewimageView;4.2.3附近店鋪,促銷專場(chǎng)和名優(yōu)特產(chǎn)的實(shí)現(xiàn)這三個(gè)模塊基本實(shí)現(xiàn)都一樣都是用ListView顯示要加載的數(shù)據(jù),附近店鋪就是用戶最近的商店,促銷專場(chǎng)是用來(lái)顯示商家要促銷的商品,名優(yōu)特產(chǎn)是一些有特價(jià)的商品在現(xiàn)在的開發(fā)模式中,用到了listView的Contentview的復(fù)用功能,這樣既能友好的展示,還能防止內(nèi)存溢出,所以本軟件的各個(gè)模塊均使用了此功能。其界面基本類似如圖4-3所示。圖4-3實(shí)現(xiàn)的效果圖4.2.4禮券的實(shí)現(xiàn)禮券的主要功能就是展示商家發(fā)的優(yōu)惠券,用戶領(lǐng)取以后會(huì)根據(jù)后臺(tái)的處理省去一些錢,其主要功能就是根據(jù)商家的需要去銷售商品,禮券上展示的主要有此禮券可用和當(dāng)消費(fèi)費(fèi)用達(dá)到多少時(shí)能用,主要實(shí)現(xiàn)也是用到了用到了listView的來(lái)展示,能夠更具服務(wù)器的個(gè)數(shù)動(dòng)態(tài)展示。由于動(dòng)作邏輯和實(shí)現(xiàn)代碼非常相似,故本節(jié)介紹該功能的操作流程。其實(shí)現(xiàn)的效果圖如下圖4-4所示:圖4-4實(shí)現(xiàn)的效果圖4.3分類模塊的設(shè)計(jì)分類模塊是用戶主要用來(lái)瀏覽商品列表、通過進(jìn)行對(duì)商品的過濾查看想要的商品詳情的部分,用戶可根據(jù)選擇點(diǎn)擊進(jìn)入任意應(yīng)用詳情界面。4.3.1分類模塊架構(gòu)分類模塊主要由主頁(yè)和內(nèi)容頁(yè)兩個(gè)頁(yè)面組成,分別由ListView,TabLayout和GridView三個(gè)視圖控制器控制。ListView視圖顯示總分類的商品,點(diǎn)擊ListView對(duì)應(yīng)的Item,TabLayout的數(shù)據(jù)和GridView的數(shù)據(jù)會(huì)發(fā)生變化,點(diǎn)擊TabLayout后GridView的內(nèi)容也會(huì)顯示對(duì)應(yīng)中類下的商品,根據(jù)用戶的需要能進(jìn)入商品目錄,或商品詳情界面。分類模塊主要涉三個(gè)主要控件,和三個(gè)對(duì)應(yīng)的數(shù)據(jù)適配器類。主要的類如下:1.Typesleftadapter類該類是分類的大類適配器類,在該類中主要是調(diào)用各個(gè)基類的方法實(shí)現(xiàn)界面UI的設(shè)計(jì)。2.Typesadapter類該類是GridView的適配器,GridView的所有數(shù)據(jù)填充都在此類中。該類是分類內(nèi)容小類頁(yè)面,通過調(diào)用基類中的方法統(tǒng)一管理了應(yīng)用正文頁(yè)面中UI的布局和其他手勢(shì)的視圖邏輯。通過幾點(diǎn)可以調(diào)到商品列表頁(yè)面。4.3.2分類界面的實(shí)現(xiàn)其主要實(shí)現(xiàn)的代碼為:privatevoidinitleft(){//初始化左面的適配器
if(typesleftadapter==null){
typesleftadapter=newTypesleftadapter(getActivity());
}
typesleftadapter.setData(typeleftlist);
leftlistview.setAdapter(typesleftadapter);
leftlistview.post(newRunnable(){
@Override
publicvoidrun(){
if(leftlistview.getChildAt(0)!=null)
leftlistview.getChildAt(0).findViewById(R.id.visible).setVisibility(View.VISIBLE);
}
});
}
privatevoidinittop(){
tabLayout.removeAllTabs();
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);//設(shè)置tab模式</code>能滑動(dòng)
for(inti=0;i<typetoplist.size();i++){
tabLayout.addTab(tabLayout.newTab().setText(typetoplist.get(i).getGrName2()));
}
}
privatevoidinittypes(){
if(adapter==null){
adapter=newTypesadapter(getActivity());
typesgridview.setAdapter(adapter);
}
adapter.setData(typesitemlist);
adapter.notifyDataSetChanged();
}在應(yīng)用列表界面的設(shè)計(jì)主要還是調(diào)用requestDataleft,requestDataTop和requestDataSmall中的方法,來(lái)進(jìn)行頁(yè)面的數(shù)據(jù)的請(qǐng)求,然后進(jìn)給ListView,TabLayout,和GridView數(shù)據(jù)的填充。分類實(shí)現(xiàn)的效果和搜索實(shí)現(xiàn)的效果如下圖4-5,4-6所示:圖4-5分類界面實(shí)現(xiàn)效果圖圖4-6搜索界面實(shí)現(xiàn)效果圖4.3.3.商品目錄的實(shí)現(xiàn)該類繼承于AppCompatActivity,主要實(shí)現(xiàn)了分類列表各視圖的設(shè)計(jì),提供了分類商品下的各種對(duì)應(yīng)商品的列表,實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,效果如圖4-7。圖4-7商品種類的實(shí)現(xiàn)效果圖4.3.4商品列表的實(shí)現(xiàn)該類是繼承于AppCompatActivity類,是GoodsListActivity中ListView點(diǎn)擊以后進(jìn)入的界面類,主要顯示此種商品下對(duì)應(yīng)的所有商家的商品,通過點(diǎn)擊加入購(gòu)物車圖標(biāo)調(diào)用AddBuyCar類實(shí)現(xiàn)加入購(gòu)物車功能,效果如圖4-8。圖4-8每種商品的添加購(gòu)物車實(shí)現(xiàn)效果圖4.4購(gòu)物車模塊的設(shè)計(jì)購(gòu)物車模塊是用戶主要用來(lái)瀏覽已添加到購(gòu)物車的商品列表、進(jìn)行購(gòu)買前數(shù)量的選擇和取消添加的部分,用戶可根據(jù)選擇點(diǎn)擊加減按鈕進(jìn)行數(shù)量的選取和刪除,也是最復(fù)雜的一個(gè)模,本節(jié)主要闡述的是購(gòu)物車模塊內(nèi)部的技術(shù)實(shí)現(xiàn)方法。4.4.1購(gòu)物車模塊架構(gòu)購(gòu)物車模塊主要由ListView控件實(shí)現(xiàn),ListView界面中嵌套R(shí)adioButton,Button等控件。主要有商品的數(shù)量改變的點(diǎn)擊事件,和一些價(jià)格的運(yùn)算,購(gòu)物車模塊主要涉及了三個(gè)視圖控制器類,一個(gè)是數(shù)據(jù)封裝類Buycar,主要是封裝購(gòu)物車要顯示的主要信息,另一個(gè)就是加入購(gòu)物車的類AddBuyCar主要作用是邏輯處理和數(shù)據(jù)提交。主要的類如下:BuycarAdapter類該類是繼承BaseAdapter類,是購(gòu)物車中ListView數(shù)據(jù)填充的類,購(gòu)物車所有邏輯的實(shí)現(xiàn)和各種點(diǎn)擊事件的處理都在這個(gè)類中實(shí)現(xiàn),這個(gè)類也是此軟件最復(fù)雜的ListView的適配器。4.4.2購(gòu)物車的實(shí)現(xiàn)其主要實(shí)現(xiàn)方法和商品分類一樣都是Fragment忠放ListView然后用BucarAdapter填充listView數(shù)據(jù),其中加入購(gòu)物車的方法有兩種,一種是手動(dòng)加入購(gòu)物車,另一種是打開軟件登錄的時(shí)候會(huì)根據(jù)用戶以前的購(gòu)物車的商品從服務(wù)器請(qǐng)求加進(jìn)去,重新顯示,其主要代碼如下:1.打開軟件首次加載:publicvoidrequestData(){
Stringuserno=UserManager.getUser(getActivity());
Stringdata="name=[{\"cOSS_No\":\""+SendMessage.cOSS_No+"\",\"cMall_No\":\"\",\"userNo\":\""+userno+"\"}]";
Log.i("tag",data);
UtilTool.get(URLConfig.requestBuycar,newUtilTool.Callback(){
@Override
publicvoidresponse(Stringurl,Stringstr){
try{
Log.i("tag",str);
JSONObjectobj=newJSONObject(str);
StringresultStatus=obj.getString("resultStatus");
if(resultStatus.equals("1")){
JSONArrayarray=obj.getJSONArray("dDate");
Gsongson=newGson();
list=gson.fromJson(array.toString(),newTypeToken<List<Buycar1>>(){
}.getType());
adapter.setData(list);
Log.i("tag","購(gòu)物車"+list);
}
else{
adapter.setData(newArrayList<Buycar1>());
}
adapter.notifyDataSetChanged();
}catch(Exceptione){
e.printStackTrace();
}
}
},data);
}加入購(gòu)物車的代碼:publicstaticvoidjudgeaddcar(Buycarbuycar,finalAddaddbuycar){//向網(wǎng)絡(luò)請(qǐng)求加入購(gòu)物車ArrayList<Buycar>listbuycar=newArrayList<Buycar>();listbuycar.add(buycar);Gsongson=newGson();Strings=gson.toJson(listbuycar);//應(yīng)為服務(wù)器的格式是集合格式所以就放在集合轉(zhuǎn)成這樣finalStringdata="name="+s;UtilTool.get(URLConfig.addbuycar,newUtilTool.Callback(){@Overridepublicvoidresponse(Stringurl,Stringstr){if(str.equals("1")){addbuycar.add(true);BuycarFragment.getFragment().requestData();}else{addbuycar.add(false);Log.i("tag",""+data);}}},data);}publicinterfaceAdd{publicvoidadd(booleana);}publicinterfaceReduce{publicvoidcut(booleana);}由于在購(gòu)物車界面中視圖的加載控件都是用代碼寫的,所以代碼量會(huì)比較多,但是效果還是完成了預(yù)期。實(shí)現(xiàn)的效果圖如下圖4-9所示:圖4-9購(gòu)物車頁(yè)面實(shí)現(xiàn)效果圖4.5訂單模塊的設(shè)計(jì)訂單模塊分四個(gè)功能模塊、提交訂單功能,支付功能,瀏覽訂單功能和查看訂單詳情功能,用戶可從購(gòu)物車進(jìn)入提交訂單模塊也可從商品詳情進(jìn)入訂單模塊。4.5.1模塊架構(gòu)提交訂單模塊主要由主頁(yè)和內(nèi)容頁(yè)兩個(gè)頁(yè)面組成,主要有分別由LinearLayout和DrawLayout兩個(gè)視圖控制器控制。LinearLayout用來(lái)顯示主頁(yè),DrawLayout用來(lái)側(cè)拉頁(yè)面。瀏覽訂單模塊比較簡(jiǎn)單主要負(fù)責(zé)顯示用戶已經(jīng)下單的數(shù)據(jù)。BuycarContentActivity類該類是購(gòu)物車的最重要的類,由于購(gòu)物車主頁(yè)UI設(shè)計(jì)的內(nèi)容非常多且操作復(fù)雜,故該類包含了眾多視圖邏輯的代碼,包括關(guān)于應(yīng)用模塊的單元格的布局方法的調(diào)用等邏輯。在該類中主要是調(diào)用各個(gè)基類的方法實(shí)現(xiàn)界面UI的設(shè)計(jì)。2.OrderGiftAdapter類該類是適配器類,也是優(yōu)惠券DrawLayout中ListView的數(shù)據(jù)填充類,主要判斷是不是有優(yōu)惠券和優(yōu)惠的額度。3.BuycarContentAdapter類該類是集成BaseAdapter類,是右面DrawLayout中Listview的適配器類,主要是當(dāng)購(gòu)買商品過多時(shí),用可滑動(dòng)的ListView以列表的形式展示要購(gòu)買的商品。4.5.2提交訂單頁(yè)面的實(shí)現(xiàn)BuycarContentActivity的頁(yè)面主要有三部分構(gòu)成,分別是用戶的購(gòu)買地址信息,需要該買的商品信息,和備注,通過這幾部分的集合視圖,可實(shí)現(xiàn)不同的信息的展示,聯(lián)系人信息用圖片隔開更有層次感,通過DrawLayout能讓屏幕空間充分利用。DrawLayout和ListView的組合是一種新的數(shù)據(jù)視圖展示方式,這種方式更加靈活,能盡可能的展示更多的信息。實(shí)現(xiàn)一個(gè)這個(gè)效果的方法就是DrawerLayout里面嵌套ListView基本和寫ListView沒有什么大區(qū)別,當(dāng)側(cè)拉的時(shí)候或者點(diǎn)擊右面的圖標(biāo)的時(shí)候會(huì)展示出來(lái)。在本次設(shè)計(jì)中其主要實(shí)現(xiàn)代碼如下:1.提交訂單的代碼:promocode.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
drawerLayout.openDrawer(linear1);//用于打開菜單
}
});privatevoiduoload(){//提交給服務(wù)器dialog.show();Gsongson=newGson();Stringstr=gson.toJson(orderitems);finalStringdata="name="+str;Log.i("tag","提交訂單"+data);UtilTool.get(URLConfig.uploadOrder,newUtilTool.Callback(){@Overridepublicvoidresponse(Stringurl,Strings){try{JSONObjectobject=newJSONObject(s);Stringstr=object.getString("resultStatus");if(!str.equals("0")){Toast.makeText(getApplicationContext(),"成功",Toast.LENGTH_SHORT).show();BuycarAegerListMap.clear();BuycarFragment.getFragment().requestData();Log.i("tag",data);Intentintent=newIntent(getApplicationContext(),PayDemoActivity.class);StringcStoreName=getIntent().getStringExtra("cStoreName");intent.putExtra("storename",cStoreName);intent.putExtra("orderno",str);//訂單編號(hào)intent.putExtra("cStoreNo",cStoreNo);Log.i("tag","單號(hào)"+str);if(orderitems.get(0).getfLastMoney()!=null){intent.putExtra("lastMoney",orderitems.get(0).getfLastMoney());startActivity(intent);}orderitems.clear();OrderFragment.getFragment().judge();//更新訂單;finish();}else{Toast.makeText(getApplicationContext(),"失敗",Toast.LENGTH_SHORT).show();Log.i("tag",data);}}catch(Exceptione){}dialog.dismiss();}},newUtilTool.ErrorCallback(){@Overridepublicvoidresponse(Exceptionstr){Log.i("tag",""+str);Toast.makeText(getApplicationContext(),"提交失敗",Toast.LENGTH_SHORT).show();dialog.hide();}},data);}提交訂單頁(yè)面的最終的實(shí)現(xiàn)效果如下圖4-10所示:圖4-10提交訂單頁(yè)面實(shí)現(xiàn)效果圖‘4.5.3訂單頁(yè)面的實(shí)現(xiàn)訂單主要由listView和Button實(shí)現(xiàn),其主要的代碼實(shí)現(xiàn):viewHold.fukuan.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(getActivity(),PayDemoActivity.class);Stringd=list.get(position).getfMoney();StringlastMoney=list.get(position).getfLastMoney();StringOverCut=list.get(position).getOverCut();intent.putExtra("cStoreNo",list.get(position).getcStoreNo());intent.putExtra("storename",list.get(position).getcStoreName());intent.putExtra("orderno",list.get(position).getcSaleSheetno());intent.putExtra("lastMoney",lastMoney);startActivity(intent);}});viewHold.xiangqing.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(getActivity(),OrderContentActivity.class);intent.putExtra("fMoney",list.get(position).getfMoney());//原價(jià)intent.putExtra("FirstSheet",list.get(position).getFirstSheet());//首單減intent.putExtra("OverCut",list.get(position).getOverCut());//慢件intent.putExtra("CouPonMoney",list.get(position).getCouPonMoney());//優(yōu)惠intent.putExtra("PeisongFee",list.get(position).getPeisongFee());//運(yùn)費(fèi)intent.putExtra("fLastMoney",list.get(position).getfLastMoney());//最后價(jià)格intent.putExtra("SheetNo",list.get(position).getcSaleSheetno());//訂單編號(hào)intent.putExtra("Storename",list.get(position).getcStoreName());startActivity(intent);}});StringStat_Id=list.get(position).getStat_Id();Log.i("tag","訂單編號(hào)"+list.get(position).getcSaleSheetno()+"訂單編號(hào)狀態(tài)"+list.get(position).getStat_Id()+""+list.get(position).getStat_Name());if(Stat_Id.equals("00")){viewHold.fukuan.setVisibility(View.VISIBLE);}else{viewHold.fukuan.setVisibility(View.INVISIBLE);}Stringname=list.get(position).getcStoreName();Stringno=list.get(position).getcStoreNo();viewHold.orderno.setText("訂單編號(hào):"+list.get(position).getcSaleSheetno());viewHold.storename.setText("店鋪名:"+name);viewHold.zhuangtai.setText("付款狀態(tài):"+list.get(position).getStat_Name());viewHold.time.setText("時(shí)間:"+list.get(position).getdSaleDate());訂單頁(yè)面的最終的實(shí)現(xiàn)效果如下圖4-11所示:圖4-11訂單頁(yè)面實(shí)現(xiàn)效果圖4.5.4訂單詳情頁(yè)面的實(shí)現(xiàn)訂單詳情主要在OrderContentActivity類中實(shí)現(xiàn)上面是訂單信息,下面是買的商品的列表信息最終實(shí)現(xiàn)效果如圖4-12所示:圖4-12瀏覽訂單詳情頁(yè)面實(shí)現(xiàn)效果圖4.5.5支付頁(yè)面的設(shè)計(jì)支付模塊是實(shí)現(xiàn)一次購(gòu)物的流程的最后模塊,根據(jù)需要支付方式有支付寶支付,錢包支付,貨到付款三種支付方式,每一種上品根據(jù)商家的設(shè)置,支付方式也不一樣,支付方式客戶端是從服務(wù)器獲取的,這樣商家會(huì)更加靈活的選擇支付方式,其中錢包支付綁定的是超市會(huì)員卡,為了確保和支付寶一樣的安全性,用到了RAS和MD5加密方式。1.PayDemoActivity類該類是支付模塊的主頁(yè)類,該類包含了支付流程的邏輯代碼,該視圖主要的內(nèi)容視圖設(shè)計(jì)都是基于FragmentActivity類來(lái)設(shè)計(jì)。在該類中主要是調(diào)用各個(gè)基類的方法實(shí)現(xiàn)界面UI的設(shè)計(jì)和這個(gè)支付方式的判斷及點(diǎn)擊事件的處理,這里用到了PopupWindow和自定義View。主要實(shí)現(xiàn)代碼如下:privatevoidPayNotify(StringcPayStyleNo,StringcSaleSheetNo,StringfPayMoney){//支付成功以后通知的鏈接Log.i("通知服務(wù)器",cPayStyleNo+""+cSaleSheetNo+""+fPayMoney);Stringdata="name=[{\"cOSS_No\":\""+SendMessage.cOSS_No+"\",\"cPayStyleNo\":\""+cPayStyleNo+"\",\"cSaleSheetNo\":\""+cSaleSheetNo+"\",\"fPayMoney\":\""+fPayMoney+"\",\"cPayStyleDetail\":\"明細(xì)\"}]";Log.i("tag",data);UtilTool.get(URLConfig.PayNotify,newUtilTool.Callback(){@Overridepublicvoidresponse(Stringurl,Stringstr){Log.i("tag","通知服務(wù)器后返回的結(jié)果"+str);OrderFragment.getFragment().judge();}},data);}實(shí)現(xiàn)的效果圖如下圖4-13,4-14,4-15所示:圖4-13支付頁(yè)面實(shí)現(xiàn)效果圖圖4-14選擇支付方式效果圖圖4-15支付成功效果圖4.6我的模塊的設(shè)計(jì)我的模塊是這幾個(gè)模塊中最簡(jiǎn)單的模塊,主要是一些輔助功能,在這里主要有修改地址,分享,反饋用的建議。4.6.1模塊架構(gòu)此模塊主要由主頁(yè)和內(nèi)容頁(yè)兩個(gè)頁(yè)面組成,主要有分別由LinearLayout和TextView兩個(gè)控件布局。LinearLayout用來(lái)分配整體的布局,TextView用來(lái)顯示具體的內(nèi)容。用戶可以根據(jù)不同的點(diǎn)擊或得不同的點(diǎn)擊效果。4.6.2管理地址的實(shí)現(xiàn)此功能是幫助用戶修改購(gòu)買地址信息通過點(diǎn)擊新增地址按鈕能添加新的地址。實(shí)現(xiàn)一個(gè)這個(gè)效果的方法就是ListView基本和寫ListView沒有什么大區(qū)別。在本次設(shè)計(jì)中其主要實(shí)現(xiàn)代碼如下:提交訂單的代碼:viewHold.button.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
if(list.size()>1)
UtilTool.get(URLConfig.deladdress,newUtilTool.Callback(){
@Override
publicvoidresponse(Stringurl,Stringstr){
if(str.equ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人商品住宅買賣合同標(biāo)準(zhǔn)范本4篇
- 2025年度綠色建筑個(gè)人勞務(wù)分包合同規(guī)范文本4篇
- 2025年度個(gè)人二手卡車買賣合同規(guī)范4篇
- 引水隧洞豎井施工方案
- 2025年度個(gè)人貸款合同范本集錦與利率調(diào)整機(jī)制3篇
- 2025年個(gè)人股權(quán)清算分配協(xié)議范本4篇
- 2024年中職學(xué)生教案模板(共8篇)
- 二零二五版美發(fā)企業(yè)股東股權(quán)變更與投資協(xié)議3篇
- 軋輥示熱處理課程設(shè)計(jì)
- 二零二五版美容院?jiǎn)T工加班費(fèi)計(jì)算合同樣本4篇
- 中國(guó)末端執(zhí)行器(靈巧手)行業(yè)市場(chǎng)發(fā)展態(tài)勢(shì)及前景戰(zhàn)略研判報(bào)告
- 北京離婚協(xié)議書(2篇)(2篇)
- Samsung三星SMARTCAMERANX2000(20-50mm)中文說(shuō)明書200
- 2024年藥品質(zhì)量信息管理制度(2篇)
- 2024年安徽省高考地理試卷真題(含答案逐題解析)
- 平面向量及其應(yīng)用試題及答案
- 2024高考復(fù)習(xí)必背英語(yǔ)詞匯3500單詞
- 無(wú)人機(jī)應(yīng)用平臺(tái)實(shí)施方案
- 2019年醫(yī)養(yǎng)結(jié)合項(xiàng)目商業(yè)計(jì)劃書
- 安全生產(chǎn)管理問題與對(duì)策探討
- 2024屆浙江寧波鎮(zhèn)海區(qū)中考生物全真模擬試題含解析
評(píng)論
0/150
提交評(píng)論