




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)設(shè)計(jì)用于Android智能終端的學(xué)生課務(wù)系統(tǒng)的設(shè)計(jì)與開發(fā)學(xué)生姓名 1學(xué) 院 1專 業(yè) 1班 級(jí) 1學(xué) 號(hào) 1指導(dǎo)教師 輝 年 月 日鹽城師范學(xué)院畢業(yè)設(shè)計(jì)用于Android智能終端的學(xué)生課務(wù)系統(tǒng)的設(shè)計(jì)與開發(fā)摘 要隨著智能移動(dòng)終端技術(shù)的快速發(fā)展,改變了人們通過電腦獲取信息的傳統(tǒng)方式。課題針對(duì)在校學(xué)生查詢課程信息、成績(jī)和考試時(shí)間操作過程復(fù)雜的現(xiàn)狀,采用網(wǎng)絡(luò)爬蟲、JSON數(shù)據(jù)解析、消息推送、Android多線程以及異步處理機(jī)制,開發(fā)了學(xué)生課務(wù)管理系統(tǒng),實(shí)現(xiàn)了通過移動(dòng)終端對(duì)教務(wù)網(wǎng)信息的查詢和數(shù)據(jù)分析等功能。在方便學(xué)生對(duì)課務(wù)信息的獲取和管理的同時(shí),對(duì)同類系統(tǒng)的開發(fā)提供參考。【關(guān)鍵詞】Java;Andr
2、oid;HttpClient;Jsoup;課務(wù)系統(tǒng)Design and development of universal salary management system oriented to AndroidAbstractWith the rapid development of intelligent mobile terminal technology, it has changed the traditional way people access to information through a computer.Topic for the students in the comp
3、lex process of the operation to inquiry courses, grades and exam time,using web crawler, JSON data parsing, message push, Android multi thread and asynchronous processing mechanism, developed the student management system, realized that through the mobile terminal to the educational administration n
4、etwork information query and data analysis and other functions, the acquisition and management of information service class in the convenience of students at the same time, to provide reference for the development of similar system.Key words Java; Android; HttpClient; Jsoup; Class service system第 第
5、頁 共24頁目 錄 TOC o 1-3 h z u HYPERLINK l _Toc452841155 1 緒論 PAGEREF _Toc452841155 h 3 HYPERLINK l _Toc452841156 1.1研究背景及意義 PAGEREF _Toc452841156 h 3 HYPERLINK l _Toc452841157 1.2研究的思路與內(nèi)容 PAGEREF _Toc452841157 h 3 HYPERLINK l _Toc452841158 2 系統(tǒng)開發(fā)環(huán)境及相關(guān)技術(shù)介紹 PAGEREF _Toc452841158 h 3 HYPERLINK l _Toc452841
6、159 2.1開發(fā)環(huán)境 PAGEREF _Toc452841159 h 3 HYPERLINK l _Toc452841160 2.2關(guān)鍵技術(shù) PAGEREF _Toc452841160 h 4 HYPERLINK l _Toc452841161 2.2.1網(wǎng)絡(luò)抓取技術(shù) PAGEREF _Toc452841161 h 4 HYPERLINK l _Toc452841162 2.2.2 Jsoup對(duì)網(wǎng)頁的解析 PAGEREF _Toc452841162 h 5 HYPERLINK l _Toc452841163 2.2.3信息推送 PAGEREF _Toc452841163 h 6 HYPERL
7、INK l _Toc452841164 2.2.4 Android技術(shù) PAGEREF _Toc452841164 h 7 HYPERLINK l _Toc452841165 2.2.5數(shù)據(jù)的存儲(chǔ)技術(shù) PAGEREF _Toc452841165 h 7 HYPERLINK l _Toc452841166 3 系統(tǒng)設(shè)計(jì) PAGEREF _Toc452841166 h 7 HYPERLINK l _Toc452841167 3.1系統(tǒng)需求分析 PAGEREF _Toc452841167 h 7 HYPERLINK l _Toc452841168 3.2系統(tǒng)可行性分析 PAGEREF _Toc452
8、841168 h 8 HYPERLINK l _Toc452841169 3.2.1技術(shù)的可行性 PAGEREF _Toc452841169 h 8 HYPERLINK l _Toc452841170 3.2.2經(jīng)濟(jì)的可行性 PAGEREF _Toc452841170 h 8 HYPERLINK l _Toc452841171 4 系統(tǒng)總體設(shè)計(jì) PAGEREF _Toc452841171 h 8 HYPERLINK l _Toc452841172 4.1設(shè)計(jì)原則 PAGEREF _Toc452841172 h 8 HYPERLINK l _Toc452841173 4.2系統(tǒng)流程設(shè)計(jì) PAGE
9、REF _Toc452841173 h 9 HYPERLINK l _Toc452841174 4.3模塊規(guī)劃 PAGEREF _Toc452841174 h 9 HYPERLINK l _Toc452841175 4.4數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc452841175 h 10 HYPERLINK l _Toc452841176 5 詳細(xì)設(shè)計(jì)與編碼實(shí)現(xiàn) PAGEREF _Toc452841176 h 11 HYPERLINK l _Toc452841177 5.1 HttpClient模擬登錄的實(shí)現(xiàn) PAGEREF _Toc452841177 h 11 HYPERLINK l _To
10、c452841178 5.1.1發(fā)送請(qǐng)求 PAGEREF _Toc452841178 h 12 HYPERLINK l _Toc452841179 5.1.2關(guān)閉連接 PAGEREF _Toc452841179 h 13 HYPERLINK l _Toc452841180 5.2 Jsoup解析教務(wù)網(wǎng)的實(shí)現(xiàn) PAGEREF _Toc452841180 h 13 HYPERLINK l _Toc452841181 5.3課程信息的存儲(chǔ)及編輯的實(shí)現(xiàn) PAGEREF _Toc452841181 h 14 HYPERLINK l _Toc452841182 5.4考試信息以及等級(jí)信息的獲取 PAGER
11、EF _Toc452841182 h 16 HYPERLINK l _Toc452841183 5.5推送信息設(shè)置 PAGEREF _Toc452841183 h 16 HYPERLINK l _Toc452841184 5.6成績(jī)數(shù)據(jù)的分析 PAGEREF _Toc452841184 h 17 HYPERLINK l _Toc452841185 6 系統(tǒng)測(cè)試 PAGEREF _Toc452841185 h 18 HYPERLINK l _Toc452841186 6.1測(cè)試環(huán)境 PAGEREF _Toc452841186 h 18 HYPERLINK l _Toc452841187 6.2
12、界面測(cè)試 PAGEREF _Toc452841187 h 18 HYPERLINK l _Toc452841188 6.3 功能測(cè)試 PAGEREF _Toc452841188 h 18 HYPERLINK l _Toc452841189 6.3.1 登錄測(cè)試 PAGEREF _Toc452841189 h 18 HYPERLINK l _Toc452841190 6.3.2 課程表測(cè)試 PAGEREF _Toc452841190 h 19 HYPERLINK l _Toc452841191 6.3.3 成績(jī)查詢功能測(cè)試 PAGEREF _Toc452841191 h 20 HYPERLINK
13、 l _Toc452841192 6.3.4 等級(jí)功能測(cè)試 PAGEREF _Toc452841192 h 21 HYPERLINK l _Toc452841193 6.3.5 其他功能測(cè)試 PAGEREF _Toc452841193 h 21 HYPERLINK l _Toc452841194 結(jié)束語 PAGEREF _Toc452841194 h 23 HYPERLINK l _Toc452841195 參考文獻(xiàn) PAGEREF _Toc452841195 h 241 緒論1.1研究背景及意義目前,互聯(lián)網(wǎng)技術(shù)已廣泛應(yīng)用于科研、教育、商業(yè)等眾多領(lǐng)域,成為社會(huì)發(fā)展的助推器。安卓APP覆蓋的類型
14、及所覆蓋的領(lǐng)域都非常廣闊,如社交、旅游、工具、游戲。安卓平臺(tái)對(duì)開發(fā)者而言,在開發(fā)程序時(shí)可以擁有更大的自由性,與之相對(duì)的是蘋果平臺(tái),它是一個(gè)相對(duì)封閉的系統(tǒng),并不允許第三方來進(jìn)行開源。現(xiàn)在市場(chǎng)上安卓系統(tǒng)所占的比例甚高,其系統(tǒng)的受眾面廣,再加上智能手機(jī)已成為能夠隨身攜帶的工具,所以使用安卓系統(tǒng)開發(fā)APP來提供信息服務(wù)的趨勢(shì)將越來越普遍。現(xiàn)在在各大APP市場(chǎng)上也有著不少關(guān)于在校學(xué)生信息獲取的軟件,如課程格子和超級(jí)課程表。這些軟件都偏重于在校學(xué)生對(duì)課程表的查詢,而對(duì)于學(xué)生比較關(guān)心的考試成績(jī)的查詢和考試成績(jī)的分析并沒提供相關(guān)服務(wù),系統(tǒng)就是在這方面加強(qiáng)了設(shè)計(jì),滿足了學(xué)生的需求。1.2研究的思路與內(nèi)容學(xué)生課務(wù)
15、系統(tǒng)的設(shè)計(jì)是面向在校學(xué)生,為學(xué)生提供教務(wù)網(wǎng)上的課程表、等級(jí)成績(jī)、考試時(shí)間以及考試成績(jī)信息的獲取,并且能夠根據(jù)實(shí)際情況對(duì)課程表進(jìn)行編輯修改的應(yīng)用系統(tǒng)。系統(tǒng)是使用Java語言來進(jìn)行開發(fā),使用HttpClient在后臺(tái)模擬登錄學(xué)校教務(wù)網(wǎng),獲取相關(guān)信息的網(wǎng)頁后,通過Jsoup來解析該網(wǎng)頁信息,繼而將信息存儲(chǔ)到數(shù)據(jù)庫中。在顯示課程表之后,學(xué)生可以在顯示的課程表上添加自己感興趣的課程, 這添加了可以對(duì)課程信息進(jìn)行編輯的功能。獲取成績(jī)數(shù)據(jù)后,在這些數(shù)據(jù)的基礎(chǔ)上繪制曲線圖,可以直截了當(dāng)?shù)目闯鰧W(xué)生自己的學(xué)習(xí)狀況,讓學(xué)生為下學(xué)期的學(xué)習(xí)做好準(zhǔn)備。2 系統(tǒng)開發(fā)環(huán)境及相關(guān)技術(shù)介紹2.1開發(fā)環(huán)境硬件環(huán)境:以WIN7 64
16、位操作系統(tǒng)為開發(fā)平臺(tái)。軟件環(huán)境:以MyEclipse(JDK1.7.0_67 J2EE版本)為開發(fā)平臺(tái),配置插件ADT-Bundle-Windows-X86-20130917插件。2.2關(guān)鍵技術(shù)2.2.1網(wǎng)絡(luò)抓取技術(shù)網(wǎng)絡(luò)抓取技術(shù)是根據(jù)現(xiàn)有的Http協(xié)議,進(jìn)行符合Http協(xié)議的操作,所以需要根據(jù)其運(yùn)作方式來進(jìn)行抓取網(wǎng)頁的活動(dòng)。通過使用網(wǎng)絡(luò)爬蟲,從客戶端發(fā)到服務(wù)器上一般會(huì)發(fā)送請(qǐng)求來進(jìn)行,請(qǐng)求一般只包括方法和路徑,而服務(wù)器會(huì)在指定的端口等待客戶端發(fā)送的請(qǐng)求。一旦收到請(qǐng)求,服務(wù)器就會(huì)返回一個(gè)響應(yīng),并且在這個(gè)網(wǎng)頁中尋找下一個(gè)鏈接地址,從而循環(huán)不斷的找尋信息。這樣就可以將該網(wǎng)站中的所有網(wǎng)頁全部抓取完畢,同
17、時(shí)也將信息提取出來。也就是說所謂網(wǎng)絡(luò)抓取,就是把URL地址中指定的網(wǎng)絡(luò)資源從網(wǎng)絡(luò)流中讀取出來,保存到本地1。具體流程如圖2-1所示。圖2-1 網(wǎng)絡(luò)爬蟲工作的流程圖根據(jù)網(wǎng)絡(luò)爬蟲的原理,可以選擇使用HttpClient或者HttpUrlConnection來進(jìn)行網(wǎng)頁的抓取。但是HttpUrlConnection在進(jìn)行重訪問的自定義、會(huì)話和cookie等功能時(shí)很不方便,需要自己定義,而HttpClient則是將這些方法進(jìn)行了封裝,增加了其方便性。系統(tǒng)采用的是HttpClient來進(jìn)行網(wǎng)頁的抓取。在基于Http協(xié)議訪問服務(wù)器時(shí),有g(shù)et方法和post方法。get方法是通過在get方法的構(gòu)造函數(shù)中放入鏈
18、接地址和數(shù)據(jù)來進(jìn)行申請(qǐng),它對(duì)數(shù)據(jù)量有著一定的限制,而且不是很安全。post方法就是將請(qǐng)求的參數(shù)填入表單,進(jìn)行請(qǐng)求的發(fā)送,這樣可以進(jìn)行大量的數(shù)據(jù)提交,也相對(duì)的安全。在請(qǐng)求發(fā)送之后,服務(wù)器接收到便會(huì)對(duì)請(qǐng)求進(jìn)行響應(yīng),HttpClient讀取響應(yīng)的response來判斷登錄的成功與否。要注意的是無論是否成功,都需要進(jìn)行HttpClient的關(guān)閉連接,這樣才能不占用資源。2.2.2 Jsoup對(duì)網(wǎng)頁的解析 首先網(wǎng)頁的本質(zhì)就是HTML。HTML將要顯示在網(wǎng)頁上的各個(gè)部分通過標(biāo)簽來進(jìn)行標(biāo)記。在互聯(lián)網(wǎng)傳送中,HTML文本是帶著字符編碼,同時(shí)在與文檔一起發(fā)送響應(yīng)頭信息中這些字符編碼是有著指定的,也有可能存在在文
19、檔里的HTML標(biāo)簽中。所以顯示在瀏覽器的字符是依據(jù)字符編碼把字節(jié)流變換產(chǎn)生的。因此,在瀏覽器解析HTML的時(shí)候,會(huì)把HTML文檔當(dāng)成大樹,因?yàn)镠TML的嵌套很規(guī)律,所以可以根據(jù)dom的特性如圖2-2所示,即樹狀結(jié)構(gòu),進(jìn)行解析,再加上通過HTML中的特點(diǎn),即一個(gè)元素的對(duì)象是一個(gè)節(jié)點(diǎn)來顯示對(duì)象的屬性,這樣就將整個(gè)網(wǎng)頁解析出來2。圖2-2 HTML嵌套圖Jsoup是一款能夠解析HTML信息的解析器。它的工作方式是先從一個(gè)URL地址或者文件來解析HTML,再用dom或者css的選擇器來獲取數(shù)據(jù)3。Jsoup的數(shù)據(jù)獲取有兩種方式,一種是傳統(tǒng)的通過dom模型網(wǎng)頁的標(biāo)簽和元素來分析出數(shù)據(jù);另一種是類似Jqu
20、ary的方式,通過select選擇器來對(duì)元素進(jìn)行選擇,并且可以用正則表達(dá)式來篩選出符合需求的文本,從而獲得數(shù)據(jù)。除了Jsoup以外,還有HtmlParser也可以進(jìn)行HTML的解析,但是Jsoup與HtmlParser 的區(qū)別在于Jsoup不需要定義一個(gè)類,用來存放HTML的元素。Jsoup提供了篩選的方法,直接用來檢索HTML中的元素。2.2.3信息推送信息推送是將信息從服務(wù)器端發(fā)送到移動(dòng)端。一般來說,信息的傳遞就體現(xiàn)了移動(dòng)端和服務(wù)器端的交互,基本上都是從服務(wù)器端獲取數(shù)據(jù)發(fā)送到移動(dòng)端。在獲取服務(wù)器上的數(shù)據(jù)時(shí),一般有兩種方式,一種是通過移動(dòng)端來抓取服務(wù)器上的數(shù)據(jù),另一種是服務(wù)器將數(shù)據(jù)推送到移動(dòng)
21、端上5。服務(wù)端是不會(huì)主動(dòng)向移動(dòng)端請(qǐng)求數(shù)交互的,因?yàn)榉?wù)端無法得知移動(dòng)端的狀態(tài)和IP地址,所以要是服務(wù)端有重要的數(shù)據(jù)必須讓移動(dòng)端知曉就必須主動(dòng)向移動(dòng)端發(fā)送交互請(qǐng)求,由此產(chǎn)生了推送技術(shù)。現(xiàn)在能夠?qū)崿F(xiàn)數(shù)據(jù)推送的方法有很多,如C2DM推送、基于XMPP的AndroidPN推送、使用MQTT協(xié)議的信息推送等,但是這些方法都存在著一些問題或者成本太高,如XMPP功能很全面,但是只用作信息推送就太過繁瑣,所以系統(tǒng)選擇了另外一種方法極光推送服務(wù),即JPush。使用這種方案實(shí)現(xiàn)簡(jiǎn)單,有利于減少開發(fā)成本,無需進(jìn)行二次開發(fā),同時(shí)極光推送還提供了消息推送結(jié)果查詢,對(duì)消息推送的結(jié)果和過程有比較詳細(xì)的記錄。使用極光推送只
22、需要在程序中調(diào)用它的API,也就是發(fā)送一個(gè)HTTP的請(qǐng)求,請(qǐng)求給予系統(tǒng)訪問極光推送服務(wù)器的權(quán)限。極光推送原理如圖2-3所示。圖2-3 極光推送原理圖2.2.4 Android技術(shù)Android是一種有著自由性以及創(chuàng)新性的操作系統(tǒng)。Android由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,采用了軟件堆層的架構(gòu),是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件6 。它采用了分層架構(gòu)的模式,如圖2-4所示。圖2-4 Android分層架構(gòu)圖2.2.5數(shù)據(jù)的存儲(chǔ)技術(shù)Android提供SQLite數(shù)據(jù)庫的API,不需要安裝第三方軟件,這給開發(fā)程序帶來了便捷,而且SQLite它數(shù)據(jù)庫中的所有信息都在一個(gè)文件
23、夾里面,它有著獨(dú)占性以及只能查看數(shù)據(jù)不能修改的特性,使得SQLite數(shù)據(jù)庫中的數(shù)據(jù)更加安全。并且SQLite用了一些特殊的方法來進(jìn)行關(guān)系型數(shù)據(jù)庫的管理。它由包含著八個(gè)獨(dú)立模塊的三個(gè)子系統(tǒng)構(gòu)成,這種模型就像是在流水線上工作一樣。3 系統(tǒng)設(shè)計(jì)3.1系統(tǒng)需求分析在教育領(lǐng)域,移動(dòng)軟件也有著廣泛的應(yīng)用,課程表就是其中一項(xiàng)重要應(yīng)用7。首先使用該系統(tǒng)的對(duì)象是在校的學(xué)生,需要從學(xué)校教務(wù)網(wǎng)上獲取自己的有關(guān)信息,如課程表,考試的時(shí)間、考試成績(jī)以及等級(jí)考試信息等,但是不是通過電腦,而是能通過手機(jī)來獲取所需要的信息。在現(xiàn)實(shí)生活中,學(xué)生可能想要上一些非本專業(yè)的課程,所以需要添加課程到課程表中,以便自己查看上課時(shí)間和上課
24、地點(diǎn)。系統(tǒng)滿足了對(duì)課程表信息的編輯功能,即需要添加或者刪除課表信息的功能,以及對(duì)考試成績(jī)的分析,讓學(xué)生直觀的看到自己的學(xué)習(xí)成果。3.2系統(tǒng)可行性分析3.2.1技術(shù)的可行性學(xué)生課務(wù)系統(tǒng)是以Android為平臺(tái),使用Java語言編寫程序。輸入了教務(wù)賬號(hào)和密碼,在后臺(tái)通過HttpClient發(fā)送請(qǐng)求,進(jìn)而成功登錄學(xué)校教務(wù)網(wǎng)。使用HttpClient來獲取HTML的數(shù)據(jù),再用Jsoup來進(jìn)行解析。通過對(duì)網(wǎng)頁信息的篩選,將需要的信息存儲(chǔ)到SQLite中,根據(jù)成績(jī)數(shù)據(jù)來進(jìn)行曲線圖的繪制。在系統(tǒng)中,用Activity來跳轉(zhuǎn)頁面實(shí)現(xiàn)頁面的交互,再用.xml文件來實(shí)現(xiàn)頁面的布局安排,并在Android設(shè)備上進(jìn)行
25、調(diào)試,隨時(shí)調(diào)整界面和功能,使系統(tǒng)能夠成功的運(yùn)行。因此,理論上該系統(tǒng)是可以實(shí)現(xiàn)的。3.2.2經(jīng)濟(jì)的可行性學(xué)生課務(wù)系統(tǒng)是基于移動(dòng)端即移動(dòng)平臺(tái)開發(fā)設(shè)計(jì)的,現(xiàn)在的移動(dòng)系統(tǒng)有蘋果公司的IOS系統(tǒng)、谷歌公司的Android系統(tǒng)等,但是在這些系統(tǒng)中Android系統(tǒng)的市場(chǎng)份額已占到百分之八十,所以受眾面較廣。如今,通過手機(jī)來獲取信息的技術(shù)已越發(fā)成熟,越來越多的信息公司開發(fā)了多種多樣的App,用來滿足使用者的需求。以前,想要獲得學(xué)生的成績(jī)信息和課程表信息基本上都是自己對(duì)照教務(wù)網(wǎng)親手抄寫一份,到后來就是復(fù)印,但是這兩種方法都不能解決傳統(tǒng)的紙質(zhì)版的記錄容易丟失的問題,所以學(xué)生課務(wù)系統(tǒng)這款A(yù)PP是為了很好地解決這類
26、問題而設(shè)計(jì)開發(fā)的。系統(tǒng)讓學(xué)生能夠在攜帶手機(jī)的同時(shí),可以查詢到自己考試的信息和等級(jí)成績(jī)的信息,并且能進(jìn)行修改、編輯自己的課程表的操作,也就是說學(xué)生課務(wù)系統(tǒng)有著方便性。除此之外,系統(tǒng)還可以直觀的看到成績(jī)的走勢(shì),能夠讓學(xué)生了解這學(xué)期的學(xué)習(xí)情況,所以系統(tǒng)有著很強(qiáng)的可行性。4 系統(tǒng)總體設(shè)計(jì)4.1設(shè)計(jì)原則 (1)實(shí)用性原則:學(xué)生課務(wù)系統(tǒng)讓學(xué)生能夠在手機(jī)上查詢自己的相關(guān)信息,不在受到設(shè)備的限制,除此之外,還添加了蹭課功能和課程表編輯功能,增加該系統(tǒng)的實(shí)用性。 (2)可編輯修改性原則:學(xué)生課務(wù)系統(tǒng)的設(shè)計(jì)要考慮到學(xué)生想要添加非本專業(yè)的課程,需要在所獲取的課程表上對(duì)課程信息進(jìn)行編輯,也就是實(shí)現(xiàn)課程表的可編輯性。
27、(3)界面友好交互原則:用戶在體驗(yàn)軟件系統(tǒng)的第一印象來源于系統(tǒng)的界面,要抓住使用者的特點(diǎn),滿足用戶的需求,還要符合使用者在日常生活中使用的習(xí)慣。 (4)數(shù)據(jù)準(zhǔn)確性原則:學(xué)生課務(wù)系統(tǒng)旨在讓學(xué)生能夠更加方便的查閱自己的信息,所以在獲得的數(shù)據(jù)信息上要保證其的準(zhǔn)確性,不能讓課程表上顯示錯(cuò)誤的上課時(shí)間或者上課地點(diǎn)等,也不能讓成績(jī)欄中有錯(cuò)誤的成績(jī)。4.2系統(tǒng)流程設(shè)計(jì)需要根據(jù)課程表的特點(diǎn)和系統(tǒng)需求分析,設(shè)計(jì)系統(tǒng)流程如圖4-1所示:圖4-1 學(xué)生課務(wù)系統(tǒng)的流程圖(1)進(jìn)入系統(tǒng),根據(jù)提示輸入教務(wù)賬號(hào)信息以及,點(diǎn)擊登錄。后臺(tái)會(huì)通過輸入的賬號(hào)和密碼,模擬登錄教務(wù)網(wǎng),然后獲取學(xué)生的相關(guān)信息。(2)將獲取的信息存儲(chǔ)到數(shù)
28、據(jù)庫中,方便以后對(duì)數(shù)據(jù)進(jìn)行編輯修改操作。(3)根據(jù)學(xué)生用戶的需求,對(duì)數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)進(jìn)行修改,并顯示修改后的內(nèi)容。4.3模塊規(guī)劃學(xué)生課務(wù)系統(tǒng)主要分為五個(gè)模塊,每個(gè)模塊都對(duì)應(yīng)著不同的功能,滿足了學(xué)生的對(duì)信息查詢的不同需求。首先在手機(jī)上安裝學(xué)生課務(wù)系統(tǒng)應(yīng)用程序,通過輸入教務(wù)賬號(hào)和密碼,在后臺(tái)請(qǐng)求登錄教務(wù)網(wǎng),登錄成功后,根據(jù)具體的需求,來進(jìn)行不同模塊功能的運(yùn)作,得出結(jié)果,最終滿足了學(xué)生對(duì)自己課務(wù)內(nèi)容的查詢和編輯。 具體功能模塊的劃分,如圖4-2所示。圖4-2 學(xué)生課務(wù)系統(tǒng)功能模塊圖系統(tǒng)的主要功能如下:用戶登錄:通過輸入教務(wù)賬號(hào)和密碼,從而在手機(jī)上登錄教務(wù)網(wǎng),獲取教務(wù)網(wǎng)上課程表、考試信息以及等級(jí)成績(jī)
29、的相關(guān)信息。課程表:顯示當(dāng)前學(xué)期的課程表,可以添加或刪除課程信息,也可以對(duì)現(xiàn)有的課程進(jìn)行信息的編輯和修改,修改結(jié)果會(huì)顯示到課程表中。成績(jī)查詢:在學(xué)期結(jié)束后,對(duì)本學(xué)期考試成績(jī)進(jìn)行查詢,如果不是在出示成績(jī)的時(shí)間查詢,則會(huì)提醒無法查詢。并且對(duì)所獲得的成績(jī)的數(shù)據(jù)進(jìn)行曲線圖繪制和數(shù)值的判斷,如果成績(jī)數(shù)值低于60分,則會(huì)在手機(jī)上進(jìn)行信息的推送,用來提示學(xué)生用戶自己成績(jī)的不合格和需要補(bǔ)考。考試信息:對(duì)當(dāng)前學(xué)期需要進(jìn)行考試的科目以及考試時(shí)間、地點(diǎn)的顯示。等級(jí)查詢:大學(xué)中所需要的等級(jí)考試成績(jī)的查詢,如英語四六級(jí)、計(jì)算機(jī)等級(jí)考試、普通話等級(jí)考試等。4.4數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)學(xué)生課務(wù)系統(tǒng)的數(shù)據(jù)庫信息表一共有3張:賬號(hào)信息表
30、(account)、課程信息表(courage)和成績(jī)信息表(chengji)。學(xué)生課務(wù)系統(tǒng)使用的是Android自帶的SQLite數(shù)據(jù)庫。該數(shù)據(jù)庫比較便捷,處理資源速度很快,并且占用的資源很少,它主要的表結(jié)構(gòu)設(shè)計(jì)如下:描述:賬號(hào)信息表(account),見表4-1。賬號(hào)信息表包含了一個(gè)主鍵id,它是自增的,有賬號(hào)和密碼,用來判斷賬號(hào)或者密碼的正確性。表4-1 賬號(hào)信息表account字段名數(shù)據(jù)類型備注id(主鍵)int自增IDusernametext教務(wù)賬號(hào)passwordtext教務(wù)密碼描述:課程信息表(courage),見表4-2。課程信息表是一節(jié)課的信息,通過判斷是星期幾,然后讀取數(shù)據(jù)
31、庫中的課程信息。表4-2 課程信息表courage字段名數(shù)據(jù)類型備注id(主鍵)int自增IDcoursenamestring課程名classsroomstring教室地點(diǎn)dayofweekint星期startsectionint開始時(shí)間endsectionint結(jié)束時(shí)間描述:成績(jī)信息表(chengji),見表4-3。將從網(wǎng)頁上獲得的考試成績(jī)放入表中,作為成績(jī)分析圖繪制的數(shù)據(jù)基礎(chǔ)。表4-3 成績(jī)信息表chengji字段名數(shù)據(jù)類型備注id(主鍵)int自增IDnametext課程名chjitext成績(jī)5 詳細(xì)設(shè)計(jì)與編碼實(shí)現(xiàn)5.1 HttpClient模擬登錄的實(shí)現(xiàn)HttpClient可以用來提供
32、高效的、最新的、功能豐富的支持Http協(xié)議的客戶端編程工具包,并且它支持 Http協(xié)議最新的版本和建議9。HttpClient支持Http中的所有方法,并且也支持Https協(xié)議。因?yàn)镠ttp協(xié)議是互聯(lián)網(wǎng)中最重要、也是使用的最廣泛的協(xié)議。所以根據(jù)Http協(xié)議的運(yùn)作方式如圖5-1所示,HttpClient需要模擬Http協(xié)議的運(yùn)作方式,來進(jìn)行教務(wù)網(wǎng)的模擬登錄。圖5-1 Http協(xié)議的運(yùn)作方式5.1.1發(fā)送請(qǐng)求(1)頭信息和post方法請(qǐng)求行中包括了請(qǐng)求方法,而對(duì)于請(qǐng)求方法來說,有很多可以選擇,比如get方法、head方法等,但是因?yàn)閷W(xué)校的教務(wù)網(wǎng)是需要有密碼賬號(hào)登錄的,所以需要傳送數(shù)據(jù)到服務(wù)器上去。
33、因此請(qǐng)求方法需要用post方法來模擬瀏覽器中的信息,也就是說來實(shí)現(xiàn)有條件的請(qǐng)求。對(duì)于學(xué)校的教務(wù)網(wǎng),只需要設(shè)置只需要設(shè)置Host,Referer,User-Agent。代碼如下:httpPost.setHeader(User-Agent, Mozilla/5.0 (Windows NT 6.1;WOW64; Trident/7.0; rv:11.0) like Gecko); /設(shè)置頭信息的User-Agent /設(shè)置頭信息的Host,Referer通過httpwatch查看教務(wù)網(wǎng)上登錄頁面提交的參數(shù),用post方法來來模擬瀏覽器提交登錄參數(shù)。代碼如下:Params.add (new Basic
34、Name ValuePair (_VIEWSTATE, dDwyODE2NTM0OTg7Oz7B + vOz2oFDoP65Q9uhxcso3 + nLmA=); /這個(gè)值是.net根據(jù)表單參數(shù)自動(dòng)生成的,是個(gè)固定值。 Params.add (new BasicName ValuePair (RadioButtonList1, 學(xué)生); /表明登錄的身份是學(xué)生。(2)隨機(jī)字符串的獲取 除此之外,發(fā)現(xiàn)在網(wǎng)址中有一段字符串是隨機(jī)生成的,所以需要通過驗(yàn)證碼來獲得這一串隨機(jī)字符串,根據(jù)httpwatch抓取到的信息,驗(yàn)證碼的URL是在頭信息的返回里面,可以根據(jù)這個(gè)URL獲取隨機(jī)的字符串。代碼如下:Lo
35、cation = response _ login . getFirstHeader( Location ). getValue(); /location的返回值shibieString = location . Substring (2, 26); /提取字符串介于2, 26之間的字符根據(jù)獲得的字符串組合成URL,訪問教務(wù)網(wǎng)。具體代碼如下mainurl=login_url+/(+shibieString+)+login_url2; /將隨機(jī)字符串加入U(xiǎn)RL中。5.1.2關(guān)閉連接客戶端可以通過socket來關(guān)閉它和服務(wù)器的聯(lián)系。代碼如下: getMethod.releaseConnection
36、(); /關(guān)閉連接5.2 Jsoup解析教務(wù)網(wǎng)的實(shí)現(xiàn)Jsoup是用CSS選擇器來查找并且取出數(shù)據(jù)。它通過HTML的特點(diǎn),也就是div的屬性值,來定位到所需要內(nèi)容對(duì)應(yīng)的塊即html的div塊,再根據(jù)HTML中的標(biāo)簽來遍歷出課表信息。篩選出HTML文件里面的課程表信息,課表是在一張table里的,它的div的屬性值是table,具體代碼如下:Document doc = Jsoup. parse (content ); /將jsoup解析的網(wǎng)頁內(nèi)容進(jìn)行保存Elements elements = doc. select ( table # Table1 ); /定位到tableElement. ch
37、ild( 0 ). remove( ); /移除一些無用數(shù)據(jù)String pattern = ; /正則表達(dá)式在篩選出的table div塊中,遍歷出課程信息,代碼如下:Elements rowsElements = table. select( tr ); /通過tr標(biāo)簽來篩出選課程信息遍歷課程信息的結(jié)束,代碼如下: /當(dāng)遍歷到周日課程信息時(shí)Elements colsElements=rowsElements.get(t).select(td); /根據(jù)標(biāo)簽td 結(jié)束遍歷課程表界面顯示如圖5-2所示。 圖5-2 課程表界面顯示圖5.3課程信息的存儲(chǔ)及編輯的實(shí)現(xiàn)通過Jsoup的解析,將課程信息
38、存儲(chǔ)到SQLite數(shù)據(jù)庫建立的courage表中。在根據(jù)實(shí)際情況對(duì)課程信息進(jìn)行編輯的時(shí)候,通過SQLite數(shù)據(jù)庫來對(duì)課程信息進(jìn)行增、刪、改的操作,并將操作結(jié)果重新儲(chǔ)存到數(shù)據(jù)庫中。需要建立一個(gè)Dao類,用來存放數(shù)據(jù)庫表中的實(shí)體類。根據(jù)Jsoup解析的網(wǎng)頁內(nèi)容,對(duì)傳進(jìn)來的課程格式將其轉(zhuǎn)換為對(duì)應(yīng)的實(shí)體類并保存,作為一個(gè)模型。具體代碼如下:private Course storeCourseByResult ( int week, int startSection, int endSection) /根據(jù)傳進(jìn)來的課程格式轉(zhuǎn)換為對(duì)應(yīng)的實(shí)體類并保存String reg = 周?(.)?第?(d1,2)?,
39、?(d1,2)?節(jié)?第(d1,2)-(d1,2)周|?(.*周)?; /定義課程信息中一種課程一周上兩次的情況 course.setCourseName ( temp 0 ); /課程名稱 /上課信息除了實(shí)體類之外,還要建立的是用來實(shí)現(xiàn)創(chuàng)建數(shù)據(jù)庫以及數(shù)據(jù)庫進(jìn)行操作的類要對(duì)課程信息進(jìn)行編輯,需要先建立方法,然后調(diào)用方法,在修改課程信息時(shí),不僅僅調(diào)用方法,還要更新數(shù)據(jù)庫的內(nèi)容,以防止數(shù)據(jù)庫信息的不準(zhǔn)確。對(duì)課程信息進(jìn)行增刪改行為,代碼如下:public void save ( Courage courage ) /建立保存函數(shù) SQLiteDatabase db = Lite.getWritable
40、Database(); /初始化SQLiteDatabasedb.execSQL(insert into courage(coursename,classroom,dayofweek,startsection,ends ection) values (?,?,?,?,?), new Objectcourage.getCoursename(),courage.getClassroom(),courage.getDayofweek(),courage.getStartsection(),courage.getEndsection(); /將課程信息對(duì)應(yīng)的添加到表courage中增刪改的建立也是如此
41、。在進(jìn)行增刪改的操作時(shí),需要調(diào)用這些方法,代碼如下:edit1.setText(couragecount.getCoursename(); /對(duì)課程名進(jìn)行編輯recordId.setText(TAG + inte count ); /根據(jù)課程信息的id進(jìn)行編輯courageService.save ( courage ); /調(diào)用保存方法進(jìn)行課程信息的保存課程信息的編輯界面如圖5-3所示。 圖5-3 課程信息修改界面顯示圖5.4考試信息以及等級(jí)信息的獲取在用戶登錄時(shí)會(huì)有一個(gè)識(shí)別碼,可以根據(jù)該識(shí)別碼獲得考試時(shí)間和成績(jī)查詢的地址,得到時(shí)間安排以及成績(jī)信息的網(wǎng)頁,該過程無需post數(shù)據(jù)。因?yàn)榭荚嚂r(shí)間
42、的安排和成績(jī)的查詢結(jié)果在網(wǎng)頁中是以表格的形式顯示,所以在HTML文檔中是以來進(jìn)行標(biāo)記,在Jsoup解析HTML信息時(shí),需要根據(jù)相應(yīng)的標(biāo)簽找到該表格的信息,即標(biāo)簽,然后以優(yōu)先的方式來遍歷這個(gè)表格,獲得信息數(shù)據(jù),并將其放在對(duì)應(yīng)的list中。Elements leveltable=levelnfo.getElementsByClass(datelist); /獲取網(wǎng)頁中的表格Elements rosElements=leveltable.select(tr); /通過標(biāo)簽來找到信息for(int i=1;irowsElements.size();i+) /按單元格將數(shù)據(jù)添加至相應(yīng)列表 Element
43、s colsElements=rowsElements.get(i).select(td); 但是因?yàn)楫?dāng)前不是考試周,所以無法顯示信息,界面如圖5-4所示。圖5-4考試信息界面顯示圖5.5推送信息設(shè)置在通過HttpClient+Jsoup獲取到考試成績(jī)的數(shù)據(jù)之后,對(duì)每個(gè)科目的成績(jī)進(jìn)行判斷,一旦有低于60分的科目,就立刻推送消息給用戶,表明學(xué)生的學(xué)習(xí)狀態(tài)不佳導(dǎo)致了成績(jī)的不理想,以此來提醒學(xué)生應(yīng)及時(shí)調(diào)整自己的學(xué)習(xí)狀態(tài),提高自己的成績(jī)。信息的推送讓學(xué)生對(duì)自己的狀態(tài)有一個(gè)及時(shí)的了解和調(diào)整。因?yàn)橄到y(tǒng)使用的是極光推送平臺(tái),所以使用了JPush極光推送的API。在極光推送的官網(wǎng)上下載它的API的jar包,并
44、獲取兩個(gè)由它提供的參數(shù),放入系統(tǒng)中。具體代碼如下:String masterSecret = 1c345fString appKey = 3b34c2345643wsad66d1a853; /在官網(wǎng)上申請(qǐng)的appKey string xiaoxi = getservermessage(); /獲取服務(wù)器消息if(xiaoxi!=null&!.equals(xiaoxi)messagenotificatiomanager.notify(messagenotificationid,messagenotification); /更新通知欄5.6成績(jī)數(shù)據(jù)的分析根據(jù)所獲取的成績(jī)數(shù)據(jù),生成一個(gè)曲線圖,可以
45、直觀的看出自己成績(jī)的走勢(shì),明白的知道自己的學(xué)習(xí)狀態(tài)不佳,可以在下一年里更加努力。在安卓平臺(tái)里繪制一個(gè)曲線圖,首先需要建立一個(gè)坐標(biāo)軸,通過Android自帶的AndroidChart圖表繪制,在所建立的坐標(biāo)軸上添加具體的橫坐標(biāo)和縱坐標(biāo),根據(jù)橫、縱坐標(biāo)的具體數(shù)值來進(jìn)行曲線圖的繪制。具體代碼如下:for (int i=0;irando; i+)test.add(String.valueOf(i+1); /添加橫坐標(biāo) /添加縱坐標(biāo)dataList.add(int)(Math.random()*random); /繪制坐標(biāo)點(diǎn)界面顯示如圖5-5所示。圖5-5成績(jī)分析顯示圖6 系統(tǒng)測(cè)試6.1測(cè)試環(huán)境系統(tǒng)是在
46、WIN7操作系統(tǒng)下使用Eclipse開發(fā)的,因此測(cè)試時(shí)也需要在此環(huán)境下進(jìn)行檢測(cè)。6.2 界面測(cè)試檢查按鈕的跳轉(zhuǎn)和頁面顯示時(shí)的排版是否正確。經(jīng)過檢測(cè),頁面跳轉(zhuǎn)正常,跳轉(zhuǎn)后的頁面排版也正確。6.3 功能測(cè)試6.3.1 登錄測(cè)試學(xué)生用戶在系統(tǒng)中登錄教務(wù)網(wǎng)需要檢驗(yàn)賬號(hào)密碼是否輸入正確、驗(yàn)證碼是否成功顯示、教務(wù)網(wǎng)是否連接上。測(cè)試結(jié)果如表6-1所示,界面顯示如圖6-1和6-2所示。表6-1 測(cè)試表操作結(jié)果是否與預(yù)期一致正確輸入教務(wù)賬號(hào)、密碼和驗(yàn)證碼在Eclipse的log中顯示了111一致不輸入正確輸入教務(wù)賬號(hào)、密碼和驗(yàn)證碼顯示提示“您輸入的賬號(hào)和密碼不正確”一致錯(cuò)誤的輸入教務(wù)賬號(hào)、密碼和驗(yàn)證碼顯示提示“
47、您輸入的賬號(hào)和密碼不正確”一致 圖6-1登錄界面顯示圖 圖6-2輸入不正確顯示圖6.3.登錄成功后,直接跳轉(zhuǎn)到課程表界面,對(duì)課程表中的課程信息能夠進(jìn)行編輯操作,還能夠添加其他課程,并在課程表中成功顯示。測(cè)試結(jié)果如表6-2所示,界面顯示如圖6-3和6-4所示。表6-2 測(cè)試表操作結(jié)果是否與預(yù)期一致點(diǎn)擊“課表”按鈕能顯示課程表界面顯示課程表界面一致點(diǎn)擊添加按鈕,輸入課程信息,再點(diǎn)擊保存按鈕添加的課程能正確的在課程表中顯示一致點(diǎn)擊一個(gè)課程,按刪除按鈕將該課程從課程表中刪除一致 續(xù)表 6-2點(diǎn)擊課程表中現(xiàn)有的課程,進(jìn)行信息編輯,再點(diǎn)擊保存按鈕修改后的課程信息成功的在課程表中顯示一致 圖6-3課程表界面顯示圖 圖6-4添加課程后顯示圖6.3.學(xué)生課務(wù)系統(tǒng)的特點(diǎn)就是可以對(duì)成績(jī)進(jìn)行分析,根據(jù)分析的結(jié)果自動(dòng)生成曲線圖,因此需要對(duì)曲線圖的數(shù)據(jù)進(jìn)行檢測(cè),確保與教務(wù)網(wǎng)上的一致。測(cè)試結(jié)果如表6-3所示,界面顯示如圖6-5所示。表6-3 測(cè)試表操作結(jié)果是否與預(yù)期一致點(diǎn)擊“成績(jī)查詢”按鈕顯示本學(xué)期的各科成績(jī)一致點(diǎn)擊“曲線圖”按鈕根據(jù)各科成績(jī),顯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建筑工程監(jiān)理委托合同
- 2025股權(quán)轉(zhuǎn)讓合同
- 初三學(xué)生國旗下演講稿《輕裝上陣迎中考 志存高遠(yuǎn)勇拼搏》
- 運(yùn)維服務(wù)管理優(yōu)化匯報(bào)
- 模擬有限責(zé)任公司設(shè)立登記流程
- 膿胸的護(hù)理常規(guī)
- 2025年環(huán)境監(jiān)測(cè)測(cè)驗(yàn)試題
- 公司財(cái)務(wù)報(bào)銷費(fèi)用培訓(xùn)
- 2025年中醫(yī)執(zhí)業(yè)醫(yī)師考試中藥學(xué)知識(shí)點(diǎn)總結(jié)模版
- 新質(zhì)生產(chǎn)力日?qǐng)?bào)
- 查勘定損溝通談判技巧
- 籃球賽計(jì)分表模板
- 如何預(yù)防性侵害(公開課)
- boschqbasics博世價(jià)值流課件
- 鐵路勞動(dòng)合同書
- 新部編版四年級(jí)下冊(cè)語文閱讀理解專項(xiàng)訓(xùn)練(15篇)
- 1000字作文方格稿紙A4打印模板直接用
- 建筑公司組織架構(gòu)與崗位職責(zé)
- 三方合作解除協(xié)議書
- 銅陵千衍新材料科技有限公司異佛爾酮產(chǎn)業(yè)延伸技改項(xiàng)目環(huán)評(píng)報(bào)告
- 大學(xué)生期末備考計(jì)劃表(四篇)
評(píng)論
0/150
提交評(píng)論