畢業(yè)論文-移動(dòng)端的日志管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
畢業(yè)論文-移動(dòng)端的日志管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
畢業(yè)論文-移動(dòng)端的日志管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
畢業(yè)論文-移動(dòng)端的日志管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
畢業(yè)論文-移動(dòng)端的日志管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩61頁(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)介

本科畢業(yè)論文PAGE1畢業(yè)論文(設(shè)計(jì))論文(設(shè)計(jì))題目:移動(dòng)端的日志管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)姓名學(xué)號(hào)學(xué)院山東大學(xué)軟件學(xué)院專業(yè)數(shù)字媒體技術(shù)年級(jí)指導(dǎo)教師2016年5月23日目錄TOC\o"1-3"\h\u摘要 1ABSTRACT 2第一章緒論 31.1移動(dòng)端日志管理系統(tǒng)開(kāi)發(fā)背景與意義 31.2國(guó)內(nèi)外研究及發(fā)展現(xiàn)狀 41.3解決的主要問(wèn)題 51.4本文研究?jī)?nèi)容 51.5論文的內(nèi)容安排 5第二章技術(shù)概述 62.1Android平臺(tái)及JAVA語(yǔ)言 62.1.1Android介紹 62.1.2JAVA介紹 72.2Servlet及SQLServer 82.2.1Servlet介紹 82.2.2SQLServer數(shù)據(jù)庫(kù)服務(wù)器介紹 8第三章需求分析 93.1移動(dòng)端日志管理系統(tǒng)概述 93.2移動(dòng)端日志管理系統(tǒng)需求描述 93.2.1技術(shù)可行性與操作可行性分析 93.2.2經(jīng)濟(jì)可行性分析 103.2.3移動(dòng)端日志管理系統(tǒng)功能性需求 103.2.4移動(dòng)端日志管理系統(tǒng)非功能性需求 113.3移動(dòng)端日志管理系統(tǒng)數(shù)據(jù)庫(kù)結(jié)構(gòu)分析 12第四章系統(tǒng)總體設(shè)計(jì)分析 134.1移動(dòng)端日志管理系統(tǒng)體系結(jié)構(gòu) 134.2移動(dòng)端日志管理系統(tǒng)功能模塊劃分 144.3數(shù)據(jù)庫(kù)表的設(shè)計(jì)與實(shí)現(xiàn) 154.4移動(dòng)端日志管理系統(tǒng)總體流程 17第五章系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 175.1服務(wù)器端開(kāi)發(fā)與實(shí)現(xiàn) 185.1.1服務(wù)器的搭建 185.1.2Servlet服務(wù)端程序與數(shù)據(jù)庫(kù)訪問(wèn)實(shí)現(xiàn) 185.2網(wǎng)絡(luò)連接相關(guān) 215.2.1Android網(wǎng)絡(luò)連接原理介紹 215.2.2網(wǎng)絡(luò)訪問(wèn)編程實(shí)現(xiàn) 215.3登錄 245.3.1延時(shí)跳轉(zhuǎn) 245.3.2網(wǎng)絡(luò)檢查與用戶信息保存 255.4主界面與功能實(shí)現(xiàn) 265.4.1整體界面的布局與實(shí)現(xiàn) 265.4.2個(gè)人日志界面的布局與實(shí)現(xiàn) 305.4.3部門日志、指派任務(wù)與個(gè)人中心布局與實(shí)現(xiàn) 345.4.4基于角色權(quán)限的功能 375.4.5搜索界面 37第六章系統(tǒng)測(cè)試與分析 396.1測(cè)試方式 396.2結(jié)果分析 40第七章結(jié)論 40致謝 42參考文獻(xiàn) 43附錄1英文原文 44附錄2譯文 47附錄3部分功能代碼 50本科畢業(yè)論文移動(dòng)端的日志管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)摘要隨著近幾年工業(yè)技術(shù)與計(jì)算機(jī)技術(shù)的快速發(fā)展,智能移動(dòng)設(shè)備在人們?nèi)粘I钪械玫搅嗽絹?lái)越廣泛的使用,適合于移動(dòng)設(shè)備的各類APP也為人們的生活生產(chǎn)帶去了許多便利。企業(yè)信息化和管理水平的提高使得傳統(tǒng)的辦公室電腦辦公方式已不能滿足企業(yè)發(fā)展需求,于是人們提出了移動(dòng)化辦公的概念。移動(dòng)辦公使員工在辦公時(shí)不再受時(shí)空的限定。傳統(tǒng)的以及大家廣泛使用的日志管理系統(tǒng)都是基于PC平臺(tái)的,對(duì)于地點(diǎn)的要求較高。本文研究的是企業(yè)內(nèi)部使用的基于移動(dòng)平臺(tái)的日志管理系統(tǒng),該系統(tǒng)是浙能集團(tuán)自己研發(fā)的移動(dòng)辦公平臺(tái)的一部分,是為集團(tuán)內(nèi)部員工提供工作任務(wù)管理的一個(gè)移動(dòng)化平臺(tái)。移動(dòng)端日志管理系統(tǒng)主要是幫助企業(yè)員工對(duì)工做任務(wù)進(jìn)行管理,從而幫助員工實(shí)現(xiàn)工作與時(shí)間的高效管理。系統(tǒng)設(shè)計(jì)在功能要求方面,其主要是讓員工查看個(gè)人日志,添加、編輯個(gè)人日志,查看部門日志,查看指派任務(wù)以及修改個(gè)人信息。在整體設(shè)計(jì)實(shí)現(xiàn)方面,使用基于B/S的三層體系結(jié)構(gòu),Android應(yīng)用程序做為客戶端,Servlet程序做為服務(wù)器端程序,SQLServer2012做為存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)。該系統(tǒng)經(jīng)過(guò)開(kāi)發(fā)測(cè)試,最后在企業(yè)中試運(yùn)行時(shí)取得了比較好的效果。關(guān)鍵字:移動(dòng)辦公;移動(dòng)端日志管理系統(tǒng);Android;B/S架構(gòu)ABSTRACTWiththerapiddevelopmentinrecentyears,industrialtechnologyandcomputertechnology,intelligentmobiledevicesinpeople'sdailylifehasbeenmoreandmorewidelyused,varioustypesofAPPsuitableformobiledevicesbutalsoforpeople'slifeandproductionbroughtalotofconvenience.TheimprovementofthelevelforenterpriseinformatizationandmanagementmakestheofficemodebasedontraditionPCcannotmeettheneedsofenterprise,sopeopleputforwardtheconceptofmobileoffice.Mobileofficemakethatemployeesattheofficeisnolongerlimitedbytimeandspace.TraditionallogmanagementsystemthatisusedwidelyisbasedonPCplatform,therequirementsofplaceisveryhigh.Inthispaper,westudythelogmanagementsystembasedonmobileplatform.Thissystemasapartofthemobileofficesystem,isamobiletaskmanagementplatformforemployees.Thelogmanagementsystemformobileterminalismainlytohelpenterprisesandemployeesmanagetheirtasks,soastohelpthemachieveefficientmanagementofworkandtime.Intermsoffunctionforthissystem,itismainlytoprovidepersonalanddepartmentaltaskstoglanceover,peoplecanuseittoaddoredittasks.Peoplecanuserthissystmetosendatasktocolleaguewhoisintheirowndepartment,alsocanlookthroughthetasksthathavebeensend.Atthesametimepeoplecanmodifytheirowninformationbyusingthissystem.Intermsofdesign,thesystemusesthree-tierarchitectureonB/S,AndroidplatformapplicationasaclientandusingtheServletprogramasserverprogram,asfordatabaseserver,weuseSQLServer2012.Thissystemhasbeencompletedandtestedintheenterprisewithagoodresultsfornow.Keyword:Mobileoffice;MobileLogManagementSystem;Android;B/SArchitecture第一章緒論1.1移動(dòng)端日志管理系統(tǒng)開(kāi)發(fā)背景與意義隨著智能手機(jī)這種手機(jī)和電腦相結(jié)合的設(shè)備進(jìn)入人們的生活,并飛速取代傳統(tǒng)的手機(jī),以及像Pad,Watch等移動(dòng)只能終端的出現(xiàn),智能設(shè)備已深深影響大眾的生活。伴隨企業(yè)信息化和管理水平的提升,以往的辦公室電腦辦公方式已無(wú)法滿足員工的日常工作需求。在實(shí)際生產(chǎn)工作中,經(jīng)常會(huì)遇到出差或不在辦公室的時(shí)候需要處理相關(guān)工作業(yè)務(wù),但在外又難以完成工作,這就使得整體的工作效率受到影響,像這種坐在電腦前面才能工作的方式讓企事業(yè)員工感受到了種種限制,而這些因素就推動(dòng)了移動(dòng)辦公的出現(xiàn)。隨著2013年第四代移動(dòng)通信技術(shù)(4G)牌照的下發(fā),4G網(wǎng)絡(luò)開(kāi)始走入人們的生活,更加快速的移動(dòng)通信網(wǎng)絡(luò)為移動(dòng)辦公的實(shí)現(xiàn)添加了一把利器,與此同時(shí)通訊技術(shù)與網(wǎng)絡(luò)技術(shù)的高速進(jìn)步,智能設(shè)備的全面普及,這三者的結(jié)合也為移動(dòng)辦公的出現(xiàn)提供了孕育基礎(chǔ)[1]。移動(dòng)辦公這種全新的辦公方式,實(shí)現(xiàn)了讓企事業(yè)員工不受時(shí)間與空間的限制來(lái)完成工作,同時(shí)加強(qiáng)了各地員工的協(xié)作能力。移動(dòng)辦公的核心是人,通過(guò)移動(dòng)終端上的軟件將人、物和信息之間的關(guān)系通過(guò)科學(xué)、高效的手段管理起來(lái),使得工作流程更加規(guī)范、信息傳遞更加及時(shí)、資源利用更加合理、交流障礙更加的少,同時(shí)信息安全也能夠得到保障,讓企業(yè)在當(dāng)今互聯(lián)網(wǎng)時(shí)代下能跟上時(shí)代的步伐,讓企業(yè)在發(fā)展浪潮下能更好抓住時(shí)機(jī),從而實(shí)現(xiàn)更加久遠(yuǎn)的發(fā)展[2]。隨著手機(jī)進(jìn)入智能機(jī)時(shí)代,多種移動(dòng)終端出現(xiàn),而安卓系統(tǒng)也已成為移動(dòng)終端使用最多的系統(tǒng)。越來(lái)越多的企業(yè)開(kāi)始打造“智慧辦公”的企業(yè)環(huán)境,將很多只能在電腦前完成的工作都發(fā)展到手機(jī)等移動(dòng)設(shè)備上。浙能集團(tuán)做為大型能源企業(yè),對(duì)信息化與現(xiàn)代化辦公非??粗?,近年集團(tuán)在發(fā)展傳統(tǒng)能源行業(yè)的同時(shí),努力將現(xiàn)代化信息技術(shù)結(jié)合與日常辦公中,在這個(gè)過(guò)程中集團(tuán)注意到了移動(dòng)化辦公的必要,并著手開(kāi)發(fā)自己的移動(dòng)辦公平臺(tái)。做為該移動(dòng)平臺(tái)的一部分,日志管理系統(tǒng)是企業(yè)員工日常辦公所不可或缺的,而基于安卓開(kāi)發(fā)的任務(wù)管理系統(tǒng)因安卓系統(tǒng)的強(qiáng)大市場(chǎng)占有率,使得其在實(shí)行應(yīng)用時(shí)有集團(tuán)內(nèi)部有足夠的人群使用基數(shù),在內(nèi)部可以得到大力的推廣應(yīng)用。移動(dòng)端日志管理系統(tǒng)是給員工管理工作任務(wù)的一個(gè)移動(dòng)化平臺(tái),該系統(tǒng)以員工任務(wù)為數(shù)據(jù)源,對(duì)員工所有任務(wù)進(jìn)行記錄、管理,可以幫助領(lǐng)導(dǎo)了解下屬工作情況、部門現(xiàn)狀。員工可在接到任務(wù)后實(shí)時(shí)記錄,并可隨時(shí)對(duì)現(xiàn)執(zhí)行任務(wù)的進(jìn)度編輯修改。移動(dòng)端日志管理系統(tǒng)可以讓員工更好的實(shí)現(xiàn)時(shí)間和任務(wù)管理,從而以更高的工作效率為企業(yè)帶來(lái)更好的經(jīng)濟(jì)效益。1.2國(guó)內(nèi)外研究及發(fā)展現(xiàn)狀伴隨著各種聯(lián)網(wǎng)設(shè)備的普及,在不同網(wǎng)絡(luò)環(huán)境下通信的需求也與日俱增。2G、3G、4G等多種通信方式以無(wú)線通信作為傳輸途徑,以互聯(lián)網(wǎng)為核心,以智能移動(dòng)終端為客戶機(jī)的移動(dòng)互聯(lián)應(yīng)運(yùn)而生。它使用最新的移動(dòng)技術(shù),使用戶在移動(dòng)中能夠充分利用網(wǎng)上的各種資源,為用戶提供多種豐富的信息管理服務(wù)[3]。如今,智能終端達(dá)到了前所未有的普及程度,這些終端不僅擁有PC的大部分功能,同時(shí)集通訊與一身。以前移動(dòng)電話改變了人們只能在有電話線,電話機(jī)的情況下進(jìn)行通訊,現(xiàn)在的移動(dòng)智能終端改變了人們必須要有電腦和網(wǎng)線才能上網(wǎng)的格局。而正是智能終端的出現(xiàn),讓人們開(kāi)始考慮更多的轉(zhuǎn)變——從固定到移動(dòng)。移動(dòng)辦公正慢慢成為企業(yè)的日常辦公形式,做為結(jié)合網(wǎng)絡(luò)與現(xiàn)代化辦公的全新辦公形式,移動(dòng)辦公是目前移動(dòng)端一個(gè)擁有廣闊前景的技術(shù)應(yīng)用領(lǐng)域。通過(guò)互聯(lián)網(wǎng),企事業(yè)內(nèi)部員工可跨越不同事件、不同地點(diǎn)進(jìn)行工作。通過(guò)移動(dòng)辦公系統(tǒng)使用的互換網(wǎng)絡(luò),信息的交流變的更加便利快捷,辦公效率得到顯著的提高。移動(dòng)辦公系統(tǒng)作為辦公載體,運(yùn)行著很多公文,而對(duì)有些公文,要求在第一時(shí)間進(jìn)行處理,移動(dòng)辦公恰恰能很好的實(shí)現(xiàn)隨時(shí)隨地處理公文。經(jīng)濟(jì)發(fā)展的全球化使得這種隨時(shí)的事務(wù)處理需求變的越來(lái)越必要。移動(dòng)辦公系統(tǒng)將成為各種機(jī)構(gòu)提高辦公效率的利器,基于移動(dòng)設(shè)備進(jìn)行開(kāi)發(fā)的辦公系統(tǒng),可以顯著改善工作環(huán)境,使企業(yè)結(jié)構(gòu)間的溝通更簡(jiǎn)便,并可通過(guò)視頻進(jìn)行遠(yuǎn)程會(huì)議等,企業(yè)員工的工作方式多樣化使得工作效率得以提高。出差辦公的員工只要手上有移動(dòng)智能設(shè)備,就可不被時(shí)間和所在地約束而通過(guò)wifi或移動(dòng)網(wǎng)絡(luò)接入互聯(lián)網(wǎng)進(jìn)行事務(wù)處理。同時(shí),移動(dòng)辦公的形式很好的豐富了自動(dòng)化辦公系統(tǒng)的內(nèi)容,提升了自動(dòng)化辦公系統(tǒng)的應(yīng)用范圍和程度,讓工作不只局限于在辦公室內(nèi)完成,而是員工可以在各種地方各種時(shí)間完成工作任務(wù)。移動(dòng)APP領(lǐng)域近年來(lái)發(fā)展勢(shì)頭很猛,而移動(dòng)辦公正是移動(dòng)終端應(yīng)用領(lǐng)域的研究和發(fā)展熱點(diǎn),移動(dòng)化辦公的前景將非常廣闊[4]。1.3解決的主要問(wèn)題移動(dòng)端的日志管理系統(tǒng)做為移動(dòng)辦公系統(tǒng)的一部分,該系統(tǒng)是用戶根據(jù)自己的工作情況記錄所要執(zhí)行的任務(wù)并對(duì)任務(wù)進(jìn)展情況進(jìn)行任務(wù)進(jìn)度修改,如何根據(jù)用戶需求,設(shè)計(jì)并實(shí)現(xiàn)良好用戶體驗(yàn)的移動(dòng)端日志管理系統(tǒng)是本文要解決的主要問(wèn)題。1.4本文研究?jī)?nèi)容本文研究的是移動(dòng)端的日志管理系統(tǒng),系統(tǒng)的整體實(shí)現(xiàn)主要由三個(gè)部分組成,分別是用戶端、服務(wù)器和數(shù)據(jù)庫(kù)。用戶端采用的是Android應(yīng)用程序,服務(wù)端程序使用的是實(shí)現(xiàn)serlvet接口的程序,使用SQLServer做為數(shù)據(jù)庫(kù)服務(wù)器。主要目的是實(shí)現(xiàn)數(shù)據(jù)在三個(gè)層之間的傳遞,從而在客戶端展現(xiàn)給用戶。1.5論文的內(nèi)容安排緒論,主要描述移動(dòng)端日志管理系統(tǒng)的開(kāi)發(fā)背景、移動(dòng)辦公的國(guó)內(nèi)外研究現(xiàn)狀,文章的研究?jī)?nèi)容和需要解決的主要問(wèn)題。技術(shù)概述,簡(jiǎn)單闡述了一些在開(kāi)發(fā)過(guò)程需要使用到的技術(shù)。需求分析,介紹了移動(dòng)端日志管理系統(tǒng)項(xiàng)目開(kāi)發(fā)的背景,以及對(duì)系統(tǒng)的各項(xiàng)需求進(jìn)行分析分析。整體的系統(tǒng)設(shè)計(jì),介紹了系統(tǒng)的整體結(jié)構(gòu)框架,幾個(gè)功能模塊和總體實(shí)現(xiàn)流程。系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn),詳細(xì)分析了系統(tǒng)移動(dòng)端、服務(wù)端是如何實(shí)現(xiàn)的。系統(tǒng)測(cè)試與結(jié)果分析,介紹了對(duì)系統(tǒng)在功能和性能測(cè)試所采用的方法,并對(duì)測(cè)試的結(jié)果進(jìn)行簡(jiǎn)單分析。結(jié)論,總結(jié)畢業(yè)設(shè)計(jì)。第二章技術(shù)概述2.1Android平臺(tái)及JAVA語(yǔ)言本系統(tǒng)主要使用JAVA語(yǔ)言開(kāi)發(fā),從接口到功能實(shí)現(xiàn)。Android中各個(gè)界面間的切換主要是通過(guò)Activity之間的跳轉(zhuǎn)實(shí)現(xiàn)的,而跳轉(zhuǎn)過(guò)程利用Intent來(lái)實(shí)現(xiàn)。在運(yùn)行當(dāng)中當(dāng)前Activity被新的Activity替代時(shí)可選擇將當(dāng)前的Activityfinish掉,或者讓其進(jìn)入回退棧以需要時(shí)被重新調(diào)用。系統(tǒng)通過(guò)View類和XML布局文件實(shí)現(xiàn)用戶窗口的編輯展現(xiàn),窗口中的控件通過(guò)注冊(cè)各類監(jiān)聽(tīng)事件來(lái)響應(yīng)用戶點(diǎn)擊。各個(gè)Activity,dialog等之間的信息數(shù)據(jù)可通過(guò)Bundle類的put()和get()方法實(shí)現(xiàn)。JAVA語(yǔ)言是一種面向?qū)ο蟮恼Z(yǔ)言,聯(lián)系現(xiàn)實(shí)世界中的事物關(guān)系使其開(kāi)發(fā)變的簡(jiǎn)單,同時(shí)其具有很多的優(yōu)點(diǎn),例如可靠性、與開(kāi)發(fā)平臺(tái)無(wú)關(guān)性,面向?qū)ο?,安全性等[5]。2.1.1Android介紹Android的底層系統(tǒng)使用的是層次結(jié)構(gòu),根據(jù)實(shí)現(xiàn)的功能不同共有四層,分別為L(zhǎng)inux內(nèi)核層、系統(tǒng)運(yùn)行層、框架層和應(yīng)用層。開(kāi)發(fā)的移動(dòng)APP主要是應(yīng)用層的程序。目前Android應(yīng)用開(kāi)發(fā)采用的是JAVA語(yǔ)言,雖然也有其他的如C++語(yǔ)言開(kāi)發(fā)、基于HTTML5的開(kāi)發(fā)或者是Android原生與HTML5相結(jié)合的開(kāi)發(fā)。Android的底層系統(tǒng)結(jié)構(gòu)采用的是C語(yǔ)言開(kāi)發(fā),如果使用C開(kāi)發(fā)Android應(yīng)用,其運(yùn)行效率將會(huì)是非常喜人的,但其屏蔽硬件的能力較弱以及語(yǔ)言開(kāi)發(fā)的難度較大,而使用JAVA開(kāi)發(fā)能夠屏蔽掉硬件的差異,提供純粹的有利于開(kāi)發(fā)者開(kāi)發(fā)和測(cè)試的的方法,其開(kāi)發(fā)的應(yīng)用在運(yùn)行效率上雖然沒(méi)有C++應(yīng)用那么高,但仍然是比較高效,同時(shí)使用JAVA開(kāi)發(fā)比C++更加容易[6]。所以使用JAVA開(kāi)發(fā)成為了目前的主流。Android最主要的是它的四大組件,其中活動(dòng)(Activity)相對(duì)于其他的程序?qū)υ捒蚧蚱渌木W(wǎng)絡(luò)應(yīng)用的窗口頁(yè)面來(lái)說(shuō),它被設(shè)計(jì)為可以保持并獨(dú)立的在后臺(tái)運(yùn)行的服務(wù),各個(gè)Activity之間的跳轉(zhuǎn)需要另一個(gè)類Intent來(lái)快速方便的實(shí)現(xiàn)。后來(lái),為了解決不同設(shè)備不同分辯率下的界面能夠被靈活的設(shè)計(jì),在推出Android的3.0版本時(shí)添加了Fragment組件。平板電腦被設(shè)計(jì)成大屏幕的,人們想到原有的界面設(shè)計(jì)是的屏幕的空間沒(méi)有被很好的利用,需要通過(guò)一些方法來(lái)充分的利用多出來(lái)的屏幕空間。起初并沒(méi)有很好的辦法來(lái)實(shí)現(xiàn),而fragment的出現(xiàn)為設(shè)計(jì)師和程序員們打開(kāi)了一扇天窗。Fragment可以將activity分割成幾個(gè)相互獨(dú)立的并可重復(fù)使用的組件,這體現(xiàn)了良好的模塊化思維。每個(gè)分離的組件都有它自己的生命周期和UI界面,它的生命周期和Activity緊密相連,同時(shí)擁有更加細(xì)致的生命階段。Fragment依賴于activity而存在,隨activity的創(chuàng)建而創(chuàng)建,停止而停止,消失而消失[7]。2.1.2JAVA介紹JAVA是最受歡迎的面向?qū)ο蟮拈_(kāi)發(fā)語(yǔ)言,其區(qū)別于其他開(kāi)發(fā)語(yǔ)言的主要特點(diǎn)是開(kāi)發(fā)的程序不受運(yùn)行平臺(tái)的限制,因?yàn)樗帉懙某绦蚴沁\(yùn)行在JVM上的,只要系統(tǒng)平臺(tái)能夠安裝虛擬機(jī)就就能夠運(yùn)行JAVA程序,目前其目前主要適用于網(wǎng)絡(luò)相關(guān)的編程。JAVA擁有非常好的通用性、安全性、跨平臺(tái)性和高效性,這使得它受到非常多的程序員的喜愛(ài)。JAVA有自己的垃圾回收機(jī)制,會(huì)自動(dòng)管理內(nèi)存的釋放和利用,用戶在編寫程序的時(shí)候不必?fù)?dān)心會(huì)像C/C++那樣因?yàn)闆](méi)有做到內(nèi)存的合理釋放而使程序崩潰。JAVA為了簡(jiǎn)單起見(jiàn),只支持類之間的單一繼承關(guān)系,而為了解決單一繼承帶來(lái)的局限性,JAVA的接口能夠?qū)崿F(xiàn)繼承多個(gè)不同的接口。JAVA被廣泛應(yīng)用于個(gè)人PC,服務(wù)器開(kāi)發(fā),數(shù)據(jù)中心,云服務(wù)等,其諸多特性使JAVA在當(dāng)下移動(dòng)互聯(lián)網(wǎng)與云服務(wù)大環(huán)境中具備了廣闊應(yīng)用前景[8]。2.2Servlet及SQLServer2.2.1Servlet介紹Servlet是一種使用JAVA語(yǔ)言編寫的服務(wù)端的程序,是與應(yīng)用平臺(tái)無(wú)關(guān)的,它可以使用全部的JAVAAPI,其主要被用于網(wǎng)頁(yè)的可交互閱覽和相關(guān)的數(shù)據(jù)修改。現(xiàn)在所說(shuō)的JAVA集成框架SSH(Struts+Spring+Hibernate)就是基于Servlet進(jìn)行封裝的。開(kāi)發(fā)Servlet程序有三種實(shí)現(xiàn)方法,一種是通過(guò)實(shí)現(xiàn)Servlet接口來(lái)實(shí)現(xiàn),一種是繼承GernericServlet還有一種是繼承HttpServlet。Servlet可以被理解為服務(wù)器程序的一個(gè)幫助程序,服務(wù)器在獲取到客戶端發(fā)送來(lái)的動(dòng)態(tài)請(qǐng)求后會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的幫助程序,幫助程序處理完成后將結(jié)果返回給服務(wù)器,這就免于服務(wù)器程序處理動(dòng)態(tài)頁(yè)面而只需要處理靜態(tài)的數(shù)據(jù)頁(yè)面。服務(wù)器程序在服務(wù)器端使用Servlet程序,相對(duì)于其他公共網(wǎng)絡(luò)接口程序擁有更快的執(zhí)行速度,并且Servlet把各個(gè)用戶的請(qǐng)求通過(guò)生成一個(gè)進(jìn)程的一個(gè)線程來(lái)處理,而不需要另外創(chuàng)建一個(gè)進(jìn)程來(lái)單獨(dú)處理請(qǐng)求,這使得服務(wù)器端在處理請(qǐng)求時(shí)資源開(kāi)銷大大降低[9]。2.2.2SQLServer數(shù)據(jù)庫(kù)服務(wù)器介紹SQLServer是一個(gè)關(guān)系型數(shù)據(jù)庫(kù),主要用戶是規(guī)模不大的中小企業(yè)。MS的多種資源以及產(chǎn)品被集中在該數(shù)據(jù)庫(kù)系統(tǒng)中,使其相對(duì)于其他數(shù)據(jù)庫(kù)系統(tǒng)更具優(yōu)勢(shì)。SQLServer的用戶界面清晰明了,對(duì)于國(guó)企、事業(yè)單位以及小型企業(yè),SQLServer的數(shù)據(jù)庫(kù)快速開(kāi)發(fā),以及數(shù)據(jù)的快速處理將非常合適。第三章需求分析3.1移動(dòng)端日志管理系統(tǒng)概述日志管理系統(tǒng)將任務(wù)以列表的形式展現(xiàn)給用戶,用戶可清晰的查看到任務(wù)情況。員工在使用系統(tǒng)記錄工作任務(wù)的同時(shí)還會(huì)記錄工作的計(jì)劃開(kāi)始時(shí)間、結(jié)束時(shí)間,是否完成。日志管理系統(tǒng)設(shè)計(jì)基于時(shí)間和工作管理原則,這為員工實(shí)現(xiàn)時(shí)間和工作管理提供了方便。有了可執(zhí)行的計(jì)劃,員工的工作效率將得到提高。部門領(lǐng)導(dǎo)查看部門的任務(wù)列表,即可以了解本部門目前有哪些任務(wù),也可以掌握各個(gè)下屬的在執(zhí)行任務(wù)情況,在整體上對(duì)各個(gè)員工的工作量可以進(jìn)行一個(gè)客觀衡量,從而更好的分配任務(wù)使部門整體效率最大化。各個(gè)部門的效率提高,將為企事業(yè)的效益提高打下堅(jiān)實(shí)的基礎(chǔ)。3.2移動(dòng)端日志管理系統(tǒng)需求描述3.2.1技術(shù)可行性與操作可行性分析是本系統(tǒng)使用安卓開(kāi)發(fā),開(kāi)發(fā)語(yǔ)言使用的是java,java雖然是在1995年正式推出的,但因其良好的安全性、通用性、可移植性和高效性,迅速被廣大開(kāi)發(fā)人員所接受,根據(jù)IEEESpectrum

