摘 要:為了高效快捷地實現教學質量評測,采用J2EE 中JSP,Servlet,Javabean等技術,基于MVC 的設計模式,開發出基于MVC 設計模式的教學質量評測系統。首先介紹MVC模式的結構,闡述MVC 模式的工作原理,然后分析教學質量評測系統的功能模塊和詳細實現,最后著重闡述系統開發過程中采用的關鍵技術。高效的數據庫設計是本系統的突出特點。立足于不同用戶角色、準確分析其操作流程,并在此基礎上進行系統的邏輯層設計。
關鍵詞:教學質量評測;MVC;數據庫連接池;Javabean
中圖分類號:TP311.52 文獻標識碼:B
文章編號:1004-373X(2008)10-039-03
Design and implementation of Teaching Quality Evaluation System Based on MVC Mode
SONG Rongjie,YANG Yanrong,HU Defu
(Northwest AF University,Xi′an,712100,China)
Abstract:For the sake of carrying out teaching quality evaluation effectively and rapidly,the system of teaching quality evaluation based on MVC has been developed with the technology of JSP,Servlet,Javabean in J2EE.The framework and working principle of MVC are first introduced.Then the function modules and particular realization of the teaching quality evaluation system are analyzed.Finally,the key technologies adopted in this system are expounded.The effective database is the particularity of this system.Established in the role of different users,the logic modules of this system are designed based on precisely analyzed the operating flow and this is also the innovation of this paper.
Keywords:teaching quality evaluation;MVC;database connection pool;Javabean
1 引 言
教學質量評測是各個高等院校教務管理部門的工作重點之一,也是學生對教師教學質量的一種數據化的客觀反映。傳統的評教模式不僅耗費大量的人力、物力,準確度、效率不高,而且反饋的信息量有限并且信息反饋相對滯后。
本文針對學生評教的現狀,開發出基于MVC 設計模式的教學質量評測系統,本系統不但實現了評教過程的網絡化、自動化,而且具有一定的可擴展性。鑒于大部分高校的校園網建設都已成型,網絡帶寬完全可以支持上千人以上的在線并發訪問,因此開發基于MVC的教學質量評測系統是相當實際且必要的。
2 MVC模式的結構
20 世紀70 年代,MVC模式在Small2talk2 80 的GUI 設計中被提出。MVC 模式把數據處理、程序輸入輸出控制以及數據表示分離開來,并且描述不同部分的對象之間的通信方式,使他們不必卷入彼此的數據模型和方法中,使程序結構變得清晰而靈活。MVC模式包括3個部分:模型(Model) 、視圖(View) 和控制器(Controller),分別對應于內部數據、數據表示和輸入/輸出控制部分。MVC模式的一般結構如圖1所示。

3 教學質量評測系統的實現
3.1 需求分析
在充分了解教學評測實際流程的基礎上,本系統應具備以下功能:
(1) 至少支持4種不同類型的用戶:學生、教師、教學管理者和系統管理員,分配不同的操作權限、對應不同的操作界面、生成不同的操作結果。
(2) 由于整個系統正式投入運行后,用戶人數相對穩定,但數量相當龐大,并且用戶同時在線訪問的峰值會很高,因此系統要支持一定數量的并發訪問。
(3) 為了保證每個學生都能評教,并且僅能對1門課程有效評教1次,故用戶的有效數據應能長期保存,并能防止用戶重新評教而覆蓋已有的有效數據。在沒有生成最后的統計結果之前,對用戶提交的數據應該嚴格保密,并且防止人為修改。
3.2 功能模塊設計
根據需求分析,本系統包括6個主要模塊和3個擴展模塊,系統模塊如圖2所示。
用戶登錄及身份驗證模塊 主要完成用戶登錄界面的設計與實現,同時設計用戶的身份驗證功能。
學生評教模塊 主要完成學生對教師的評教功能。此模塊需要學生的課表及教師課表支持,通過查詢課表確定學生要參與評教的課程及該門課程所對應的教師。最后生成的評教數據被保存并做相關的處理,等待后繼的操作。
評教結果查詢模塊 主要完成學生評教數據的匯總、統計、格式化顯示及導出。學生、教師和教學管理者可以查看屬于自己權限范圍內的評教結果,并對結果做相應的處理。
個人信息設置模塊 為用戶提供對個人私有信息的訪問與更新的統一接口,用戶可以通過此接口修改自己的部分注冊信息。
系統管理模塊 用于管理員完成對整個系統運行參數的設置與管理,用戶的添加、刪除與更新,系統公告的添加、刪除和更新,論壇的管理,及其他一些設置。
留言模塊 主要完成師生的相互交流功能。

