◆蔣艷華 王詩童
?
基于移動平臺的課程目標達成度問卷調查系統的設計與實現
◆蔣艷華 王詩童
(中國民航大學計算機科學與技術學院 天津 300300)
教師在授課結束后需要收集課程的教學目標達成度,即學生對各知識點的掌握情況,以便優化后續教學設計。采用傳統的紙質問卷調查方式費時費力、效率低。本文設計并實現了基于移動平臺的課程目標達成度問卷調查系統,該系統支持教師在線發布調查問卷,學生通過手機回答問卷,輕松實現課程目標達成情況的統計。
課程目標;問卷調查;安卓程序開發
在工程教育認證過程中,課程作為整個培養方案的具體承載者,要求其教學目標能夠支撐培養目標。也就是說,學生在學完課程后應該掌握畢業要求中的哪些知識點,具備哪些技能等。另外工程教育認證特別強調評估,即確定、收集和準備所需資料和數據的過程,以便對畢業要求和培養目標是否達成進行評價。因此,對于授課教師來講,收集學生對教學內容的掌握情況,學生對教學內容有什么期待和要求,掌握課程目標達成度是非常重要的。收集課程目標達成度的傳統方法是在授課結束后,由任課教師發放紙質調查問卷,學生填寫后再由任課教師對其進行統計和分析。提前出卷、打印問卷、發放問卷、收集問卷、整理統計問卷這一系列過程較為繁瑣,需要占據大量的時間、人力、物力和財力成本,已經完全不能跟上時代進步的步伐。本文設計并實現了一個基于移動平臺的課程目標達成度問卷調查系統,能輕松解決以上問題。
系統主要包括任課教師設計問卷,學生回答問卷以及教師對問卷進行統計三個主要功能,如圖1所示。

圖1 Web端功能模塊設計
由于問卷設計過程中需要錄入大量文字性內容,為方便操作,將其放置在電腦上(即Web端)進行。學生回答問卷時只需要點選相應的按鈕即可,需要鍵入的內容較少,因此將其放置在手機端,如圖2所示。為方便使用,學生回答問卷也可在Web端進行。本系統的手機端應用程序是在Andriod平臺上開發的。

圖2 Android端功能模塊設計
在Web端,實現教師和學生不同身份登錄,教師登錄后從所授課程中選擇不同課程,發布對應的問卷,并對最后學生回答問卷的情況進行統計分析。學生登錄后從已選課程中選擇對應課程回答對應問卷。在Android端,實現教師和學生不同身份登錄,學生登錄后選擇課程,回答問卷。教師登錄后從所授課程中選擇課程,查看課程調查問卷的數據直方圖。通過這樣一個問卷調查系統,不受時間、空間限制,可以及時將學生的回答情況反饋給教師,教師針對學生的回答情況對教學方式與內容進行改進,提高教學質量。
Web端和Andriod端共用一個數據庫,如表1至表7所示。同一門課程可以由多位老師講授,同一位老師可以講授多門課程。一門課程可以由多名同學選修,一名學生可以選修多門課程。一位老師一門課程的調查問卷中可以包含多道題目,學生根據自己選修的是哪位教師的哪門課程回答問卷中的所有問題,回答內容記錄在系統中。

表1 systudent(學生表)

表2 syteacher(教師表)

表3 sycourse課程表

表4 schoose學生選課表

表5 tteach教師授課表

表6 syquestion問卷問題發布表
系統采用MVC架構實現。其中Model(模型)是應用程序中用于處理應用程序數據邏輯的部分,通常模型對象負責在數據庫中存取數據。View(視圖)是應用程序中處理數據顯示的部分,通常視圖是依據模型數據創建的。Controller(控制器)是應用程序中處理用戶交互的部分,通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據。
Web端 MVC設計如圖3所示。具體實現為從JSP(V)中提取數據到Servlet(C),在JavaBeans(M)中實例化調用,從數據庫中讀取或保存數據,最后將結果返回到JSP(V)頁面[1]。

圖3 web端mvc框架
Android端的MVC架構如圖4所示[2]。具體實現為用戶輸入信息后,視圖(V)將信息發送到控制器(C),控制器(C)更新模型(M)中的數據,控制器(C)也可以取出模型(M)中的數據,根據模型(M)的變化更新視圖(V)。

