版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> (20 屆)</b></p><p> 基于Android系統(tǒng)的課程表的設計與實現(xiàn)</p><p><b> 摘要</b></p><p> 隨著無線移動設備的發(fā)展,手機也日益普及,Andr
2、oid系統(tǒng)的推出使手機的發(fā)展進入到了一個新的領域。世界上一些知名的移動設備生產(chǎn)廠商對于Android智能機的開發(fā)熱情也日益提高,Android系統(tǒng)的使用人群正在急速提升,Android應用程序的多樣化對人們快速獲取資訊以及方便人們的生活起著不可忽視的作用,近年來Android得到了社會更多的認同和應用,本文主要概述了Android系統(tǒng)的體系結(jié)構,Android應用程序的開發(fā)環(huán)境和用JAVA語言開發(fā)基于Android系統(tǒng)的課程管理系統(tǒng)中的
3、一些技術實現(xiàn)方法,這些技術包括:基于Android系統(tǒng)的電子課程表的用戶界面設計,Service的使用,SQLite數(shù)據(jù)庫的建立和存儲。在系統(tǒng)的設計與實現(xiàn)中,確定系統(tǒng)的開發(fā)思想以及開發(fā)環(huán)境。最后給出了系統(tǒng)中模塊的詳細設計與實現(xiàn),并對系統(tǒng)模塊涉及到的關鍵源代碼進行了詳細的分析。經(jīng)過調(diào)試運行后表明,系統(tǒng)可以滿足用戶的各項要求。</p><p> 關鍵詞:Android,JAVA,SQLite,課程管理</p&
4、gt;<p><b> Abstract</b></p><p> With the development of wireless mobile devices, mobile phones have been increasingly popular, and the introduction of Android system has promoted the dev
5、elopment of phones into a new area. Some of the world’s leading mobile device manufacturers have also shown great enthusiasm for the exploitation of Android intelligent machines. Beside, diversified Android application p
6、rograms play a significant role in people’s quick access to information and facilitation of people's life. Therefore, customer</p><p> Keywords: Android,JAVA,SQLite,Class manage</p><p><
7、b> 目錄</b></p><p><b> 1緒論1</b></p><p> 1.1 項目背景及意義1</p><p> 1.2 國內(nèi)外現(xiàn)狀1</p><p> 1.3論文組織結(jié)構2</p><p><b> 2相關技術分析3</b>
8、;</p><p> 2.1 Android概述3</p><p> 2.2 Android系統(tǒng)的四大組件3</p><p> 2.3 Android中的相關技術介紹及分析5</p><p> 2.3.1 Android系統(tǒng)架構研究5</p><p> 2.3.2 Android架構分析6</
9、p><p> 2.3.3 Android應用程序架構6</p><p> 2.3.4 Android運行時組件7</p><p> 2.3.5 Android應用的構成和工作機制7</p><p> 2.4 Eclipse簡介7</p><p> 2.5 XML簡介8</p><p&
10、gt;<b> 3需求分析9</b></p><p> 3.1 系統(tǒng)需求分析9</p><p> 3.2 系統(tǒng)流程9</p><p> 3.3 功能模塊劃分9</p><p> 3.3.1課程添加模塊9</p><p><b> 4系統(tǒng)設計10</b>
11、</p><p> 4.1 概要分析10</p><p> 4.2 數(shù)據(jù)庫分析10</p><p> 4.2.1 SQLite數(shù)據(jù)表設計10</p><p> 4.3 程序中的主要類11</p><p> 4.3.1 GalleryTabActivity類和ClassListActivity類11&
12、lt;/p><p> 4.3.2 ClassAddActivity類和SettingActivity類12</p><p> 4.3.3 SQLiteHelper類和SQLClassTime類12</p><p><b> 5系統(tǒng)實現(xiàn)13</b></p><p> 5.1程序首頁面13</p>
13、<p> 5.2 課程設置實現(xiàn)13</p><p> 5.3 課程星期,地點實現(xiàn)14</p><p> 5.4更換背景16</p><p> 5.5設置開學日期19</p><p><b> 結(jié)論21</b></p><p><b> 參考文獻22<
14、;/b></p><p><b> 致謝23</b></p><p><b> 附錄24</b></p><p> 搭建Android開發(fā)環(huán)境24</p><p><b> 1 緒論</b></p><p> 1.1 項目背景及意義
15、</p><p> 對于課程管理,相信大家都不會感到陌生,課程管理即是幫助老師和學生管理課程,最早以紙質(zhì)的方式存在,隨著科技的發(fā)展,電子課程管理也出現(xiàn)在了手機上,更方便的為人們管理課程,記錄課程的相關信息。在中國,手機已經(jīng)成為人們?nèi)粘I畋夭豢缮俚囊徊糠?,智能手機在高校人群中逐漸得到了普及,Android手機憑借其優(yōu)秀的系統(tǒng)性能以及良好的用戶體驗迅速得到了大學學生的青睞。在高校中,上課并不像高中時期有固定的教室
16、和固定的時間,大學課程種類繁多,并且上課地點和時間都不固定,一周內(nèi)極少會出現(xiàn)重復課程,所以要將課程表完整的記憶下來是一項很艱難的事情,每次上課時總有許多同學在上課的路上才想到不知道在哪個教室上課,于是不得不每次拿出手機打電話花兩毛錢問同學,或者一些同學一直裝個紙質(zhì)的課程表在衣袋里,極不方便。鑒于Android手機在大學中的普及率很高,于是我就想到了創(chuàng)作一個Android版的課程管理程序。將課程表放進手機里,只需大家需要按照具體時間、課程
17、名稱等將自己的課程信息錄入到系統(tǒng)中,為一周的每一天添加下課程安排,就可以一勞永逸。</p><p> 基于這些問題,有必要設計一款具有課程管理程序,配合上可以讓用戶自定義上課時間以及地點的功能,從而避免遺忘上課的事情出現(xiàn)。</p><p><b> 1.2 國內(nèi)外現(xiàn)狀</b></p><p> 移動互聯(lián)網(wǎng)發(fā)展的時代產(chǎn)物,學生下載課程表軟件
18、后安裝輸入學校信息管理系統(tǒng)帳號即可自動錄入個人課程表,方便快捷。目前國內(nèi)唯一支持自動錄入課程表的手機軟件-"超級課程表"。</p><p> "超級課程表"是一款由幾個90后以課程表為基礎而展開的校園實用軟件,面向高校大學生。其功能不僅能夠幫助大學生查閱各個大學的課程信息(包括課程時間、授課地點、任課老師),還可以將自己的課程安排發(fā)布到應用中,與好友分享。除此之外,課程相
19、同或者對此感興趣的學生,可以在應用中討論課程內(nèi)容,分享上課的筆記,共享文件資源。甚至可以認識到同一節(jié)課任意課室范圍內(nèi)的同學,擴展交際圈,并可以向同班同學發(fā)送私信,方便同學間即時、便捷的聯(lián)系。還可以查看到全校課程,并添加入為個人旁聽課程,制訂屬于自己的學霸計劃!綁定第三方應用并分享到給第三方應用的粉絲。與其它課程表應用不同的是,“超級課程表”不需要用戶手動添加課程,用戶輸入學校信息管理系統(tǒng)賬號后,系統(tǒng)自動添加,方便,快捷。</p&g
20、t;<p> “超級課程表”具有以下幾點功能;</p><p> (1)對接高校教務系統(tǒng),自動錄入課表到手機;</p><p> (2)快速記錄課堂筆記、課后作業(yè),提高學習效率;</p><p> (3)精準推薦千萬節(jié)旁聽課程,校內(nèi)跨院系蹭課;</p><p> (4)軟件內(nèi)學習外語,充實你的課余生活;</p&g
21、t;<p> (5)精彩“下課聊”,百萬大學生在線交流社區(qū);</p><p> (6)同學間互傳紙條,在線交流學習。</p><p><b> 1.3論文組織結(jié)構</b></p><p> 本文主要介紹了Android系統(tǒng)中的相關技術以及Android系統(tǒng)的架構,以及研究,分析,和實現(xiàn)基于Android電子課程表系統(tǒng),包括
22、以下幾個部分:</p><p> 第一章簡要介紹了Android手機平臺的背景及國內(nèi)外發(fā)展情況。</p><p> 第二章主要寫了本程序的可行性及需求分析。</p><p> 第三章詳述了電子課程表系統(tǒng)流程設計。以及對功能模塊的劃分。</p><p> 第四章主要敘述了對系統(tǒng)設計以及對數(shù)據(jù)庫的分析。</p><p&
23、gt; 第五章主要寫了程序首頁以及課程設置的實現(xiàn)。</p><p><b> 2 相關技術分析</b></p><p> 2.1 Android概述</p><p> Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設備。Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布
24、的基于Linux平臺的開源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成。</p><p> Android一詞最早出現(xiàn)于法國作家利爾亞當(Auguste Villiers de l'Isle-Adam)在1886年發(fā)表的科幻小說《未來夏娃》(L'ève future)中。他將外表像人的機器起名為Android。</p><p> And
25、roid的Logo是由Ascender公司設計的,誕生于2010年,其設計靈感源于男女廁所門上的圖形符號,于是布洛克繪制了一個簡單的機器人,它的軀干就像錫罐的形狀,頭上還有兩根天線,Android小機器人便誕生了。其中的文字使用了Ascender公司專門制作的稱之為“Droid ” 的字體。Android是一個全身綠色的機器人,綠色也是Android的標志。顏色采用了PMS 376C和RGB中十六進制的#A4C639來繪制,這是Andr
26、oid操作系統(tǒng)的品牌象徵。有時候,它們還會使用純文字的Logo。</p><p> 2012年7月美國科技博客網(wǎng)站BusinessInsider評選出二十一世紀十款最重要電子產(chǎn)品,Android操作系統(tǒng)和iPhone等榜上有名。</p><p> 與其他手機操作系統(tǒng)相比,Android有4個無可比擬的優(yōu)點:</p><p> (1)開放性:Android系統(tǒng)同
27、時包含了底層操作系統(tǒng)以及移動電話所需的全部軟件,不存在專有權障礙,開發(fā)平臺允許任何移動終端廠商加入到Android聯(lián)盟中來,并允許不同廠商可以根據(jù)自己的需求對平臺進行定制和擴展,無需任何授權許可費用;</p><p> (2)所有應用程序平等:Android系統(tǒng)中,系統(tǒng)核心應用和第三方應用都是完全平等的,用戶可以將手機中的任意應用程序替換成所需的其他應用程序;</p><p> (3)
28、應用程序間無界限:開發(fā)人員可以吧Web上的數(shù)據(jù)與本地的日歷、聯(lián)系人、位置信息結(jié)合起來,應用程序還可聲明它們可供其他程序使用;</p><p> (4)快速方便的應用程序開發(fā):Android平臺為開發(fā)人員提供了大量的實用庫及工具,可以讓開發(fā)人員快速的創(chuàng)建自己的應用。</p><p> 2.2 Android系統(tǒng)的四大組件</p><p> Android四大基本
29、組件分別是Activity,Service服務,Content Provider內(nèi)容提供者,BroadcastReceiver廣播接收器。</p><p> (1)Activity</p><p> 應用程序中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監(jiān)聽并處理用戶的事件做出響應。Activity之間通過Intent進行通信。在Intent 的描述結(jié)構中
30、,有兩個最重要的部分:動作和動作對應的數(shù)據(jù)。典型的動作類型有:MAIN(activity的門戶)、VIEW、PICK、EDIT 等。而動作對應的數(shù)據(jù)則以URI 的形式進行表示。例如:要查看一個人的聯(lián)系方式,你需要創(chuàng)建一個動作類型為VIEW 的intent,以及一個表示這個人的URI。</p><p> 與之有關系的一個類叫IntentFilter。相對于intent 是一個有效的做某事的請求,一個intentf
31、ilter 則用于描述一個activity(或者IntentReceiver)能夠操作哪些intent。一個activity 如果要顯示一個人的聯(lián)系方式時,需要聲明一個IntentFilter,這個IntentFilter 要知道怎么去處理VIEW 動作和表示一個人的URI。IntentFilter 需要在AndroidManifest.xml 中定義。通過解析各種intent,從一個屏幕導航到另一個屏幕是很簡單的。當向前導航時,act
32、ivity 將會調(diào)用startActivity(Intent myIntent)方法。然后,系統(tǒng)會在所有安裝的應用程序中定義的IntentFilter 中查找,找到最匹配myIntent 的Intent 對應的activity。新的activity 接收到myIntent 的通知后,開始運行。當startActivity 方法被調(diào)用將觸發(fā)解析myIntent 的動作,這個機制提供了兩個關鍵好處:</p><p>
33、 A、Activities 能夠重復利用從其它組件中以Intent 的形式產(chǎn)生的一個請求;</p><p> B、Activities 可以在任何時候被一個具有相同IntentFilter 的新的Activity 取代。</p><p> (2)Service</p><p> 一個Service 是一段長生命周期的,沒有用戶界面的程序,可以用來開發(fā)如監(jiān)控類
34、程序。</p><p> 比較好的一個例子就是一個正在從播放列表中播放歌曲的媒體播放器。在一個媒體播放器的應用中,應該會有多個activity,讓使用者可以選擇歌曲并播放歌曲。然而,音樂重放這個功能并沒有對應的activity,因為使用者當然會認為在導航到其它屏幕時音樂應該還在播放的。在這個例子中,媒體播放器這個activity 會使用Context.startService()來啟動一個service,從而可
35、以在后臺保持音樂的播放。同時,系統(tǒng)也將保持這個service 一直執(zhí)行,直到這個service 運行結(jié)束。另外,我們還可以通過使用Context.bindService()方法,連接到一個service 上(如果這個service 還沒有運行將啟動它)。當連接到一個service 之后,我們還可以service 提供的接口與它進行通訊。拿媒體播放器這個例子來說,我們還可以進行暫停、重播等操作。</p><p>
36、 Service使用步驟如下:</p><p> 1.繼承service類</p><p> 2.AndroidManifast.xml配置清單文件中<application>節(jié)點里對服務進行配置</p><p> <service name=".SMSService"/></p><p>
37、 3.Content Provider Android平臺提供了Content Provider使一個應用程序的指定數(shù)據(jù)集提供給其他應用程序。這些數(shù)據(jù)可以存儲在文件系統(tǒng)中、在一個SQLite數(shù)據(jù)庫、或以任何其他合理的方式,其他應用可以通過ContentResolver類(見ContentProviderAccessApp例子)從該內(nèi)容提供者中獲取或存入數(shù)據(jù).(相當于在應用外包了一層殼),</p><p> 只有
38、需要在多個應用程序間共享數(shù)據(jù)是才需要內(nèi)容提供者。例如,通訊錄數(shù)據(jù)被多個應用程序使用,且必須存儲在一個內(nèi)容提供者中,它的好處:統(tǒng)一數(shù)據(jù)訪問方式。</p><p> 4.BroadcastReceive你的應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數(shù)據(jù)網(wǎng)絡可用時)進行接收并做出響應。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice 來響應它們收到的信息,或
39、者用NotificationManager 來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等。一般來說是在狀態(tài)欄上放一個持久的圖標,用戶可以打開它并獲取消息。</p><p><b> 廣播類型:</b></p><p> 普通廣播,通過Context.sendBroadcast(Intent myIntent)發(fā)送的</p&
40、gt;<p> 有序廣播,通過Context.sendOrderedBroadcast(intent, receiverPermission)發(fā)送的</p><p> 2.3 Android中的相關技術介紹及分析</p><p> 2.3.1 Android系統(tǒng)架構研究</p><p> Android是一個包含操作系統(tǒng)、中介架構層及應用程序所
41、產(chǎn)生出來的軟件堆棧架構。由下而上,其核心為嵌入式Linux2.6作業(yè)系統(tǒng),向上搭配Google為Android開發(fā)的類庫及Android運行時,再配合應用程序架構,來開發(fā)各種不同的應用程序。下面介紹幾個本系統(tǒng)開發(fā)所用到的功能特征。</p><p> ?。?)應用程序架構:在應用程序架構內(nèi)已經(jīng)具備多種不同的基礎組件,在開發(fā)應用程序時,就可以直接調(diào)用這些組件來使用,可以節(jié)省開發(fā)應用程序的心力及時間。</p>
42、;<p> ?。?)Dalvik虛擬機器:在Android平臺上所使用Java虛擬機,不是Sim公司的標準Java虛擬機,而是使用Google自主開發(fā)的代號為Dalvik的虛擬機,它在保證API方面的兼容的同時,針對移動手機進行了大幅優(yōu)化,占用資源更小,運行效率更高。</p><p> ?。?)SQLite數(shù)據(jù)庫:SQLite提供結(jié)構化的數(shù)據(jù)存取。SQLite是一款輕型的數(shù)據(jù)庫,它的設計目標是嵌入式
43、的,目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用的資源非常低。它能夠支持Windows/Linux/U nix等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如PHP,Java等,還有ODBC接口,同樣比起Mysql,PostgreSQL來講,它的處理速度比它們都快。它無需安裝和管理配置,它是一個儲存在單一磁盤文件中的完整數(shù)據(jù)庫,體積小只有250KB但支持數(shù)據(jù)庫大小至2TB。它雖然很小巧,但是支持的SQL語句毫不遜色于其它開源數(shù)據(jù)庫。同
44、時它還支持事務功能和并發(fā)處理等等。SQLite也是一套開放性的關聯(lián)式資料庫,其特點在于輕量性方面的設計結(jié)構,更適合在手機上使用。</p><p> 2.3.2 Android架構分析</p><p> Android的架構包括5個部分:應用程序、應用程序框架、程序庫、Android運行庫及Linux內(nèi)核。架構如圖2-1所示:</p><p> 圖2-1 And
45、roid架構的五個部分</p><p> 2.3.3 Android應用程序架構</p><p> 在Android SDK中,定義了讓開發(fā)者使用與核心應用程序相同API的權限應用程序框架是為了要簡化組件的重新利用而設計的,應用程序可以發(fā)布功能為其它應用程序所使用。但是,這要受限于應用程序架構的安全機制,使用者以用同樣的機制來新增、置換組件。目前所有的應用程序是由服務及系統(tǒng)來組成。An
46、droid應用構成和工作流程圖如圖2-2所示:</p><p> 圖2-2 Android應用構成和工作流程圖</p><p> 2.3.4 Android運行時組件</p><p> 雖然Android是用Java語言來開發(fā)、撰寫應用程序,但卻不使用Java運行時組件來執(zhí)行Java程序,而是使用了由Google自行研發(fā)的Android運行時組件來執(zhí)行程序。A
47、ndroid運行時組件包括兩個重要的部分,一個是核心類庫,另一個是Dalvik虛擬機。</p><p> 2.3.5 Android應用的構成和工作機制</p><p> 對于一個Android應用程序來說,是由Activity、IntentReceiver、Service、Content Provider四部分組成,但并不是每一個Android應用程序都必須由這四部分組成。在應用程序
48、中使用時,需要在配置文件AndroidManifest.xml中進行配置。這個配置文件是每個Android應用程序所必需的,用于定義應用程序的組件、組件的功能以及必要條件等。</p><p> 2.4 Eclipse簡介</p><p> Eclipse 是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是,E
49、clipse 附帶了一個標準的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。</p><p> 雖然大多數(shù)用戶很樂于將 Eclipse 當作 Java 集成開發(fā)環(huán)境(IDE)來使用,但 Eclipse 的目標卻不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個組件主要針對希望擴展 Eclipse 的軟
50、件開發(fā)人員,因為它允許他們構建與Eclipse 環(huán)境無縫集成的工具。由于 Eclipse 中的每樣東西都是插件,對于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。</p><p> 這種平等和一致性并不僅限于 Java 開發(fā)工具。盡管 Eclipse 是使用 Java 語言開發(fā)的,但它的用途并不限于 Java 語言;例如,支持諸如 C/C++ 和
51、 COBOL 等編程語言的插件已經(jīng)可用,或預計將會推出。Eclipse 框架還可用來作為與軟件開發(fā)無關的其他應用程序類型的基礎,比如內(nèi)容管理系統(tǒng)。</p><p><b> 2.5 XML簡介</b></p><p> XML是指可擴展標記語言(EXtensible Makeup Language),是用來傳輸和存儲數(shù)據(jù)的工具。XML數(shù)據(jù)是一種純文本格式存儲的數(shù)據(jù)
52、,它提供了一種獨立軟件和硬件的數(shù)據(jù)存儲方法。</p><p> XML文檔必須包含根元素,該元素是所有其它根元素的父元素。XML 文檔中的元素形成了一棵文檔樹。這棵樹從根部開始,并擴展到樹的最底端。所有元素均可擁有子元素。父、子以及同胞等術語用于描述元素之間的關系。父元素擁有子元素。相同層級上的子元素成為同胞(兄弟或姐妹)。所有元素均可擁有文本內(nèi)容和屬性。</p><p> XML是大
53、小寫敏感的語言,所有元素都必須正確嵌套,必須有關閉標簽,元素的屬性值必須加引號。</p><p> XML的命名規(guī)則:元素名稱可以使用任何字母或符號(除< &),沒有保留字;元素名稱不能以數(shù)字或標點和‘XML’‘xml’‘Xml’字符開始,也不能包含空格</p><p><b> 3 需求分析</b></p><p> 課程
54、管理包括:運行首頁課程信息的顯示。這是面向用戶的一個Activity,在此用戶可以方便地查看本周的課程情況。除此之外,是課程信息管理。用戶可以添加,刪除,修改課程信息,設置上課時間。</p><p> 3.1 系統(tǒng)需求分析</p><p> 手機電子課程管理在手機應用程序中并不常見,一般在手機上較為常見的日程提醒程序無法實現(xiàn)自由設置課程信息。</p><p>
55、 經(jīng)過對周邊同學的調(diào)查研究,普遍認為這款軟件方便實用,其主要功能如下:</p><p> 課程的添加、刪除和修改;</p><p> 每節(jié)課程上課時間段的設置;</p><p><b> 每周課程預覽;</b></p><p><b> 課程具體信息預覽;</b></p>&l
56、t;p><b> 3.2 系統(tǒng)流程</b></p><p> 根據(jù)課程管理的特點,將課程管理分為首頁的課程信息預覽,作業(yè)內(nèi)容預覽,作業(yè)的增加與修改,課程添加,上課時間設置。可以通過點擊MENU按鈕添加課程、設置課程時間、查看本程序的關于信息、退出程序。添加完課程信息,設置好上課時間之后,在進入程序的第一個Activity將當前一周的課程信息顯示出來,點擊課程信息,可以進行添加、修改
57、、刪除。</p><p> 3.3 功能模塊劃分</p><p> 根據(jù)程序的設計,將程序分成3個模塊。課程添加、課程設置的添加和修改。每個模塊都有對應的功能及相關工作。</p><p> 3.3.1課程添加模塊</p><p> 該模塊實現(xiàn)了如下幾個功能:</p><p><b> 1、添加課程信
58、息;</b></p><p><b> 2、添加上課地點;</b></p><p> 3、設定課程在星期幾上課;</p><p> 4、設定課程是當天的第幾節(jié)課。</p><p> 該模塊實現(xiàn)課程的添加工作,可以將課程的名稱、上課地點、上課時間、課程節(jié)數(shù)添加到數(shù)據(jù)庫中。</p><
59、p><b> 4 系統(tǒng)設計</b></p><p><b> 4.1 概要分析</b></p><p> 從程序流程來分,用戶在第一次進入程序時要進入設置界面,設置一些基本的配置信息以方便數(shù)據(jù)庫管理,然后進入添加課程界面,進行添加課程操作。添加課程除了UI展示以外其他的方式都是在操作數(shù)據(jù)庫,在程序中使用SQLite以實現(xiàn)程序的各種功
60、能。在程序主界面使用用Listview控件展示記錄,從數(shù)據(jù)表中按當天是星期幾讀取出當天的記錄,從而將課程的信息顯示在主頁面上,提供預覽。</p><p> 程序的配置信息主要存在preference中,該信息在數(shù)據(jù)顯示時讀取必要的配置信息。 </p><p><b> 4.2 數(shù)據(jù)庫分析</b></p><p> 本程序數(shù)據(jù)存取方面主要用
61、到了SQLite數(shù)據(jù)庫和Preference存儲機制。其中,SQLite主要用來存儲課程信息,Preference則主要用來存儲配置信息。</p><p> 4.2.1 SQLite數(shù)據(jù)表設計</p><p> SQLite數(shù)據(jù)庫是Android系統(tǒng)中非常重要的數(shù)據(jù)存儲方法,它是Android系統(tǒng)唯一支持的數(shù)據(jù)庫類型,也是Android應用程序進行持久化存儲的三種方式之一。 SQLit
62、e數(shù)據(jù)庫是SQL數(shù)據(jù)庫的簡化版,支持大部分SQL操作。SQLite是Android應用程序中非常常用的一種數(shù)據(jù)存儲手段。</p><p> ?。?)數(shù)據(jù)庫表的設計</p><p> 根據(jù)對本程序的需求分析,本程序一共需要用到兩張數(shù)據(jù)表,分別為classinfo表和classtime表。</p><p> classinfo表主要用來存儲已經(jīng)添加的課程,用戶每添加
63、一個課程就會在該表中新增一條記錄,并且自動生成一個唯一的id,用以區(qū)別各個課程,同樣名稱但是分成兩次添加的課程會被認為是不同的課程,這樣設計的目的主要是為了方便查詢。該表結(jié)構設計如下:</p><p><b> 表4-1 </b></p><p> 該數(shù)據(jù)庫設計初衷為保存整個星期的課程,這樣實現(xiàn)整個星期的課程排布,包括數(shù)據(jù)的存儲,課程查看都比較方便。</p&
64、gt;<p> ?。?)SQLite數(shù)據(jù)庫的創(chuàng)建</p><p> 創(chuàng)建數(shù)據(jù)庫主要用到了DataBaseHelper類,該類繼承了SQLiteOpenHelper類,實現(xiàn)了數(shù)據(jù)庫、數(shù)據(jù)表的創(chuàng)建。具體方法如下:</p><p> private static class DatabaseHelper extends SQLiteOpenHelper {</p>
65、<p> DataBaseHelper(Context context) {</p><p> super(context, DATABASE_NAME, null, DATABASE_VERSION);</p><p><b> }</b></p><p><b> @Override</b><
66、/p><p> public void onCreate(SQLiteDatabase db) {</p><p> db.execSQL(DATABASE_CREATE);</p><p><b> }</b></p><p><b> @Override</b></p><
67、;p> public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {</p><p> db.execSQL("DROP TABLE IF EXISTS classinfo");</p><p> onCreate(db);</p><p><
68、;b> }</b></p><p> //在databasehelper的構造函數(shù)中調(diào)用父類構造函數(shù),傳入數(shù)據(jù)庫名,創(chuàng)建數(shù)據(jù)庫</p><p> 4.3 程序中的主要類</p><p> 4.3.1 GalleryTabActivity類和ClassListActivity類</p><p> 該類為整個應用的主A
69、ctivity, 顯示課程表的主界面。其主要方法如下:</p><p> onCreate:Activity主要重寫方法之一,實現(xiàn)程序初始化和UI展示;</p><p> onResume:Activity重寫方法之一,實現(xiàn)在喚醒Activity時刷新界面;</p><p> onCreateOptionMenu:實現(xiàn)Option菜單的創(chuàng)建;</p>
70、;<p> onOptionMenuItemSeleted:實現(xiàn)菜單項的點擊事件響應;</p><p> ImageAdapter:結(jié)合gallery控件來實現(xiàn)主界面中的星期列表的循環(huán)顯示;</p><p> onListItemClick:在課程顯示列表中實現(xiàn)點擊相應列表實現(xiàn)作業(yè)Dialog的顯示;</p><p> 界面設計方面通過Rela
71、tiveLayout實現(xiàn)布局,使用了TextView,ImageButton課程列表通過ListView實現(xiàn)UI展示。該類通過繼承BaseAdapter還實現(xiàn)了一個名為ImageAdapter的內(nèi)部類,用來顯示ListView中的數(shù)據(jù)并實現(xiàn)對ListView上ImageView控件點擊的統(tǒng)一響應。</p><p> 4.3.2 ClassAddActivity類和SettingActivity類</p&g
72、t;<p> AddClass類為實現(xiàn)添加課程界面的Activity,主要實現(xiàn)由用戶選擇和輸入課程信息,并將所有的課程信息添加到數(shù)據(jù)庫中。主要方法如下:</p><p> onCreate: 初始化UI控件;</p><p> onItemSelectedd:設置初始化時默認的數(shù)據(jù);</p><p> SaveData:將添加的課程保存進數(shù)據(jù)
73、庫中;</p><p> gettimeString:將輸入的課程信息轉(zhuǎn)換成對應的時間字符串返回;</p><p> AddPlan:類實現(xiàn)添加計劃界面,并將添加的數(shù)據(jù)存入Preference中。主要方法如下:</p><p> onCreate:實現(xiàn)初始化UI控件;</p><p> onClick:實現(xiàn)button點擊事件的響應
74、;</p><p> setPlan:實現(xiàn)添加計劃到preference中;</p><p> 4.3.3 SQLiteHelper類和SQLClassTime類</p><p> 該類為自定義的重要的數(shù)據(jù)庫處理類,用來管理數(shù)據(jù)庫,對數(shù)據(jù)庫的所有操作都封裝在這個類中,實現(xiàn)數(shù)據(jù)封裝。將數(shù)據(jù)操作和UI操作隔離開來。主要方法如下:</p><p&
75、gt; AddClass:給class表添加記錄;</p><p> db.insert(CLASS_TABLE, null, values);//insert方法插入一條數(shù)據(jù)</p><p> deleteClass:刪除一條class記錄;</p><p> db.delete(CLASS_TABLE, "_id = " + clas
76、sid, null);//delete方法刪除一條數(shù)據(jù)</p><p> deleteAll:實現(xiàn)清空所有課程信息的方法,清除classinfo表中的所有數(shù)據(jù)</p><p><b> 5系統(tǒng)實現(xiàn)</b></p><p><b> 5.1程序首頁面</b></p><p> 在完成系統(tǒng)設計以
77、后,即可在Android虛擬機中運行程序。進入程序的后,程序會自動跳到當天的頁面,讓你更方便的查看當天的課程。主界面如圖5-1所示</p><p> 5.2 課程設置實現(xiàn)</p><p> 軟件設置界面,該界面為用戶設置的界面,往后的使用中,用戶可以通過“Menu”→“設置”的操作步驟來進入該界面。在此界面,用戶可以設置程序,設置課程,星期,地點。</p><p&g
78、t; 點擊設置按鈕可以進入設置課程名稱,如圖5-2所示:</p><p> 5.3 課程星期,地點實現(xiàn)</p><p> 點擊設置按鈕可以進入設置課程時間,可以設置每天的課程。如圖5-3所示:</p><p><b> 設置上課節(jié)次</b></p><p> 點擊設置按鈕可以進入設置課程的節(jié)次,如圖5-4所示:
79、</p><p> 點擊設置按鈕可以進入設置上課地點,如圖5-5所示:</p><p><b> 5.4更換背景</b></p><p> 通過設置版面點擊設置可更換背景,如圖5-6所示:</p><p><b> 相關代碼如下:</b></p><p> pack
80、age net.iyouyu.schedule;</p><p> import android.content.Context;</p><p> import android.content.Intent;</p><p> import android.content.SharedPreferences;</p><p> im
81、port android.content.SharedPreferences.Editor;</p><p> import android.os.Bundle;</p><p> import android.preference.ListPreference;</p><p> import android.preference.Preference;&l
82、t;/p><p> import android.preference.Preference.OnPreferenceChangeListener;</p><p> import android.preference.Preference.OnPreferenceClickListener;</p><p> import android.preference.
83、PreferenceActivity;</p><p> import android.widget.Toast;</p><p> public class SystemSet extends PreferenceActivity implements OnPreferenceClickListener,</p><p> OnPreferenceChang
84、eListener{</p><p> private int bgnum=0;</p><p> String bgKey,starttermkey;</p><p> ListPreference bglp;</p><p> Preference startterm;</p><p> public s
85、tatic boolean isnew=false;</p><p><b> @Override</b></p><p> protected void onCreate(Bundle savedInstanceState) {</p><p> // TODO Auto-generated method stub</p>
86、<p> super.onCreate(savedInstanceState);</p><p> addPreferencesFromResource(R.xml.systemset);</p><p> bgKey = getResources().getString(R.string.bg_key);</p><p> starttermk
87、ey=getResources().getString(R.string.startterm_key);</p><p> bglp = (ListPreference)findPreference(bgKey);</p><p> startterm=(Preference)findPreference(starttermkey);</p><p> bgl
88、p.setOnPreferenceClickListener(this); </p><p> bglp.setOnPreferenceChangeListener(this);</p><p> startterm.setOnPreferenceClickListener(this); </p><p> startterm.setOnPreferenceC
89、hangeListener(this);</p><p><b> }</b></p><p><b> @Override</b></p><p> public boolean onPreferenceChange(Preference preference, Object newValue) {</p&g
90、t;<p> // TODO Auto-generated method stub</p><p> if(preference.getKey().equals(bgKey))</p><p><b> {</b></p><p> if(((String) newValue).trim().equals("水花
91、"))bgnum=1;</p><p> else if(((String) newValue).trim().equals("星空"))bgnum=2;</p><p> else if(((String) newValue).trim().equals("海岸-明"))bgnum=3;</p><p> e
92、lse if(((String) newValue).trim().equals("海岸-暗"))bgnum=4;</p><p> // System.out.println(((String) newValue).trim());</p><p> preference.setSummary(((String) newValue).trim());</p&
93、gt;<p> isnew=true;</p><p> SharedPreferences share = getSharedPreferences("schedule.xm",Context.MODE_PRIVATE); </p><p> Editor editor = share.edit();</p><p>
94、editor.putInt("bgnum", bgnum);</p><p> // editor.putBoolean("create", true);</p><p> editor.commit(); </p><p> Toast.makeText(SystemSet.this, "背景更改&quo
95、t;, Toast.LENGTH_LONG).show();</p><p><b> }</b></p><p> else return false;</p><p> return true;</p><p><b> }</b></p><p><b&g
96、t; @Override</b></p><p> public boolean onPreferenceClick(Preference preference) {</p><p> // TODO Auto-generated method stub</p><p> if(preference.getKey().equals(startte
97、rmkey)){</p><p> Intent intent = new Intent();</p><p> intent.setClass(SystemSet.this, TermSet.class);</p><p> SystemSet.this.startActivity(intent);</p><p><b>
98、 }</b></p><p><b> else </b></p><p> return false;</p><p> return true;</p><p><b> }</b></p><p><b> }</b><
99、;/p><p><b> 5.5設置開學日期</b></p><p> 設置開學日期,如圖5-7所示</p><p><b> 相關代碼如下:</b></p><p> cur.close();</p><p> System.out.println("開始查
100、詢3");</p><p> dp.init(my_year, my_month, my_day,new OnDateChangedListener(){</p><p><b> @Override</b></p><p> public void onDateChanged(DatePicker view, int year
101、, int monthOfYear,int dayOfMonth) {</p><p> my_year = year;</p><p> my_month = monthOfYear+1;</p><p> my_day = dayOfMonth;</p><p><b> }</b></p>&
102、lt;p><b> });</b></p><p> butok.setOnClickListener(new okListener());</p><p><b> }</b></p><p> class AbourexitListener implements OnClickListener{</
103、p><p> public void onClick(View v){</p><p><b> finish();</b></p><p><b> }</b></p><p><b> }</b></p><p> class okListen
104、er implements OnClickListener{</p><p> public void onClick(View v){</p><p> Main.this.insertView((dayOfWeek+=6)%7);</p><p> String dstr=my_year+"-"+my_month+1+"-&q
105、uot;+my_day; </p><p> java.util.Date date=sdf.parse(dstr);</p><p> mysql.execSQL("UPDATE term SET startterm='"+my_year+"-"+my_month+"-"+my_day+"' WHE
106、RE id="+1+";");</p><p> Toast.makeText(TermSet.this, "開學時間修改成功", Toast.LENGTH_LONG).show();</p><p><b> finish();</b></p><p><b> }</b
107、></p><p><b> }</b></p><p><b> 結(jié)論</b></p><p> 在指導老師的幫助下,該程序設計與實現(xiàn)基本完成。本設計的開發(fā)是基于Android平臺上的,由于在以前沒有接觸過多關于這方面的知識,這次設計是邊學習相關的開發(fā)知識邊實現(xiàn)的。這次設計的開發(fā)是一次很珍貴的實踐經(jīng)驗,因為這
108、次開發(fā)都是一步步通過自己的努力完成的。</p><p> 論文研究了關于課程管理的需求分析,并完成了系統(tǒng)的設計與實現(xiàn)。歸納起來主要完成了以下工作:</p><p> 1、闡述了電子課程表的定義,確定了開發(fā)課程管理的基本技術路線。</p><p> 2、從用戶需求的角度說明開發(fā)課程管理的基本技術路線。并針對所收集的資料整理出系統(tǒng)的業(yè)務流程圖、功能模塊圖。<
109、/p><p> 3、確定系統(tǒng)開發(fā)所需要的技術,結(jié)合現(xiàn)有的數(shù)據(jù)和編程思想,生成需要的數(shù)據(jù)庫。</p><p> 4、在詳細設計和編碼階段,運用了Java最基本的開發(fā)技術,代碼簡單易懂,程序里各個Activity之間的跳轉(zhuǎn)比較清晰。能正常的將輸入的數(shù)據(jù)存入數(shù)據(jù)庫中保存。</p><p><b> 參考文獻</b></p><p
110、> [1]Jerome(J.F.)DiMarzio.Android程序員指南[M].USA:McGraw-Hill公司, 2008, 21~35.</p><p> [2]靳巖,姚尚朗.Google Android開發(fā)入門與實踐[M].北京:人民郵電出版社, 2009,37~59.</p><p> [3]楊豐盛.Android應用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010
111、,44~109,15~17.</p><p> [4]E2EColud工作室.深入淺出Google Android[M].北京:人民郵電出版社,2009,178~194.</p><p> [5]余志龍,陳昱勛,鄭明杰,陳小鳳,郭秩均.Google Android SDK開發(fā)范例大全[M].北京:人民郵電出版社,2009,42~53.</p><p> [6]
112、印旻,王行言. Java 語言與面向?qū)ο蟪绦蛟O計[M](第2版).北京:清華大學出版社,2007,44~57.</p><p> [7]Jeff Friesen.Learn Java for Android Development[M].USA:Apress.2010,2~21.</p><p> [8]Marziah Karch.Android for work:productivi
113、ty dor professionals[M].USA:Apress.2010,97~114.</p><p> [9]張仕成. 基于Google Android平臺的應用程序開發(fā)與研究[J].電腦知識與技術.2009,28:54-66.</p><p> [10]陳璟,陳平華,李文亮. Android內(nèi)核分析[J].現(xiàn)代計算機(專業(yè)版).2009,11:32-44.</p&g
114、t;<p> [11]財經(jīng)日報.二月份谷歌Android移動市場占有率33%擴大優(yōu)勢 [EB/OL].http://www.businesstimes.com.hk/a-20110405-113764/uygtr</p><p><b> 致謝</b></p><p> 感謝學院四年來對我的辛苦培育,讓我在大學這四年來學到很多東西,特別感謝學院為
115、我提供了良好的學習環(huán)境、感謝領導、老師們四年來對我無微不至的關懷和指導,讓我得以在這四年中學到很多有用的知識。在此,我還要感謝在班里同學和朋友,感謝你們在我遇到困難的時候幫助我,給我支持和鼓勵,感謝你們。特別感謝指導老師陳晨在我畢業(yè)論文寫作及設計階段對我的悉心指導,從最初的定題,到資料收集,到寫作、修改、定稿,他給了我耐心的指導和無私的幫助。為了指導我們的畢業(yè)論文,他放棄了自己的休息時間,這種無私奉獻的敬業(yè)精神令人欽佩,在此我向他表示我
116、誠摯的謝意。</p><p><b> 附錄</b></p><p> 搭建Android開發(fā)環(huán)境</p><p> 任何事物要運行,都要有它的環(huán)境,Android也有它的環(huán)境才能夠運行,下面介紹Android的開發(fā)環(huán)境配置。</p><p> 搭建開發(fā)環(huán)境需要的軟件:</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于android平臺的計步器的設計與實現(xiàn)-軟件工程畢業(yè)論文
- 軟件工程畢業(yè)論文-android手機衛(wèi)士的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-基于android系統(tǒng)的同學錄的實現(xiàn)
- 軟件工程畢業(yè)論文-基于android系統(tǒng)的天氣預報查詢系統(tǒng)的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-基于android系統(tǒng)的魅力城鄉(xiāng)旅游助手軟件的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-基于android的音樂播放器的設計與實現(xiàn)
- 基于android系統(tǒng)的課程表的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-基于android系統(tǒng)的音樂播放器的實現(xiàn)
- 基于android系統(tǒng)的課程表的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-基于android的駕校模擬考試系統(tǒng)的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-基于android系統(tǒng)的同學錄的實現(xiàn) 2
- 軟件工程畢業(yè)論文-基于android的天氣預報查詢系統(tǒng)的實現(xiàn)
- 軟件工程畢業(yè)論文-基于android的音樂播放器的設計與實現(xiàn)2
- 軟件工程畢業(yè)論文-基于android系統(tǒng)的音樂播放器的實現(xiàn)2
- 軟件工程畢業(yè)論文-庫存管理系統(tǒng)的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-實時路況系統(tǒng)的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-預約掛號系統(tǒng)的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-學生管理系統(tǒng)的設計與實現(xiàn)
- 軟件工程畢業(yè)論文服裝銷售系統(tǒng)的設計與實現(xiàn)
- 軟件工程畢業(yè)論文-駕校管理系統(tǒng)的設計與實現(xiàn)
評論
0/150
提交評論