《基于Android的校園閑置物品交易系統(tǒng)設(shè)計(jì)》8900字(論文)_第1頁(yè)
《基于Android的校園閑置物品交易系統(tǒng)設(shè)計(jì)》8900字(論文)_第2頁(yè)
《基于Android的校園閑置物品交易系統(tǒng)設(shè)計(jì)》8900字(論文)_第3頁(yè)
《基于Android的校園閑置物品交易系統(tǒng)設(shè)計(jì)》8900字(論文)_第4頁(yè)
《基于Android的校園閑置物品交易系統(tǒng)設(shè)計(jì)》8900字(論文)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于Android的校園閑置物品交易系統(tǒng)設(shè)計(jì)目錄TOC\o"1-3"\h\u27489摘要 摘要:本文基于Android開(kāi)發(fā)和設(shè)計(jì)實(shí)現(xiàn)了一個(gè)限制物品交易app,主要采用Java編程語(yǔ)言進(jìn)行后端開(kāi)發(fā),使用AndroidStudio進(jìn)行Android的app開(kāi)發(fā)。同時(shí)使用IntelliJIDEA集成開(kāi)發(fā)環(huán)境采用Java語(yǔ)言編寫(xiě)后臺(tái)api接口,數(shù)據(jù)庫(kù)采用的是MySQL。用戶可以通過(guò)該app實(shí)現(xiàn)隨時(shí)隨地限制物品交易,讓用戶體驗(yàn)到網(wǎng)上限制物品交易的樂(lè)趣。主要功能有注冊(cè)登錄功能,商品列表,商品詳情頁(yè),限制物品交易車,客服咨詢等。論文闡述了一個(gè)基于Android設(shè)計(jì)和開(kāi)發(fā)一個(gè)限制物品交易app的過(guò)程。首先分析了現(xiàn)在的社會(huì)背景環(huán)境,然后介紹了需要用到的工具和環(huán)境,然后進(jìn)行了需求分析和限制物品交易app的設(shè)計(jì),然后再設(shè)計(jì)好數(shù)據(jù)庫(kù)。然后再簡(jiǎn)單得介紹了商城的具體實(shí)現(xiàn),貼出偽代碼和主要代碼幫助進(jìn)行理解。最后進(jìn)行總結(jié),提出不足和對(duì)未來(lái)的展望。關(guān)鍵詞:Android;Java;MySQL;網(wǎng)上限制物品交易;app;1引言本文的目的是開(kāi)發(fā)一個(gè)基于Android操作系統(tǒng)的限制物品交易app。該系統(tǒng)主要分為Android的前端界面和采用springboot框架進(jìn)行開(kāi)發(fā)的服務(wù)端,使用MySQL作為數(shù)據(jù)庫(kù)。本項(xiàng)目以idea和Androidstudio作為主要開(kāi)發(fā)工具,希望能給用戶設(shè)計(jì)出一個(gè)可以便捷實(shí)用的限制物品交易app。該系統(tǒng)應(yīng)該實(shí)現(xiàn)用戶注冊(cè)登錄,瀏覽商品,搜索商品,根據(jù)分類篩選商品,查看商品詳情,與客服聊天,限制物品交易車等等基本的網(wǎng)購(gòu)功能。對(duì)于商家來(lái)說(shuō),可以將商品通過(guò)該平臺(tái)進(jìn)行售賣(mài),獲得更大的流量,而且不用擔(dān)心房租水電等的產(chǎn)生。對(duì)于消費(fèi)者來(lái)說(shuō),通過(guò)智能手機(jī)進(jìn)行網(wǎng)上限制物品交易更加方便。只要你有一臺(tái)能上網(wǎng)的手機(jī),即可在任何地方24小時(shí)隨時(shí)隨地查看并購(gòu)買(mǎi)商品。而且商品內(nèi)容極其豐富,你更容易買(mǎi)到你想買(mǎi)的小眾商品。手機(jī)網(wǎng)上限制物品交易是時(shí)代的選擇。2開(kāi)發(fā)技術(shù)以及環(huán)境2.1AndroidAndroid也就是我們常說(shuō)的“安卓”。是一個(gè)基于Linux內(nèi)核和其他開(kāi)源軟件的開(kāi)放源代碼的移動(dòng)操作系統(tǒng),是由美國(guó)的Google公司成立的開(kāi)放手機(jī)聯(lián)盟持續(xù)地領(lǐng)導(dǎo)及開(kāi)發(fā)。主要用于移動(dòng)設(shè)備,如智能手機(jī)、平板電腦、電視盒子等,是目前世界上市場(chǎng)占有率最高的移動(dòng)操作系統(tǒng)。安卓的發(fā)展可以說(shuō)是非常迅速,2017年3月,安卓系統(tǒng)的全球網(wǎng)絡(luò)流量和設(shè)備超過(guò)微軟的Windows系統(tǒng),正式成為全球第一大操作系統(tǒng)。國(guó)內(nèi)的廠商比如小米、華為、oppo、vivo等等主流廠商。使用的也都是安卓系統(tǒng)。都是在安卓系統(tǒng)的基礎(chǔ)上針對(duì)自家的品牌特色進(jìn)行修改。2.2Springboot框架Springboot框架是由Pivotal團(tuán)隊(duì)基于Spring4.0進(jìn)行設(shè)計(jì)的,它繼承的Spring優(yōu)秀特性的同時(shí)通過(guò)簡(jiǎn)化配置來(lái)進(jìn)一步簡(jiǎn)化Spring應(yīng)用的搭建和開(kāi)發(fā)的過(guò)程。此外還繼承大量的框架使依賴包版本沖突和引用不穩(wěn)定的問(wèn)題得到了很好的解決。Springboot有兩個(gè)很重要的策略:開(kāi)箱即用和約定優(yōu)于配置。開(kāi)箱即用(Outofbox)指在開(kāi)發(fā)過(guò)程中,通過(guò)maven項(xiàng)目文件中的pom文件給項(xiàng)目添加依賴包,之后就可以使用相對(duì)應(yīng)的注解來(lái)代替繁瑣的xml配置文件和管理生命周期。這個(gè)特點(diǎn)使開(kāi)發(fā)人員擺脫了復(fù)雜的配置文件工作和依賴管理工作,使開(kāi)發(fā)人員可以更加注重于業(yè)務(wù)邏輯的實(shí)現(xiàn)。約定優(yōu)于配置,Conventionoverconfiguration,是由springboot本身來(lái)配置目標(biāo)的結(jié)構(gòu),開(kāi)發(fā)者負(fù)責(zé)在結(jié)構(gòu)中添加信息的一種軟件設(shè)計(jì)范式。這個(gè)特點(diǎn)雖然降低了一些靈活性,使得bug的定位復(fù)雜一些,但是他減少了開(kāi)發(fā)人員需要做出決定的數(shù)量,減少了大量的xml配置工作,可以將代碼編譯打包實(shí)現(xiàn)工作的自動(dòng)化。2.3MySQLMysql由sun公司創(chuàng)建,然后又被甲骨文公司收購(gòu)。由于它的性能高、成本低、可靠性高等有點(diǎn)。成為了最流行的開(kāi)源數(shù)據(jù)庫(kù)。通過(guò)key-values鍵值對(duì)的方式,也被我們稱為關(guān)系型數(shù)據(jù)庫(kù)。被廣泛地用在各種中小型網(wǎng)站上。隨著MySQL的不斷發(fā)展完善,它也逐漸地被大規(guī)模網(wǎng)站和應(yīng)用程序采用,比如Google和維基百科等網(wǎng)站都采用了MySQL。還有非常流行的開(kāi)源組合LAMP其中的M就代表著MySQL。MySQL對(duì)PHP有著非常好的的支持,而目前最流行的Web開(kāi)發(fā)語(yǔ)言是PHP。他采用了GPL協(xié)議,你甚至可以通過(guò)修改源碼來(lái)開(kāi)發(fā)實(shí)現(xiàn)自己的mysql系統(tǒng)。2.4開(kāi)發(fā)軟件環(huán)境AndroidStudio是一個(gè)基于IntelliJIDEA,專門(mén)為Android開(kāi)發(fā)特殊定制的一個(gè)集成開(kāi)發(fā)環(huán)境。2013年5月16日在Google發(fā)布會(huì)上發(fā)布,可以在windows,macos上運(yùn)行。還提供了基于Gradle的構(gòu)建支持,提供了專屬于Android的重構(gòu)和快速修復(fù),支持ProGuard和應(yīng)用前面,基于模板的向?qū)?lái)生成比如說(shuō)登錄,側(cè)滑導(dǎo)航欄等等,擁有功能非常強(qiáng)大的布局編輯器,可以自由地拖拽ui控件的位置并預(yù)覽效果。是一個(gè)非常強(qiáng)大的工具。他還內(nèi)置apk分析儀,通過(guò)檢查應(yīng)用APK文件的內(nèi)容,找到機(jī)會(huì)減小Android應(yīng)用大小,即使該文件不是使用AndroidStudio構(gòu)建的。檢查清單文件、資源和DEX文件。比較兩個(gè)APK,了解您的應(yīng)用大小在應(yīng)用版本之間有何變化。集成了一個(gè)仿真安卓虛擬機(jī)。還擁有實(shí)時(shí)分析器,通過(guò)內(nèi)置的分析工具可以提供應(yīng)用的CPU、內(nèi)存和網(wǎng)絡(luò)活動(dòng)的實(shí)時(shí)統(tǒng)計(jì)信息。通過(guò)記錄方法跟蹤、檢查堆和分配以及查看傳入和傳出的網(wǎng)絡(luò)負(fù)載來(lái)識(shí)別性能瓶頸。2.5開(kāi)發(fā)硬件環(huán)境筆記本一臺(tái):AMDRyzen74800H16.0GBRTX2060Windows11專業(yè)版21H2手機(jī)一臺(tái):RedmiNote7Pro6.0GBMIUI穩(wěn)定版12.5.4Android10顯示器一臺(tái):AOC23.8英寸I2490VXH/BS3系統(tǒng)分析與設(shè)計(jì)3.1需求功能分析注冊(cè)功能:用戶輸入對(duì)應(yīng)的信息即可完成注冊(cè)。登錄功能:用戶在登錄界面輸入信息系統(tǒng)驗(yàn)證無(wú)誤后即可登錄成功。程序首頁(yè):首頁(yè)有一個(gè)廣告輪播圖和一個(gè)和搜索框和推薦的商品列表。限制物品交易車:用戶可以將商品添加到限制物品交易車,并在限制物品交易車可以調(diào)整數(shù)量顯示合計(jì)金額。商品分類:在商品分類列表可以根據(jù)所選的分類并顯示對(duì)應(yīng)分類下的商品。商品查找:在搜索欄輸入商品想要查詢的商品,可以查詢到對(duì)應(yīng)的商品,支持模糊搜索。商品詳情頁(yè):商品詳情頁(yè)有商品的輪播圖,還可以點(diǎn)擊查看大圖,此外可以對(duì)商品進(jìn)行收藏,查看商品評(píng)分??头稍儯涸诳头稍冺?yè)可以與客服進(jìn)行溝通。我的收藏:在我的收藏可以看到用戶收藏的商品列表瀏覽記錄:在瀏覽記錄頁(yè)面可以查看曾經(jīng)瀏覽過(guò)哪些商品。用戶打開(kāi)app后默認(rèn)進(jìn)入商城首頁(yè),可以進(jìn)行商品的瀏覽,根據(jù)商品分類查看商品,輸入關(guān)鍵詞進(jìn)行模糊搜索商品以及查看商品詳情等基礎(chǔ)功能。不過(guò)當(dāng)用戶點(diǎn)擊限制物品交易車用戶信息等需要登錄才能使用的功能時(shí),會(huì)彈出提示框提示用戶前往登錄,用戶可以選擇取消或者繼續(xù)登錄操作。用戶在進(jìn)行注冊(cè)登錄之后,可以進(jìn)行瀏覽商品,挑選自己喜歡的商品添加到限制物品交易車,完善個(gè)人信息比如收貨地址聯(lián)系方式等等,然后就可以生成訂單進(jìn)行支付,就可以完成商品的購(gòu)買(mǎi)。還可以查看瀏覽記錄,我的收藏等等?;谝陨峡梢缘贸鰣D3-1用戶用例圖、圖3-2限制物品交易流程圖、圖3-3應(yīng)用的功能結(jié)構(gòu)圖。圖STYLEREF1\s3SEQ圖\*ARABIC\s11用戶用例圖圖STYLEREF1\s3SEQ圖\*ARABIC\s12限制物品交易流程圖圖STYLEREF1\s3SEQ圖\*ARABIC\s13功能結(jié)構(gòu)圖3.2性能分析啟動(dòng)時(shí)間:在普遍的手機(jī)配置下,應(yīng)用的啟動(dòng)時(shí)間不應(yīng)超過(guò)5s。響應(yīng)時(shí)間:忽略網(wǎng)絡(luò)和設(shè)備的配置影響,本地測(cè)試點(diǎn)擊響應(yīng)速度應(yīng)為0.5s以內(nèi)。運(yùn)行內(nèi)存占用:用戶正常操作情況之下,運(yùn)行內(nèi)存占用不應(yīng)超過(guò)100Mb。硬盤(pán)空間占用:用戶在正常使用的情況之下,包括緩存,合計(jì)商城app所占硬盤(pán)空間不能超過(guò)700M;3.3數(shù)據(jù)庫(kù)設(shè)計(jì)在一個(gè)系統(tǒng)設(shè)計(jì)中當(dāng)中,數(shù)據(jù)庫(kù)的選擇和設(shè)計(jì)尤為重要。數(shù)據(jù)庫(kù)的選擇和設(shè)計(jì)直接影響到系統(tǒng)的性能和應(yīng)用的設(shè)計(jì)。本系統(tǒng)采用了當(dāng)下很流行的開(kāi)源數(shù)據(jù)庫(kù)MySQL。他以開(kāi)源免費(fèi)且性能良好的特點(diǎn)被許多公司所使用。然后我還選擇了NavicatPremium作為數(shù)據(jù)庫(kù)操作的輔助工具。他有著方便易用的可視化界面。3.3.1數(shù)據(jù)庫(kù)的整體設(shè)計(jì)數(shù)據(jù)庫(kù)方面共設(shè)計(jì)了13個(gè)表。分別是用戶表(tbl_user)、用戶地址表(tbl_address)、品牌表(tbl_brand)、優(yōu)惠券信息表(tbl_discount_volume)、物流表(tbl_logistics)、訂單表(tbl_order)、商品表(tbl_product)、商品圖片表(tbl_product_pic)、商品類型表(tbl_product_type)、用戶瀏覽記錄表(tbl_user_browse_record)、限制物品交易車表(tbl_user_cart)、用戶收藏表(tbl_user_collection)、用戶反饋表(tbl_user_feedback)??傻脭?shù)據(jù)庫(kù)的整體關(guān)系模型如圖3-4所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s14數(shù)據(jù)庫(kù)的整體關(guān)系模型3.3.2數(shù)據(jù)庫(kù)表的具體設(shè)計(jì)(1)用戶表(tbl_user)用戶表?yè)碛杏脩鬷d(user_id)、用戶名(username)、密碼(password)、昵稱(nike_name)、頭像(head_pic)、聯(lián)系電話(telno)、郵箱(email)字段。設(shè)置用戶id為主鍵,自動(dòng)生成。表結(jié)構(gòu)如圖3-5用戶表表結(jié)構(gòu)所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s15用戶表表結(jié)構(gòu)(2)用戶地址表(tbl_address)用戶地址表?yè)碛械刂穒d(address_id)為主鍵采用自動(dòng)生成,此外還有用戶id(user_id)、收貨人(Consignee)、手機(jī)號(hào)(telno)、省市區(qū)(province_and_city)和詳細(xì)地址(detailed_address)字段。可得用戶地址表圖,如圖3-6所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s16用戶地址表表結(jié)構(gòu)(3)品牌表(tbl_brand)品牌表?yè)碛衅放苅d(brand_id),品牌名(brand_name)和品牌圖片地址(brand_pic_url)。品牌表結(jié)構(gòu)圖如圖3-7所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s17品牌表結(jié)構(gòu)圖(4)優(yōu)惠券信息表(tbl_discount_volume)優(yōu)惠券信息表有優(yōu)惠券id(discount_volume_id)、用戶id(user_id)、優(yōu)惠券類型(discount_volume_type)、優(yōu)惠券說(shuō)明字段(preferential_volume_content)。優(yōu)惠券信息表結(jié)構(gòu)圖如圖3-8所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s18優(yōu)惠券信息表結(jié)構(gòu)圖(5)物流表(tbl_logistics)物流表有發(fā)貨方式(preferential_volume_content)、物流id(logistics_id)、物流公司(logistics_company)、運(yùn)單id(waybill_id)、物流詳情(logistics_details)字段。其中物流id字段采用主鍵自動(dòng)生成策略。物流表結(jié)構(gòu)圖,如圖3-9所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s19物流表結(jié)構(gòu)圖(6)訂單表(tbl_order)訂單表?yè)碛杏唵蝘d(order_id)、訂單日期(order_date)、用戶id(user_id)、訂單說(shuō)明(receiver_information)、訂單金額(order_money)、訂單狀態(tài)(order_status)、優(yōu)惠券id(discount_volume_id)、物流id(logistics_id)、運(yùn)費(fèi)(freight)、發(fā)票(invoice_rise)、支付模式(delivery_mode)、支付時(shí)間(delivery_time)、付款方式(payment_method)字段。其中訂單id為主鍵采用自增的策略,通過(guò)用戶id、優(yōu)惠券id、物流id去關(guān)聯(lián)相應(yīng)的表。訂單表結(jié)構(gòu)圖如圖3-10所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s110訂單表結(jié)構(gòu)圖(7)商品表(tbl_product)商品表?yè)碛猩唐穒d(product_id)、商品類型id(product_type_id)、商品名(product_name)、商品原價(jià)(old_price)、商品描述(description)、商品新價(jià)格(new_price)、商品圖片(product_pic_url)、商品狀態(tài)(flag)、商品單位(unit)、品牌id(brand_id)、庫(kù)存(inventory)、上架時(shí)間(time)、商品規(guī)格(specification)字段。其中,商品id為主鍵,采用自增的策略。通過(guò)商品類型id、品牌id去關(guān)聯(lián)相應(yīng)的表。商品表結(jié)構(gòu)圖如圖3-11所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s111商品表結(jié)構(gòu)圖(8)商品圖片表(tbl_product_pic)商品圖片表?yè)碛猩唐穲D片id(pic_id)、商品id(product_id)、商品圖片路徑(product_pic_url)字段。其中商品圖片id采用自增策略。通過(guò)商品id去管理相對(duì)應(yīng)的商品。商品圖片表結(jié)構(gòu)圖如圖3-12所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s112商品圖片表結(jié)構(gòu)圖(9)商品類型表(tbl_product_type)商品類型表有商品類型id(product_type_id)商品類型(product_type_name)、商品類型圖(product_type_pic_url)字段。其中商品類型id為自增的主鍵。商品類型表結(jié)構(gòu)圖如圖3-13所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s113商品類型表結(jié)構(gòu)圖(10)用戶瀏覽記錄表(tbl_user_browse_record)用戶瀏覽記錄表有用戶瀏覽記錄id(user_browse_record_id)、用戶id(user_id)、商品id(product_id)字段。其中以用戶瀏覽記錄編號(hào)為自增主鍵,通過(guò)用戶id和商品id去關(guān)聯(lián)用戶表(tbl_user)和商品表(tbl_product)。用戶瀏覽記錄表結(jié)構(gòu)圖如圖3-14所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s114用戶瀏覽記錄表結(jié)構(gòu)圖(11)限制物品交易車表(tbl_user_cart)限制物品交易車表?yè)碛杏脩鬷d、商品數(shù)量、商品id字段。通過(guò)商品id去關(guān)聯(lián)商品表(tbl_product)。限制物品交易車表結(jié)構(gòu)圖如圖3-15所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s115限制物品交易車表結(jié)構(gòu)圖如圖(12)用戶收藏表(tbl_user_collection)用戶收藏表有用戶收藏id(tbl_product)、用戶id(user_id)、商品編號(hào)id(product_id)字段。其中用戶收藏id為遞增主鍵,通過(guò)用戶id和商品id分別對(duì)應(yīng)去關(guān)聯(lián)用戶表(tbl_user)和商品表(tbl_product)。用戶收藏表結(jié)構(gòu)圖如圖3-16所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s116用戶收藏表結(jié)構(gòu)圖(13)用戶反饋表(tbl_user_feedback)用戶反饋表?yè)碛杏脩舴答乮d(user_feedback)、商品id(product_id)、用戶id(user_id)、聯(lián)系方式(contact_information)、反饋內(nèi)容(feedback_content)、星級(jí)(star_class)的字段。以用戶反饋編號(hào)為主鍵,采用遞增的策略。通過(guò)用戶id和商品id分別去連接用戶表(tbl_user)和商品表(tbl_product)。用戶反饋表結(jié)構(gòu)圖如圖3-17所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s117用戶反饋表結(jié)構(gòu)圖3.4服務(wù)端設(shè)計(jì)服務(wù)端負(fù)責(zé)為限制物品交易app提供api接口。采用經(jīng)典是MVC(Model-View-Controller)設(shè)計(jì)模式,結(jié)構(gòu)清晰,方便理解使用簡(jiǎn)單。限制物品交易app為了展示數(shù)據(jù)庫(kù)的數(shù)據(jù),通過(guò)http向服務(wù)端發(fā)送請(qǐng)求。服務(wù)端收到限制物品交易app發(fā)來(lái)的請(qǐng)求后,進(jìn)行相應(yīng)的操作。然后將數(shù)據(jù)返回到限制物品交易app。主要實(shí)現(xiàn)的是對(duì)數(shù)據(jù)庫(kù)的增刪改查功能。3.5限制物品交易app前端設(shè)計(jì)3.5.1用戶注冊(cè)登錄功能當(dāng)用戶需要進(jìn)行注冊(cè)登錄的時(shí)候,可以跳轉(zhuǎn)至相應(yīng)的注冊(cè)或者登錄頁(yè)面來(lái)實(shí)現(xiàn)注冊(cè)登錄。在注冊(cè)頁(yè)面,用戶輸入用戶名和兩次密碼,驗(yàn)證用戶名沒(méi)有重復(fù)和兩次密碼輸入一致的情況下即可完成注冊(cè)。用戶注冊(cè)完畢后會(huì)自動(dòng)給你跳轉(zhuǎn)到登錄頁(yè)面,用戶可以輸入用戶名和密碼進(jìn)行登錄。如果忘記密碼,也可以選擇找回密碼在找回密碼頁(yè)面進(jìn)行找回密碼操作。同時(shí)用戶名和密碼的輸入加入了正則表達(dá)式判斷用戶的輸入是否符合規(guī)范,避免密碼過(guò)短過(guò)于簡(jiǎn)單或者是用戶名太短的問(wèn)題。用戶的注冊(cè)以及登錄的流程圖如圖3-18和圖3-19所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s118用戶注冊(cè)流程圖圖STYLEREF1\s3SEQ圖\*ARABIC\s119用戶登錄流程圖3.5.2限制物品交易流程設(shè)計(jì)商品瀏覽功能為最基本的功能,即便用戶不登陸也可以使用。用戶通過(guò)各種商品列表頁(yè)可以進(jìn)行瀏覽商品,然后點(diǎn)擊可以進(jìn)入商品詳情頁(yè)。當(dāng)用戶登錄后還可以在商品詳情頁(yè)用戶可以對(duì)商品進(jìn)行加入限制物品交易車,與客服聊天,收藏商品等操作。用戶登錄后商品瀏覽操作功能流程圖如圖3-20所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s120用戶登錄后商品瀏覽操作功能流程圖4商城功能具體實(shí)現(xiàn)App的文件結(jié)構(gòu)見(jiàn)圖4-1。Activity文件為主要的邏輯實(shí)現(xiàn)部分,而res/layout/文件夾下存放的是Android的布局文件。圖STYLEREF1\s4SEQ圖\*ARABIC\s11App的文件結(jié)構(gòu)4.1注冊(cè)登錄頁(yè)面的實(shí)現(xiàn)注冊(cè)登錄頁(yè)面,用戶可以輸入賬號(hào)密碼通過(guò)驗(yàn)證后自動(dòng)跳轉(zhuǎn)至首頁(yè)。針對(duì)用戶的登錄行為做了比較晚上的判斷。如用戶未輸入用戶名或密碼點(diǎn)擊登錄的話,會(huì)提示用戶名/密碼不能為空。用戶也可以點(diǎn)擊下面的隨便看看,跳過(guò)登錄步驟進(jìn)行商城的瀏覽。登錄界面如圖4-2所示。圖STYLEREF1\s4SEQ圖\*ARABIC\s12用戶登錄界面圖在注冊(cè)界面用戶可以輸入用戶名和密碼,通過(guò)驗(yàn)證后即可注冊(cè)成功。如果輸入過(guò)短或者使用連續(xù)數(shù)字等安全性極低的密碼登錄,則會(huì)提示用戶修改密碼以確保安全。具體界面見(jiàn)圖4-3用戶注冊(cè)界面圖。圖STYLEREF1\s4SEQ圖\*ARABIC\s13用戶注冊(cè)界面圖4.2app首頁(yè)的實(shí)現(xiàn)app首頁(yè)上方是是一個(gè)搜索框,支持模糊搜索。用戶可以輸入相關(guān)的信息進(jìn)行搜索。接下來(lái)是輪播圖,可以展示商品的大圖。以下是幾個(gè)分類,下方則是根據(jù)用戶的喜好來(lái)推薦商品。而最下方則是底部導(dǎo)航欄,是由幾個(gè)fragment嵌套到activity完成。App首頁(yè)見(jiàn)圖4-4app首頁(yè)圖。圖STYLEREF1\s4SEQ圖\*ARABIC\s14app首頁(yè)圖Fragment的切換通過(guò)replaceFragment()方法,傳入對(duì)應(yīng)的fragment來(lái)實(shí)現(xiàn),主要的代碼如下。privatevoidreplaceFragment(Fragmentfragment){//1.實(shí)例布局對(duì)象(FragmentManager)fragmentManager=getSupportFragmentManager();//2.實(shí)例化FragmentTransactionFragmentTransactiontransaction=fragmentManager.beginTransaction();//3.設(shè)置動(dòng)作transaction.replace(R.id.fragmentlayout,fragment);//4.執(zhí)行事務(wù)mit();}4.3商品列表頁(yè)實(shí)現(xiàn)商品列表頁(yè)實(shí)現(xiàn)的地方這里就選取熱門(mén)單品分類來(lái)說(shuō)明。整體界面見(jiàn)圖4-5商品列表圖.圖STYLEREF1\s4SEQ圖\*ARABIC\s15商品列表圖列表頁(yè)主要是使用了官方自帶的gridView來(lái)實(shí)現(xiàn),通過(guò)設(shè)置單個(gè)商品item,然后通過(guò)服務(wù)端返回?cái)?shù)據(jù)循環(huán)遍歷出整個(gè)列表。主要實(shí)現(xiàn)的偽代碼如下:list=商品數(shù)據(jù);ProductAdapteradapterItemBrand=初始化單個(gè)商品的item,也就是適配器;gridView=findViewById(R.duct_grid_view);gridView.setAdapter(adapterItemBrand);//設(shè)置列表的適配器gridView.setOnItemClickListener(newAdapterView.OnItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){//監(jiān)聽(tīng)點(diǎn)擊事件 //通過(guò)傳入相關(guān)信息從而實(shí)現(xiàn)點(diǎn)擊某個(gè)商品跳轉(zhuǎn)到相應(yīng)的商品詳情頁(yè)}});4.4限制物品交易車實(shí)現(xiàn)限制物品交易車實(shí)現(xiàn)相對(duì)復(fù)雜些,主要需要考慮的因素有商品的多選,數(shù)量修改,選中商品價(jià)格的合計(jì)金額。不能簡(jiǎn)單的設(shè)置單個(gè)適配器item就可以實(shí)現(xiàn),要往適配器里添加自定義按鈕,實(shí)現(xiàn)數(shù)量的修改。對(duì)數(shù)量的調(diào)整進(jìn)行限制,要求數(shù)量是不超過(guò)商品庫(kù)存的非0自然數(shù),如果商品數(shù)量減到1時(shí)還繼續(xù)點(diǎn)擊減數(shù)量,則會(huì)提醒用戶是否把該商品移出限制物品交易車。此外,如果想快速?gòu)南拗莆锲方灰总噭h除某個(gè)商品,在限制物品交易車左滑可以顯示刪除按鈕。具體頁(yè)面見(jiàn)圖4-6限制物品交易車圖和圖4-7限制物品交易車左滑圖。圖STYLEREF1\s4SEQ圖\*ARABIC\s16限制物品交易車圖圖STYLEREF1\s4SEQ圖\*ARABIC\s17限制物品交易車左滑圖主要實(shí)現(xiàn)的偽代碼如下:holder.cut.setOnClickListener(newView.OnClickListener(){//單個(gè)item控制數(shù)量減的點(diǎn)擊事件@OverridepublicvoidonClick(Viewview){finalintpostition=點(diǎn)擊的坐標(biāo)UserCartobject=初始化點(diǎn)擊對(duì)象;if(如果商品數(shù)量=1){提示用戶商品數(shù)量為1,如果繼續(xù)點(diǎn)擊則會(huì)把商品刪除出限制物品交易車}else{holder.carProductNum.setText(“”)修改商品數(shù)量減一;setNum(userCart);//設(shè)置界面顯示的商品數(shù)量}}});控制商品添加的主要實(shí)現(xiàn)偽代碼如下: //單個(gè)item控制數(shù)量加的點(diǎn)擊事件holder.add.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){finalintpostition=找到點(diǎn)擊的坐標(biāo)。UserCartobject=objects.get(postition);檢查庫(kù)存是否足夠 holder.carProductNum.setText();//控制商品數(shù)量加1將商品數(shù)量顯示到界面}});4.5商品詳情頁(yè)商品詳情頁(yè)是展示商品信息的主要頁(yè)面,從上往下依次是頂部顯示商品名稱,然后到大的輪播圖,用來(lái)展示商品。點(diǎn)擊還可以進(jìn)入大圖瀏覽,支持雙指移動(dòng)縮放等基礎(chǔ)操作,方便用戶更好的了解商品。然后界面上還有商品的市場(chǎng)價(jià),也稱原價(jià),還有現(xiàn)在的價(jià)格(會(huì)員價(jià)),還可以看到商品的評(píng)分。用戶可以選擇數(shù)量進(jìn)行添加到限制物品交易車。整體界面見(jiàn)圖4-8商品詳情頁(yè)圖。圖STYLEREF1\s4SEQ圖\*ARABIC\s18商品詳情頁(yè)圖如果用戶想要進(jìn)行加入限制物品交易車功能的時(shí)候,如果沒(méi)有登錄的話會(huì)彈出對(duì)話框提示先去登錄。見(jiàn)圖4-9對(duì)話框提示圖。圖STYLEREF1\s4SEQ圖\*ARABIC\s19對(duì)話框提示圖該功能實(shí)現(xiàn)代碼主要為privatevoidgoLogin(){/*@setIcon設(shè)置對(duì)話框圖標(biāo)*@setTitle設(shè)置對(duì)話框標(biāo)題*@setMessage設(shè)置對(duì)話框消息提示*setXXX方法返回Dialog對(duì)象,因此可以鏈?zhǔn)皆O(shè)置屬性*/finalAlertDialog.BuildernormalDialog=newAlertDialog.Builder(DetailActivity.this);normalDialog.setTitle("提示");normalDialog.setMessage("您需要登陸以后才可以使用該功能喲~");normalDialog.setPositiveButton("去登陸",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){//...To-doIntentintent=newIntent(DetailActivity.this,LoginActivity.class);startActivity(intent);}});normalDialog.setNegativeButton("取消",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){//點(diǎn)擊取消不用執(zhí)行任何事件}});//顯示對(duì)話框normalDialog.show();}商品的輪播圖的實(shí)現(xiàn)主要是調(diào)用了一個(gè)開(kāi)源的banner框架實(shí)現(xiàn)publicvoidbanner(){for(){list_path.add(list_path.get(0));//通過(guò)for循環(huán)給輪播圖加入數(shù)據(jù)}Bannerbanner=findViewById(R.id.detail_img);banner.setImageLoader(newDetailActivity.MyLoader());banner.setImages(list_path);//設(shè)置輪播的動(dòng)畫(huà)效果,內(nèi)含多種特效,可點(diǎn)入方法內(nèi)查找后內(nèi)逐一體驗(yàn)banner.setBannerAnimation(Transformer.Default);//設(shè)置輪播圖的標(biāo)題集合banner.setBannerTitles(list_title);//設(shè)置輪播間隔時(shí)間banner.setDelayTime(3000);//設(shè)置是否為自動(dòng)輪播,默認(rèn)是“是”。banner.isAutoPlay(true);//設(shè)置指示器的位置,小點(diǎn)點(diǎn),左中右。banner.setIndicatorGravity(BannerConfig.CENTER);//以上內(nèi)容都可寫(xiě)成鏈?zhǔn)讲季?,這是輪播圖的監(jiān)聽(tīng)。比較重要。方法在下面。//必須最后調(diào)用的方法,啟動(dòng)輪播圖。banner.start();}4.6咨詢客服頁(yè)的實(shí)現(xiàn)客服聊天頁(yè)主要是通過(guò)即使渲染的列表完成。首先根據(jù)聊天框等制作相對(duì)的item。然后當(dāng)服務(wù)端收到聊天數(shù)據(jù)的時(shí)候,將聊天內(nèi)容以及用戶信息等添加到RecyclerView然后再進(jìn)行渲染。具體界面見(jiàn)圖4-10咨詢客服聊天圖。圖STYLEREF1\s4SEQ圖\*ARABIC\s110咨詢客服聊天圖主要的代碼如下展示列表showMsg()方法privatevoidshowMsg(){msgList.add(msg);//把消息添加到列表adapter.notifyItemChanged(msgList.size()-1);//當(dāng)有新消息時(shí),刷新RecyclerView中的顯示msgRecyclerView.scrollToPosition(msgList.size()-1);//將RecyclerView定位到最后一行}//監(jiān)聽(tīng)發(fā)送按鈕send.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Stringcontent=userInputText.getText().toString();if(!"".equals(content)){ //判斷如果輸入不為空則繼續(xù)執(zhí)行代碼msg=newMsg(content,Msg.TYPE_SENT);showMsg();//展示信息userInputText.setText("");//清空輸入欄}}});4.7商品分類搜索頁(yè)在該頁(yè)面用戶可以選擇通過(guò)分類來(lái)進(jìn)行篩選查找相關(guān)的商品,也可以在上方輸入關(guān)鍵字來(lái)進(jìn)行模糊搜索商品。具體界面如圖4-11商品分類搜索頁(yè)圖。圖表4-11.商品分類搜索頁(yè)主要實(shí)現(xiàn)偽代碼如下://監(jiān)聽(tīng)輸入文本框的文本改變searchView.setOnQueryTextListener(newSearchView.OnQueryTextListener(){@OverridepublicbooleanonQueryTextSubmit(Stringquery){//監(jiān)聽(tīng)用戶點(diǎn)擊事件,用戶輸入商品關(guān)鍵字后點(diǎn)擊搜索后跳轉(zhuǎn)至相應(yīng)的搜索結(jié)果頁(yè)面Intentintent=實(shí)例化intent對(duì)象;intent.putExtra("search",query);//向intent插入數(shù)據(jù)用戶輸入框的數(shù)據(jù);intent.putExtra(”查詢結(jié)果");//向intent插入數(shù)據(jù),拼湊出查詢結(jié)果的標(biāo)題;startActivity(intent);//執(zhí)行跳轉(zhuǎn)}});根據(jù)服務(wù)端返回的分類進(jìn)行展示,用戶點(diǎn)擊即可轉(zhuǎn)到相關(guān)分類的偽代碼如下:list=服務(wù)端返回的商品類型listView=定位listView,進(jìn)行初始化。ProductTypeAdapterproductTypeAdapter=實(shí)例化適配器listView.setAdapter(productTypeAdapter);//設(shè)置適配器//監(jiān)聽(tīng)點(diǎn)擊事件listView.setOnItemClickListener(newAdapterView.OnItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){Intentintent=實(shí)例化intentintent.putExtra("typeId",list.get(position).getProductTypeId());//為跳轉(zhuǎn)插入數(shù)據(jù)getContext().startActivity(intent);//開(kāi)始跳轉(zhuǎn)}});5服務(wù)端功能具體實(shí)現(xiàn)服務(wù)端由springboot實(shí)現(xiàn),服務(wù)端文件結(jié)構(gòu)如圖5-1。其中config用來(lái)儲(chǔ)存服務(wù)端的相關(guān)配置信息,比如說(shuō)數(shù)據(jù)庫(kù)配置文件,日志配置文件,應(yīng)用配置文件等等。Controller文件里放的是各種api接口。Dao包里主要是操作數(shù)據(jù)庫(kù)的集成支持,方便快速地對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,而model放的是實(shí)體類,主要是根據(jù)數(shù)據(jù)庫(kù)文件來(lái)生成。圖STYLEREF1\s5SEQ圖\*ARABIC\s11服務(wù)端文件結(jié)構(gòu)圖5.1登錄注冊(cè)功能登錄功能由login()方法實(shí)現(xiàn),服務(wù)端接受客戶端傳來(lái)的user對(duì)象,然后通過(guò)遍歷數(shù)據(jù)庫(kù),驗(yàn)證用戶名和密碼是否正確,如果正確則返回用戶信息的數(shù)據(jù)。主要實(shí)現(xiàn)代碼如下@RequestMapping({"/login"})publicUserlogin(@RequestBodyUseruser){UserExampleuExample=newUserExample();uExample.createCriteria().andUsernameEqualTo(user.getUsername()).andPasswordEqualTo(user.getPassword());List<User>list=this.userMapper.selectByExample(uExample);if(list.size()>0){return(User)list.get(0);}returnnull;}注冊(cè)功能類似通過(guò)接收一個(gè)User對(duì)象,然后檢查用戶名是否存在,如果不存在將用戶數(shù)據(jù)插入數(shù)據(jù)庫(kù)然后返回用戶信息即可完成@RequestMapping({"/register"})publicUserjoin(@RequestBodyUseruser){UserExampleuExample=newUserExample();uExample.createCriteria().andUsernameEqualTo(user.getUsername());List<User>list=this.userMapper.selectByExample(uExample);if(list.size()>0){returnnull;}this.userMapper.insert(user);returnuser;}5.2商品列表查詢功能商品列表功能比較簡(jiǎn)單,可分為查詢所有商品,根據(jù)查詢,模糊查詢等。就拿根據(jù)品牌查詢做列子。限制物品交易app傳入相對(duì)應(yīng)的品牌id,然后在服務(wù)端通過(guò)傳入的品牌id去搜索滿足條件的商品最后再返回。實(shí)現(xiàn)代碼如下:@RequestMapping({"/queryProductByBrand"})publicHashMapqueryProductByBrand(intbrandId){HashMapresult=newHashMap();ProductExampleproductExample=newProductExample();productExample.createCriteria().andBrandIdEqualTo(Integer.valueOf(brandId));result.put("result","succes");result.put("product",ductMapper.selectByExample(productExample));returnresult;}5.3限制物品交易車添加/修改功能當(dāng)用戶在限制物品交易app上點(diǎn)擊添加限制物品交易車的時(shí)候,會(huì)向后端發(fā)送一個(gè)UserCart對(duì)象的http請(qǐng)求,該對(duì)象包含用戶的id以及商品的信息等。服務(wù)端收到后,會(huì)遍歷查詢找到該用戶,然后再找到相對(duì)應(yīng)的商品,對(duì)限制物品交易車表進(jìn)行插入操作。具體代碼實(shí)現(xiàn)如下://限制物品交易車添加功能@Transactional(propagation=Propagation.REQUIRED,rollbackFor={Exception.class})@RequestMapping({"/addUserCartByUser"})publicUserCartaddUserCartByUser(@RequestBodyUserCartuserCart)throwsException{UserCartExampleuserCartExample=newUserCartExample();UserCartExampleuserCartExample2=newUserCartExample();userCartExample.createCriteria().andUserIdEqualTo(userCart.getUserId());List<UserCart>list=this.userCartMapper.selectByExample(userCartExample);if(list.size()>0){userCartExample2.createCriteria().andUserIdEqualTo(userCart.getUserId()).andPr

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論