為了方便擴展系統功能,本系統還設置了課表信息查詢模塊、短消息模塊、論壇模塊3個擴展模塊。
3.3 系統詳細實現
系統的開發使用了J2EE的JSP,Servlet,JavaBean和JDBC技術,數據庫采用SQL Server2000。以下以學生評教模塊為例,介紹系統的實現,其他模塊的詳細實現略。
學生評教模塊通過用Web頁面代替傳統的紙質評分表,每個學生對自已所選的課程按評分表中所列的評分項逐一進行評分,每個評分項有一定的權重,評分等級分5等:優秀5分;良好4分;中等3分;尚可2分;較差1分,每一個小項的分值=權重×等級。
評教頁面不做任何的計算,只負責收集完整的學生評教數據,包括:學生信息、該門課程的ID、負責該門課程的教師的信息及此學生對該門課程的評分。所有數據完整后,用戶通過提交按鈕將數據提交出去,數據將流向控制器Teaching_state,由此Servlet完成所有數據的計算匯總,并做存儲,最后給出評教成功與否的信息提示。
3.3.1 界面設計
此模塊主要由4個頁面組成default.jsp,teaching_state.jsp,teaching_do.jsp,success.jsp,頁面設計采用Dreamwave 8.0和其他輔助工具完成,同時采用獨立的CSS來控制系統風格,并在頁面內輔助部分局部使用Javascript代碼來增強頁面的靈活性,也保證了表單成功提交的概率。4個頁面的主要功能為:default.jsp:為用戶的根目錄,用戶通過選擇在線評測進入評教頁面;teaching_state.jsp:列出當前用戶的所有課程,并對已經評教完成的課程給出評教結果,還沒完成的給出進入評教頁面的鏈接;teaching_do.jsp:列出詳細的評分項,用戶針對每一小項進行打分,并提交評教結果。success.jsp:給出提示信息。
3.3.2 邏輯設計
邏輯部分主要由3個Controller實現。3個控制器調用適當的JavaBean完成整個流程。邏輯部分的代碼很多,下面只分析Teaching_state.java中的一小部分關鍵代碼:
request.setCharacterEncoding(\"gb2312\");
HttpSession session = request.getSession();
......// 獲取從JSP頁面提交過來的參數,并做權限驗證
DBUtil2 db = 1;[JY]// 數據庫操作對象
ResultSet rs = 1;[JY]// 結果集對象
try {
myLevel = Integer.parseInt(g_myLevel);
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
// 通過myLevel 給不同的用戶指向不同的視圖
if (myLevel == 0) { // 學生身份
try {
db = new DBUtil2();// 打開數據庫
db.getConnection();// 打開連接
String find_student_course = \"select distinct student_table.id as studentId,course_table.id as courseId,course_table.name as courseName,teacher_table.id as teacherId,teacher_table.name as teacherName,teacher_table.department,teacher_table.job,course_map_table.hasTeaching from student_table,course_table,course_map_table,teacher_table where course_table.id = course_map_table.courseId and course_map_table.userId = student_table.id and student_table.id=′\" + g_userId + \"′ and course_table.isIndependent =′1′ and course_map_table.courseId in (select course_map_table.courseId from course_map_table where course_map_table.userId = teacher_table.id);\";// 查詢條件
rs = db.executeQuery(find_student_course);
// 創建容器存儲數據
Vector teaching_state = new Vector();
Teaching_stateBean tsbean;
String state = \"\";
Statement sql = db.getCon().createStatement();
while (rs.next()) {
tsbean = new Teaching_stateBean();
tsbean.setStudentId(rs.getString(\"studentId\"));
tsbean.setCourseId(rs.getString(\"courseId\"));
......// write to bean
[JY]// 判斷是否已經評完
if (!tsbean.isHasTeaching()) { // no
tsbean.setExtension(\"進入評測頁面\");
} else { // 如果已經評完,則計算該門課程的得分
String score = \"select score from record_table where studentId = \"′+ tsbean.getStudentId() + ′\"and teacherId = \"′ + tsbean.getTeacherId() + ′\"and courseId = \"′ + tsbean.getCourseId() +′\";
rs2 = sql.executeQuery(score);
......// 常規的查詢操作
request.setAttribute(\"teaching_state\",teaching_state);
// 釋放資源
sql.close();
db.closeRs();
db.closeSql();
db.closeCon();
......// 其他異常處理等
4 系統開發過程中采用關鍵技術
4.1 數據庫連接池技術
(1)引入數據庫連接池的意義:
動態Web站點往往用數據庫存儲的信息生成Web頁面,每一個頁面請求導致一次數據庫訪問。連接數據庫不僅要開銷一定的通訊和內存資源,還必須完成用戶驗證、安全上下文配置這類任務,因而往往成為最為耗時的操作。如果某個基于數據庫的Web應用只需建立一次初始連接,不同頁面請求能夠共享同一連接,就能獲得顯著的性能改善。
(2)連接池的配置:
本系統中采用的是Apache組織提供的開發源代碼的DBCP連接池。在配置連接池之前必須要做如下準備工作:
①安裝好Tomcat 5.5.9 Web服務器及Tomcat 5.5.23-admin配置工具;
②安裝好SQL Server 2000數據庫,并打好sp3補丁,下載好JDBC驅動程序;
③確保系統的1433端口開放。
登錄Tomcat Web Server Administration Tool.,在右側的右側Available Actions下拉菜單中選擇Create New Data Source,配置數據如下:
JNDI Name:JDBC/pcsystem_db
Data Source URL:JDBC:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pcsystem_db;SelectMethod=Cursor;
JDBC Driver Class:com.microsoft.JDBC.sqlserver.SQLServerDriver
User Name:root
Password:root
Max.Active Connections:10
Max.Idle Connections:2
Max.Wait for Connection:8000
Validation Query:
各參數含義為:
JNDI Name:指定此數據庫連接池的JNDI名稱,并將名稱JDBC/pcsystem_db與DatabaseName為pcsystem_db的數據庫強行綁定;
DataSource URL: 指定數據庫的數據源信息,pcsytem_db是物理數據庫的名稱,SelectMethod=Cursor指定可以人工控制事務提交;
JDBC Driver Class: 指定數據庫的驅動程序的連接字符串;
User Name: 指定訪問數據庫時所用的用戶名為root,此用戶采用Windows+SQL Server 驗證方式,操作權限同sa;
Password: 指定用戶名為root的用戶在連接數據庫時的密碼;
Max Active Connections: 連接池中的最大連接數,此值應該多方面考慮,權衡利弊后取一個比較平衡值;
Max Idle Connections:指定連接池中允許的最大空閑連接數;
Max Wait for Connection: 指定連接的最大超時時間。
4.2 設計數據庫操作工具類DBUtil和DBUtil2
由于在本系統中要頻繁地訪問數據庫,并且數據庫的很多操作相對更容易出現各種Exception及Error,為了更方便處理可能發生的各種異常,可以專門產生一個更容易操作的類,提高代碼的復用率,同時也減輕了所有數據庫操作的工作量。
DBUtil與DBUtil2都是為了達到上述目的而設計的,并且在正常的情況下是完全可用的。區別在于DBUtil只是傳統的連接方式,而DBUtil2是在連接池的基礎上的封裝,為了能提高此類的通用性,類的設計嚴格按照JavaBean的規范開發。
4.3 Model層的建立
為了充分利用MVC模式的優點,并在開發過程中盡可能使數據表示層與業務邏輯層相分離,增強系統中組件的復用性,減低代碼的冗余度,故在系統中設計了大量的JavaBean來服務于控制器和視圖。JavaBean的建立嚴格按照JavaBean的技術規范完成,以保證其通用性。同時為了在開發時從名字上將JavaBean與其他Java文件區分,所有JavaBean都加以后綴Bean。由于JavaBean數量很大,且分散在各個模塊實現的過程中,故不單獨介紹。
5 結 語
隨著信息技術的普及和國家對高校教學質量要求的不斷提高,基于網絡平臺的教學質量評測系統必將代替傳統的基于“紙-筆”的評教模式。而基于MVC 設計模式開發的教學質量評測系統由于采用MVC 設計模式帶來的系統易維護、易擴展性,必將在教育信息化日益深入的大環境下更有實用價值和使用前景。
參 考 文 獻
[1]姚延濤,王煜,沈鈞毅.采用增強的MVC 模式提高面向對象應用能力[J].小型微型計算機系統,2002(12):23-25.
[2]郝玉龍,姜樺.J2EE編程技術[M].北京:清華大學出版社,2005.
[3][美]阿盧.J2EE核心模式[M].劉天北,熊節,譯.北京:機械工業出版社,2005.
[4]任中方,張華,閆明松,等.MVC 模式研究的綜述[J].計算機應用研究,2004(10):5-8,12.
[5]孫元.Java語言SQL接口[CD2]JDBC編程技術[M].北京:清華大學出版社,1997.
[6][美]Hans Bergsten.JSP設計[M].3版.朱濤江,林琪,譯.北京:清華大學出版社,1998.
[7]孫鑫.Java Web開發詳解:XML+XSLT+Servlet+JSP深入剖析與實例應用[M].北京:電子工業出版社,2006.[8][美]布朗,[美]霍爾.JSP與Servlet核心編程[M].2版.趙學良,譯.北京:清華大學出版社,2004.
[9]王行言.Java 語言與面向對象程序設計[M].北京:清華大學出版社,2000.
作者簡介 宋榮杰 女,1981年出生,河南南陽人,助教。主要從事計算機科學與技術方面的研究工作。