《基于安卓平臺(tái)教學(xué)助手軟件的設(shè)計(jì)與實(shí)現(xiàn)》9600字【論文】_第1頁(yè)
《基于安卓平臺(tái)教學(xué)助手軟件的設(shè)計(jì)與實(shí)現(xiàn)》9600字【論文】_第2頁(yè)
《基于安卓平臺(tái)教學(xué)助手軟件的設(shè)計(jì)與實(shí)現(xiàn)》9600字【論文】_第3頁(yè)
《基于安卓平臺(tái)教學(xué)助手軟件的設(shè)計(jì)與實(shí)現(xiàn)》9600字【論文】_第4頁(yè)
《基于安卓平臺(tái)教學(xué)助手軟件的設(shè)計(jì)與實(shí)現(xiàn)》9600字【論文】_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

[1],目的是通過(guò)現(xiàn)代信息化技術(shù)的應(yīng)用來(lái)提高學(xué)習(xí)質(zhì)量。而以雨課堂、藍(lán)墨云班課為代表的移動(dòng)教學(xué)助手軟件的出現(xiàn)給變革教學(xué)模式帶來(lái)了新的途徑REF_Ref101696100\r\h[4]。藍(lán)墨科技開(kāi)發(fā)的云班課App,教師能夠在軟件中發(fā)送課程通知給學(xué)生,學(xué)生可以在軟件中接受教師推送的教學(xué)資源,但是在課堂簽到,成績(jī)管理這方面的功能仍有可以改進(jìn)的地方REF_Ref101695708\r\h[3]。除此之外,還有超星學(xué)習(xí)通、雨課堂等一些優(yōu)秀的移動(dòng)教學(xué)軟件同樣為線(xiàn)上的遠(yuǎn)程教學(xué)提供了極大便利,這些產(chǎn)品大多在設(shè)計(jì)之初是面向?qū)W生和教師進(jìn)行雙端服務(wù)。而當(dāng)前高校大多轉(zhuǎn)為線(xiàn)下教學(xué),往往更需要在教師端有更多更好的功能進(jìn)行教學(xué)信息管理。采用傳統(tǒng)的考勤辦法:教師點(diǎn)名、手工記錄缺勤情況的方式,不僅需要花費(fèi)較多的課堂時(shí)間,通過(guò)手工記錄得到的紙面的缺勤記錄材料也不方便查對(duì)和統(tǒng)計(jì)REF_Ref101696671\r\h[5]。而使用App通過(guò)語(yǔ)音進(jìn)行自動(dòng)考勤只需要教師開(kāi)啟功能即可讓手機(jī)和學(xué)生配合,通過(guò)手機(jī)揚(yáng)聲器和麥克風(fēng)完成考勤,同時(shí)記錄還可以自動(dòng)保存于手機(jī)數(shù)據(jù)庫(kù)中,既減少了成本也可以提高效率,方便統(tǒng)計(jì)。綜上,基于安卓平臺(tái)的教學(xué)助手軟件具有很不錯(cuò)的開(kāi)發(fā)潛力,有利于解決當(dāng)前一些教學(xué)軟件對(duì)于線(xiàn)下教學(xué)存在的一些問(wèn)題,提高教師的工作效率。同時(shí),也體現(xiàn)了移動(dòng)學(xué)習(xí)的方便、快捷和信息傳遞的高效性REF_Ref101696378\r\h[7]。2相關(guān)技術(shù)介紹2.1Android相關(guān)技術(shù)2.1.1安卓平臺(tái)簡(jiǎn)介安卓(Android)最初是由美國(guó)谷歌公司開(kāi)發(fā)的針對(duì)移動(dòng)終端的操作系統(tǒng)。其主要特點(diǎn)是開(kāi)源、基于Linux內(nèi)核、能較好地適配于各種移動(dòng)設(shè)備包括電視、數(shù)碼相機(jī)、智能手表等。同時(shí)因其自由開(kāi)放的系統(tǒng)特性吸引了大量的開(kāi)發(fā)者進(jìn)行基于安卓平臺(tái)的App的開(kāi)發(fā)。憑借其完全開(kāi)源、可跨多平臺(tái)、用戶(hù)基數(shù)大的優(yōu)勢(shì),使得安卓系統(tǒng)的應(yīng)用前景越來(lái)越廣闊。Android相關(guān)硬件種類(lèi)豐富且價(jià)格相對(duì)較為低廉,平臺(tái)應(yīng)用數(shù)量也十分龐大,整個(gè)生態(tài)系統(tǒng)非常成熟REF_Ref101696755\r\h[8]。Android的系統(tǒng)架構(gòu)可如下圖2.1所示:圖2.1Android系統(tǒng)的構(gòu)成2.1.2Activity(活動(dòng))組件介紹在Android應(yīng)用程序開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者繞不開(kāi)Android開(kāi)發(fā)四大組件:活動(dòng)(Activity)、服務(wù)(Service)、廣播接受者(BroadcastReceive)、內(nèi)容提供者(ContentProvider)。而在這四大組件中,最基本也是最重要的組件就是活動(dòng)(Activity)組件,它用于提供用戶(hù)操作的可視化界面,是在開(kāi)發(fā)過(guò)程中使用到的最頻繁的組件。Activity有自己的生命周期,一個(gè)Activity實(shí)質(zhì)上有四種狀態(tài):運(yùn)行態(tài)(Running)、暫停態(tài)(Paused)、停止態(tài)(Stopped)、銷(xiāo)毀(Destroyed)。圖2.2Activity的生命周期2.1.3XML布局介紹Android開(kāi)發(fā)中,程序與用戶(hù)之間的交互需要通過(guò)Activity組件來(lái)進(jìn)行。而要讓Activity顯示出具體界面,則需要用到XML布局。在Android開(kāi)發(fā)中,如果開(kāi)發(fā)者使用Java自帶的布局控件進(jìn)行界面設(shè)計(jì),需要調(diào)用很多方法來(lái)設(shè)置控件的屬性,這勢(shì)必使得代碼十分冗長(zhǎng)。而在實(shí)際場(chǎng)景中,通常使用在XML文件中設(shè)置各種控件的屬性,再在Activity中調(diào)用set方法即可完成Activity與XML文件的綁定,操作便捷且代碼風(fēng)格簡(jiǎn)潔。其中XML文件有三種常用布局,分別是:線(xiàn)性布局(LinearLayout)、條件布局(ConstraintLayout)、相對(duì)布局(RelativeLayout),其中XML布局、控件屬性不是本文研究重點(diǎn),故不再贅述。2.1.4BroadcastReceiver(廣播接受者)組件介紹在本軟件中,備忘提醒功能需要使用到Android廣播機(jī)制來(lái)向用戶(hù)手機(jī)發(fā)送推送通知,因此了解BroadcastReceiver這一組件也是十分重要的。Android開(kāi)發(fā)者如果要使用這一組件,需要讓類(lèi)繼承BroadcastReceiver類(lèi),并在此類(lèi)中重寫(xiě)超類(lèi)的onReceive()方法,此方法為應(yīng)用程序接收到廣播后進(jìn)行響應(yīng)所執(zhí)行的代碼。同時(shí),BroadcastReceiver和Activity一樣,需要在AndroidManifest.xml這一文件中進(jìn)行注冊(cè)。2.2SQLite數(shù)據(jù)庫(kù)相關(guān)技術(shù)介紹SQLite是一款非常輕量級(jí)的、遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)REF_Ref101900027\r\h[9],它不需要服務(wù)器端,不需要進(jìn)行復(fù)雜的配置。相比于MySQL和PostgreSQL等世界著名數(shù)據(jù)庫(kù),它有著占用內(nèi)存和系統(tǒng)空間小的優(yōu)勢(shì),而這一優(yōu)勢(shì)正是我們開(kāi)發(fā)移動(dòng)端App所需要的關(guān)鍵性因素。SQLite數(shù)據(jù)庫(kù)有多種編程語(yǔ)言版本,如C#、Java、PHP等,且SQLite在處理數(shù)據(jù)的速度方面相較于其他數(shù)據(jù)庫(kù)有著得天獨(dú)厚的優(yōu)勢(shì),這也是在Android開(kāi)發(fā)中選擇此數(shù)據(jù)庫(kù)的原因之一。2.3科大訊飛語(yǔ)音SDK介紹在Android系統(tǒng)中有一個(gè)自帶的語(yǔ)音引擎,被稱(chēng)為T(mén)TS(TextToSpeech),指的是文本轉(zhuǎn)換語(yǔ)音技術(shù),該技術(shù)設(shè)計(jì)之初是為開(kāi)發(fā)者提供文本朗讀的功能。但遺憾的是Android自帶的TTS引擎目前并不支持中文,故要想讓手機(jī)上的中文播放出來(lái),目前國(guó)內(nèi)大多采用的方案是來(lái)自科大訊飛公司的第三方語(yǔ)音合成SDK,同時(shí)此SDK還提供了在線(xiàn)語(yǔ)音識(shí)別轉(zhuǎn)換為文字的功能。在本系統(tǒng)中實(shí)現(xiàn)的簡(jiǎn)單自動(dòng)語(yǔ)音考勤功能正是基于這兩個(gè)強(qiáng)大的語(yǔ)音引擎功能才得以實(shí)現(xiàn)。3系統(tǒng)設(shè)計(jì)3.1系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)遵循軟件工程開(kāi)發(fā)原則,在開(kāi)發(fā)之前就已經(jīng)規(guī)劃好系統(tǒng)的總體結(jié)構(gòu)和各個(gè)分功能模塊的結(jié)構(gòu)。本系統(tǒng)是基于Android平臺(tái)進(jìn)行開(kāi)發(fā),使用Activity+XML布局框架,劃分好各模塊的范圍,設(shè)計(jì)好各模塊的功能。除此之外還需要規(guī)劃好各個(gè)Activity之間的跳轉(zhuǎn)邏輯,以及各個(gè)Activity之間的數(shù)據(jù)傳遞。系統(tǒng)整體的架構(gòu)如下圖所示:圖3.1系統(tǒng)架構(gòu)圖(功能模塊圖)本系統(tǒng)共有五個(gè)功能模塊,其中為了考慮人機(jī)交互方面因素,應(yīng)當(dāng)將界面設(shè)計(jì)的友好簡(jiǎn)潔,故將五個(gè)模塊合并成三大功能,分別是教學(xué)信息管理,學(xué)生信息管理,備忘提醒。利用Android的底部導(dǎo)航欄進(jìn)行跳轉(zhuǎn),可以實(shí)現(xiàn)沒(méi)有Activity切換動(dòng)畫(huà)的無(wú)縫切換。其中學(xué)生信息管理模塊中包含了所有需要和班級(jí)綁定的功能,包括:學(xué)生信息管理、考勤、考勤信息管理、學(xué)生成績(jī)管理這四個(gè)功能,這四個(gè)功能均需要由用戶(hù)選擇指定班級(jí)后才可使用,故將其整合到一個(gè)頁(yè)面,無(wú)論點(diǎn)擊哪個(gè)功能,都需要選擇一個(gè)已添加好的班級(jí),才可跳轉(zhuǎn)到對(duì)應(yīng)的功能頁(yè)面。3.2系統(tǒng)功能模塊設(shè)計(jì)3.2.1教學(xué)信息管理模塊設(shè)計(jì)本模塊設(shè)計(jì)的主要目的為方便教師查看自己所執(zhí)教課程,以及課程對(duì)應(yīng)的信息,包括上課時(shí)間、上課地點(diǎn)等。本模塊的主要功能為可以查看課程列表、添加課程、修改單獨(dú)的課程信息,刪除單個(gè)課程。涉及到的類(lèi)有:Course類(lèi),涉及到類(lèi)圖如下:圖3.2Course類(lèi)圖3.2.2學(xué)生信息管理模塊設(shè)計(jì)本模塊的設(shè)計(jì)目的為將所有與學(xué)生有關(guān)的功能放置于此模塊中,此模塊中所有功能均需要選擇班級(jí)后使用。本模塊的功能主要分為四個(gè)大功能:學(xué)生信息管理功能、考勤功能、考勤信息管理功能、學(xué)生成績(jī)信息管理功能REF_Ref101696849\r\h[10]。其中學(xué)生信息管理功能包含:顯示該班級(jí)所有學(xué)生信息、添加學(xué)生信息(手動(dòng)添加、文件導(dǎo)入)、查詢(xún)學(xué)生信息、修改學(xué)生信息、刪除學(xué)生信息REF_Ref101900066\r\h[11]。考勤功能為提供基于語(yǔ)音合成和語(yǔ)音識(shí)別的自動(dòng)考勤功能,手機(jī)會(huì)按照班級(jí)名單進(jìn)行自動(dòng)語(yǔ)音點(diǎn)名,同時(shí)如果麥克風(fēng)接收學(xué)生答到信息,將所有信息記錄到一次考勤記錄中。考勤管理功能包含:顯示所有考勤記錄和對(duì)應(yīng)日期、查看某次考勤記錄、刪除某次考勤記錄、修改某次考勤記錄中某個(gè)學(xué)生的答到情況、添加某次考勤記錄中某個(gè)學(xué)生的考勤情況。學(xué)生成績(jī)管理功能包含:顯示所有單次成績(jī)記錄和對(duì)應(yīng)日期、查看或刪除該班級(jí)某次成績(jī)的記錄、添加或修改一次記錄中特定學(xué)生的成績(jī)記錄情況。此模塊主要涉及的類(lèi)有:Student、StudentCheck、StudentScore、ScoreRecord、CheckRecord,涉及到的類(lèi)圖如下:圖3.3學(xué)生信息管理類(lèi)圖3.2.3備忘提醒模塊設(shè)計(jì)本模塊設(shè)計(jì)目的為利用安卓系統(tǒng)的鬧鐘和推送機(jī)制,在課程開(kāi)始前的一段時(shí)間發(fā)送通知推送提醒教師上課。本模塊主要涉及到的庫(kù)為安卓系統(tǒng)自帶的系統(tǒng)庫(kù):AlarmManager、Notification、NotificationManager、BroadcastReceiver通過(guò)設(shè)定安卓自帶的鬧鐘設(shè)定課程時(shí)間,在時(shí)間到時(shí)觸發(fā)廣播,通過(guò)廣播接收機(jī)制在接收到后向教師發(fā)送通知。該模塊的生命周期圖如下:4數(shù)據(jù)庫(kù)設(shè)計(jì)4.1E-R圖設(shè)計(jì)由于本系統(tǒng)使用的為本地?cái)?shù)據(jù)庫(kù)SQLite,故一個(gè)設(shè)備上對(duì)應(yīng)一個(gè)教師及其所執(zhí)教課程信息。一個(gè)教師執(zhí)教多個(gè)課程(1-n),一個(gè)課程包含了n個(gè)學(xué)生信息(1-n),一個(gè)課程包含了一個(gè)班級(jí)信息(1-1),一個(gè)課程包含了一個(gè)考勤記錄總表(1-1),一個(gè)課程包含了一個(gè)成績(jī)記錄總表(1-1)。一個(gè)考勤記錄總表中對(duì)應(yīng)了n條考勤記錄(1-n),一個(gè)成績(jī)記錄總表對(duì)應(yīng)了n條成績(jī)記錄(1-n)。故本系統(tǒng)數(shù)據(jù)庫(kù)E-R圖如下:圖4.1數(shù)據(jù)庫(kù)E-R圖4.2數(shù)據(jù)庫(kù)表設(shè)計(jì)根據(jù)數(shù)據(jù)庫(kù)E-R圖,設(shè)計(jì)出本系統(tǒng)數(shù)據(jù)庫(kù)表共有6種類(lèi)型,設(shè)計(jì)如下:表4.1Course表列名稱(chēng)數(shù)據(jù)類(lèi)型備注namevarchar課程名稱(chēng),主鍵timetime上課時(shí)間,格式為xx:xx:xxplacevarchar上課地點(diǎn)表4.2Course_name_Table表列名稱(chēng)數(shù)據(jù)類(lèi)型備注namevarchar學(xué)生姓名,主鍵numberint學(xué)生學(xué)號(hào)classvarchar學(xué)生班級(jí)表4.3Course_name_ScoreTable表列名稱(chēng)數(shù)據(jù)類(lèi)型備注idint記錄序號(hào),主鍵datedate記錄日期,格式為xx:xx:xx表4.4Course_name_CheckTable表列名稱(chēng)數(shù)據(jù)類(lèi)型備注idint記錄序號(hào),主鍵datedate記錄日期,格式為xx:xx:xx4.5Course_name_ScoreTable_id表列名稱(chēng)數(shù)據(jù)類(lèi)型備注namevarchar學(xué)生姓名,主鍵numberint學(xué)生學(xué)號(hào)scoreint學(xué)生成績(jī)4.6Course_name_CheckTable_id表列名稱(chēng)數(shù)據(jù)類(lèi)型備注namevarchar學(xué)生姓名,主鍵numberint學(xué)生學(xué)號(hào)flagvarchar考勤情況√/x/○5基于安卓系統(tǒng)的教學(xué)助手的APP實(shí)現(xiàn)5.1系統(tǒng)開(kāi)發(fā)環(huán)境本系統(tǒng)基于Android平臺(tái)開(kāi)發(fā),開(kāi)發(fā)環(huán)境為AndroidStudioforWindows64bit版本,使用AndroidStudio自帶模擬器(版本Android7.0API24、PixelXL560dpi)作為模擬測(cè)試環(huán)境,使用真機(jī)(版本Android10.0API29、小米8)作為真機(jī)測(cè)試環(huán)境。本系統(tǒng)所有功能均能在以上兩種測(cè)試環(huán)境中正常運(yùn)行,無(wú)閃退、報(bào)錯(cuò)現(xiàn)象。5.2安卓系統(tǒng)的教學(xué)助手的APP模塊實(shí)現(xiàn)5.2.1教學(xué)信息管理模塊實(shí)現(xiàn)本模塊用于實(shí)現(xiàn)教學(xué)信息管理功能,使用Fragment作為基礎(chǔ)框架,XML作為布局方式進(jìn)行實(shí)現(xiàn)。主頁(yè)面共有三個(gè)Button,分別為:添加課程、修改課程、刪除課程,還有一個(gè)ListView用于顯示所有課程的列表。該模塊的流程圖如下:圖5-1教學(xué)信息管理流程圖由于此頁(yè)面每次打開(kāi)時(shí)需要顯示所有課程信息,故在onResume()方法中調(diào)用方法query_Course()方法,用于在此Fragment中的ListView中實(shí)時(shí)更新課程信息。每次進(jìn)入此頁(yè)面時(shí),系統(tǒng)都會(huì)調(diào)用onResume()方法。query_Course()方法的具體實(shí)現(xiàn)代碼如下:代碼5-1query_Course()方法publicvoidquery_Course(){publicvoidquery_Course(){//從數(shù)據(jù)庫(kù)中讀取課程信息List<Course>courses=dbManager.query_Course();ArrayList<Map<String,String>>list=newArrayList<Map<String,String>>();for(Coursecourse:courses){ HashMap<String,String>map=newHashMap<>();map.put("name",);map.put("info","上課時(shí)間:"+course.time2+course.time+"上課地點(diǎn):"+course.place);list.add(map);}SimpleAdapteradapter=newSimpleAdapter(getContext(),list,R.layout.listview_item_course,newString[]{"name","info"},newint[]{R.id.course_name,R.id.course_info});listView.setAdapter(adapter);}系統(tǒng)界面圖如下:圖5-2教學(xué)信息管理界面添加課程按鈕的點(diǎn)擊事件監(jiān)聽(tīng)器會(huì)利用startActivity方法跳轉(zhuǎn)到添加課程對(duì)應(yīng)的Activity去,在新頁(yè)面輸入課程名、上課地點(diǎn)、上課時(shí)間,確定按鈕會(huì)觸發(fā)監(jiān)聽(tīng)器,利用DBManager類(lèi)的方法add_Course(Coursecourse)在數(shù)據(jù)庫(kù)中添加該課程,此后程序會(huì)調(diào)用finish()方法返回教學(xué)信息管理界面。由于每次回到此界面都會(huì)觸發(fā)onResume()方法,故可以實(shí)現(xiàn)實(shí)時(shí)讀取數(shù)據(jù)庫(kù)并在界面上顯示信息的功能。修改課程信息按鈕在觸發(fā)時(shí)會(huì)檢查是否已選中一個(gè)課程,需要點(diǎn)擊ListView中的任一課程進(jìn)行選中,主界面中的TextView文本框會(huì)顯示目前選中的課程,修改課程按鈕會(huì)利用startActivity方法跳轉(zhuǎn)至修改課程的Activity中。刪除課程同樣需要點(diǎn)擊ListView選中課程后,點(diǎn)擊刪除課程按鈕,觸發(fā)按鈕監(jiān)聽(tīng)器后調(diào)用DBManager類(lèi)的delete_Course方法,將課程信息作為參數(shù)傳遞給此方法。同時(shí)后臺(tái)在數(shù)據(jù)庫(kù)中刪除對(duì)應(yīng)課程及相關(guān)表,在刪除完畢后,由于此功能并沒(méi)有進(jìn)行頁(yè)面跳轉(zhuǎn),故需要手動(dòng)調(diào)用onResume()方法更新界面。此功能的界面如下圖:圖5-3添加課程界面5.2.2學(xué)生信息管理模塊實(shí)現(xiàn)本模塊用于實(shí)現(xiàn)選定班級(jí)學(xué)生信息管理功能,使用Activity組件+XML布局進(jìn)行實(shí)現(xiàn)。主頁(yè)面的主要控件有:一個(gè)EditText用于用戶(hù)輸入需要查詢(xún)學(xué)生的名稱(chēng),同時(shí)可以顯示用戶(hù)選中的學(xué)生名稱(chēng);一個(gè)Button為確定按鈕,用于跳轉(zhuǎn)至查詢(xún)結(jié)果頁(yè)面;另一個(gè)Button為添加學(xué)生按鈕。該模塊的流程圖如下:圖5-4學(xué)生信息管理流程圖與教學(xué)信息管理界面類(lèi)似,每當(dāng)進(jìn)入此頁(yè)面時(shí),都需要更新該班級(jí)的學(xué)生信息,故在onResume()方法中需要調(diào)用query_Student()方法,此方法的實(shí)現(xiàn)代碼與教學(xué)信息管理界面中的query_Course()方法類(lèi)似,故在此不再贅述。添加學(xué)生按鈕會(huì)利用ContextMenu對(duì)話(huà)框讓用戶(hù)選擇手動(dòng)添加或是通過(guò)文件導(dǎo)入。手動(dòng)添加則是跳轉(zhuǎn)到addStudent這一Activity中輸入學(xué)生信息進(jìn)行添加,與添加課程代碼實(shí)現(xiàn)類(lèi)似不再重復(fù)敘述。而從文件添加則會(huì)彈出一個(gè)對(duì)話(huà)框提示用戶(hù)將文件放入指定路徑后再點(diǎn)擊確定進(jìn)行添加。當(dāng)用戶(hù)確定添加且檢查信息文件存在后會(huì)調(diào)用loadfile()方法讀取手機(jī)內(nèi)存中的StudentInfo.xlsx文件,將文件中的文件按行進(jìn)行處理并添加至該課程對(duì)應(yīng)的學(xué)生表中。學(xué)生信息管理界面圖如下:圖5-5學(xué)生信息管理界面圖查詢(xún)學(xué)生功能提供了兩種查詢(xún)方式,一是通過(guò)點(diǎn)擊ListView中的項(xiàng),學(xué)生名字會(huì)自動(dòng)顯示到搜索框中,二是直接在搜索框中輸入學(xué)生名字。點(diǎn)擊確定按鈕后,會(huì)先調(diào)用DBManager類(lèi)中的query_Student_Single方法,將返回的Student對(duì)象傳至新界面中,查詢(xún)功能即可完成。在查詢(xún)結(jié)束后,用戶(hù)往往需要對(duì)查詢(xún)到的結(jié)果進(jìn)行修改或刪除此條學(xué)生記錄。若想要修改查詢(xún)到的結(jié)果,在更改信息完畢后點(diǎn)擊確定按鈕會(huì)調(diào)用DBManager類(lèi)中的update_Student方法對(duì)數(shù)據(jù)庫(kù)中查詢(xún)到的學(xué)生信息進(jìn)行更新。若點(diǎn)擊刪除按鈕,無(wú)論是否修改此學(xué)生的信息,都會(huì)調(diào)用DBManager類(lèi)中的delete_Student方法在數(shù)據(jù)庫(kù)中刪除這一學(xué)生。無(wú)論是刪除還是更新,結(jié)束數(shù)據(jù)庫(kù)操作后,都會(huì)調(diào)用finish()方法回到前一個(gè)界面重新顯示新的學(xué)生信息列表。5.2.3考勤模塊實(shí)現(xiàn)本模塊分為兩個(gè)部分,分別是:語(yǔ)音考勤功能模塊、考勤信息管理功能模塊。該模塊流程圖如下:圖5-6考勤模塊流程圖選擇語(yǔ)音考勤功能后,先檢測(cè)系統(tǒng)是否已經(jīng)有了麥克風(fēng)權(quán)限,并調(diào)用DBManager類(lèi)中的create_Check_Table方法創(chuàng)建本次考勤記錄表。進(jìn)入新Activity后,會(huì)有兩個(gè)線(xiàn)程進(jìn)行并行。其中一個(gè)線(xiàn)程負(fù)責(zé)啟動(dòng)倒計(jì)時(shí)計(jì)時(shí)器,主要使用了Android自帶的類(lèi)CountDownTimer,在回調(diào)方法onFinish()中,創(chuàng)建當(dāng)前學(xué)生的考勤記錄對(duì)象并調(diào)用DBManager類(lèi)中的add_StudentCheck_Record進(jìn)行考勤記錄的添加,同時(shí)檢測(cè)當(dāng)前學(xué)生是否為本班級(jí)最后一個(gè)學(xué)生,若不是,則學(xué)生序號(hào)+1繼續(xù)考勤下一個(gè)學(xué)生,若是,則會(huì)顯示考勤結(jié)束。而另一個(gè)線(xiàn)程則是負(fù)責(zé)語(yǔ)音合成以及語(yǔ)音識(shí)別的功能,在Activity創(chuàng)建之時(shí),語(yǔ)音合成類(lèi)會(huì)調(diào)用其start(Stringtext)方法播放當(dāng)前學(xué)生名字,在播放完成之后調(diào)用startSpeech()方法進(jìn)入語(yǔ)音識(shí)別,手機(jī)麥克風(fēng)進(jìn)行工作,識(shí)別出學(xué)生喊到的文本進(jìn)行考勤記錄。為了實(shí)現(xiàn)自動(dòng)考勤,即系統(tǒng)按照班級(jí)名單自動(dòng)切換Activity,采用了學(xué)生序號(hào)的方式,每次創(chuàng)建Activity后都會(huì)調(diào)用DBManager類(lèi)的query_Student方法返回學(xué)生List,再利用List的get方法取得序號(hào)對(duì)應(yīng)的學(xué)生,在啟動(dòng)下一個(gè)Activity時(shí),將序號(hào)+1,即可讓下一個(gè)Activity獲得下一個(gè)學(xué)生的姓名。當(dāng)整個(gè)班級(jí)點(diǎn)名結(jié)束后,創(chuàng)建studentCheckFinish對(duì)應(yīng)的Activity顯示考勤結(jié)束用戶(hù)可以到考勤管理界面中進(jìn)行本次考勤記錄結(jié)果的查看??记诠δ軐?shí)現(xiàn)界面如下:圖5-7考勤界面圖在單次考勤結(jié)束后,在學(xué)生信息管理Fragment中選擇考勤信息管理功能,選擇對(duì)應(yīng)的班級(jí)后,即可查看此班級(jí)的所有考勤記錄。此界面中有兩個(gè)Button:一個(gè)用于查看記錄,一個(gè)用于刪除記錄。以及一個(gè)ListView,用于顯示所有記錄。在進(jìn)入界面后,會(huì)調(diào)用onResume()方法的query_Check_Record()方法,在ListView中顯示所有考勤記錄,實(shí)現(xiàn)過(guò)程與教學(xué)信息管理的query_Course()相似,不再重復(fù)敘述。該界面如下圖所示:圖5-8考勤信息管理界面查看和刪除記錄功能需要先點(diǎn)擊ListView中的某個(gè)考勤記錄才可使用。點(diǎn)擊查看按鈕后,會(huì)將課程名、考勤記錄序號(hào)添加到Bundle中進(jìn)行數(shù)據(jù)傳遞到checkInfoManager2對(duì)應(yīng)的Activity中,在新Activity的onResume()方法中調(diào)用query_Student_Check()方法顯示本次考勤記錄的所有結(jié)果。界面圖如下:圖5-9某次考勤信息查看界面點(diǎn)擊ListView中的學(xué)生可以將其選中,或者在搜索框中輸入學(xué)生姓名進(jìn)行考勤記錄的搜索。搜索的具體實(shí)現(xiàn)與學(xué)生信息管理模塊中的搜索功能基本一致,在此不再重復(fù)。5.2.4作業(yè)成績(jī)管理模塊實(shí)現(xiàn)本模塊用于實(shí)現(xiàn)選中班級(jí)的作業(yè)成績(jī)管理功能,使用Activity組件+XML布局進(jìn)行實(shí)現(xiàn)。主界面中用一個(gè)ListView顯示該班級(jí)所有作業(yè)成績(jī)記錄,三個(gè)Button分別用于添加作業(yè)記錄、查看作業(yè)記錄、刪除作業(yè)記錄。本模塊流程圖如下:圖5-10作業(yè)成績(jī)管理模塊流程圖在主界面scoreManager對(duì)應(yīng)的Activity中,onResume()方法調(diào)用了query_Score_Record()方法,用于在ListView上顯示數(shù)據(jù)庫(kù)中該班級(jí)所有作業(yè)成績(jī)記錄。實(shí)現(xiàn)方式同query_Course()方法。主界面圖如下:圖5-11作業(yè)成績(jī)管理界面添加按鈕會(huì)利用ContextMenu彈出對(duì)話(huà)框選擇手動(dòng)添加或者文件導(dǎo)入,兩個(gè)功能的實(shí)現(xiàn)與添加學(xué)生信息時(shí)類(lèi)似,這里不再重復(fù)。查看或者刪除記錄功能需要點(diǎn)擊ListView中的記錄選中,點(diǎn)擊查看按鈕后,會(huì)將課程名稱(chēng)和成績(jī)記錄序號(hào)放到Bundle傳遞給scoreSearch對(duì)應(yīng)的Activity中,在這個(gè)Activity創(chuàng)建時(shí)會(huì)調(diào)用onResume()方法內(nèi)的query_Student_Score()方法對(duì)本次成績(jī)記錄中的所有學(xué)生進(jìn)行顯示。界面圖如下:圖5-12作業(yè)成績(jī)查詢(xún)頁(yè)面添加成績(jī)和查詢(xún)確定按鈕的實(shí)現(xiàn)方式和考勤信息管理中實(shí)現(xiàn)方式類(lèi)似,使用了返回碼判斷更新和添加操作,此處不在重復(fù)敘述。5.2.5備忘提醒模塊實(shí)現(xiàn)本模塊用于實(shí)現(xiàn)在上課前一小時(shí)發(fā)送推送通知提醒教師上課這一功能,使用Activity和BroadcastReceiver組件和XML布局進(jìn)行實(shí)現(xiàn)。該模塊流程圖如下:圖5-13備忘提醒模塊流程圖本模塊的實(shí)現(xiàn)方式主要基于Android系統(tǒng)自帶的鬧鐘類(lèi)AlarmManager實(shí)現(xiàn)定時(shí)鬧鐘,鬧鐘到時(shí)則會(huì)發(fā)送廣播,在通過(guò)廣播接收后發(fā)送推送來(lái)實(shí)現(xiàn)功能。打開(kāi)備忘管理界面后,onResume()會(huì)調(diào)用query_Notifications()方法在ListView中顯示當(dāng)前所有已添加至備忘錄中的課程。該界面除了ListView外共有兩個(gè)按鈕,分別實(shí)現(xiàn)添加備忘和刪除備忘的功能。添加備忘功能需要選擇已添加好的班級(jí)來(lái)添加至備忘錄,這里使用的是startActivityForResult()方法,用于接收選擇的課程信息。選擇課程之后通過(guò)onActivityResult方法接收到選擇的課程信息,讀取其上課時(shí)間信息后即可開(kāi)始設(shè)定鬧鐘。為了實(shí)現(xiàn)同時(shí)設(shè)定多個(gè)鬧鐘,使用了Android自帶類(lèi)SharedPreferences,此類(lèi)提供的方法可以在Android平臺(tái)上實(shí)現(xiàn)輕量級(jí)的數(shù)據(jù)存儲(chǔ),在此使用其存儲(chǔ)鬧鐘id,用于標(biāo)識(shí)不同的鬧鐘。PendingIntent是一個(gè)延遲行為,指的是滿(mǎn)足某些條件或者觸發(fā)某些時(shí)間之后執(zhí)行的行為。緊接著創(chuàng)建一個(gè)鬧鐘管理器AlarmManager,用于存放鬧鐘。再創(chuàng)建一個(gè)Calendar時(shí)間管理類(lèi)的對(duì)象,利用其set方法,設(shè)定好用戶(hù)選中課程的時(shí)間。最后,使用alarmManager對(duì)應(yīng)的setExcat()方法,設(shè)定好鬧鐘類(lèi)型、Calendar對(duì)象、PendingIntent對(duì)象即可完成一個(gè)鬧鐘的創(chuàng)建。當(dāng)鬧鐘時(shí)間被觸發(fā)時(shí),會(huì)發(fā)送一個(gè)廣播,通過(guò)AutoReceiver類(lèi)進(jìn)行接收,當(dāng)接收到廣播后會(huì)執(zhí)行其onReceive()回調(diào)方法,在此回調(diào)方法中實(shí)現(xiàn)推送通知。本系統(tǒng)采用的是基于Android自帶的Notification類(lèi)和NotificationManager類(lèi)進(jìn)行本地通知的發(fā)送。在設(shè)定Notification類(lèi)時(shí)同樣需要設(shè)置PendingIntent將其設(shè)置為開(kāi)啟App的主界面即可。本模塊的主界面圖與教學(xué)信息管理界面幾乎相同,收到通知后的界面如下:圖5-14備忘提醒通知圖6總結(jié)與展望6.1基于Android的教學(xué)助手App開(kāi)發(fā)總結(jié)本文闡述了本次畢業(yè)設(shè)計(jì)所開(kāi)發(fā)的基于Android平臺(tái)的教學(xué)助手App所涉及到的幾乎所有技術(shù)支持和實(shí)現(xiàn)方式。實(shí)現(xiàn)了管理課程信息、學(xué)生信息的功能;實(shí)現(xiàn)了基于語(yǔ)音合成和語(yǔ)音識(shí)別的全自動(dòng)考勤功能;實(shí)現(xiàn)了考勤信息管理的功能;實(shí)現(xiàn)了成績(jī)信息管理的功能;實(shí)現(xiàn)了提醒教師上課的備忘提醒功能。通過(guò)對(duì)Android系統(tǒng)開(kāi)發(fā)進(jìn)行深入研究,查閱大量文獻(xiàn)以及教程后才能夠開(kāi)發(fā)出此系統(tǒng)。6.2基于Android的教學(xué)助手App開(kāi)發(fā)展望雖然本文中所提到的所有功能均已實(shí)現(xiàn),且在模擬器及真機(jī)中測(cè)試表現(xiàn)良好,但想要真正做好一個(gè)對(duì)教師提高工作效率有幫助的的教學(xué)助手App仍然有很長(zhǎng)的路要走。在后續(xù)的開(kāi)發(fā)和完善中,優(yōu)化系統(tǒng)的性能、美化系統(tǒng)界面、增加此系統(tǒng)的功能,最終迭代成一個(gè)可以真正提高教學(xué)質(zhì)量的App。6.3基于Android的教學(xué)助手App可改進(jìn)之處在本論文寫(xiě)作和開(kāi)發(fā)此App的過(guò)程中,由于個(gè)人能力不足加之時(shí)間投入不夠充足,本系統(tǒng)仍有幾個(gè)待改進(jìn)之處:(1)系統(tǒng)界面風(fēng)格太過(guò)簡(jiǎn)單,缺乏美感,同時(shí)所使用的圖片資源也較少,導(dǎo)致用戶(hù)觀(guān)感可能較差。(2)由于時(shí)間有限,在本系統(tǒng)測(cè)試的過(guò)程中測(cè)試數(shù)據(jù)比較少,運(yùn)行性能較好。但如果運(yùn)用到實(shí)際,往往需要添加幾百條記錄,數(shù)據(jù)庫(kù)中有十幾個(gè)表,可能會(huì)導(dǎo)致App的流暢性不足。(3)在Android6.0之后的Doze模式中,備忘提醒功能中設(shè)定的時(shí)間與實(shí)際推送時(shí)間并不完全一致。參考文獻(xiàn)周康毅.基于安卓平臺(tái)的教學(xué)助手系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].華中師范大學(xué),2018.劉鶴麗.基于安卓系統(tǒng)的移動(dòng)教學(xué)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].大連理工大學(xué),2016.葉娜,張帆,何箐.基于Bomb云的移動(dòng)教學(xué)助手開(kāi)發(fā)及應(yīng)用研究[J].教育教學(xué)論壇,2

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論