版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 畢業(yè)論文 課題名稱:校園信息管理平臺下的android客戶端 的設計與實現(xiàn)摘要伴隨著3g時代的到來,移動終端所能完成的功能在各行各業(yè)日益廣泛和深入,移動便攜的概念早已深入人心,讓人們更加的依賴移動終端。本課題來源于校園內(nèi)對信息管理系統(tǒng)在移動終端便捷使用的需求。傳統(tǒng)學校信息管理系統(tǒng)是采取pc機通過局域網(wǎng)連接服務器端的形式進行操作,缺少對移動端的支持,學生無法隨時隨地使用該系統(tǒng)。因此本應用基于android移動平臺,讓學生可以通過android移動終端更方便快捷地使用該系統(tǒng)。學生在xx可以通過瀏覽器登錄mysise查閱自己個人信息、課程表等內(nèi)容,本系統(tǒng)是通過android移動客戶端達到同樣的效果
2、。本系統(tǒng)是基于android平臺開發(fā)的一個xx校園信息管理系統(tǒng),主要完成軟件的整體設計以及各個功能的實現(xiàn)。在windows操作系統(tǒng)平臺下,搭載android_2.3.3_sdk開發(fā)環(huán)境,采用java語言作為主要開發(fā)語言,使用eclipse完成后臺代碼的編寫,使用jsoup技術(shù)解析網(wǎng)頁獲取信息數(shù)據(jù),運用多線程技術(shù)保證程序性能,結(jié)合photoshop為界面ui美化,從而完成的一個android客戶端。本論文是以系統(tǒng)的開發(fā)為線,介紹了此系統(tǒng)的設計與實現(xiàn)過程,從軟件設計的角度對系統(tǒng)的理論基礎(chǔ)、系統(tǒng)概要設計以及系統(tǒng)具體實現(xiàn)進行了詳細研究。整個過程嚴格遵循了軟件工程的思想和ui視覺享受的理念,保證了系統(tǒng)的
3、實用價值。關(guān)鍵詞:android;java;jsoup;移動終端abstract with the age of 3g is coming, the functions that mobiles have become more popular and wide spread. people had got used to the convenience of mobiles and become more rely on it. our project is depend on the existent campus information manage system mysise. the
4、 original system is based on windows operating system, pc is the only platform we can used to login in to the system. students could not use the system everywhere. so we make the software that runs on android platform, let students use mysise on their android phones easily.students can login into my
5、sise system and check their personal information, curriculum contents and so on. our system has the same functions but based on android. our system is a campus information manage system that rely on android platform. we basically finished the structure design and functions. in the windows operating
6、system platform, with the android_2.3.3_sdk development environment, using java language as the main development language, use eclipse to finish writing, using jsoup technology to analysis the webpage information, the use of multi-threading technology to ensure the program performance, use photoshop
7、 as the ui landscaping tool , so that we complete the system on android.this article introduces our design of the system and the processing of making it happen. by the view of software design, we had done dozens of research on the basic theory, the summary of the design, and the actual processing. t
8、he whole process had followed the rules of software engineering and ui visual satisfaction so that ensure the pragmatic value of the system.key words : android;java;jsoup; mobiles目 錄前言ix1 緒論11.1 項目背景11.2 mysise系統(tǒng)簡介11.3 系統(tǒng)的開發(fā)意義11.4 本文的結(jié)構(gòu)22 課題相關(guān)知識介紹32.1 android平臺介紹32.1.1 android系統(tǒng)簡介32.1.2 android系統(tǒng)的特點
9、32.2 jsoup簡介42.3 開發(fā)工具的選用42.3.1 eclipse簡介42.3.2 photoshop簡介42.4 系統(tǒng)運行環(huán)境的搭建53 系統(tǒng)需求分析63.1 系統(tǒng)設計的總體規(guī)則63.2 可行性分析63.3 系統(tǒng)運行環(huán)境需求73.4 用戶需求分析73.5 系統(tǒng)的設計目標73.6 用例分析與建模83.6.1 用例1 登錄83.6.2 用例2 主菜單93.6.3 用例3 查看個人信息103.6.4 用例4 查看課程表信息103.6.5 用例5 查看考試時間表113.6.6 用例6 查看考勤信息114 系統(tǒng)的功能模塊設計134.1 mysise系統(tǒng)功能結(jié)構(gòu)圖134.2 系統(tǒng)的功能分析與要
10、求134.3 系統(tǒng)功能模塊的設計144.3.1 個人信息模塊144.3.2 課程信息模塊144.3.3 考試時間模塊154.3.4 考勤信息模塊154.4 系統(tǒng)用例圖165 系統(tǒng)具體實現(xiàn)邏輯處理模塊實現(xiàn)185.1 項目結(jié)構(gòu)示意圖185.2 多線程技術(shù)在項目上的應用185.3 主菜單頁面邏輯處理195.4 個人信息頁面邏輯處理225.5 課程表頁面邏輯處理265.6 考試時間頁面邏輯處理295.7 考勤信息頁面邏輯處理316 系統(tǒng)測試346.1 使用ddms346.2 系統(tǒng)測試346.2.1 測試用例346.2.2 單元測試366.2.3 非功能性測試36設計總結(jié)37參考文獻38致 謝39前言現(xiàn)
11、在手機已經(jīng)成為了人們生活中不可或缺的移動設備,沒有手機會讓人覺得寸步難行。手機不僅僅擁有傳統(tǒng)的打電話、發(fā)短信等基本的功能,而基于智能手機強大的信息處理能力和可擴展能力,以及3g網(wǎng)絡高速數(shù)據(jù)傳輸,越來越多的功能和業(yè)務將被開發(fā)出來并大規(guī)模的應用。目前,得益于谷歌公司的開源策略,擁有眾多優(yōu)點的android系統(tǒng)發(fā)展迅速,各大產(chǎn)商推出大量搭載android系統(tǒng)的手機,android手機已經(jīng)占據(jù)了手機市場的絕大份額。在未來幾年必將大放異彩,將極大的推動整個手機操作系統(tǒng)甚至是互聯(lián)網(wǎng)乃至軟件行業(yè)的發(fā)展。與此同時,開源的android系統(tǒng)讓程序員獨立開發(fā)應用軟件成為可能。通過學習與研究,可以將pc電腦上的大量
12、應用移植到android系統(tǒng)上。而學校的信息管理系統(tǒng)mysise系統(tǒng),目前缺少對手機客戶端的支持,基于此,開發(fā)一個mysise系統(tǒng)android手機客戶端這樣的想法便油然而生。綜上所述,android系統(tǒng)是移動平臺發(fā)展的大勢所趨,未來將在移動領(lǐng)域扮演一個時代重要的角色。所以,對android平臺進行相關(guān)研究并熟悉它是很有必要的,通過了解手機軟件行業(yè),進而把握未來移動互聯(lián)網(wǎng)的發(fā)展趨勢。同時可以更好的提升目前掌握的軟件開發(fā)專業(yè)技能,開發(fā)出符合社會發(fā)展需求的應用軟件,從而讓生活更加便捷。1 緒論1.1 項目背景當今社會的生活節(jié)奏越來越快,人們對手機提出的要求也越來越高,由于手機市場發(fā)展迅速,手機操作
13、系統(tǒng)也出現(xiàn)了不同種類,現(xiàn)在市場上主要有四種手機操作系統(tǒng),分別是windows mobile,symbian,iphone os以及谷歌的android操作系統(tǒng)。其中,擁有開放源代碼優(yōu)勢的android系統(tǒng)有著最大的發(fā)展前景。那么能否在手機上擁有自己編寫的校園信息管理系統(tǒng)呢?答案是肯定的,谷歌android系統(tǒng)就能做到。本文涉及的mysise系統(tǒng)就是一個基于谷歌android手機平臺的校園信息管理系統(tǒng)。1.2 mysise系統(tǒng)簡介mysise系統(tǒng),是為xx大學定制的校園信息管理系統(tǒng),主要包含有教師使用的管理系統(tǒng)與學生使用的信息系統(tǒng),本項目主要研究的是學生使用的信息管理系統(tǒng)部分。學生信息管理系統(tǒng),
14、每個學生都使用唯一的學號作為登錄帳號,登錄系統(tǒng)后可以查看自己的各種信息或者做需要的操作,主要功能模塊有:個人信息、課程表、考試時間表、考勤信息等等。可以說,通過網(wǎng)絡,學生就可以方便的在客戶端上看到自己想要的校園信息。然而,目前mysise系統(tǒng)僅提供pc端windows操作系統(tǒng)的客戶端支持。1.3 系統(tǒng)的開發(fā)意義目前mysise系統(tǒng)缺少在移動設備上的支持,顯然已經(jīng)不能滿足當代大學生高效學習便捷生活的需求了。移動設備硬件的發(fā)展,使得手機也可以完成更多的功能需求,android系統(tǒng)的出現(xiàn),更是讓手機進入大屏觸屏時代,在很多日常應用上,功能已經(jīng)相當接近甚至替代pc機。而開源的android系統(tǒng)為開發(fā)者
15、移植pc應用程序提供了技術(shù)上的支持,因此,在pc上的mysise系統(tǒng)有理由也有可能被移植到android系統(tǒng)的移動設備上來。本課題是研究如何開發(fā)一款android平臺上的mysise系統(tǒng)客戶端,它將擁有同pc端基本一致的基礎(chǔ)功能,同步的信息數(shù)據(jù),界面簡潔美觀,操作簡單方便。能為xx學生使用該系統(tǒng)帶來更多的方便與快捷,也使得學校的教學設備的提供更為全面。1.4 本文的結(jié)構(gòu)本人在本課題中承擔后臺邏輯處理模塊的工作。論文主要結(jié)構(gòu)及內(nèi)容如下:第一章緒論,介紹項目背景,闡述項目開發(fā)的意義。第二章相關(guān)知識介紹,介紹項目開發(fā)的相關(guān)技術(shù)與知識。第三章系統(tǒng)需求分析,分析系統(tǒng)開發(fā)的各方面需求,為設計做準備。第四章
16、系統(tǒng)功能設計,介紹系統(tǒng)主要功能模塊的設計。第五章系統(tǒng)功能實現(xiàn),介紹系統(tǒng)的后臺邏輯處理模塊的具體實現(xiàn)。第六章系統(tǒng)測試,通過測試驗收產(chǎn)品。2 課題相關(guān)知識介紹2.1 android平臺介紹2.1.1 android系統(tǒng)簡介android一詞的本義指“機器人”,同時也是google于2007年11月5日宣布的基于linux平臺的開源手機操作系統(tǒng)的名稱。它包括操作系統(tǒng)、中間件、用戶界面和應用程序移動電話工作所需要的全部軟件,而且不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專業(yè)權(quán)障礙。目前,最新版本為android 2.3 gingerbread(姜餅)和android 4.0 ice cream sandwich
17、(冰激凌三明治)。雖然android是google公司推出的產(chǎn)品,但更貼切的說法應該是開放手機聯(lián)盟的產(chǎn)品。開放手機聯(lián)盟是由大約30家公司組成的聯(lián)盟,致力于將“更好的”和“開放的”手機推向市場。其網(wǎng)站上的一句話很好的闡述了這一點:“android是本著成為第一個開放、完整、免費。專門針對移動設備開發(fā)的平臺這一目標,完全從零開始創(chuàng)建的?!?.1.2 android系統(tǒng)的特點1、開放性。google與開放手機聯(lián)盟合作開發(fā)了 android,google通過與運營商、設備制造商、開發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望通過建立標準化、開放式的移動電話軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)
18、系統(tǒng)。2、應用程序無界限。android 上的應用程序可以通過標準 api 訪問核心移動設備功能。通過互聯(lián)網(wǎng),應用程序可以聲明它們的功能可供其他應用程序使用。3、應用程序是在平等的條件下創(chuàng)建的。移動設備上的應用程序可以被替換或擴展,即使是撥號程序或主屏幕這樣的核心組件。4、應用程序可以輕松地嵌入網(wǎng)絡組件。應用程序可以輕松地嵌入html、javascript 和樣式表,還可以通過 webview 顯示網(wǎng)絡內(nèi)容。5、應用程序可以并行運行。android 是一種完整的多任務環(huán)境,應用程序可以在其中并行運行。在后臺運行時,應用程序可以生成通知以引起注意。2.2 jsoup簡介jsoup 是一款 jav
19、a 的html 解析器,可直接解析某個url地址、html文本內(nèi)容。它提供了一套非常省力的api,可通過dom,css以及類似于jquery的操作方法來取出和操作數(shù)據(jù)。由于 jsoup 良好的可擴展性 api 設計,開發(fā)者可以通過選擇器的定義來開發(fā)出非常強大的 html 解析功能。jsoup是基于mit協(xié)議發(fā)布的,可放心使用于商業(yè)項目。jsoup的主要功能如下:1. 從一個url,文件或字符串中解析html;2. 使用dom或css選擇器來查找、取出數(shù)據(jù);3. 可操作html元素、屬性、文本;在無法得到學校信息管理系統(tǒng)的數(shù)據(jù)庫數(shù)據(jù)的情況下,在java編程語言中,使用jsoup來解析http網(wǎng)頁
20、從而獲取所需要的數(shù)據(jù),成為了開發(fā)此系統(tǒng)必要的技術(shù)。2.3 開發(fā)工具的選用 2.3.1 eclipse簡介eclipse 是一個開放源代碼的、基于 java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,eclipse 附帶了一個標準的插件集,包括 java 開發(fā)工具(java development tools,jdt)。利用它我們可以在項目的編碼、整合方面極大的提高工作效率,它是功能豐富的java集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能。簡而言之,通過配置android必要的開發(fā)組件和插件,使用java編程語言,eclipse將
21、完整支持android程序的開發(fā)。2.3.2 photoshop簡介photoshop是平面圖像處理業(yè)界霸主adobe公司推出的跨越pc和mac兩界首屈一指的大型圖像處理軟件。它功能強大,操作界面友好,得到了廣大第三方開發(fā)廠家的支持,從而也贏得了眾多的用戶的青睞。 photoshop支持眾多的圖像格式,對圖像的常見操作和變換做到了非常精細的程度,使得任何一款同類軟件都無法望其頸背;它擁有異常豐富的插件(在photoshop中叫濾鏡),熟練后您自然能體會到“只有想不到,沒有做不到”的境界。2.4 系統(tǒng)運行環(huán)境的搭建1、安裝eclipse 3.7:eclipse 3.7 是一款了綠色軟件,下載后直
22、接解壓即可,第一次運行時會提示配置工作空間,我選擇的路徑是d:eclipse_android_workspace2、安裝java jdk:jdk(java development kit )是一切java應用程序的基。windows系統(tǒng)下,直接運行.exe文件安裝,安裝完成后,將安裝路徑下的bin文件夾路徑配置到系統(tǒng)環(huán)境變中。3、下載android sdk:需要先下載android在windows平臺上的的sdk,官方網(wǎng)站上下載最新2.3版本,解壓后點擊sdk manager.exe即可下載所需要的sdk版本。然后就要將android sdk路徑下的tools文件夾路徑配置到系統(tǒng)環(huán)境變中。4、
23、安裝android開發(fā)插件adt:啟動eclipse,打開help-software updates,選擇available software標簽,單擊add site,輸入“http:/dl- development tools和android ddms,全勾選,install安裝,成功,提示重啟eclipse。5、配置android sdk路徑:重啟eclipse后,點擊菜單window-preference,打開配置窗口,在左邊選中android,在右邊輸入android sdk的路徑,點擊ok即可。6、創(chuàng)建avd:為使android應用程序可以在模擬器上運行,必須創(chuàng)建avd。在ecli
24、pse中選擇window-avd manager, 點擊new,填入name,選擇target的api,sd card大小任意(推薦256m),選擇分辨率為wvga800(480*800)。點擊create avd即可完成創(chuàng)建avd。至此android開發(fā)環(huán)境搭建完成。3 系統(tǒng)需求分析3.1 系統(tǒng)設計的總體規(guī)則本項目的主要設計規(guī)則有:簡單性:在實現(xiàn)系統(tǒng)的功能的同時,盡量讓平臺操作簡單,這是非常重要的。美觀性:在實現(xiàn)系統(tǒng)的功能的同時,盡量提供給用戶較高的視覺享受和操作體驗。針對性:該系統(tǒng)設計是xx信息管理系統(tǒng)的定向開發(fā)設計,所以具有專業(yè)突出和很強的針對性。實用性:該系統(tǒng)能完成mysise系統(tǒng)各個
25、子板塊的信息查看功能,具有良好的實用性。3.2 可行性分析開發(fā)新系統(tǒng)的要求往往來自對原系統(tǒng)有更高的要求。由于原mysise系統(tǒng)僅僅支持pc端的使用,而新系統(tǒng)則是針對移動端的支持,故而有開發(fā)的必要。可行性研究是為了弄清楚系統(tǒng)開發(fā)的項目是不是可以實現(xiàn)和值得進行研究的過程,實際上是一次大大簡化系統(tǒng)分析和系統(tǒng)設計的過程,所以,進行可執(zhí)行性的分析是非常必要的,也是很重要的,經(jīng)過最初的設計目標和理論知識得出以下五點的可行性分析:(1)技術(shù)上的可行性。由于選用的開發(fā)平臺android是一個開源的平臺,這意味著開發(fā)者可以獲取絕大部分的開源代碼,并且google提供了一套成熟又全面的api,對于系統(tǒng)的開發(fā),基本
26、上不存在較大技術(shù)難點。(2)數(shù)據(jù)獲取的可行性。由于開發(fā)的系統(tǒng)是一個校園信息管理系統(tǒng),因為必須存在一個學生信息的數(shù)據(jù)庫。目前的情況將導致我們無法直接得到學校提供的數(shù)據(jù)庫,而我們選用了另外一個方法。因為該系統(tǒng)與pc端的數(shù)據(jù)一致,而pc端的使用載體是瀏覽器,這樣我們便可以在android上使用jsoup技術(shù)解析http網(wǎng)頁而獲取所需要的信息數(shù)據(jù)。(3)運行可行性。該系統(tǒng)需要搭建android平臺開發(fā)環(huán)境,使用avd虛擬機,并且能正常連接網(wǎng)絡,就可以正常運行。(4)經(jīng)濟可行性:該平臺設計只是作為本人的畢業(yè)設計,又因為本人的設計能力有限,其功能還不能完善,所以沒有什么經(jīng)濟效益可談。(5)法律可行性:該平
27、臺是作為畢業(yè)設計與商業(yè)無關(guān),又因為是自主開發(fā)設計,因此不會構(gòu)成侵權(quán),在法律上是可行的。通過以上的可行性分析,我將在android平臺開發(fā)環(huán)境下,采用java語言和eclipse編程工具,對該系統(tǒng)進行研究開發(fā)。3.3 系統(tǒng)運行環(huán)境需求1、開發(fā)者(pc端):系統(tǒng)開發(fā)工具:eclipse3.7運行平臺:windows xp / windows 7 / linux運行環(huán)境:java jdk-1.6、android_2.3.3_sdk、 adt 16.01模擬器參數(shù):android 2.3.3 avd (分辨率480*800、推薦內(nèi)存256mb)2、使用者(移動設備端):移動終端系統(tǒng)需求:android
28、系統(tǒng)移動終端硬件需求:屏幕分辨率480*800、cpu主頻=640mhz、運行內(nèi)存ram=256m、可用內(nèi)存rom=64m網(wǎng)絡需求:wifi / gsm / wcdma / cdma20003.4 用戶需求分析本課題研究的校園信息管理系統(tǒng)mysise系統(tǒng),主要面向的使用對象是xx大學xx軟件學院在校大學生。每位xx在校學生都擁有mysise系統(tǒng)帳號(唯一的學號及密碼),系統(tǒng)對于學生的學習及生活非常重要。大部分學生擁有android系統(tǒng)智能手機或者平板電腦,且習慣使用移動設備來完成可能的日常應用,當然也渴望mysise系統(tǒng)android客戶端來為其學習生活提供便捷。無論在教學區(qū)還是生活區(qū),較好的
29、網(wǎng)絡覆蓋為其使用網(wǎng)絡應用提供了保障。3.5 系統(tǒng)的設計目標本課題的設計目標是在android平臺上實現(xiàn)一個校園信息管理系統(tǒng)。要求該系統(tǒng)擁有美觀的ui界面,供用戶登錄、查看信息使用,包括:查看個人信息、查看課程表、查看考試時間、查看考勤信息等功能。系統(tǒng)擁有快速的操作體驗,代碼編寫使用了多線程技術(shù),使得界面顯示與網(wǎng)絡連接、數(shù)據(jù)處理可以同時進行。系統(tǒng)信息數(shù)據(jù)來源取自pc端系統(tǒng)的網(wǎng)絡,保證了準確與同步。3.6 用例分析與建模3.6.1 用例1 登錄參與者:用戶前置條件:正確學號已經(jīng)存在。目的:進入系統(tǒng)綜述:1用戶填寫學號及密碼2系統(tǒng)驗證信息,將用戶填寫的信息傳送到系統(tǒng)驗證。3登錄成功,顯示主菜單信息。
30、替代過程:使用該系統(tǒng)的用戶必須先登錄,若登錄失敗,是由于客戶輸入的帳號或者密碼錯誤,系統(tǒng)允許客戶重新輸入。3.1 登錄模塊用例圖登錄入口輸入學號和密碼正確?登錄成功進入主菜單界面是否將學號和密碼送往系統(tǒng)核對3.2 用戶登錄流程圖3.6.2 用例2 主菜單前置條件:登錄成功。參與者:用戶目的:讓用戶選擇要執(zhí)行的功能綜述:本界面設置4個功能按鈕,讓用戶選擇要執(zhí)行的功能,隨后執(zhí)行響應的操作。代替過程:如果用戶注銷登錄,則進入用例1。3.3 主菜單功能用例圖3.6.3 用例3 查看個人信息前置條件:于用例2選擇了個人信息按鈕。參與者:用戶目的:讓用戶查看個人信息綜述:1查看基本信息:用戶進入此功能頁面
31、能看到個人基本信息。2查看必修課信息:用戶進入此功能頁面能看到必修課信息。3查看選修課信息:用戶進入此功能頁面能看到選修課信息。代替過程:1. 該界面下方設置3個功能按鈕,可選擇查看需要的信息。2. 如果用戶返回,則進入用例2。3.4 個人信息功能用例圖3.6.4 用例4 查看課程表信息前置條件:于用例2選擇了課程表按鈕。參與者:用戶目的:讓用戶查看課程表信息綜述:查看當天課程表信息代替過程:1. 該界面下方設置5個功能按鈕,可選擇查看星期一到星期五的課程信息。2. 如果用戶返回,則進入用例2。3.5 課程信息功能用例圖3.6.5 用例5 查看考試時間表前置條件:于用例2選擇了考試時間按鈕。參
32、與者:用戶目的:讓用戶查看考試時間表綜述:查看目前的考試時間安排代替過程:如果用戶返回,則進入用例2。3.6 考試時間功能用例圖3.6.6 用例6 查看考勤信息前置條件:于用例2選擇了考勤信息按鈕。參與者:用戶目的:讓用戶查看考勤信息綜述:查看當前學年學期的考勤信息代替過程:如果用戶返回,則進入用例2。3.7 考勤信息功能用例圖4 系統(tǒng)的功能模塊設計4.1 mysise系統(tǒng)功能結(jié)構(gòu)圖登錄界面loginactivity主菜單界面mainactivity個人信息infoactivity課程表curricactivity考試時間timeactivity考勤信息attendactivity網(wǎng)絡連接cu
33、stomerhttpclient顯示考試時間顯示考勤信息獲取當天日期顯示當天課程顯示基本信息必修課信息按鈕選修課信息按鈕基本信息按鈕星期一按鈕星期二按鈕星期三按鈕星期四按鈕星期五按鈕顯示響應信息顯示課程信息注銷登錄退出程序4.1 系統(tǒng)功能結(jié)構(gòu)示意圖4.2 系統(tǒng)的功能分析與要求經(jīng)過前期的思考和研究,總結(jié)出該系統(tǒng)需要完成的一些具體功能,分析如下:1、能完成網(wǎng)絡連接并實現(xiàn)真實帳號登錄2、能完成對板塊頁面的解析并獲取需要的信息數(shù)據(jù),通過后臺邏輯處理,實現(xiàn)查看信息的顯示。3、使用多線程同步處理前臺界面的刷新和后臺網(wǎng)絡處理。4、可考慮添加的周邊功能,例如xx新聞、xx地圖。4.3 系統(tǒng)功能模塊的設計4.3
34、.1 個人信息模塊進入個人信息模塊刷新ui界面網(wǎng)絡連接解析網(wǎng)頁獲取基本信息功能按鈕解析網(wǎng)頁獲取必修課信息解析網(wǎng)頁獲取選修課信息主線程子線程4.2 個人信息模塊流程圖4.3.2 課程信息模塊進入課程信息模塊刷新ui界面網(wǎng)絡連接解析網(wǎng)頁獲取課程表功能按鈕主線程子線程獲取日期周末?無課程取得數(shù)據(jù)判斷星期幾是否4.3 課程信息模塊流程圖4.3.3 考試時間模塊進入考試時間模塊刷新ui界面網(wǎng)絡連接解析網(wǎng)頁主線程子線程有考試課程?獲取考試時間表無考試課程否是4.4 考試時間模塊流程圖4.3.4 考勤信息模塊進入考勤信息模塊刷新ui界面網(wǎng)絡連接解析網(wǎng)頁主線程子線程有課程?獲取考勤信息無考勤信息否是4.5 考
35、勤信息模塊流程圖4.4 系統(tǒng)用例圖4.6 用戶前臺系統(tǒng)用例圖4.7 程序后臺系統(tǒng)用例圖5 系統(tǒng)具體實現(xiàn)邏輯處理模塊實現(xiàn)5.1 項目結(jié)構(gòu)示意圖 5.1 項目結(jié)構(gòu)示意圖5.2 多線程技術(shù)在項目上的應用在跳轉(zhuǎn)到每一個功能頁面的時候,因為單線程的順序邏輯執(zhí)行,會出現(xiàn)這樣的情況:只有執(zhí)行完前一句代碼才會執(zhí)行下一句代碼。而我們的程序表現(xiàn)出來給用戶的頁面信息又是必須先從網(wǎng)絡獲取數(shù)據(jù)后再表現(xiàn)出來,這樣的網(wǎng)絡工作相對來說是比較耗時的,同時也就會使程序跳轉(zhuǎn)后出現(xiàn)黑屏的情況,只有等待網(wǎng)絡工作處理完后才出現(xiàn)ui界面。有為了讓程序避免處理網(wǎng)絡工作這樣耗時比較長的操作而導致頁面刷新緩慢的尷尬現(xiàn)象,我們使用了多線程來分開處
36、理ui刷新跟網(wǎng)絡操作。具體代碼如下:/ 創(chuàng)建子線程來處理網(wǎng)絡工作thread t = new thread() public void run() / 網(wǎng)絡工作network();/ 啟動ui線程handler.post(updateresults); ;t.start();/ 啟動子線程 / ui線程 runnable updateresults = new runnable() public void run() updateui(); ; / 更新ui public void updateui() / 網(wǎng)絡工作具體實現(xiàn) public void network() 雖然取得數(shù)據(jù)后的ui刷新
37、還是必須等待網(wǎng)絡工作network()的完成,但那已經(jīng)是子線程的事了,主線程還是可以順利地執(zhí)行下去,先將界面展現(xiàn)給用戶,給用戶一種程序響應速度很快的感覺。5.3 主菜單頁面邏輯處理系統(tǒng)通過前面的網(wǎng)絡連接跟登錄驗證之后(網(wǎng)絡連接模塊為同組成員饒澤華的工作),便來到了主菜單界面。這個部分的內(nèi)容主要使用了4個按鈕,分別對應了個人信息、課程表、考試時間、考勤信息這4個功能。代碼的編寫主要是使用之前登錄后的httpclient保持網(wǎng)絡會話,然后連接“:7001 /sise/module/student_states/student_select_class/main.jsp ”來獲取 html頁面信息,
38、這部分的重點工作在于通過jsoup解析網(wǎng)頁,獲得以上4個功能的相應http地址,以供后面的操作。例如個人信息部分,網(wǎng)頁源代碼是:5.2 主菜單頁面源碼(個人信息部分)圖可以看到,用紅色框選出來的這段代碼,正是一個jsp頁面的地址,而其實有用部分則是在href= 到 之間的這一段,可以看出是一個相對地址,通過試驗,在前面加上:7001則可以成為一個絕對地址,讓后續(xù)的操作得以實現(xiàn)。用jsoup解析網(wǎng)頁來獲取href= 到 之間的這一段,首先要定位到帶有onclick屬性的td標簽,再得到onclick的屬性值,具體代碼實現(xiàn)為:/ 抽出td標簽中的onclick屬性的值public string g
39、etlink(int i) element link = doc.select(tdonclick).get(i);return link.attr(onclick);為了減少代碼的重復,把這部分的實現(xiàn)寫成一個方法,只需要傳入表示順序的i值即可得到相應的內(nèi)容。然后還發(fā)現(xiàn),我們只是得到onclick的屬性值,為了得到href= 到 之間的這一段相對地址,還需要對每個結(jié)果做一個比較精確的截取,代碼實現(xiàn)如下:string infolinkstr = getlink(0);infourl = baseurl + infolinkstr.substring(54, infolinkstr.length(
40、) - 1);到了這一步,infourl才是真正的絕對地址,獲取個人信息模塊的http地址工作才算完成。同理,可以取得其他三個子功能模塊的http地址,具體如下:1、課程表部分:5.3 主菜單頁面源碼(課程表部分)圖定位代碼及截取代碼,最終取得curriurl:string curriclinkstr = getlink(1);curricurl = baseurl +curriclinkstr.substring(40, curriclinkstr.length()-1);2、考試時間表部分:5.4 主菜單頁面源碼(考試時間表部分)圖定位代碼及截取代碼,最終取得timeurl:string
41、timelinkstr = getlink(2);timeurl = baseurl + timelinkstr.substring(49, timelinkstr.length() - 1);3、考勤信息部分:5.5 主菜單頁面源碼(考勤信息部分)圖定位代碼及截取代碼,最終取得attendurl:string attendlinkstr = getlink(3);attendurl = baseurl + attendlinkstr.substring(49,attendlinkstr.length()-1);5.4 個人信息頁面邏輯處理個人信息頁面的邏輯處理,主要工作還是使用jsoup技術(shù)
42、解析網(wǎng)頁,先將基本信息的數(shù)據(jù)取得,顯示出來。例如獲取學號信息,頁面源代碼如下:5.6 個人信息頁面源碼(學號部分)圖學號信息是在div標簽中的文本,具體實現(xiàn)代碼如下:/ 抽出div標簽中的文本public string getdiv(int i) element div = doc.select(div).get(i);return div.text() + n;為了減少代碼的重復,把這部分的實現(xiàn)寫成一個方法,只需要傳入表示順序的i值即可得到相應的內(nèi)容。取得學號的代碼:string num = 學號: + getdiv(2);同理,個人基本信息的其他信息數(shù)據(jù)也是通過定位,調(diào)用getdiv方法來
43、獲得,具體實現(xiàn)代碼如下:5.7 個人信息頁面源碼(姓名部分)圖string name = 姓名: + getdiv(3);string grade = 年級: + getdiv(4);string special = 專業(yè): + getdiv(5);string identity = 身份證: + getdiv(6);string email = 電子郵箱: + getdiv(7);string teacher = 班主任: + getdiv(8);string counselor = 輔導員: + getdiv(9);string required = 必修課已獲得學分: + getdiv(
44、17);string elective = 選修課已獲得學分: + getdiv(22);string accumulate = 累計已獲得學分: + getdiv(26);string indispensable = 本專業(yè)本年級畢業(yè)需修滿學分: + getdiv(34);實際顯示效果:5.8 基本信息界面圖本子功能模塊還具備了查看必修課信息和選修課信息的功能,我在界面下方設置了3個按鈕,分別設置了對應的操作,會將必修課信息和選修課信息也顯示出來,響應速度非???。當然了,數(shù)據(jù)的取得還是要解析頁面,具體如下:例如取得必修課信息數(shù)據(jù),網(wǎng)頁源代碼是:5.9 個人信息頁面源碼(必修課信息部分)圖實際
45、上,必修課信息是存放在頁面第7個table下的,我通過遍歷第7個table標簽下的tr標簽、td標簽可以取得所有必修課信息,而在手機屏幕上顯示,我覺得有一些相對雞肋的信息可以不顯示出來,因此只選用了課程代碼、課程名稱和成績,這樣3個信息已經(jīng)足夠代表一門課程,讓界面簡潔易看,也讓處理速度更快。具體實現(xiàn)代碼:/ 解析網(wǎng)頁,取得必修課信息public void getrequired() int i = 0;string s = new string10;/ 獲得第7個table標簽element table = doc.select(table).get(6);/ 獲得第7個table標簽下的tr
46、標簽elements trs = table.select(tr);if (trs != null) / 遍歷第5個table標簽下的tr標簽for (element tr : trs) / 獲得第5個table標簽下的tr標簽下的td標簽elements tds = tr.select(td);if (tds != null) / 遍歷第5個table標簽下的tr標簽下的td標簽for (element td : tds) / 將每個td標簽的文本存入字符串數(shù)組ssi = td.text();i+;if (s1 != null) / 按照格式輸出requiredstr = requireds
47、tr + s1 + : + s2 + 成績: + s8 + n;i = 0;同理,選修課信息的數(shù)據(jù)取得,也跟必修課是一樣的,只不過必修課信息是存放在頁面第10個table標簽下的。具體代碼實現(xiàn)如下:/ 解析網(wǎng)頁,取得選修課信息public void getelective() int i = 0;string s = new string9;/ 獲得第10個table標簽下element table = doc.select(table).get(9);/ 獲得第10個table標簽下的tr標簽elements trs = table.select(tr);if (trs != null) /
48、 遍歷第10個table標簽下的tr標簽for (element tr : trs) / 獲得第10個table標簽下的tr標簽下的td標簽elements tds = tr.select(td);if (tds != null) / 遍歷第10個table標簽下的tr標簽下的td標簽for (element td : tds) / 將每個td標簽的文本存入字符串數(shù)組ssi = td.text();i+;if (s1 != null) / 按照格式輸出electivestr = electivestr + s0 + : + s1 + 成績:+ s7 + n;i = 0;實際顯示效果:5.10
49、必修課信息與選修課信息界面圖5.5 課程表頁面邏輯處理課程表頁面的邏輯處理,主要工作還是使用jsoup技術(shù)解析網(wǎng)頁, 獲取完整的課程表,然后獲取當天的日期,將當天的課程信息顯示出來。取得系統(tǒng)當天日期,網(wǎng)頁源代碼是:5.11 課程表頁面源碼(日期信息部分)圖只需要找到帶有face屬性的font標簽即可,實現(xiàn)代碼:/ 取得font標簽中含有face屬性的文本內(nèi)容,即是當天日期element font = doc.select(fontface).first();string date = font.text();這樣,字符串data就是我們需要的當天日期。取得完整的課程表,網(wǎng)頁源代碼是:5.12
50、課程表頁面源碼(課程表部分)圖先仔細觀察源代碼,課程表信息是存放在頁面第7個table中的,解讀存放內(nèi)容的規(guī)則:橫向看,第一行是標題,可以得知每行8個單元格的內(nèi)容是對應一周7天的課程信息,第二行起是每一個時間段的課程;縱向看,第一列是時間段標題,然后后面7列則是對應了一周7天。這樣的一個表格,從解析上來講,應該從橫向來解析,因為每一行是一個tr標簽,而每一行的tr標簽包含了8個td標簽,即每一行的每個單元格。在每取得一行數(shù)據(jù)后,使用5個字符串數(shù)組來存放周一到周五的課程數(shù)據(jù),這樣再解析完成后,我們所需要的課程信息就在這5個字符串數(shù)組中了,且順序?qū)嗣恳惶斓拿恳粋€時間段。具體代碼實現(xiàn)如下:/ 解
51、析網(wǎng)頁,取得所有課程信息public void getcurrics() int i = 0;int j = 0;string s = new string8;/ 獲得第7個table標簽element table = doc.select(table).get(6);/ 獲得第7個table標簽下的tr標簽elements trs = table.select(tr);if (trs != null) / 遍歷第7個table標簽下的tr標簽for (element tr : trs) / 獲得第7個table標簽下的tr標簽下的td標簽elements tds = tr.select(td
52、);if (tds != null) for (element td : tds) / 將每個td標簽的文本存入字符串數(shù)組ssi = td.text();i+;i = 0;mondayj = s1; / 表格每一行的第2格內(nèi)容存入monday字符串數(shù)組tuesdayj = s2;/ 表格每一行的第3格內(nèi)容存入tuesday字符串數(shù)組wednesdayj = s3;/ 表格每一行的第4格內(nèi)容存入wednesday字符串數(shù)組thursdayj = s4;/ 表格每一行的第5格內(nèi)容存入thursday字符串數(shù)組fridayj = s5;/ 表格每一行的第6格內(nèi)容存入friday字符串數(shù)組j+;跳轉(zhuǎn)頁面的最初會顯示當天對應的課程,當然了,如果是周末則會顯示無課程。隨后在界面下方設置了5個按鈕,分別對應了星期一到星期五,可供用戶查看一周的課程,點擊則會顯示相應內(nèi)容,響應速度非??臁嶋H顯示效果:5.13 課程表界面圖5.6 考
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津大學《工程圖學A(I)》2023-2024學年第一學期期末試卷
- 深圳信息職業(yè)技術(shù)學院《現(xiàn)代制造技術(shù)》2023-2024學年第一學期期末試卷
- 山東工藝美術(shù)學院《創(chuàng)業(yè)經(jīng)營管理》2023-2024學年第一學期期末試卷
- 秦皇島工業(yè)職業(yè)技術(shù)學院《廣告片創(chuàng)作》2023-2024學年第一學期期末試卷
- 二零二五年度文化旅游綜合體過橋墊資管理協(xié)議
- 二零二五年度城市地下管網(wǎng)維護管理費合同
- 二零二五年度物流倉儲面積補差及供應鏈管理合同
- 二零二五年度房地產(chǎn)項目合同終止及補償協(xié)議
- 柳州鐵道職業(yè)技術(shù)學院《運動控制導論》2023-2024學年第一學期期末試卷
- 2025年度合伙人分伙協(xié)議書:人工智能輔助診斷系統(tǒng)研發(fā)合作收益分配
- 綿陽市高中2022級(2025屆)高三第二次診斷性考試(二診)歷史試卷(含答案)
- 四年級數(shù)學(上)計算題專項練習及答案
- 期末測試卷(試題)-2024-2025學年四年級上冊數(shù)學滬教版
- GB/T 6672-2001塑料薄膜和薄片厚度測定機械測量法
- GB∕T 27552-2021 金屬材料焊縫破壞性試驗 焊接接頭顯微硬度試驗
- 外貿(mào)中常見付款方式的英文表達及簡要說明
- 抗壓偏壓混凝土柱承載力計算表格
- 初次申領(lǐng)《南京市建筑業(yè)企業(yè)信用管理手冊(電子版)》辦事
- 中國移動呼叫中心運營管理指標體系
- 醫(yī)院設計規(guī)范
- 停車場設計規(guī)范
評論
0/150
提交評論