圖4 Android端mvc框架
系統開發過程中,遇到了很多問題,摘取主要部分列舉如下。其中Web端主要包括:
(1) 中文亂碼問題:在項目中,主要有三處會出現中文亂碼問題。
①jsp頁面顯示,解決方案為設置charset=utf-8;
②頁面跳轉傳值,解決方案為在取參數值前設置request.setCharacterEncoding(“utf-8”);
③連接數據庫時出現無法識別中文,解決方案為設置URL的字符編碼characterEncoding=UTF-8以防止亂碼。
(2)保存輸入的值,并在需要的時候提取出來。
①使用cookie對象,在需要設置“是否需記住”時可以使用;
②定義一個用戶類。用set方法把輸入的數據存入類中,需要用時用get方法取出,語句簡單,但是需要額外定義一個類。在本項目中,多個頁面跳轉都需要用到“用戶名”,可以用此方法取出;
③把值存入數據庫,在需要的時候連接數據庫。連接數據庫的語句雖然比較固定,但是行數較多,可以在需要存放大量數據時使用,如發布問卷,收集問卷結果等。
Android端遇到的主要技術問題如下:
(1)添加多個視圖并綁定視圖后,控件的監聽出了問題。通常采用兩種方法將對象實例化: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 );后監聽失敗,更正為PointThreei = mView.findViewById ( R.id.radioButton_3point );后可以正常使用。
(2)空指針異常:這種錯誤是最常見也最令人頭疼的,而且每次出現的原因都很簡單,查找起來卻很麻煩,只有在學習的過程中逐步改進寫代碼的方式:對變量初始化,更透徹地了解對象的使用方法,有充足的耐心等良好的習慣和品質才能慢慢減少出錯機率。
Web端基于Tomcat服務器,mysql數據庫,在eclipse中用java和jsp實現。
進入登錄界面以后,在用戶名后面文本框中輸入登錄的用戶名,密碼的文本框中輸入密碼,選擇對應的登錄身份,即可登錄系統。使用radio控件,通過value值的不同,進入不同表中查找對應用戶,用戶名和密碼匹配后方可登錄到系統中。
教師進入問卷編輯頁面,選擇課程名稱、題號,添加對應題號內容,如圖5所示。所有題目添加完成后發布調查問卷,并將題目存入數據庫表中。

圖5 問卷編輯與發布
學生登錄系統后,從學生選課表中調出對應學生所選課程,如圖6所示。

圖6 選擇問卷
學生通過選擇不同的課程進入不同的問卷答題界面,如圖7所示。提交后問卷回答數據保存到數據庫中,以便教師進行統計分析。

圖7 調查問卷
登錄時,通過HttpURLConnection建立和數據庫的連接[4],用post的方式發送數據,設置請求超時,設置運行輸入輸出,設置自動執行HTTP重定向,獲取輸出流,判斷是否響應成功,響應成功即可登錄。
調查問卷的顯示和填寫如圖8所示。通過ListView顯示課程名列表,按照activity之間傳遞的信息判斷該從數據庫取出哪個問卷。通過問卷的屬性用getSize()獲取問卷的問題數目,用addView()動態加載控件到父布局,綁定子視圖控件,設置監聽方法,更新保存數據到數據庫。

圖8 Andriod端回答問卷界面
統計所有調查問卷的回答,顯示課程目標達成度的統計情況如圖9所示。先定義視圖的高度寬度,x軸y軸的原點位置,然后用Paint在Canvas畫好x軸y軸,x軸y軸的箭頭,x軸y軸的刻度線,通過一個二維數組傳入柱狀圖數據,從數據庫取出選擇第i題的第i個選項的人數。

圖9 課程目標達成度直方圖
本文對課程目標達成度問卷調查系統的設計與實現過程進行了簡單介紹,通過兩個平臺共同完成了課程目標達成度問卷調查系統。但是由于設計較為簡單、功能實現比較單一,所以本系統還有很多值得改進的地方。
[1]李興華,王月清.名師講壇 Java Web開發實戰經典[M].北京:清華大學出版社,2010.
[2]Bill Phillips , Chris Stewart , Brian Hardy , Kristin Marsicano (作者) 王明發 (譯者) Android編程權威指南.人民郵電出版社,2016.
[3]李寧.Java Web開發速學寶典[M].北京:中國鐵路出版社,2009.
[4]王小科.Android入門經典[M].北京:機械工業出版社, 2013.
大學生創新創業訓練計劃項目(項目編號:IECAUC2017047)。