◆蔣艷華 王詩童
?
基于移動平臺的課程目標(biāo)達成度問卷調(diào)查系統(tǒng)的設(shè)計與實現(xiàn)
◆蔣艷華 王詩童
(中國民航大學(xué)計算機科學(xué)與技術(shù)學(xué)院 天津 300300)
教師在授課結(jié)束后需要收集課程的教學(xué)目標(biāo)達成度,即學(xué)生對各知識點的掌握情況,以便優(yōu)化后續(xù)教學(xué)設(shè)計。采用傳統(tǒng)的紙質(zhì)問卷調(diào)查方式費時費力、效率低。本文設(shè)計并實現(xiàn)了基于移動平臺的課程目標(biāo)達成度問卷調(diào)查系統(tǒng),該系統(tǒng)支持教師在線發(fā)布調(diào)查問卷,學(xué)生通過手機回答問卷,輕松實現(xiàn)課程目標(biāo)達成情況的統(tǒng)計。
課程目標(biāo);問卷調(diào)查;安卓程序開發(fā)
在工程教育認證過程中,課程作為整個培養(yǎng)方案的具體承載者,要求其教學(xué)目標(biāo)能夠支撐培養(yǎng)目標(biāo)。也就是說,學(xué)生在學(xué)完課程后應(yīng)該掌握畢業(yè)要求中的哪些知識點,具備哪些技能等。另外工程教育認證特別強調(diào)評估,即確定、收集和準(zhǔn)備所需資料和數(shù)據(jù)的過程,以便對畢業(yè)要求和培養(yǎng)目標(biāo)是否達成進行評價。因此,對于授課教師來講,收集學(xué)生對教學(xué)內(nèi)容的掌握情況,學(xué)生對教學(xué)內(nèi)容有什么期待和要求,掌握課程目標(biāo)達成度是非常重要的。收集課程目標(biāo)達成度的傳統(tǒng)方法是在授課結(jié)束后,由任課教師發(fā)放紙質(zhì)調(diào)查問卷,學(xué)生填寫后再由任課教師對其進行統(tǒng)計和分析。提前出卷、打印問卷、發(fā)放問卷、收集問卷、整理統(tǒng)計問卷這一系列過程較為繁瑣,需要占據(jù)大量的時間、人力、物力和財力成本,已經(jīng)完全不能跟上時代進步的步伐。本文設(shè)計并實現(xiàn)了一個基于移動平臺的課程目標(biāo)達成度問卷調(diào)查系統(tǒng),能輕松解決以上問題。
系統(tǒng)主要包括任課教師設(shè)計問卷,學(xué)生回答問卷以及教師對問卷進行統(tǒng)計三個主要功能,如圖1所示。
圖1 Web端功能模塊設(shè)計
由于問卷設(shè)計過程中需要錄入大量文字性內(nèi)容,為方便操作,將其放置在電腦上(即Web端)進行。學(xué)生回答問卷時只需要點選相應(yīng)的按鈕即可,需要鍵入的內(nèi)容較少,因此將其放置在手機端,如圖2所示。為方便使用,學(xué)生回答問卷也可在Web端進行。本系統(tǒng)的手機端應(yīng)用程序是在Andriod平臺上開發(fā)的。
圖2 Android端功能模塊設(shè)計
在Web端,實現(xiàn)教師和學(xué)生不同身份登錄,教師登錄后從所授課程中選擇不同課程,發(fā)布對應(yīng)的問卷,并對最后學(xué)生回答問卷的情況進行統(tǒng)計分析。學(xué)生登錄后從已選課程中選擇對應(yīng)課程回答對應(yīng)問卷。在Android端,實現(xiàn)教師和學(xué)生不同身份登錄,學(xué)生登錄后選擇課程,回答問卷。教師登錄后從所授課程中選擇課程,查看課程調(diào)查問卷的數(shù)據(jù)直方圖。通過這樣一個問卷調(diào)查系統(tǒng),不受時間、空間限制,可以及時將學(xué)生的回答情況反饋給教師,教師針對學(xué)生的回答情況對教學(xué)方式與內(nèi)容進行改進,提高教學(xué)質(zhì)量。
Web端和Andriod端共用一個數(shù)據(jù)庫,如表1至表7所示。同一門課程可以由多位老師講授,同一位老師可以講授多門課程。一門課程可以由多名同學(xué)選修,一名學(xué)生可以選修多門課程。一位老師一門課程的調(diào)查問卷中可以包含多道題目,學(xué)生根據(jù)自己選修的是哪位教師的哪門課程回答問卷中的所有問題,回答內(nèi)容記錄在系統(tǒng)中。
表1 systudent(學(xué)生表)
表2 syteacher(教師表)
表3 sycourse課程表
表4 schoose學(xué)生選課表
表5 tteach教師授課表
表6 syquestion問卷問題發(fā)布表
系統(tǒng)采用MVC架構(gòu)實現(xiàn)。其中Model(模型)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分,通常模型對象負責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。View(視圖)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分,通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。Controller(控制器)是應(yīng)用程序中處理用戶交互的部分,通常控制器負責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。
Web端 MVC設(shè)計如圖3所示。具體實現(xiàn)為從JSP(V)中提取數(shù)據(jù)到Servlet(C),在JavaBeans(M)中實例化調(diào)用,從數(shù)據(jù)庫中讀取或保存數(shù)據(jù),最后將結(jié)果返回到JSP(V)頁面[1]。
圖3 web端mvc框架
Android端的MVC架構(gòu)如圖4所示[2]。具體實現(xiàn)為用戶輸入信息后,視圖(V)將信息發(fā)送到控制器(C),控制器(C)更新模型(M)中的數(shù)據(jù),控制器(C)也可以取出模型(M)中的數(shù)據(jù),根據(jù)模型(M)的變化更新視圖(V)。
圖4 Android端mvc框架
系統(tǒng)開發(fā)過程中,遇到了很多問題,摘取主要部分列舉如下。其中Web端主要包括:
(1) 中文亂碼問題:在項目中,主要有三處會出現(xiàn)中文亂碼問題。
①jsp頁面顯示,解決方案為設(shè)置charset=utf-8;
②頁面跳轉(zhuǎn)傳值,解決方案為在取參數(shù)值前設(shè)置request.setCharacterEncoding(“utf-8”);
③連接數(shù)據(jù)庫時出現(xiàn)無法識別中文,解決方案為設(shè)置URL的字符編碼characterEncoding=UTF-8以防止亂碼。
(2)保存輸入的值,并在需要的時候提取出來。
①使用cookie對象,在需要設(shè)置“是否需記住”時可以使用;
②定義一個用戶類。用set方法把輸入的數(shù)據(jù)存入類中,需要用時用get方法取出,語句簡單,但是需要額外定義一個類。在本項目中,多個頁面跳轉(zhuǎn)都需要用到“用戶名”,可以用此方法取出;
③把值存入數(shù)據(jù)庫,在需要的時候連接數(shù)據(jù)庫。連接數(shù)據(jù)庫的語句雖然比較固定,但是行數(shù)較多,可以在需要存放大量數(shù)據(jù)時使用,如發(fā)布問卷,收集問卷結(jié)果等。
Android端遇到的主要技術(shù)問題如下:
(1)添加多個視圖并綁定視圖后,控件的監(jiān)聽出了問題。通常采用兩種方法將對象實例化:LayoutInflater找res/layout/下的xml布局文件來實例化。
①LayoutInflater inflater = getLayoutInflater();
②View view = inflater.inflate(R.layout.XX_XX, null);
findViewById()是找xml布局文件下的具體widget控件實例化,但是在主布局下的子布局中綁定視圖(View)用PointThreei = findViewById ( R.id.radioButton_3point );后監(jiān)聽失敗,更正為PointThreei = mView.findViewById ( R.id.radioButton_3point );后可以正常使用。
(2)空指針異常:這種錯誤是最常見也最令人頭疼的,而且每次出現(xiàn)的原因都很簡單,查找起來卻很麻煩,只有在學(xué)習(xí)的過程中逐步改進寫代碼的方式:對變量初始化,更透徹地了解對象的使用方法,有充足的耐心等良好的習(xí)慣和品質(zhì)才能慢慢減少出錯機率。
Web端基于Tomcat服務(wù)器,mysql數(shù)據(jù)庫,在eclipse中用java和jsp實現(xiàn)。
進入登錄界面以后,在用戶名后面文本框中輸入登錄的用戶名,密碼的文本框中輸入密碼,選擇對應(yīng)的登錄身份,即可登錄系統(tǒng)。使用radio控件,通過value值的不同,進入不同表中查找對應(yīng)用戶,用戶名和密碼匹配后方可登錄到系統(tǒng)中。
教師進入問卷編輯頁面,選擇課程名稱、題號,添加對應(yīng)題號內(nèi)容,如圖5所示。所有題目添加完成后發(fā)布調(diào)查問卷,并將題目存入數(shù)據(jù)庫表中。
圖5 問卷編輯與發(fā)布
學(xué)生登錄系統(tǒng)后,從學(xué)生選課表中調(diào)出對應(yīng)學(xué)生所選課程,如圖6所示。
圖6 選擇問卷
學(xué)生通過選擇不同的課程進入不同的問卷答題界面,如圖7所示。提交后問卷回答數(shù)據(jù)保存到數(shù)據(jù)庫中,以便教師進行統(tǒng)計分析。
圖7 調(diào)查問卷
登錄時,通過HttpURLConnection建立和數(shù)據(jù)庫的連接[4],用post的方式發(fā)送數(shù)據(jù),設(shè)置請求超時,設(shè)置運行輸入輸出,設(shè)置自動執(zhí)行HTTP重定向,獲取輸出流,判斷是否響應(yīng)成功,響應(yīng)成功即可登錄。
調(diào)查問卷的顯示和填寫如圖8所示。通過ListView顯示課程名列表,按照activity之間傳遞的信息判斷該從數(shù)據(jù)庫取出哪個問卷。通過問卷的屬性用getSize()獲取問卷的問題數(shù)目,用addView()動態(tài)加載控件到父布局,綁定子視圖控件,設(shè)置監(jiān)聽方法,更新保存數(shù)據(jù)到數(shù)據(jù)庫。
圖8 Andriod端回答問卷界面
統(tǒng)計所有調(diào)查問卷的回答,顯示課程目標(biāo)達成度的統(tǒng)計情況如圖9所示。先定義視圖的高度寬度,x軸y軸的原點位置,然后用Paint在Canvas畫好x軸y軸,x軸y軸的箭頭,x軸y軸的刻度線,通過一個二維數(shù)組傳入柱狀圖數(shù)據(jù),從數(shù)據(jù)庫取出選擇第i題的第i個選項的人數(shù)。
圖9 課程目標(biāo)達成度直方圖
本文對課程目標(biāo)達成度問卷調(diào)查系統(tǒng)的設(shè)計與實現(xiàn)過程進行了簡單介紹,通過兩個平臺共同完成了課程目標(biāo)達成度問卷調(diào)查系統(tǒng)。但是由于設(shè)計較為簡單、功能實現(xiàn)比較單一,所以本系統(tǒng)還有很多值得改進的地方。
[1]李興華,王月清.名師講壇 Java Web開發(fā)實戰(zhàn)經(jīng)典[M].北京:清華大學(xué)出版社,2010.
[2]Bill Phillips , Chris Stewart , Brian Hardy , Kristin Marsicano (作者) 王明發(fā) (譯者) Android編程權(quán)威指南.人民郵電出版社,2016.
[3]李寧.Java Web開發(fā)速學(xué)寶典[M].北京:中國鐵路出版社,2009.
[4]王小科.Android入門經(jīng)典[M].北京:機械工業(yè)出版社, 2013.
大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目(項目編號:IECAUC2017047)。