版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
沈陽航空航天大學(xué)課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)名稱:嵌入式系統(tǒng)綜合課程設(shè)計(jì)課程設(shè)計(jì)題目:轎車租賃系統(tǒng)手機(jī)APP的實(shí)現(xiàn)院(系):計(jì)算機(jī)學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)(嵌入式系統(tǒng)方向)班級:24010106學(xué)號:姓名:張迪指導(dǎo)教師:曹一鵬學(xué)術(shù)誠信聲明本人聲明:所呈交的報(bào)告(含電子版及數(shù)據(jù)文件)是我個人在導(dǎo)師指導(dǎo)下獨(dú)立進(jìn)行設(shè)計(jì)工作及取得的研究結(jié)果。盡我所知,除了文中特別加以標(biāo)注或致謝中所羅列的內(nèi)容以外,報(bào)告中不包含其他人己經(jīng)發(fā)表或撰寫過的研究結(jié)果,也不包含其它教育機(jī)構(gòu)使用過的材料。與我一同工作的同學(xué)對本研究所做的任何貢獻(xiàn)均己在報(bào)告中做了明確的說明并表示了謝意。報(bào)告資料及實(shí)驗(yàn)數(shù)據(jù)若有不實(shí)之處,本人愿意接受本教學(xué)環(huán)節(jié)“不及格”和“重修或重做”的評分結(jié)論并承擔(dān)相關(guān)一切后果。本人簽名:日期:年月日
沈陽航空航天大學(xué)課程設(shè)計(jì)任務(wù)書課程設(shè)計(jì)名稱XXXX課程設(shè)計(jì)專業(yè)學(xué)生姓名班級學(xué)號題目名稱起止日期年月日起至年月日止課設(shè)內(nèi)容和要求:參考資料:教研室審核意見:教研室主任簽字:指導(dǎo)教師(簽名)年月日學(xué)生(簽名)年月日
課程設(shè)計(jì)總結(jié):本次的嵌入式系統(tǒng)綜合課程設(shè)計(jì)是汽車租賃系統(tǒng)手機(jī)APP的實(shí)現(xiàn),要求基于Andriod操作系統(tǒng)實(shí)現(xiàn),框架結(jié)構(gòu)也比較復(fù)雜,因此對于從沒有接觸過Eclipse的我來說無疑是很難的。在剛開始的時候,我不知道從何下手,后來通過觀看網(wǎng)上的Java和Android的教學(xué)視頻資源,才慢慢對制作APP的過程有一個大體的了解,通過幾周的深入學(xué)習(xí)才理解了相關(guān)編程語句像頁面跳轉(zhuǎn)語句、數(shù)據(jù)庫相關(guān)語句及布局語句等等。但對自己的課設(shè)問題仍然沒有一個清晰的思路,于是后來我邊視頻邊做筆記,把重點(diǎn)部分記錄下來后,我開始在筆記上規(guī)劃我的APP的每個Layout,然后對癥下藥,這樣果然有明顯的提高。后經(jīng)老師檢查,老師建議從用戶的角度更加完善此APP,于是通過和老師的溝通及讓同學(xué)提意見,我最終完成了功能完善、界面友好和無重大Bug的APP。這次的經(jīng)歷讓我懂得,付出才會有回報(bào),知識是通過學(xué)習(xí)得到,單只有把學(xué)到的知識運(yùn)用起來才是發(fā)揮知識的最大的價值
目錄TOC\o"1-3"\h\z第1章系統(tǒng)分析 11.1需求分析 11.2硬件分析 11.2.1實(shí)驗(yàn)環(huán)境 21.2.2相關(guān)硬件簡介 21.3軟件分析 31.3.1嵌入式操作系統(tǒng)簡介 31.3.2開發(fā)技術(shù)簡介 3第2章系統(tǒng)設(shè)計(jì) 62.1系統(tǒng)模塊設(shè)計(jì) 62.1.1主界面模塊 6注冊模塊 72.1.3登錄模塊 72.1.4添加車輛模塊 72.1.5車輛管理模塊 82.1.6用戶管理模塊 82.1.7歸還確認(rèn)模塊 8車輛租賃模塊 82.1.9車輛歸還模塊 9余額充值模塊 92.1.11審查通過確認(rèn)模塊 92.2類設(shè)計(jì) 92.2.1AddActivity類 92.2.2carback類 92.2.3carbackactivity類 92.2.4Cars類 102.2.5DatabaseUtil類 102.2.6EditCarActivity類 112.2.7LoginActivity類 112.2.8MainActivity類 112.2.9MyHelper類 122.2.10NowUser類 122.2.11PayActivity類 122.2.12Person類 122.2.13RegisterActivity類 132.2.14SearchActivity類 132.2.15ShenchaPassActivity類 132.2.16ShowUserInfo類 132.2.17yuechongzhi類 132.3關(guān)鍵流程 142.3.1系統(tǒng)主流程 142.3.2注冊模塊流程 162.3.3登錄模塊流程 172.3.4添加車輛模塊流程 182.3.5車輛管理模塊流程 192.3.6用戶管理模塊流程 212.3.7歸還確認(rèn)模塊流程 212.3.8車輛租賃模塊流程 222.3.9車輛歸還模塊流程 232.3.10余額充值模塊流程 242.3.11審查通過確認(rèn)模塊流程 24第3章系統(tǒng)調(diào)試及運(yùn)行 253.1調(diào)試分析 253.2結(jié)果分析 32參考文獻(xiàn) 33附錄 34第1章系統(tǒng)分析1.1需求分析隨著移動設(shè)備的快速發(fā)展,人們越來越向往便捷的生活,所以電子商務(wù)應(yīng)運(yùn)而生,網(wǎng)上購物也成為了每個人日常生活的重要組成部分。本次課程設(shè)計(jì)是在Android操作系統(tǒng)下實(shí)現(xiàn)的車輛租賃手機(jī)APP,它以SQL數(shù)據(jù)庫作為基礎(chǔ)。本產(chǎn)品的的主要功能有:1)添加車輛功能:該功能允許管理員發(fā)布租賃車輛信息;2)車輛搜索功能:該功能允許用戶和管理員瀏覽所有已經(jīng)上線的車輛信息,并且可以通過關(guān)鍵字對參與競拍的商品進(jìn)行搜索查詢;3)用戶管理功能:該功能允許管理員查看和刪除已注冊的用戶;4)車輛管理功能:該功能允許管理員查看、修改和刪除車輛信息;5)在線下單功能(車輛租賃功能):該功能允許用戶余額充足的情況下對處于未租賃狀態(tài)下的車輛進(jìn)行在線下單(車輛租賃);6)在線支付功能:該功能允許用戶在線支付錢款,并更新數(shù)據(jù)庫中車輛信息和用戶的余額信息;7)車輛歸還功能:該功能允許用戶對已下單的車輛歸還,并更新數(shù)據(jù)庫中車輛的狀態(tài)信息;8)余額支付功能:該功能允許用戶充值賬戶金額,并更新數(shù)據(jù)庫中用戶的余額信息;1.2硬件分析安卓手機(jī)指的是用Android操作系統(tǒng)的手機(jī),Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機(jī),是一個真正意義上的開放性移動設(shè)備綜合平臺。1.2.1實(shí)驗(yàn)環(huán)境AndroidSDK提供了一系列工具,包括模擬硬件設(shè)備的模擬器(Emulator)、Android資源打包工具AAPT(AndroidAssetPackagingTool)、Dalvik調(diào)試監(jiān)視服務(wù)DDMS(DalvikDebugMonitorService)、Android調(diào)試橋adb(AndroidDebugBridge)和將.class字節(jié)碼文件轉(zhuǎn)換為.dex文件的DX工具等。使用上述這些工具,可以直接在DOS命令行中進(jìn)行開發(fā)、調(diào)試、編譯、打包、部署等工作,由于這種開發(fā)效率太低,Android提供了針對Eclipse的開發(fā)插件ADT(AndroidDevelopmentTools)。ADT極大地提高了開發(fā)效率,可以在Eclipse中快速創(chuàng)建Android應(yīng)用程序,自動生成一些代碼。Eclipse
是一個開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。就其本身而言,
它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。ADT必須有Eclipse和AndroidSDK的支持,Eclipse必須有JDK的支持。安裝環(huán)境的正確配置是:下載并安裝JDK、下載并安裝Eclipse、下載并安裝AndroidSDK、下載并安裝ADT。1.2.2相關(guān)硬件簡介ARM處理器是Acorn有限公司面向低預(yù)算市場設(shè)計(jì)的第一款RISC微處理器。更早稱作AcornRISCMachine。ARM處理器本身是32位設(shè)計(jì),但也配備16位指令集,一般來講比等價32位代碼節(jié)省達(dá)35%,卻能保留32位系統(tǒng)的所有優(yōu)勢。ARM處理器具有如下特點(diǎn):1)體積小、低功耗、低成本、高性能;2)支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;3)大量使用寄存器,指令執(zhí)行速度更快;4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成;5)尋址方式靈活簡單,執(zhí)行效率高;6)指令長度固定。1.3軟件分析1.3.1嵌入式操作系統(tǒng)簡介嵌入式系統(tǒng)是以應(yīng)用為中心,軟硬件可裁剪的,適用于對功能、可靠性、成本、體積、功耗等綜合性嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。具有軟件代碼小、高度自動化、響應(yīng)速度快等特點(diǎn),特別適合于要求實(shí)時和多任務(wù)的體系。嵌入式系統(tǒng)主要由嵌入式處理器、相關(guān)支撐硬件、嵌入式操作系統(tǒng)及應(yīng)用軟件系統(tǒng)等組成,它是可以獨(dú)立工作的“器件”。為了使嵌入式系統(tǒng)的開發(fā)更加方便和快捷,需要有專門負(fù)責(zé)管理存儲器分配、中斷處理、任務(wù)調(diào)度等功能的軟件模塊,這就是嵌入式操作系統(tǒng)。嵌入式操作系統(tǒng)是嵌入式系統(tǒng)(包括硬、軟件系統(tǒng))極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等。嵌入式操作系統(tǒng)具有通用操作系統(tǒng)的基本特點(diǎn),如能夠有效管理越來越復(fù)雜的系統(tǒng)資源;能夠把硬件虛擬化,使得開發(fā)人員從繁忙的驅(qū)動程序移植和維護(hù)中解脫出來;能夠提供庫函數(shù)、驅(qū)動程序、工作集以及應(yīng)用程序。與通用操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時高效性、硬件的相關(guān)依賴性、軟件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。1.3.2開發(fā)技術(shù)簡介Android基本上就是一種嵌入式Linux系統(tǒng)再加上一些重要的手機(jī)應(yīng)用開發(fā)軟件,如果深入研究其系統(tǒng)架構(gòu),其整體自底向上由4個主要層次構(gòu)成,包括Linux
Kernel(Linux
內(nèi)核層)、Library(函數(shù)庫)和Android
Runtime(Android運(yùn)行時庫)、Application
Framework(應(yīng)用軟件架構(gòu))、Application(應(yīng)用程序)。1)Linux
Kernel(Linux內(nèi)核層):Android基于Linux2.6提供核心系統(tǒng)服務(wù),負(fù)責(zé)硬件的驅(qū)動程序、網(wǎng)絡(luò)堆棧、電源、系統(tǒng)安全機(jī)制、進(jìn)程管理以及內(nèi)存管理等功能。Linux
Kernel
也作為硬件和軟件之間的抽象層,它隱藏具體硬件細(xì)節(jié)而為上層提供統(tǒng)一的服務(wù),分層的好處就是使用下層提供的服務(wù)而為上層提供統(tǒng)一的服務(wù),屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會影響到上層。特別的是,這個內(nèi)核操作系統(tǒng)并非GUN/Linux的,所以其系統(tǒng)庫、系統(tǒng)初始化和編程接口都喝標(biāo)準(zhǔn)的Linux系統(tǒng)有所不同。它沒有采用虛擬內(nèi)存文件系統(tǒng),而是采用YAFFS2文件系統(tǒng)。
(2)Library(函數(shù)庫)和Android
Runtime(Andriod運(yùn)行時庫):Library(函數(shù)庫)由大多數(shù)開放源代碼的函數(shù)庫組成,包含一個C/C++庫的集合,供Android系統(tǒng)的各個組件使用。這些功能通過Android的應(yīng)用程序框架(Application
Framework)展示給開發(fā)者,例如準(zhǔn)C函數(shù)庫Libc、OpenSSL、SQLite等;網(wǎng)頁函數(shù)庫WebKit負(fù)責(zé)Android網(wǎng)頁瀏覽器的運(yùn)行;媒體庫基于PacketVideo的OpenCORE,這些庫支持播放和錄制許多流行的音頻和視頻格式,以及靜態(tài)圖像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG;界面管理,管理訪問顯示子系統(tǒng)和無縫組合多個應(yīng)用程序的二維和三維圖像層;LibWebCore,新式的Web瀏覽器引擎,驅(qū)動Android瀏覽器和內(nèi)嵌的Web視圖;SGL,基本的2D圖形引擎;3D庫,基于OpenGL
ES1.0
APIs的實(shí)現(xiàn)。所有應(yīng)用程序都可以使用的強(qiáng)大而輕量級的關(guān)系數(shù)據(jù)庫引擎。
Android
Runtime(Android運(yùn)行時庫)是和Library(函數(shù)庫)并行的,在此提供的Android特有的Java內(nèi)核函數(shù)庫與可轉(zhuǎn)換的Java運(yùn)行碼Bytecode,為Android專屬的Dalvik
Executable(.dex)文件格式的dalvik虛擬機(jī),可以通過Java語言編寫Android應(yīng)用程序,并在Android平臺上同時運(yùn)行多個Java應(yīng)用程序。Dalvik虛擬機(jī)依賴于Linux內(nèi)核提供的基本功能,如線程和底層內(nèi)存管理。Dalvik虛擬機(jī)可執(zhí)行文件格式是.dex,dex格式是專為Dalvik設(shè)計(jì)的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)。大多數(shù)虛擬機(jī)包括JVM都是基于棧的,而Dalvik虛擬機(jī)基于寄存器的。
(3)Application
Framework(應(yīng)用軟件架構(gòu)):它是所有Android重點(diǎn)應(yīng)用程序Framwork
API的總集合,主要的目的是讓程序開發(fā)者可以更方便地使用這些常用的應(yīng)用程序進(jìn)行設(shè)計(jì)架構(gòu),以便更快速地開發(fā)Android應(yīng)用程序。而這些常見的API有顯示功能,如消息方塊、條列消息、按鈕、內(nèi)嵌式瀏覽器等;消息提供功能,如訪問信息、分享信息;資源管理功能,如圖形、地方化字符串、布局文件等;提供消息功能,主要用來顯示警告消息、特別是當(dāng)使用者操作錯誤時,等其它功能。
所有的應(yīng)用程序其實(shí)是一組服務(wù)和系統(tǒng),包括視圖,豐富的、可擴(kuò)展的視圖集合,可用于構(gòu)建一個應(yīng)用程序。包括列表、網(wǎng)格、文本框、按鈕,甚至是內(nèi)嵌的網(wǎng)頁瀏覽器。內(nèi)容提供者,使應(yīng)用程序能訪問其它應(yīng)用程序的數(shù)據(jù),或者共享自己的數(shù)據(jù);資源管理器,提供訪問非代碼資源,如本地化字符串、圖像和布局文件;通知管理器,使所有的應(yīng)用程序能夠在狀態(tài)欄顯示自定義警告;活動管理器,管理應(yīng)用程序生命周期,提供通用的導(dǎo)航回退功能。
(4)Application(應(yīng)用程序):最上層的應(yīng)用程序都是用Java語言開發(fā)的應(yīng)用程序,例如Google
Maps、E_mail、即時通信工具、計(jì)算機(jī)、瀏覽器、通訊本、MP3播放器等。第2章系統(tǒng)設(shè)計(jì)2.1系統(tǒng)模塊設(shè)計(jì)此款手機(jī)APP是利用SQLite在Android操作系統(tǒng)下實(shí)現(xiàn)的轎車租賃。該手機(jī)APP應(yīng)該滿足一定的穩(wěn)定性、界面的美觀性和使用的人性化這三方面的基本要求,并且該軟件應(yīng)具有用戶登錄和管理員登錄兩種身份登錄,管理員身份登錄應(yīng)該具有主界面模塊、注冊模塊、登錄模塊、添加車輛模塊、車輛管理模塊、歸還確認(rèn)模塊和用戶管理模塊,七個功能模塊,用戶身份登錄應(yīng)該具有主界面模塊、注冊模塊、登錄模塊、車輛租賃模塊、車輛歸還模塊、余額充值模塊和審查通過??欤邆€功能模塊。通過這些模塊實(shí)現(xiàn)相應(yīng)的功能。系統(tǒng)模塊設(shè)計(jì)如圖2.1所示。轎車租賃平臺轎車租賃平臺用戶登錄管理員登錄用戶登錄管理員登錄主界面模塊注冊模塊登錄模塊添加車輛模塊車輛管理模塊用戶管理模塊歸還確認(rèn)模塊主界面模塊注冊模塊登錄模塊車輛租賃模塊車輛歸還模塊余額充值模塊審查通過確認(rèn)模塊主界面模塊注冊模塊登錄模塊添加車輛模塊車輛管理模塊用戶管理模塊歸還確認(rèn)模塊主界面模塊注冊模塊登錄模塊車輛租賃模塊車輛歸還模塊余額充值模塊審查通過確認(rèn)模塊圖2.1系統(tǒng)功能模塊圖2.1.1主界面模塊當(dāng)管理員進(jìn)入手機(jī)APP并且登陸成功后會進(jìn)入到此模塊,此模塊用于顯示用戶成功登錄手機(jī)APP后的界面。該界面上有車輛管理、添加車輛和用戶管理三個按鈕。該模塊允許管理員通過點(diǎn)擊車輛管理、添加車輛和用戶管理這三個按鈕分別進(jìn)入相應(yīng)的模塊。當(dāng)用戶進(jìn)入手機(jī)APP并且登陸成功后會進(jìn)入到此模塊,此模塊用于顯示用戶成功登錄手機(jī)APP后的界面。該界面上有顯示當(dāng)前用戶余額的EditText,及車輛租賃、車輛歸還和余額充值三個按鈕。該模塊允許用戶通過點(diǎn)擊車輛租賃、車輛歸還和余額充值這三個按鈕分別進(jìn)入相應(yīng)的模塊。用戶進(jìn)入手機(jī)APP時,如果還沒有該手機(jī)APP的賬號,可以通過點(diǎn)擊注冊按鈕進(jìn)入該模塊,該模塊用于為新用戶申請一個賬號,以便于使用后續(xù)功能。用戶在注冊時需要設(shè)置自己的用戶名、密碼以及賬戶預(yù)存款金額,填寫完成后點(diǎn)擊確定,即可以進(jìn)入到登錄模塊。2.1.2注冊模塊管理員進(jìn)入手機(jī)APP時,如果還沒有該手機(jī)APP的賬號,可以通過點(diǎn)擊注冊按鈕進(jìn)入該模塊,該模塊用于為新用戶申請一個賬號,以便于使用后續(xù)功能。管理員在注冊時需要設(shè)置自己的用戶名、密碼以及賬戶預(yù)存款金額,填寫完成后點(diǎn)擊確定,即可以進(jìn)入到登錄模塊。用戶進(jìn)入手機(jī)APP時,如果還沒有該手機(jī)APP的賬號,可以通過點(diǎn)擊注冊按鈕進(jìn)入該模塊,該模塊用于為新用戶申請一個賬號,以便于使用后續(xù)功能。用戶在注冊時需要設(shè)置自己的用戶名、密碼以及賬戶預(yù)存款金額,填寫完成后點(diǎn)擊確定,即可以進(jìn)入到登錄模塊。2.1.3登錄模塊進(jìn)入手機(jī)APP后即進(jìn)入此模塊,該模塊允許用戶和管理員通過輸入用戶名和密碼來登錄手機(jī)APP。如果用戶或管理員已經(jīng)注冊過賬號,則只需要在相應(yīng)的EditText中分別輸入用戶名和密碼后點(diǎn)擊登錄按鈕,若用戶名和密碼匹配正確,就會提示用戶登陸成功并且進(jìn)入主界面模塊,否則提示用戶密碼錯誤并且不會進(jìn)行頁面的跳轉(zhuǎn);如果用戶并沒有注冊過賬號,則可以通過點(diǎn)擊注冊按鈕進(jìn)入到注冊模塊。2.1.4添加車輛模塊在主界面模塊中點(diǎn)擊添加車輛即可進(jìn)入此模塊,該模塊允許管理員添加發(fā)布待租車輛的商品信息。在該界面中,管理員可以添加待租車輛的圖片、車輛名稱、車牌號碼和車輛的每日租價。如果點(diǎn)擊完成按鈕,即可以在數(shù)據(jù)庫中加入該車輛商品的信息,更新數(shù)據(jù)庫并返回主界面模塊。如果點(diǎn)擊返回按鈕,則返回主界面模塊。2.1.5車輛管理模塊在主界面模塊中點(diǎn)擊車輛管理按鈕即可進(jìn)入此模塊,該模塊允許管理員單擊修改或長按刪除所有已經(jīng)發(fā)布的車輛商品的信息,如果單擊的當(dāng)前車輛商品的租賃狀態(tài)是未租賃,則管理員可以更新此車輛的一系列信息包括競品圖片、車輛名稱、車牌號碼和車輛單價;如果單擊的當(dāng)前車輛商品的租賃狀態(tài)是已租賃,則在屏幕底部短時間顯示“已租賃,不可修改”;如果單擊的當(dāng)前車輛商品的租賃狀態(tài)是歸還審查,則點(diǎn)擊確定修改后跳轉(zhuǎn)到歸還確認(rèn)模塊;如果單擊的當(dāng)前車輛商品的租賃狀態(tài)是審查通過,則在屏幕底部短時間顯示“審查通過,等待用戶確認(rèn)”。如果長按的當(dāng)前車輛商品的租賃狀態(tài)是未租賃,則直接從數(shù)據(jù)庫刪除當(dāng)前車輛一切信息;否則,在屏幕底部短時間顯示“不能刪除!”。2.1.6用戶管理模塊在主界面模塊中點(diǎn)擊車輛管理按鈕即可進(jìn)入此模塊,該模塊允許管理員單擊刪除所有已經(jīng)注冊的用戶及數(shù)據(jù)庫中他所有的信息,可點(diǎn)擊返回按鈕返回主界面模塊。2.1.7歸還確認(rèn)模塊管理員發(fā)現(xiàn)有用戶歸還車輛,即當(dāng)前車輛狀態(tài)為“歸還審查”,單擊從車輛管理模塊跳轉(zhuǎn)到歸還確認(rèn)模塊后,通過歸還確認(rèn)模塊中的應(yīng)歸還日期、今日日期、用戶還需支付金額和系統(tǒng)應(yīng)退還金額這四個信息,審查核實(shí)當(dāng)前用戶歸還訂單,確定無誤后,點(diǎn)擊確定按鈕,更新當(dāng)前車輛的狀態(tài)為“審查通過”。2.1.8車輛租賃模塊用戶在主界面模塊中點(diǎn)擊車輛租賃按鈕即可進(jìn)入此模塊,該模塊允許用戶租賃還未使用的車輛,輸入租賃天數(shù)后點(diǎn)擊確定更新數(shù)據(jù)庫中車輛的信息和用戶余額。2.1.9車輛歸還模塊用戶在主界面模塊中點(diǎn)擊車輛歸還按鈕即可進(jìn)入此模塊,該模塊允許用戶歸還自己租賃的車輛,點(diǎn)擊確定后更新數(shù)據(jù)庫的用戶余額并更新車輛的信息租賃狀態(tài)為:歸還審查,等待管理員確認(rèn)。2.1.10余額充值模塊用戶在主界面模塊中點(diǎn)擊余額充值按鈕即可進(jìn)入此模塊,該模塊允許用戶充值賬戶金額,輸入充值金額數(shù)量,點(diǎn)擊確定后更新數(shù)據(jù)庫的用戶余額。2.1.11審查通過確認(rèn)模塊用戶在主界面模塊中點(diǎn)擊車輛歸還按鈕即可進(jìn)入此模塊,通過點(diǎn)擊車輛狀態(tài)為歸還審查的車輛進(jìn)入審查通過確認(rèn)模塊,該模塊允許用戶確認(rèn)管理員通過的歸還訂單,然后更新數(shù)據(jù)庫的用戶余額并更新車輛的信息。2.2類設(shè)計(jì)2.2.1AddActivity類AddActivity類顯示layout_admin界面,允許管理員輸入添加的車輛商品的圖片、車輛名稱、車牌號碼、車輛單價。然后通過InsertartWork(ArtWorkartwork)函數(shù)將新增加的車輛商品信息保存在數(shù)據(jù)庫中。2.2.2carback類carback類顯示layout_search界面,并設(shè)置layout_search上每個商品ListView的監(jiān)聽,允許用戶對該用戶已租賃的車輛進(jìn)行歸還操作。2.2.3carbackactivity類Carbackactivity類顯示carback界面,當(dāng)用戶歸還車輛時跳轉(zhuǎn)到此,用戶通過核對carback界面上TextView顯示的應(yīng)歸還日期、今日日期、用戶還需支付金額、系統(tǒng)應(yīng)退還金額等一系列信息來核對自己是否超出用車期限;若超出,則核對用戶還需支付金額是否等于違約天數(shù)*當(dāng)前車輛每日租金;或者,若提前還車系統(tǒng)應(yīng)退違約天數(shù)*當(dāng)前車輛每日租金*90%的金額是否正確。核對一切無誤后,點(diǎn)擊確定更改當(dāng)前車輛租賃狀態(tài)為“歸還審查”,等待管理員確認(rèn)。2.2.4Cars類Cars類內(nèi)包含設(shè)置和獲取SQLite數(shù)據(jù)庫中車輛商品的信息的方法,其中有:1)設(shè)置車輛的id:publicvoidsetId(intid);2)獲取車輛的id:publicintgetId();3)設(shè)置車輛名稱:publicvoidsetName(Stringname);4)獲取車輛名稱:publicStringgetName();5)設(shè)置車輛照片:publicvoidsetImageURL(StringimageURL);6)獲取車輛照片:publicStringgetImageURL();7)設(shè)置用車開始時間:publicvoidsetStartTime(StringstartTime);8)獲取用車開始時間:publicStringgetStartTime();9)設(shè)置用車結(jié)束時間:publicvoidsetEndTime(StringendTime);10)獲取用車結(jié)束時間:publicStringgetEndTime();11)設(shè)置用車人姓名:publicvoidsetSaleuser(Stringsaleuser);12)獲取用車人姓名:publicStringgetSaleuser();13)設(shè)置車輛車牌號:publicVoidsetCarid(StringCarid);/14)獲取車牌號:publicStringgetCarid();/15)設(shè)置車輛每日租金:publicvoidsetState(StringState);16)獲取車輛每日租金:publicStringgetState();17)設(shè)置最低加價幅度:publicvoidsetPermoney(doublepermoney);18)獲取最低加價幅度:publicdoublegetPermoney();19)設(shè)置車輛被租用金額:publicvoidsetMoney(doublemoney);20)獲取車輛被租用金額:publicDoublegetMoney()。2.2.5DatabaseUtil類DatabaseUtil類內(nèi)包含對SQLite數(shù)據(jù)庫中用戶和管理員與車輛商品進(jìn)行操作的方法,其中有:1)在用戶表中添加新用戶:publicbooleanInsertUser(Personperson);2)在車輛表中添加新數(shù)據(jù):publicbooleanInsertcars(Carscars);3)更新用戶表數(shù)據(jù):publicvoidUpdateUser(Personperson,intid);4)更新車輛表數(shù)據(jù):publicvoidUpdateCars(Carscars,intid);5)刪除用戶表數(shù)據(jù):publicvoidDeleteUser(intid);6)刪除車輛表數(shù)據(jù):publicvoidDeleteCars(intid);7)查詢用戶表所有數(shù)據(jù):publicList<Person>queryuserAll();8)查詢車輛表所有數(shù)據(jù):publicList<Cars>querycarsAll();9)按姓名進(jìn)行查找用戶表并排序:publicList<Person>queryUserByname(Stringname)10)按姓名進(jìn)行查找車輛表并排序:publicList<Cars>querycarsByname(Stringname)。2.2.6EditCarActivity類EditCarActivity類顯示layout_admin界面,通過Cars類中publicIntgetId()方法獲取當(dāng)前車輛Id,將未租賃狀態(tài)下的車輛信息呈現(xiàn)給管理員,管理員可以修改未租賃狀態(tài)下的車輛信息,修改完成后通過DatabaseUtil類中的publicVoidUpdatecars(Carscars,intid)來保存車輛信息到數(shù)據(jù)庫。2.2.7LoginActivity類LoginActivity類顯示activity_login界面,允許用戶輸入用戶名和密碼,并通過List<Person>persons=mDBUtil.queryUserByname(username.getText().toString());查找用戶表,若用戶已存在則將用戶名和密碼進(jìn)行匹配,若匹配正確則登錄成功,否則提示密碼錯誤;若用戶名不存在,則允許用戶通過點(diǎn)擊注冊按鈕進(jìn)入RegisterActivity類。2.2.8MainActivity類MainActivity類顯示activity_main界面,如果用戶登錄,則允許用戶通過點(diǎn)擊車輛租賃、車輛歸還或余額充值按鈕,分別跳轉(zhuǎn)到SearchActivity類、carback類或yuechongzhi類中。2.2.9MyHelper類MySQLite類內(nèi)包含對SQLite數(shù)據(jù)庫的操作,其中有:1)初始化數(shù)據(jù)庫函數(shù):publicvoidonCreate(SQLiteDatabasedb);2)更新數(shù)據(jù)庫函數(shù):publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion);2.2.10NowUser類NowUser類內(nèi)包含當(dāng)前用戶和當(dāng)前選擇的車輛兩個屬性,可以通NowUser.nowPerson或NowUser.nowPay調(diào)用Person類或Cars類中的方法,設(shè)置或者獲取當(dāng)前用戶以及當(dāng)前選擇車輛的信息。2.2.11PayActivity類PayActivity類顯示layout_pay界面,允許用戶在填入租賃車輛的天數(shù)后進(jìn)行支付,并通過DatabaseUtil類中的publicvoidUpdateUser(Personperson,intid)對用戶余額進(jìn)行更新保存和publicvoidUpdateCars(Carscars,intid)更新保存車輛信息。2.2.12Person類Person類內(nèi)包含設(shè)置和獲取SQLite數(shù)據(jù)庫中用戶信息的方法,其中有:1)設(shè)置用戶id:publicvoidsetId(intid);2)獲取用戶id:publicintgetId();3)設(shè)置用戶名:publicvoidsetUsername(Stringname);4)獲取用戶名:publicStringgetUsername();5)設(shè)置密碼:publicvoidsetPassword(StringimageURL);6)獲取密碼:publicStringgetPassword();7)設(shè)置賬戶預(yù)存款金額:publicvoidsetMoney(StringstartTime);8)獲取賬戶預(yù)存款金額:publicStringgetMoney();9)設(shè)置身份類型:publicvoidsetType(Stringtype);10)獲得身份類型:publicStringgetType()。2.2.13RegisterActivity類RegisterActivity類顯示layout_register界面,允許用戶輸入用戶名、密碼想要存入賬戶的預(yù)存款金額和身份類型,來申請一個登錄賬號,并通過mDBUtil.InsertUser(person);將該用戶新申請的賬號插入到數(shù)據(jù)庫的用戶表中,更新數(shù)據(jù)庫。2.2.14SearchActivity類SearchActivity類顯示layout_search界面,該類用于顯示所有已經(jīng)存在數(shù)據(jù)庫的車輛信息,并且允許用戶通過輸入關(guān)鍵字搜索查看想租的車輛信息,當(dāng)用戶點(diǎn)擊車輛時,如果是未租賃的車輛則跳轉(zhuǎn)到PayActivity類支付租金;當(dāng)管理員點(diǎn)擊車輛時,就是修改數(shù)據(jù)庫中的車輛信息,如果是未租賃狀態(tài),則可以修改此車輛的相關(guān)信息;如果是歸還審查狀態(tài),則可以修改其狀態(tài)為審查通過。如果是未租賃狀態(tài)的車輛,管理員還可以長按將其刪除。2.2.15ShenchaPassActivity類ShenchaPassActivity類顯示carback界面,是管理員從車輛管理中找到用戶歸還后狀態(tài)為歸還審查的車輛商品,點(diǎn)擊進(jìn)入ShenchaPassActivity類以核實(shí)用戶應(yīng)再支付金額或者系統(tǒng)該退給用戶金額,核實(shí)后更新車輛狀態(tài)為審查通過。2.2.16ShowUserInfo類ShowUserInfo類顯示layout_showinfo界面,是管理員通過getmData(mData)獲取所有已注冊用戶的信息,允許管理員通過DatabaseUtil類中的publicvoidDeleteUser(intid)來刪除用戶。2.2.17yuechongzhi類yuechongzhi類顯示yuechongzhi界面,允許用戶通過更改Person類中的PublicvoidsetMoney(doublemoney)來更新用戶余額,再通過DatabaseUtil類中的publicvoidUpdateUser(Personperson,intid)來更新數(shù)據(jù)庫,實(shí)現(xiàn)用戶充值余額。2.3關(guān)鍵流程2.3.1系統(tǒng)主流程用戶進(jìn)入用戶進(jìn)入APP登錄界面登錄界面進(jìn)入注冊界面點(diǎn)擊注冊按鈕是進(jìn)入注冊界面點(diǎn)擊注冊按鈕否輸入用戶名輸入用戶名輸入密碼輸入密碼用戶名密碼匹配正確用戶名密碼匹配正確否進(jìn)入用戶主界面進(jìn)入用戶主界面進(jìn)入車輛租賃界面點(diǎn)擊車輛租賃是進(jìn)入車輛租賃界面點(diǎn)擊車輛租賃點(diǎn)擊車輛歸還否點(diǎn)擊車輛歸還進(jìn)入車輛歸還界面是進(jìn)入車輛歸還界面否進(jìn)入車輛租賃界面點(diǎn)擊余額充值是進(jìn)入車輛租賃界面點(diǎn)擊余額充值2.2用戶身份登錄的系統(tǒng)主流程圖管理員管理員進(jìn)入APP登錄界面登錄界面點(diǎn)擊注冊按鈕進(jìn)入注冊界面是點(diǎn)擊注冊按鈕進(jìn)入注冊界面輸入用戶名否輸入用戶名輸入密碼輸入密碼用戶名密碼匹配正確用戶名密碼匹配正確否進(jìn)入管理員主界面是進(jìn)入管理員主界面進(jìn)入車輛租賃界面點(diǎn)擊車輛管理是進(jìn)入車輛租賃界面點(diǎn)擊車輛管理點(diǎn)擊添加車輛否點(diǎn)擊添加車輛進(jìn)入車輛歸還界面是進(jìn)入車輛歸還界面否進(jìn)入車輛租賃界面點(diǎn)擊用戶管理否是進(jìn)入車輛租賃界面點(diǎn)擊用戶管理2.3管理員身份登錄的系統(tǒng)主流程圖2.3.2注冊模塊流程用戶或管理員進(jìn)入APP后點(diǎn)擊注冊按鈕即可以進(jìn)入此模塊,輸入用戶名、密碼、選擇身份類型以及賬戶預(yù)存款金額,然后點(diǎn)擊完成按鈕即可完成注冊。注冊模塊流程圖如下圖2.4所示。注冊模塊注冊模塊輸入用戶名輸入用戶名輸入密碼輸入密碼輸入預(yù)存款金額輸入預(yù)存款金額選擇身份類型選擇身份類型點(diǎn)擊完成按鈕否點(diǎn)擊完成按鈕是進(jìn)入登錄模塊進(jìn)入登錄模塊圖2.4注冊模塊流程圖2.3.3登錄模塊流程用戶或管理員進(jìn)入APP后即進(jìn)入此模塊,輸入用戶名和密碼然后點(diǎn)擊登錄按鈕,若用戶名密碼匹配正確則登錄成功。登錄模塊流程圖如圖2.5所示。注冊模塊注冊模塊輸入用戶名輸入用戶名輸入密碼輸入密碼用戶名密碼匹配正確用戶名密碼匹配正確否進(jìn)入主界面模塊是進(jìn)入主界面模塊圖2.5登錄模塊流程圖2.3.4添加車輛模塊流程管理員在主界面點(diǎn)擊添加車輛按鈕后即可進(jìn)入此模塊,該模塊允許用戶按照提示添加車輛的圖片、車輛名稱、車牌號碼和車輛單價,點(diǎn)擊完成按鈕后即可完成添加,點(diǎn)擊返回則返回主界面模塊。添加車輛模塊流程圖如圖2.6所示。進(jìn)入添加車輛模塊進(jìn)入添加車輛模塊添加圖片添加圖片輸入車輛名稱輸入車輛名稱輸入車牌號碼輸入車牌號碼輸入車輛單價輸入車輛單價點(diǎn)擊完成按鈕點(diǎn)擊完成按鈕否進(jìn)入主界面模塊是進(jìn)入主界面模塊圖2.6添加車輛模塊流程圖2.3.5車輛管理模塊流程在主界面模塊中點(diǎn)擊車輛管理按鈕即可進(jìn)入車輛管理模塊,該模塊又分為兩個功能模塊即單擊修改功能模塊和長按刪除功能模塊。單擊修改功能模塊允許管理員查看所有已經(jīng)上線的車輛的信息,并可以對未租賃車輛和歸還審查車輛單擊進(jìn)行修改。長按刪除功能模塊允許管理員對未租賃車輛長按刪除。車輛管理模塊中的單擊修改功能模塊和長按刪除功能模塊流程圖如圖2.7和圖2.8所示。進(jìn)入車輛管理模塊進(jìn)入車輛管理模塊單擊單擊否車輛狀態(tài)為:車輛狀態(tài)為:未租賃修改車輛信息是修改車輛信息車輛狀態(tài)為:車輛狀態(tài)為:歸還審查進(jìn)入歸還確認(rèn)模塊進(jìn)入歸還確認(rèn)模塊車輛狀態(tài)為:車輛狀態(tài)為:已租賃已租賃,不可修改是已租賃,不可修改否車輛狀態(tài)為車輛狀態(tài)為:審查通過審查通過,等待用戶確認(rèn)否是審查通過,等待用戶確認(rèn)圖2.7單擊修改功能模塊流程圖進(jìn)入車輛管理模塊進(jìn)入車輛管理模塊長按長按是車輛租賃狀態(tài)為:未租賃車輛租賃狀態(tài)為:未租賃刪除刪除不可刪除不可刪除圖2.7長按刪除功能模塊流程圖2.3.6用戶管理模塊流程在查看用戶管理模塊中,系統(tǒng)允許管理員通過點(diǎn)擊用戶名來實(shí)現(xiàn)刪除用戶功能。用戶管理模塊流程圖如圖2.8所示。進(jìn)入進(jìn)入用戶管理模塊單擊單擊否是刪除刪除圖2.8在線下單模塊流程圖2.3.7歸還確認(rèn)模塊流程在車輛管理模塊中,管理員處理用戶歸還后車輛狀態(tài)為“歸還審查”的車輛商品,點(diǎn)擊后進(jìn)入歸還確認(rèn)模塊。管理員在歸還確認(rèn)模塊中核實(shí)金額信息后點(diǎn)擊確認(rèn)按鈕修改車輛信息,更新車輛狀態(tài)為“審查通過”。歸還確認(rèn)模塊流程圖如圖2.8所示。歸還確認(rèn)模塊歸還確認(rèn)模塊點(diǎn)擊確認(rèn)按鈕點(diǎn)擊確認(rèn)按鈕否是更新車輛租賃狀態(tài)為更新車輛租賃狀態(tài)為:“審查通過”圖2.8歸還確認(rèn)模塊流程圖2.3.8車輛租賃模塊流程在車輛租賃模塊中,用戶可以點(diǎn)擊想租的車,輸入租賃天數(shù),確認(rèn)支付后下單成功。車輛租賃模塊流程圖如圖2.9所示。車輛租賃模塊車輛租賃模塊車輛租賃狀態(tài)為車輛租賃狀態(tài)為:“未租賃”顯示顯示:已租賃!是點(diǎn)擊下單點(diǎn)擊下單輸入租車天數(shù)輸入租車天數(shù)確認(rèn)支付確認(rèn)支付取消支付否取消支付是更新車輛租賃狀態(tài)為“更新車輛租賃狀態(tài)為“已租賃”更新用戶更新用戶余額圖2.9車輛租賃模塊流程圖2.3.9車輛歸還模塊流程在車輛歸還模塊中,用戶可以點(diǎn)擊該用戶租賃的車,核實(shí)金額信息后點(diǎn)擊確定,只更新車輛租賃狀態(tài)為:“歸還審查”以實(shí)現(xiàn)車輛歸還。車輛歸還模塊流程圖如圖2.10所示。車輛歸還模塊車輛歸還模塊單擊單擊當(dāng)前選擇車輛的使用人姓名是否與當(dāng)前用戶姓名相同當(dāng)前選擇車輛的使用人姓名是否與當(dāng)前用戶姓名相同顯示:您未租賃顯示:您未租賃,不能歸還當(dāng)前選擇車輛的租賃狀態(tài)是否與為當(dāng)前選擇車輛的租賃狀態(tài)是否與為“已租賃”歸還車輛歸還車輛當(dāng)前選擇車輛的租賃狀態(tài)是否與當(dāng)前選擇車輛的租賃狀態(tài)是否與為“審查通過”審查通過確認(rèn)模塊審查通過確認(rèn)模塊當(dāng)前選擇車輛的租賃狀態(tài)是否與為當(dāng)前選擇車輛的租賃狀態(tài)是否與為“未租賃”顯示顯示:您未租賃,不能歸還當(dāng)前選擇車輛的租賃狀態(tài)是否與為當(dāng)前選擇車輛的租賃狀態(tài)是否與為“歸還審查”正在審查正在審查!完成完成圖2.10車輛歸還模塊流程圖2.3.10余額充值模塊流程在余額充值模塊中,用戶可以輸入想充值的金額,點(diǎn)擊確定,從而更新用戶余額。余額充值模塊流程圖如圖2.11所示。進(jìn)入余額充值界面進(jìn)入余額充值界面輸入充值金額輸入充值金額點(diǎn)擊確定點(diǎn)擊確定充值取消否充值取消是更新當(dāng)前用戶余額更新當(dāng)前用戶余額圖2.11余額充值模塊流程圖2.3.11審查通過確認(rèn)模塊流程在車輛管理模塊中,用戶點(diǎn)擊租車狀態(tài)為“審查通過”的車輛,跳轉(zhuǎn)到審查通過確認(rèn)界面,通過點(diǎn)擊確認(rèn)按鈕,更新自己的余額,更新當(dāng)前車輛所有:“未租賃”。審查通過確認(rèn)流程圖如圖2.12所示。進(jìn)入審查通過確認(rèn)界面進(jìn)入審查通過確認(rèn)界面點(diǎn)擊確定確認(rèn)取消否點(diǎn)擊確定確認(rèn)取消更新當(dāng)前用戶余額是更新當(dāng)前用戶余額更新當(dāng)前車輛為未租賃更新當(dāng)前車輛為未租賃圖2.12審查通過確認(rèn)模塊流程圖第3章系統(tǒng)調(diào)試及運(yùn)行3.1調(diào)試分析用戶登錄和管理員登錄主界面如圖3.1和3.2所示。圖3.1用戶登錄主界面圖3.2管理員登錄主界面登錄界面如圖3.3所示。圖3.3登錄界面注冊界面如圖3.4所示。圖3.4注冊界面添加車輛界面如圖3.5所示。圖3.5添加車輛界面車輛租賃界面如圖3.6、圖3.7、圖3.8和圖3.9所示。圖3.6車輛租賃主界面圖3.7在線支付界面圖3.8租賃成功后的界面圖3.9租賃后的登錄主界面車輛歸還界面如圖3.10所示。圖3.10車輛歸還界面用戶管理界面如圖3.11和圖3.12所示。圖3.11用戶管理界面圖3.12刪除用戶界面余額充值界面如圖3.13和圖3.14所示。圖3.13余額充值界面圖3.14充值后的登錄主界面3.2結(jié)果分析管理員可以通過該手機(jī)APP實(shí)現(xiàn)添加車輛信息、車輛管理(包括刪除車輛信息、修改車輛信息和確認(rèn)審查)和用戶管理這三個功能。用戶可以通過該手機(jī)APP實(shí)現(xiàn)車輛租賃、車輛歸還、余額充值三個功能。管理員在添加車輛信息時可以實(shí)現(xiàn)車輛圖片、車輛品牌、車牌號和每日租金等信息。用戶租賃車輛時,可以實(shí)現(xiàn)在線下單、在線支付等功能,可以實(shí)現(xiàn)車輛租賃起止時間等信息的添加。軟件在運(yùn)行的過程中流暢,無異常退出情況,運(yùn)行結(jié)果正確無誤,基本滿足要求的功能。參考文獻(xiàn)[1]
沈澤剛,秦玉平.Java
語言程序設(shè)計(jì)[M].清華大學(xué)出版社,2009[2]
陳昊鵬[同譯者作品]
.Java
編程思想(第
4
版).機(jī)械工業(yè)出版社,2007
[3]
耿祥義,張躍平.
Java
實(shí)用教程(第三版).清華大學(xué)出版社,2006
[4]鄧文淵等.Android開發(fā)基礎(chǔ)教程[M].北京:人民郵電出版社,2014[5]楊謙等.SQLite權(quán)威指南(第2版)[M].北京:電子工業(yè)出版社,2012[6]趙書蘭等.Android[M].北京:電子工業(yè)出版社,2013[7]王學(xué)昌等.Android數(shù)據(jù)庫程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2014[8]
田俊靜
張波
黃湘情.Andrid基礎(chǔ)教程(第三版).人民郵電出版社.2010[9]
楊豐盛著.Android應(yīng)用開發(fā)揭秘.北京:機(jī)械工業(yè)出版社,2011[10]
靳巖,姚尚朗.
Android
開發(fā)入門與實(shí)戰(zhàn).人民郵電出版社附錄 AddActivity.java:packagecom.example.carrent;importandroid.app.Activity;importandroid.content.Intent;importandroid.database.Cursor;importandroid.graphics.BitmapFactory;.Uri;importandroid.os.Bundle;vider.MediaStore;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.EditText;importandroid.widget.ImageView;importandroid.widget.LinearLayout;importandroid.widget.TextView;importandroid.widget.Toast;publicclassAddActivityextendsActivity{ LinearLayoutback_btn; ImageViewiv; EditTextname; EditTextcarid; EditTextpermoney; StringpicturePath; privateDatabaseUtilmDBUtil; privatestaticintRESULT_LOAD_IMAGE=1; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.layout_admin);//初始化布局 back_btn=(LinearLayout)findViewById(R.id.back_btn); iv=(ImageView)findViewById(R.id.image); name=(EditText)findViewById(R.); carid=(EditText)findViewById(R.id.carid); permoney=(EditText)findViewById(R.id.permoney); TextViewsave=(TextView)findViewById(R.id.save); mDBUtil=newDatabaseUtil(AddActivity.this);//初始化數(shù)據(jù)庫 save.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODO自動生成的方法存根 Carscars=newCars(); cars.setName(name.getText().toString()); cars.setCarid(carid.getText().toString()); cars.setPermoney(Double.valueOf(permoney.getText().toString())); cars.setImageURL(picturePath); cars.setState("未租賃"); mDBUtil.Insertcars(cars);//向數(shù)據(jù)庫添加對象 Toast.makeText(getApplicationContext(),"添加成功!",1).show(); finish(); back_btn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODO自動生成的方法存根 finish(); iv.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODO自動生成的方法存根 //調(diào)用系統(tǒng)相冊獲得圖片 Intenti=newIntent( Intent.ACTION_PICK, vider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i,RESULT_LOAD_IMAGE); @Override protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ super.onActivityResult(requestCode,resultCode,data); //得到圖片路徑,并為imageView加載圖片 if(requestCode==RESULT_LOAD_IMAGE&&resultCode==RESULT_OK&&null!=data){ UriselectedImage=data.getData(); String[]filePathColumn={MediaStore.Images.Media.DATA}; Cursorcursor=getContentResolver().query(selectedImage, filePathColumn,null,null,null); cursor.moveToFirst(); intcolumnIndex=cursor.getColumnIndex(filePathColumn[0]); picturePath=cursor.getString(columnIndex); cursor.close(); iv.setImageBitmap(BitmapFactory.decodeFile(picturePath));Carback.java:packagecom.example.carrent;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importandroid.R.string;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.ClipData.Item;importandroid.content.DialogInterface;importandroid.content.Intent;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.os.Bundle;importandroid.os.Handler;importandroid.text.Editable;importandroid.text.TextWatcher;importandroid.util.Log;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.AdapterView;importandroid.widget.AdapterView.OnItemClickListener;importandroid.widget.AdapterView.OnItemLongClickListener;importandroid.widget.EditText;importandroid.widget.ImageView;importandroid.widget.ListView;importandroid.widget.SimpleAdapter;importandroid.widget.SimpleAdapter.ViewBinder;importandroid.widget.TextView;importandroid.widget.Toast;publicclasscarbackextendsActivity{ EditTexteSearch; ImageViewivDeleteText; ListViewmListView; ArrayList<Map<String,Object>>mData=newArrayList<Map<String,Object>>(); ArrayList<String>mListTitle=newArrayList<String>(); ArrayList<String>mListText=newArrayList<String>(); SimpleAdapteradapter; Handlermyhandler=newHandler(); List<Cars>nowcars=newArrayList<Cars>(); privateDatabaseUtilmDB; StringnowTime; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.layout_search); mDB=newDatabaseUtil(this); TextViewback_btn=(TextView)findViewById(R.id.back_btn); set_ivDeleteText_OnClick();//設(shè)置叉叉的監(jiān)聽器 set_eSearch_TextChanged();//設(shè)置eSearch搜索框的文本改變時監(jiān)聽器 set_mListView_adapter();//給listview控件添加一個adapter set_mListView_listener(); back_btn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub startActivity(newIntent(carback.this,MainActivity.class)); finish(); privatevoidset_mListView_listener(){ //TODOAuto-generatedmethodstub mListView.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<>parent,Viewview,finalintposition, longid){ TextViewshow=(TextView)findViewById(R.id.show); //TODOAuto-generatedmethodstub if(NowUser.nowPerson.getType().equals("用戶")){ NowUser.nowPay=nowcars.get(position); //Toast.makeText(getApplicationContext(),"now:"+nowTime+"start"+NowUser.nowPay.startTime+"end:"+NowUser.nowPay.endTime,1).show(); Log.v("TAG","usermoney1"+NowUser.nowPerson.getMoney()); if(NowUser.nowPay.getState().equals("已租賃")&&NowUser.nowPay.getSaleuser().equals(NowUser.nowPerson.getUsername())) startActivity(newIntent(carback.this,carbackactivity.class)); elseif(NowUser.nowPay.getState().equals("歸還審查")&&NowUser.nowPay.getSaleuser().equals(NowUser.nowPerson.getUsername())) Toast.makeText(getApplicationContext(),"正在審查!",1).show(); elseif(NowUser.nowPay.getState().equals("審查通過")&&NowUser.nowPay.getSaleuser().equals(NowUser.nowPerson.getUsername())) startActivity(newIntent(carback.this,ShenchaPassActivity.class)); elseToast.makeText(getApplicationContext(),"您未租賃不能歸還!",1).show(); *設(shè)置搜索框的文本更改時的監(jiān)聽器 privatevoidset_eSearch_TextChanged() eSearch=(EditText)findViewById(R.id.etSearch); eSearch.addTextChangedListener(newTextWatcher(){ @Override publicvoidonTextChanged(CharSequencearg0,intarg1,intarg2,intarg3){ //TODOAuto-generatedmethodstub //這個應(yīng)該是在改變的時候會做的動作吧,具體還沒用到過。 @Override publicvoidbeforeTextChanged(CharSequencearg0,intarg1,intarg2, intarg3){ //TODOAuto-generatedmethodstub //這是文本框改變之前會執(zhí)行的動作 @Override publicvoidafterTextChanged(Editables){ //TODOAuto-generatedmethodstub /**這是文本框改變之后會執(zhí)行的動作 *因?yàn)槲覀円龅木褪牵谖谋究蚋淖兊耐瑫r,我們的listview的數(shù)據(jù)也進(jìn)行相應(yīng)的變動,并且如一的顯示在界面上。 *所以這里我們就需要加上數(shù)據(jù)的修改的動作了。 if(s.length()==0){ ivDeleteText.setVisibility(View.GONE);//當(dāng)文本框?yàn)榭諘r,則叉叉消失 mData.clear(); adapter.notifyDataSetChanged(); else{ ivDeleteText.setVisibility(View.VISIBLE);//當(dāng)文本框不為空時,出現(xiàn)叉叉 myhandler.post(eChanged); RunnableeChanged=newRunnable(){ @Override publicvoidrun(){ //TODOAuto-generatedmethodstub Stringdata=eSearch.getText().toString().trim(); mData.clear();//先要清空,不然會疊加 getmData(mData,data);//獲取更新數(shù)據(jù) adapter.notifyDataSetChanged();//更新 privatebooleanfind; *設(shè)置叉叉的點(diǎn)擊事件,即清空功能 privatevoidset_ivDeleteText_OnClick() //System.out.println("執(zhí)行2"); ivDeleteText=(ImageView)findViewById(R.id.ivDeleteText); ivDeleteText.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewarg0){ //TODOAuto-generatedmethodstub //System.out.println("執(zhí)行3"); eSearch.setText(""); //為了在Listview顯示圖片 privateclassListViewBinderimplementsViewBinder{ @Override publicbooleansetViewValue(Viewview,Objectdata, StringtextRepresentation){ //TODOAuto-generatedmethodstub if((viewinstanceofImageView)&&(datainstanceofBitmap)){ ImageViewimageView=(ImageView)view; Bitmapbmp=(Bitmap)data; imageView.setImageBitmap(bmp); returntrue; returnfalse; *設(shè)置ListView的Adapter privatevoidset_mListView_adapter() mListView=(ListView)findViewById(R.id.mListView); //getmData(mData); getmData(mData,"*");//獲取更新數(shù)據(jù) adapter=newSimpleAdapter(this,mData,R.layout.items, newString[]{"image","name","carid","startTime","endTime","permoney","saleuser","state"}, newint[]{R.id.image,R.,R.id.carid,R.id.startTime,R.id.endTime,R.id.permoney,R.id.saleuser,R.id.state}); adapter.setViewBinder(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建水投集團(tuán)泰寧水務(wù)有限公司招聘2人考試重點(diǎn)題庫及答案解析
- 2026年齊齊哈爾高等師范專科學(xué)校單招綜合素質(zhì)筆試模擬試題含詳細(xì)答案解析
- 2026年鄭州電子信息職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考題庫含詳細(xì)答案解析
- 2026年江西旅游商貿(mào)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫及答案詳細(xì)解析
- 2026年上海杉達(dá)學(xué)院單招職業(yè)技能考試備考題庫含詳細(xì)答案解析
- 2026年江西科技學(xué)院單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 2026年湖北生物科技職業(yè)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026山西省人民醫(yī)院招聘博士研究生50人考試參考試題及答案解析
- 2026年湖南國防工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 2026年麗江師范高等??茖W(xué)校單招職業(yè)技能考試參考題庫含詳細(xì)答案解析
- 尼帕病毒病預(yù)防控制技術(shù)指南總結(jié)2026
- 2026屆大灣區(qū)普通高中畢業(yè)年級聯(lián)合上學(xué)期模擬考試(一)語文試題(含答案)(含解析)
- 初高中生物知識銜接課件
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫及完整答案詳解一套
- 道路隔離護(hù)欄施工方案
- (2025年)軍隊(duì)文職考試面試真題及答案
- 新版-八年級上冊數(shù)學(xué)期末復(fù)習(xí)計(jì)算題15天沖刺練習(xí)(含答案)
- 2025智慧城市低空應(yīng)用人工智能安全白皮書
- 云南師大附中2026屆高三月考試卷(七)地理
- 通信管道施工質(zhì)量控制方案
- 邁瑞售后管理制度規(guī)范
評論
0/150
提交評論