Ranking2015年排名,JAVA在最受歡迎語(yǔ)言榜中排名第一,從事開(kāi)發(fā)的人員龐大,框架眾多,android是谷歌2008年正式發(fā)布的,雖然只有短短8年時(shí)間,但因?yàn)橹悄茉O(shè)備的出現(xiàn),android得到了飛速的發(fā)展,各種開(kāi)源框架發(fā)展迅速,使得android開(kāi)發(fā)的技術(shù)已經(jīng)非常成熟[10]。服務(wù)器采用servlet編寫,數(shù)據(jù)庫(kù)采用Microsoft開(kāi)發(fā)的的SQLServer數(shù)據(jù)庫(kù),在實(shí)現(xiàn)上都已具備完善的技術(shù)。日志管理系統(tǒng)運(yùn)行在移動(dòng)智能設(shè)備上,界面簡(jiǎn)潔,操作簡(jiǎn)單方便。因此,移動(dòng)端的日志管理系統(tǒng)無(wú)論在技術(shù)實(shí)現(xiàn)與操作實(shí)現(xiàn)上都是可行的。3.2.2經(jīng)濟(jì)可行性分析android設(shè)備從2008年10月第一次出現(xiàn),在2014年底已結(jié)占據(jù)了83.6%的市場(chǎng),大眾普遍使用的都是android系統(tǒng)的智能手機(jī)。隨著科技的進(jìn)步與技術(shù)的革新,android移動(dòng)設(shè)備的價(jià)格和行能呈現(xiàn)反比形式,現(xiàn)在只要幾百,千元左右就可以買到性能不錯(cuò)的android手機(jī)。該系統(tǒng)對(duì)硬件的要求低,同時(shí)也沒(méi)有對(duì)特殊硬件的要求,所以基本可以滿足所有的android用戶使用。用戶在使用操作時(shí),只需連接網(wǎng)絡(luò)就可訪問(wèn)位于服務(wù)器的數(shù)據(jù),極大的方便著用戶的使用。在系統(tǒng)的推廣方面,其成本遠(yuǎn)低于傳統(tǒng)的推廣方式,而且其開(kāi)發(fā)代價(jià)相對(duì)較低。所以從經(jīng)濟(jì)可行性角度分析,這個(gè)應(yīng)用體現(xiàn)了經(jīng)濟(jì)實(shí)惠的特點(diǎn)。3.2.3移動(dòng)端日志管理系統(tǒng)功能性需求(1)用戶登錄用戶需通過(guò)用戶名和密碼的驗(yàn)證登錄系統(tǒng)才能進(jìn)行相關(guān)的操作,在系統(tǒng)中用戶查看到當(dāng)前登錄到系統(tǒng)的用戶名是什么,用戶所屬的部門是什么。在首次成功登陸系統(tǒng)后,系統(tǒng)能夠自動(dòng)保存用戶的用戶名和密碼,下次使用系統(tǒng)時(shí)直接跳過(guò)用戶的登錄過(guò)程,用戶可自行選擇注銷當(dāng)前登錄到系統(tǒng)的用戶。用戶信息更改用戶可以在個(gè)人中心進(jìn)行密碼的修改,在修改時(shí)需要用戶提供舊的密碼來(lái)確保修改密碼的是用戶本人。日志信息的添加修改用戶在系統(tǒng)上可實(shí)現(xiàn)對(duì)任務(wù)日志的添加,并可根據(jù)需要將任務(wù)指派給限定在部門內(nèi)的同事來(lái)執(zhí)行。用戶也可以對(duì)自己的個(gè)人日志實(shí)現(xiàn)修改,以達(dá)到可實(shí)時(shí)更新日志的目的。日志的搜索用戶可根據(jù)任務(wù)內(nèi)容和項(xiàng)目名稱、日期實(shí)現(xiàn)對(duì)個(gè)人日志,部門日志以及指派出去的任務(wù)日志進(jìn)行搜索。日志的更新用戶在分別查看個(gè)人日志,部門日志以及指派任務(wù)時(shí)要求查看到的日志數(shù)據(jù)信息是最新的,并在添加或修改完日志信息后會(huì)馬上對(duì)顯示的數(shù)據(jù)進(jìn)行更新。角色權(quán)限根據(jù)登錄系統(tǒng)的用戶的角色不同,有不同的操作權(quán)限。部門領(lǐng)導(dǎo)可以添加部門員工、刪除員工或重置員工的密碼。系統(tǒng)的功能模型UML圖如下圖3-1所示:查看個(gè)人日志部門領(lǐng)導(dǎo)添加新員工刪除員工用戶重置員工密碼密碼修改普通員工注銷用戶查看個(gè)人日志部門領(lǐng)導(dǎo)添加新員工刪除員工用戶重置員工密碼密碼修改普通員工注銷用戶查看部門日志查看指派任務(wù)日志搜索編輯個(gè)人日志添加個(gè)人日志3.2.4移動(dòng)端日志管理系統(tǒng)非功能性需求做為功能性需求的延伸,軟件需求分析中還應(yīng)該包含非功能性需求的相關(guān)分析,它刻畫了系統(tǒng)展現(xiàn)給用戶的行為與操作等。它包含應(yīng)用需要遵循的規(guī)范與標(biāo)準(zhǔn);用戶UI界面的詳細(xì)細(xì)節(jié);性能要求;與設(shè)計(jì)相關(guān)的質(zhì)量屬性和約束條件[11]。UI交互界面的需求系統(tǒng)界面要人性化,界面整體布局簡(jiǎn)潔、舒適、合理,方便用戶的操作和業(yè)務(wù)處理,采用滑動(dòng)式與點(diǎn)擊式結(jié)合的界面方便用戶的操作。各個(gè)功能模塊的界面風(fēng)格統(tǒng)一,方便用戶的快速熟悉。穩(wěn)定性使用時(shí)要能夠保證系統(tǒng)的流暢性,用戶在使用的過(guò)程中不會(huì)出現(xiàn)界面滑動(dòng)無(wú)反應(yīng),按鈕點(diǎn)擊無(wú)反應(yīng)的情況。在正常使用時(shí)不會(huì)發(fā)生終端死機(jī)崩潰的情況。性能要求可滿足多個(gè)終端同時(shí)運(yùn)行系統(tǒng)并進(jìn)行日志的查看、編輯操作。系統(tǒng)可運(yùn)行在android版本4.12以上的系統(tǒng)環(huán)境。安全性因?yàn)樯婕暗綌?shù)據(jù)的交互,所以要考慮到數(shù)據(jù)的安全問(wèn)題。在允許用戶對(duì)數(shù)據(jù)庫(kù)操作之前,要對(duì)操作的用戶進(jìn)行身份驗(yàn)證,以確保操作的用戶是合法用戶。3.3移動(dòng)端日志管理系統(tǒng)數(shù)據(jù)庫(kù)結(jié)構(gòu)分析數(shù)據(jù)庫(kù)的結(jié)構(gòu)分析在開(kāi)發(fā)與數(shù)據(jù)庫(kù)相關(guān)的應(yīng)用中,尤其是在開(kāi)發(fā)前期的相關(guān)設(shè)計(jì)中占有非常重要的位置。一個(gè)完善,良好的系統(tǒng)離不開(kāi)一個(gè)功能完善、層次結(jié)構(gòu)清晰的后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)。這個(gè)階段的主要任務(wù)是收集系統(tǒng)所需的基本數(shù)據(jù)和數(shù)據(jù)處理流程,為之后的進(jìn)一步系統(tǒng)設(shè)計(jì)奠定基礎(chǔ)。在需求分析時(shí)主要解決的問(wèn)題是內(nèi)容要求和處理要求。對(duì)于內(nèi)容的要求:調(diào)研使用軟件的用戶需要操作什么數(shù)據(jù)以確定數(shù)據(jù)庫(kù)中需要存儲(chǔ)的數(shù)據(jù)是什么,以確定以什么數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)。對(duì)于處理的要求:調(diào)查使用該應(yīng)用軟件的用戶想對(duì)數(shù)據(jù)做怎樣的處理,要處理的數(shù)據(jù)之間在數(shù)據(jù)庫(kù)中是怎樣一種關(guān)系。要解決這兩個(gè)問(wèn)題,開(kāi)發(fā)設(shè)計(jì)人員應(yīng)該向使用系統(tǒng)的用戶做詳細(xì)的調(diào)查以確保收集到的信息的完整性和準(zhǔn)確性,在沒(méi)有充分了解客戶需求的情況下進(jìn)行開(kāi)發(fā)很有可能使日后的開(kāi)發(fā)進(jìn)行多次的返工,這將造成巨大的資源浪費(fèi)。在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)首要任務(wù)是做到每個(gè)實(shí)體對(duì)應(yīng)一張表,與此同時(shí)要明確各個(gè)實(shí)體之間的關(guān)聯(lián),確定各實(shí)體所擁有的屬性,從而決定它的數(shù)據(jù)字段。下面從實(shí)際出發(fā)說(shuō)明本系統(tǒng)所使用的數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)。系統(tǒng)實(shí)體:系統(tǒng)的實(shí)體包含以下幾個(gè):任務(wù)日志,部門,員工,員工角色實(shí)體的行為:實(shí)體所擁有的行為包含任務(wù)日志的獲取、編輯個(gè)人任務(wù)日志、添加和刪除任務(wù)日志、系統(tǒng)的用戶登錄、用戶密碼的修改、日志任務(wù)的指派。第四章系統(tǒng)總體設(shè)計(jì)分析4.1移動(dòng)端日志管理系統(tǒng)體系結(jié)構(gòu)本系統(tǒng)的實(shí)現(xiàn)采用的是B/S的三層結(jié)構(gòu)模式,即客戶端—服務(wù)器—數(shù)據(jù)庫(kù),使用B/S架構(gòu)實(shí)現(xiàn)層次區(qū)分體現(xiàn)了“高內(nèi)聚低耦合”的軟件開(kāi)發(fā)思想。B/S結(jié)構(gòu)簡(jiǎn)化了客戶端程序,不僅降低了客戶端的要求又避免了客戶端直接訪問(wèn)數(shù)據(jù)庫(kù)造成的安全問(wèn)題,通過(guò)中間件——web服務(wù)器來(lái)獲取數(shù)據(jù),這將提高系統(tǒng)的安全性,客戶端只需要提交一個(gè)請(qǐng)求到服務(wù)器就可以得到所需要的數(shù)據(jù)信息[12]。系統(tǒng)整體體系結(jié)構(gòu)設(shè)計(jì)如圖3-1所示。表現(xiàn)層中間層數(shù)據(jù)層客戶端數(shù)據(jù)庫(kù)服務(wù)器查詢結(jié)果數(shù)據(jù)庫(kù)操作返回?cái)?shù)據(jù)請(qǐng)求Web服務(wù)器圖3-1系統(tǒng)體系結(jié)構(gòu)模型表現(xiàn)層(客戶端):也就是android客戶端,客戶端是直接與用戶交互的。客戶端通過(guò)資源解析地址URL來(lái)訪問(wèn)服務(wù)器并提交請(qǐng)求,服務(wù)器在接收到客戶端的請(qǐng)求后進(jìn)行響應(yīng)。通過(guò)運(yùn)行在服務(wù)端的程序?qū)τ脩舻纳矸葸M(jìn)行驗(yàn)證,通過(guò)驗(yàn)證后服務(wù)端根據(jù)請(qǐng)求中的信息來(lái)選擇需要執(zhí)行的功能,獲取到數(shù)據(jù)信息之后對(duì)這些信息進(jìn)行封裝,并通過(guò)HTTP請(qǐng)求發(fā)送給客戶端,客戶端接收到服務(wù)器發(fā)送回來(lái)的信息數(shù)據(jù)后進(jìn)行解析并將展現(xiàn)給用戶。中間層:也就是擁有應(yīng)用程序邏輯處理能力的文本服務(wù)器。服務(wù)器在接收到客戶端發(fā)出的請(qǐng)求后,首先先運(yùn)行一段應(yīng)用程序與后端的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行連接,進(jìn)行用戶身份的驗(yàn)證。在驗(yàn)證通過(guò)后,再根據(jù)實(shí)際的用戶需求進(jìn)行相關(guān)的邏輯操作和數(shù)據(jù)庫(kù)操作。服務(wù)器在接收到數(shù)據(jù)庫(kù)服務(wù)器返回的數(shù)據(jù)后,先對(duì)對(duì)數(shù)據(jù)和程序處理的邏輯結(jié)果進(jìn)行封裝再返回給客戶端。數(shù)據(jù)層:也就是存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù),在一個(gè)完善的應(yīng)用系統(tǒng)中數(shù)據(jù)庫(kù)往往是不可或缺的。它存儲(chǔ)了與用戶有關(guān)的個(gè)人信息以及進(jìn)行實(shí)物操作所需要的數(shù)據(jù)。由數(shù)據(jù)庫(kù)服務(wù)器完成所有對(duì)數(shù)據(jù)進(jìn)行的操作,并將獲取到的數(shù)據(jù)或者操作結(jié)果返回給服務(wù)器。傳統(tǒng)的網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)相結(jié)合的應(yīng)用多數(shù)采用了基于局域網(wǎng)與Cilent/Server的結(jié)構(gòu)體系,在服務(wù)器端采用數(shù)據(jù)庫(kù)做為所有數(shù)據(jù)與信息的管理工具,而客戶端則集中進(jìn)行對(duì)這些數(shù)據(jù)與信息的邏輯處理。因此,當(dāng)處理數(shù)據(jù)的邏輯發(fā)生變化時(shí),不需要更改數(shù)據(jù)庫(kù)中的數(shù)據(jù)信息而只需對(duì)客戶端的處理邏輯進(jìn)行維護(hù)即可,期主要優(yōu)點(diǎn)是響應(yīng)請(qǐng)求的速度較快,網(wǎng)絡(luò)在通信時(shí)的消耗較低,在擁有較強(qiáng)的交互性的同時(shí)能夠保證存取模式的安全。然而,當(dāng)客戶機(jī)的數(shù)目激增的時(shí)候,服務(wù)端的性能會(huì)因?yàn)樨?fù)載太重而嚴(yán)重降低,同時(shí)客戶端和服務(wù)端的高耦合使得系統(tǒng)的維護(hù)管理難度較大,因?yàn)閿?shù)據(jù)是在客戶端進(jìn)行處理,這就使得大量數(shù)據(jù)的傳輸增加了網(wǎng)絡(luò)負(fù)載。而在B/S的體系結(jié)構(gòu)中,客戶端的業(yè)務(wù)邏輯處理被人們提出來(lái)做為單獨(dú)的中間層,中間層共享給所有用戶。原來(lái)的C/S兩層結(jié)構(gòu)編程B/S三層結(jié)構(gòu)后,層與層之間獨(dú)立存在使系統(tǒng)的耦合度降低,同時(shí)數(shù)據(jù)的分布式處理也成為了可能??蛻舳说膲毫Ψ峙浣o了服務(wù)器,使得數(shù)據(jù)處理等邏輯大部分在服務(wù)器端完成,客戶端只需獲得服務(wù)器處理后的數(shù)據(jù)并展現(xiàn)給用戶即可,這大大降低了客戶端的系統(tǒng)開(kāi)銷[14]。4.2移動(dòng)端日志管理系統(tǒng)功能模塊劃分系統(tǒng)的功能模塊主要?jiǎng)潪閹讐K,用戶登錄、個(gè)人日志、部門日志、指派任務(wù)、任務(wù)搜索、個(gè)人中心和日志的添加編輯。用戶憑借用戶名和密碼登錄到系統(tǒng),獲取系統(tǒng)的操作權(quán)限。在個(gè)人日志功能模塊展現(xiàn)的是當(dāng)前登錄到系統(tǒng)的用戶的個(gè)人任務(wù)日志,該模塊被劃分為三各部分,分別實(shí)現(xiàn)的功能是展現(xiàn)用戶現(xiàn)在未完成的日志,已完成的日志以及該用戶歷史全部的任務(wù)日志,默認(rèn)顯示未完成的日志。部門日志展現(xiàn)的是當(dāng)前用戶所在部門的任務(wù)列表,同樣包含未完成、已完成和全部任務(wù)三部分。系統(tǒng)為用戶提供了一個(gè)任務(wù)的檢索服務(wù),用戶可根據(jù)需求搜索需要的任務(wù)信息。指派任務(wù)展現(xiàn)的是當(dāng)前用戶指派給部門里其他同事的任務(wù)列表,同樣包含未完成、已完成和全部任務(wù)三個(gè)部分。在個(gè)人中心顯示了當(dāng)前登錄的用戶的一些個(gè)人信息,以及包含對(duì)個(gè)人信息操作的一些功能。4.3數(shù)據(jù)庫(kù)表的設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)的數(shù)據(jù)全部都存儲(chǔ)在數(shù)據(jù)庫(kù)中,所以數(shù)據(jù)庫(kù)是本系統(tǒng)必不可少的一部分。數(shù)據(jù)庫(kù)的設(shè)計(jì)是否高效將直接在系統(tǒng)的實(shí)現(xiàn)效果和執(zhí)行效率以及用戶體驗(yàn)的得到體現(xiàn),因此必須設(shè)計(jì)合理高效的數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)設(shè)計(jì)的數(shù)據(jù)庫(kù)要符合設(shè)計(jì)規(guī)則,只有滿足規(guī)則的數(shù)據(jù)庫(kù)才會(huì)是合理高效的。數(shù)據(jù)庫(kù)設(shè)計(jì)的中心思想是實(shí)體、聯(lián)系和屬性,在進(jìn)行數(shù)據(jù)庫(kù)結(jié)構(gòu)和表的設(shè)計(jì)時(shí)一定要仔細(xì)考慮這三個(gè)要素。不管是在哪個(gè)軟件系統(tǒng)中,數(shù)據(jù)庫(kù)設(shè)計(jì)師都需要通過(guò)縝密的思維將數(shù)據(jù)實(shí)體的屬性封裝后放在數(shù)據(jù)庫(kù)中。而數(shù)據(jù)庫(kù)的使用者則通過(guò)增、刪、改、查語(yǔ)句來(lái)修改或者獲取數(shù)據(jù)庫(kù)表中的數(shù)據(jù),因此做為軟件開(kāi)發(fā)人員對(duì)數(shù)據(jù)邏輯的層次結(jié)構(gòu)和表結(jié)構(gòu)要理解清晰[15]。以下是日志管理系統(tǒng)中用到的一些數(shù)據(jù)表結(jié)構(gòu):(1)員工信息表(Users)表5-1員工信息表(Users)字段名數(shù)據(jù)類型字段長(zhǎng)度字段值約束主鍵/外鍵備注Iduniqueidentifier16NotnullPK員工編號(hào)UserNamenvarcharMaxNotnull用戶名PasswordnvarcharMaxNotnull密碼NamenvarcharMaxNotnull員工姓名CreateDateDatetime8Notnull創(chuàng)建時(shí)間LastModifyDateDatetime8Notnull上次操作時(shí)間DeptIduniqueidentifier16NotnullFK部門編號(hào)RoleIduniqueidentifier16NotnullFK角色編號(hào)(2)員工角色表(Roles)表5-2員工角色表(Roles)字段名數(shù)據(jù)類型字段長(zhǎng)度字段值約束主鍵/外鍵備注Iduniqueidentifier16NotnullPK角色編號(hào)NamenvarcharmaxNotnull角色名稱DescriptionnvarcharmaxNotnull角色介紹CreateDateDatetime8Notnull創(chuàng)建時(shí)間LastModifyDateDatetime8Notnull上次操作時(shí)間(3)部門信息表(Departments)表5-3部門信息表(Departments)字段名數(shù)據(jù)類型字段長(zhǎng)度字段值約束主鍵/外鍵備注Iduniqueidentifier16NotnullPK部門編號(hào)NamenvarcharmaxNotnull部門名稱CreateDateDatetime8Notnull創(chuàng)建時(shí)間LastModifyDateDatetime8Notnull上次操作時(shí)間(4)任務(wù)日志表(JobLogs)表5-4部門信息表(JobLogs)字段名數(shù)據(jù)類型字段長(zhǎng)度字段值約束主鍵/外鍵備注Iduniqueidentifier16NotnullPK任務(wù)編號(hào)ContentnvarcharmaxNotnull任務(wù)內(nèi)容BeginDate_PlanDatetime8Notnull計(jì)劃開(kāi)始時(shí)間EndDate_PlanDatetime8Notnull計(jì)劃結(jié)束時(shí)間EndDate_ActualDatetime8null實(shí)際結(jié)束時(shí)間CreatorIduniqueidentifier16NotnullFK創(chuàng)建人編號(hào)ExecutorIduniqueidentifier16NotnullFK執(zhí)行人編號(hào)CreateDateDatetime8Notnull創(chuàng)建時(shí)間LastModifyDateDatetime8Notnull上次操作時(shí)間ProjectNamenvarcharmaxnull項(xiàng)目名稱Importanceint4Notnull重要程度TaskHoursfloat8null花費(fèi)時(shí)長(zhǎng)4.4移動(dòng)端日志管理系統(tǒng)總體流程日志管理系統(tǒng)的總體流程就是用戶通過(guò)驗(yàn)證登錄系統(tǒng),訪問(wèn)服務(wù)器獲取數(shù)據(jù),將獲取的數(shù)據(jù)解析展現(xiàn),移動(dòng)端日志管理系統(tǒng)工作的主要流程如下圖4-3所示。圖4-3系統(tǒng)總體流程圖第五章系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)經(jīng)過(guò)系統(tǒng)可行性分析、系統(tǒng)需求分析以及系統(tǒng)整體設(shè)計(jì)分析之后,我們了解了移動(dòng)端日志管理系統(tǒng)的業(yè)務(wù)需求與系統(tǒng)架構(gòu),實(shí)現(xiàn)了數(shù)據(jù)表的設(shè)計(jì)。本章我們?cè)诖嘶A(chǔ)上進(jìn)一步詳細(xì)分析服務(wù)器和系統(tǒng)各個(gè)功能模塊結(jié)構(gòu)即其實(shí)現(xiàn)。5.1服務(wù)器端開(kāi)發(fā)與實(shí)現(xiàn)5.1.1服務(wù)器的搭建我們使用Servlet實(shí)現(xiàn)服務(wù)器端的程序,但是Servlet程序是運(yùn)行服務(wù)器容器中,因此在開(kāi)發(fā)實(shí)現(xiàn)服務(wù)器程序之前先要對(duì)這個(gè)容器進(jìn)行搭建,這里我們采用輕量級(jí)服務(wù)器Tomcat做為容器。Tomact容器的搭建非常簡(jiǎn)單,下載ZIP包解壓后即可,在使用時(shí)只要將servler程序部署到Tomact即可。5.1.2Servlet服務(wù)端程序與數(shù)據(jù)庫(kù)訪問(wèn)實(shí)現(xiàn)服務(wù)器在調(diào)用servlet程序時(shí)首先創(chuàng)建一個(gè)該servlet的對(duì)象,接著創(chuàng)建一個(gè)HttpServletRequest對(duì)象和響應(yīng)消息的HttpServletResponse對(duì)象來(lái)封裝HTTP,接著調(diào)用servlet的service()方法將兩個(gè)對(duì)象傳入。Servlet程序響應(yīng)請(qǐng)求有兩個(gè)主要的方法doPost()和doGet(),分別用來(lái)響應(yīng)post請(qǐng)求和get請(qǐng)求response.setContentType("text");response.setCharacterEncoding("UTF-8");request.setCharacterEncoding("UTF-8");PrintWriterpw=response.getWriter();Stringjson=request.getParameter("check");Stringusername=JsonSingle(json,"username");Stringpassword=JsonSingle(json,"password");Stringoperate=request.getParameter("operate");Stringdatas=null;Stringlog_id=null;if(operate.equals("Search")||operate.equals("insertLog")||operate.equals("delete_pl")||operate.equals("update_log")||operate.equals("change_pass")){ datas=JsonSingle(json,"data"); }Stringresult=null;result=SelectOperation(operate,username,password,datas);//進(jìn)行合適的數(shù)據(jù)庫(kù)操作pw.print(result);pw.close();為了是服務(wù)器與客戶端發(fā)送的數(shù)據(jù)能被動(dòng)對(duì)方正確的識(shí)別,我們需要對(duì)它們?cè)诎l(fā)送數(shù)據(jù)時(shí)進(jìn)行編碼方式的統(tǒng)一。其中SelectOperation()方法根據(jù)用戶的請(qǐng)求選擇相應(yīng)的數(shù)據(jù)庫(kù)操作,并將操作結(jié)果和數(shù)據(jù)信息封裝后返回。其實(shí)現(xiàn)功能的主要代碼如下:privateStringSelectOperation(Stringoperate,Stringusername,Stringpassword,Stringdata){ Stringresult=null; switch(operate){ case"login": Connection_Databaseconn=newConnection_Database(); result=conn.Login(username,password); break; case"personalLog": Connection_Databaseconn2=newConnection_Database(); String[]str1=conn2.getUserId(username,password); if(str1!=null){ result=conn2.FindPersonal(str1[0],str1[1]); } break; case"Search": String[]data00=AnalysisData(data); System.out.println(data00[0]); System.out.println(data00[1]); System.out.println(data00[2]); Connection_Databaseconn00=newConnection_Database(); String[]str00=conn00.getUserId(username,password); Stringresult1,result2,result3; if(str00!=null){ result1=conn00.SerachPersonal(data00[0],str00[0],data00[1],data00[2]); result2=conn00.SerachDepart(data00[0],str00[1],data00[1],data00[2]); result3=conn00.SearchZpai(data00[0],str00[1],data00[1],data00[2]); JSONObjectjson=newJSONObject(); json.put("search_gren",result1); json.put("search_depart",result2); json.put("search_zpai",result3); result=json.toString(); } break; case"insertLog": Connection_Databaseconn7=newConnection_Database(); String[]str6=conn7.getUserId(username,password); if(str6!=null){ result=conn7.InsertLog(data,str6[0],str6[1]); } break; case"delete_pl": Connection_Databaseconn8=newConnection_Database(); String[]str7=conn8.getUserId(username,password); System.out.println(data); if(str7!=null){ result=conn8.Delete_PL(data); } break;}returnresult;}因?yàn)榉?wù)端程序會(huì)頻繁的對(duì)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行訪問(wèn)操作,為了實(shí)現(xiàn)代碼的重用和編碼的高效,將連接數(shù)據(jù)庫(kù)和對(duì)數(shù)據(jù)的操作封裝在了一個(gè)叫Conn_Database的類中,在servlet中只要?jiǎng)?chuàng)建該類的對(duì)象并調(diào)用合適的方法即可。Conn_Database使用的是JAVA中連接數(shù)據(jù)庫(kù)的方法——JDBC,程序開(kāi)發(fā)人員使用JDBC可以很容易的訪問(wèn)并操作數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)訪問(wèn)的主要功能代碼如下所示:privatestaticConnectionconnect(){ StringdriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; StringdbURL="jdbc:sqlserver://localhost:1433;DatabaseName=" +DatabaseName; StringuserName="liuyongtao"; StringuserPwd="liuyt123456"; Connectionconn=null; try{ Class.forName(driverName); conn=DriverManager.getConnection(dbURL,userName,userPwd); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(SQLExceptione){ e.printStackTrace(); } returnconn;} 在用戶對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作之前,系統(tǒng)需要驗(yàn)證訪問(wèn)服務(wù)器的用戶是否為合法用戶,在驗(yàn)證用過(guò)之后才提供相應(yīng)的數(shù)據(jù)過(guò)操作方法。因?yàn)榭蛻舳耸峭ㄟ^(guò)URL地址訪問(wèn)服務(wù)器中的資源,所以在完成Servlet的開(kāi)發(fā)之后必須將它與一個(gè)URL地址相對(duì)性,為了實(shí)現(xiàn)這一功能需要對(duì)web.xml文件進(jìn)行配置,配置完成后將Servlet程序的.class文件和web.xml文件在Tomact中進(jìn)行部署,客戶端通過(guò)配置的URL地址就可訪問(wèn)到服務(wù)器并使用對(duì)應(yīng)的服務(wù)了。5.2網(wǎng)絡(luò)連接相關(guān)5.2.1Android網(wǎng)絡(luò)連接原理介紹Android采用的JAVA語(yǔ)言開(kāi)發(fā),在JAVA編程中我們已經(jīng)接觸過(guò)網(wǎng)絡(luò)編程的知識(shí),而Android的網(wǎng)絡(luò)編程實(shí)現(xiàn)是基于JAVA網(wǎng)絡(luò)編程的。在學(xué)習(xí)JAVA時(shí)我們可能使用的是通過(guò)socket來(lái)進(jìn)行網(wǎng)絡(luò)訪問(wèn),而在Android中網(wǎng)絡(luò)訪問(wèn)主要是通過(guò)HTTP協(xié)議進(jìn)行的。在Android中有兩種方法HttpURLConnection和HttpClient接口來(lái)實(shí)現(xiàn)基于HTTP協(xié)議的訪問(wèn)。網(wǎng)上也有許多其他開(kāi)源框架用于網(wǎng)絡(luò)編程開(kāi)發(fā),如Utils。HttpURLConnection是JAVA中提供的實(shí)現(xiàn)HTTP協(xié)議的基本功能類,在這個(gè)類中并沒(méi)有封裝其他的功能,因此它是一個(gè)原始的JAVAAPI類。而HttpClient是Android中集成的用于使用HTTP協(xié)議的功能模塊,其封裝了功能以豐富Http協(xié)議,同時(shí)它還支持最新的HTTP協(xié)議版本,因此在開(kāi)發(fā)中更多的使用HttpClient來(lái)進(jìn)行HTTP網(wǎng)絡(luò)發(fā)開(kāi)。在HTTP的網(wǎng)絡(luò)通信中基本的方法有四種,分別是GET,POST,DELETE,PUT。一般使用的主要是POST和GET。這兩種方法的請(qǐng)求方式是不同的。POST方法是將參數(shù)放在HTTP的請(qǐng)求中。而GET可以請(qǐng)求得到靜態(tài)的頁(yè)面,其參數(shù)是放在資源描述符(URL)后面發(fā)送給服務(wù)器。兩者還有一個(gè)主要的區(qū)別,那就是通過(guò)GET方式提交的數(shù)據(jù)有限制,大小最多為1M,而通過(guò)POST方式提交則沒(méi)有限制。因此,在進(jìn)行編程之前要確定使用的請(qǐng)求數(shù)據(jù)的方法,我們使用提交POST請(qǐng)求的方式訪問(wèn)服務(wù)器來(lái)獲取資源數(shù)據(jù)。5.2.2網(wǎng)絡(luò)訪問(wèn)編程實(shí)現(xiàn)因?yàn)楸鞠到y(tǒng)的主要功能是對(duì)任務(wù)日志的相關(guān)操作,而任務(wù)日志的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,我們需要訪問(wèn)服務(wù)器來(lái)獲取相關(guān)的數(shù)據(jù)。因?yàn)橄到y(tǒng)多服務(wù)器會(huì)進(jìn)行多次訪問(wèn),如果在每次訪問(wèn)時(shí)都編寫相關(guān)的請(qǐng)求訪問(wèn)語(yǔ)句將會(huì)使程序看起來(lái)比較臃腫,同時(shí)代碼的復(fù)用率會(huì)很低,因此我將網(wǎng)絡(luò)訪問(wèn)的相關(guān)操作語(yǔ)句使用了一個(gè)自定義Connect類進(jìn)行了封裝,在使用時(shí)只要?jiǎng)?chuàng)建該類的對(duì)象,并使用相關(guān)的訪問(wèn)方法就可進(jìn)行網(wǎng)絡(luò)訪問(wèn)并獲取數(shù)據(jù)信息。在Connect類中,定義了兩個(gè)方法ConnToService和ConnToService2。兩個(gè)方法都是采用HttpClient的方式實(shí)現(xiàn),因其增加了靈活、簡(jiǎn)單使用等多個(gè)功能,不僅是開(kāi)發(fā)者在編寫時(shí)能更容易的發(fā)送HTTP請(qǐng)求而且開(kāi)發(fā)者在測(cè)試時(shí)也非常方便[16]。方法ConnToService主要是用于用戶的登錄驗(yàn)證,以及個(gè)人日志、部門日志和指派任務(wù)的查詢,具體需要進(jìn)行什么樣的操作只需要傳入一個(gè)操作對(duì)應(yīng)的標(biāo)識(shí)即可。方法ConnToService2主要用于實(shí)現(xiàn)個(gè)人任務(wù)日志的修改、日志的添加、用戶密碼的修改、個(gè)人日志的刪除等需要進(jìn)行數(shù)據(jù)交互的網(wǎng)絡(luò)連接。兩個(gè)方法首先將需要傳遞的數(shù)據(jù)使用JSON格式進(jìn)行封裝,再建立連接將數(shù)據(jù)發(fā)送給服務(wù)器端,服務(wù)器解析收到的JSON數(shù)據(jù)并根據(jù)其中的信息采取相應(yīng)的數(shù)據(jù)庫(kù)操作。JSON和編程語(yǔ)言沒(méi)有關(guān)系,它是一種基于文本的輕量級(jí)用于交換數(shù)據(jù)的格式。XLM同樣也是一種數(shù)據(jù)交換格式,但這里我們并沒(méi)有采用XML來(lái)進(jìn)行數(shù)據(jù)的傳送,主要的原因是在Android中處理XML非常的不方便,并且往往XML的標(biāo)記比數(shù)據(jù)信息還要多,這就使得在進(jìn)行數(shù)據(jù)交換時(shí)需要消耗更多的流量,而JSON卻沒(méi)有這些的多余的標(biāo)識(shí)數(shù)據(jù),它也可以作為對(duì)象進(jìn)行處理。使用JSON進(jìn)行數(shù)據(jù)交換能夠有效提高移動(dòng)端與遠(yuǎn)程服務(wù)端的數(shù)據(jù)傳輸效率,同時(shí)減少移動(dòng)端向服務(wù)端提出請(qǐng)求獲得響應(yīng)的時(shí)間和數(shù)據(jù)傳輸消耗的流量[17]。在要進(jìn)行網(wǎng)絡(luò)訪問(wèn)操作的地方,因?yàn)榫W(wǎng)絡(luò)訪問(wèn)是耗時(shí)操作,所以在進(jìn)行網(wǎng)絡(luò)訪問(wèn)時(shí)要?jiǎng)?chuàng)建一個(gè)子線程,在創(chuàng)建子線之前我們創(chuàng)建了一個(gè)ProgressDialog對(duì)話框來(lái)提示用戶正在獲取數(shù)據(jù),這個(gè)對(duì)話框會(huì)在網(wǎng)絡(luò)訪問(wèn)結(jié)束時(shí)消失,創(chuàng)建對(duì)話框增強(qiáng)了用戶在使用該應(yīng)用時(shí)的體驗(yàn)。在網(wǎng)絡(luò)連接中設(shè)置了一個(gè)5s的網(wǎng)絡(luò)連接超時(shí),以防止服務(wù)器無(wú)響應(yīng)時(shí)系統(tǒng)長(zhǎng)時(shí)間嘗試服務(wù)器連接。在進(jìn)行數(shù)據(jù)傳輸時(shí),為防止與服務(wù)器的編碼方式不同,需要設(shè)置數(shù)據(jù)的編碼方式,通過(guò)UrlEncodedFormEntity將編碼方式設(shè)置為UTF-8。下面是網(wǎng)絡(luò)連接的方法ConnToService和ConnToService2的主要代碼:HttpClienthClient=newDefaultHttpClient();Stringurl="05:8080/WebServices/Services";hClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,5000);HttpPostpost=newHttpPost(url);List<NameValuePair>list=newArrayList<NameValuePair>();list.add(newBasicNameValuePair("check",json));list.add(newBasicNameValuePair("operate",operate));HttpResponseresponse=null;try{post.setEntity(newUrlEncodedFormEntity(list,HTTP.UTF_8));response=hClient.execute(post);if(response.getStatusLine().getStatusCode()==200){result1=EntityUtils.toString(response.getEntity());}}catch(IOExceptione){e.printStackTrace();}在這里有一點(diǎn)需要特別注意,那就是在Android的網(wǎng)絡(luò)編程中需要對(duì)設(shè)備采取的網(wǎng)絡(luò)訪問(wèn)方式進(jìn)行判斷,一般情況下我們?cè)谌粘V袝?huì)首先考慮使用WIFI網(wǎng)絡(luò),當(dāng)然在這種情況下的網(wǎng)絡(luò)編程沒(méi)有什么問(wèn)題,但是當(dāng)我們選擇使用移動(dòng)運(yùn)營(yíng)商的網(wǎng)絡(luò)轉(zhuǎn)入互聯(lián)網(wǎng)時(shí)就需要特別處理,在進(jìn)行網(wǎng)絡(luò)訪問(wèn)前需要先設(shè)置代理接口和地址,這樣可以盡量避免網(wǎng)絡(luò)訪問(wèn)時(shí)出現(xiàn)中斷。設(shè)置代理通過(guò)Proxy類來(lái)實(shí)現(xiàn),主要功能代碼如下:if(NetWorkInfo.getType(context)==ConnectivityManager.TYPE_MOBILE){Stringhost_ip=Proxy.getDefaultHost();intport_ip=Proxy.getPort(context);if(host_ip!=null&&port_ip!=-1){HttpHosthttpHost=newHttpHost(host_ip,port_ip);hClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY,httpHost);}}5.3登錄本系統(tǒng)首先需要用戶登錄才能夠查看任務(wù)日志和進(jìn)行相關(guān)的操作,其登錄界面如圖5-6所示。圖5-6登錄界面圖5-5歡迎界面5.3.1延時(shí)跳轉(zhuǎn)在打開(kāi)應(yīng)用跳轉(zhuǎn)到登錄界面之前首先展現(xiàn)的是圖5-5,等待3秒后跳到圖5-6,這里采用了延時(shí)跳轉(zhuǎn)的功能??梢詫D5-5換做企事業(yè)的圖標(biāo)或者Logo,使用戶在使用的時(shí)候能先行了解應(yīng)用的功能。在這里我使用了Handler類的postDelayed()方法使得登錄界面的Activity加載延遲,從而實(shí)現(xiàn)延時(shí)跳轉(zhuǎn)功能,方法第一個(gè)參數(shù)是一個(gè)子線程,第二個(gè)參數(shù)是延遲的時(shí)間。該功能的代碼片段如下。privatevoidjumpToLogin(inttime,finalClass<?>cls,finalStringstr){Handlerhandler=newHandler();handler.postDelayed(newRunnable(){@Overridepublicvoidrun(){Intentintent=newIntent();if(str!=null){Bundlebundle=newBundle();bundle.putString("information",str);intent.putExtras(bundle);}intent.setClass(MainActivity.this,cls);startActivity(intent);finish();}},time);}5.3.2網(wǎng)絡(luò)檢查與用戶信息保存在輸入用戶名密碼之后點(diǎn)擊登錄按鈕進(jìn)行驗(yàn)證登錄,系統(tǒng)在聯(lián)網(wǎng)驗(yàn)證用戶之前會(huì)首先檢查用戶輸入的用戶名和密碼是否符合規(guī)定,之后系統(tǒng)自動(dòng)檢測(cè)終端是否已經(jīng)連接了網(wǎng)絡(luò)。實(shí)現(xiàn)這個(gè)功能首先要給系統(tǒng)添加網(wǎng)絡(luò)訪問(wèn)的權(quán)限INTERNET和訪問(wèn)獲取有關(guān)設(shè)備網(wǎng)絡(luò)連接的信息的權(quán)限ACCESS_NETWORK_STATE,添加權(quán)限在Android的AndroidManifest.xml配置文件中進(jìn)行,相關(guān)代碼如下:<uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>如果用戶密碼為空或終端網(wǎng)絡(luò)沒(méi)有連接,系統(tǒng)便會(huì)提示用戶相關(guān)的錯(cuò)誤。點(diǎn)擊登錄按鈕之后,系統(tǒng)連接服務(wù)器對(duì)用戶的身份進(jìn)行驗(yàn)證。服務(wù)器在驗(yàn)證后返回驗(yàn)證結(jié)果相關(guān)數(shù)據(jù)信息,系統(tǒng)對(duì)獲得的數(shù)據(jù)進(jìn)行解析,當(dāng)驗(yàn)證失敗時(shí)通知用戶重新輸入用戶名或密碼。當(dāng)驗(yàn)證成功時(shí),將用戶名和密碼進(jìn)行本地保存已實(shí)現(xiàn)用戶無(wú)需每次使用系統(tǒng)都進(jìn)行用戶名密碼的輸入,方便用戶的使用。SharedPreferences是Android中最容易被理解的數(shù)據(jù)存儲(chǔ)技術(shù),它采用鍵值對(duì)(key-value)的形式存儲(chǔ)數(shù)據(jù),存儲(chǔ)的是輕量級(jí)的數(shù)據(jù)如一些應(yīng)用的配置信息,因此使用SharedPreferences存儲(chǔ)用戶信息是比較合適的。使用getSharedPreference(Stringfilename,intmode)方法來(lái)獲得它的對(duì)象,方法的第一個(gè)參數(shù)為保存數(shù)據(jù)的文件的文件名稱,第二個(gè)參數(shù)為數(shù)據(jù)存儲(chǔ)的形式,根據(jù)所選取的形式不同,存儲(chǔ)的數(shù)據(jù)可被訪問(wèn)的范圍也是不同的,默認(rèn)為0,也就是存儲(chǔ)的數(shù)據(jù)只能被創(chuàng)建數(shù)據(jù)的應(yīng)用本身訪問(wèn),再次寫入內(nèi)容時(shí)首先會(huì)刪除原來(lái)的數(shù)據(jù)再寫入新數(shù)據(jù),這里我們采用這個(gè)類來(lái)實(shí)現(xiàn)用戶名和密碼的存儲(chǔ)。采用SharedPreferences.Editor的形式獲取Editor接口的對(duì)象,使用Editor實(shí)現(xiàn)將數(shù)據(jù)寫入文件中。保存的數(shù)據(jù)以XML文件形式存儲(chǔ)在應(yīng)用私有目錄下的shared_prefs文件夾里面,下次使用時(shí)系統(tǒng)會(huì)調(diào)用SharedPreferences的getString()方法讀取文件里的數(shù)據(jù),當(dāng)數(shù)據(jù)不為空時(shí)說(shuō)明用戶之前登陸過(guò)并未注銷過(guò)用戶,則跳過(guò)用戶登錄界面直接從歡迎界面跳轉(zhuǎn)到主界面。判斷用戶是否登錄過(guò)與選擇跳轉(zhuǎn)的主要功能代碼如下所示:SharedPreferencessp=getSharedPreferences("user",MODE_PRIVATE);if(sp!=null){Stringusername=sp.getString("username","");Stringpassword=sp.getString("pwd","");Stringname=sp.getString("name","");Stringuser_id=sp.getString("user_id","");Stringdepartname=sp.getString("departname","");if(!username.equals("")&&!password.equals("")&&!name.equals("")&&!user_id.equals("")&&!departname.equals("")){JSONObjectjsonObject=newJSONObject();try{jsonObject.put("username",username);jsonObject.put("password",password);jsonObject.put("user_id",user_id);jsonObject.put("name",name);jsonObject.put("departname",departname);jumpToLogin(3000,MainMenu.class,jsonObject.toString());}catch(JSONExceptione){e.printStackTrace();}}else{jumpToLogin(3000,Login_Activity.class,null);}5.4主界面與功能實(shí)現(xiàn)5.4.1整體界面的布局與實(shí)現(xiàn)用戶通過(guò)驗(yàn)證成功登陸系統(tǒng)后,就進(jìn)入了系統(tǒng)的主界面,用戶可在主界面對(duì)相關(guān)功能模塊進(jìn)行操作。主界面如下圖5-7所示。圖5-7主界面從圖中可以看出主界面由4個(gè)主要的模塊組成,分別為個(gè)人日志,部門日志,指派任務(wù)和個(gè)人中心(默認(rèn)顯示個(gè)人日志模塊),每個(gè)模塊上有個(gè)標(biāo)題顯示當(dāng)前所在模塊。4個(gè)功能模塊被布局在一個(gè)Activity中,在布局底部使用了由4個(gè)RadioButton組成的RadioGroup。RadioButton是單項(xiàng)選擇按鈕,在RadioGroup中的RadioButton相互是互斥的,即在同一時(shí)間只有一個(gè)按鈕可以被選中。因?yàn)樵谶@里一次只能選中一個(gè)模塊,而RadioGroup恰好提供了這一功能,所以采用了RadioGroup的互斥功能。在界面上方使用的是4個(gè)fragment,對(duì)應(yīng)于4個(gè)功能模塊。在前面技術(shù)概述的時(shí)候已經(jīng)簡(jiǎn)單介紹過(guò)fragment了,這里使用fragment的一個(gè)原因是在系統(tǒng)完成之后用于不同的移動(dòng)設(shè)備時(shí)能更好的做到頻幕適配,另一個(gè)原因是Activity在切換時(shí)不如fragment流暢,流暢的切換能更好的提高用戶體驗(yàn),提升產(chǎn)品的價(jià)值。因?yàn)槭窃谝粋€(gè)Activity里面使用多個(gè)fragment(碎片)組件,所以就要考慮到fragment在顯示時(shí)的替換問(wèn)題。在添加fragment時(shí),我們采取的是動(dòng)態(tài)添加fragment,因?yàn)槊總€(gè)fragment對(duì)應(yīng)的是不同的功能模塊,所以使用了繼承自Fragment的自己定義的fragment,重新編寫里面的一些方法以實(shí)現(xiàn)系統(tǒng)所需的功能。四個(gè)自定義的fragment分別是GrenFragment、BmenFragment、ZpaiFragment和Personal。Fragment是由一個(gè)叫做FragmentManager的類進(jìn)行管理的,而FragmentManager是通過(guò)一個(gè)叫FragmentTransaction的事務(wù)管理類實(shí)現(xiàn)對(duì)fragment的添加、刪除、隱藏等操作。在各個(gè)Fragment之間切換時(shí)不能總是去創(chuàng)建新的fragment,這將浪費(fèi)系統(tǒng)資源。為了提高系統(tǒng)性能和減少對(duì)系統(tǒng)內(nèi)存的使用,我們創(chuàng)建一個(gè)Fragment類型的數(shù)組來(lái)存儲(chǔ)已創(chuàng)建的fragment。在用戶點(diǎn)擊下方的功能模塊的按鈕時(shí),系統(tǒng)首先查看數(shù)組判斷是否已經(jīng)有對(duì)應(yīng)Fragment的對(duì)象存在,如果有則直接將當(dāng)前fragment替換為對(duì)應(yīng)的fragment,沒(méi)有則新建改功能模塊的對(duì)象添加到數(shù)組中去,并將當(dāng)前的fragment替換。新的Fragment是可以直接覆蓋在舊的fragment上的,如果我們使用的fragment沒(méi)有設(shè)置背景,那么透過(guò)頂層的fragm

溫馨提示

  • 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)論