【正文】
說,首先由學(xué)生填寫“課堂教學(xué)評價表”,教務(wù)處在獲得所有課程,所有教師的評價表后,進行匯總、計算,剔除無效數(shù)據(jù),最終確定對每位教師的課堂教學(xué)效果的評價結(jié)果,并給出相應(yīng)的報表。 (3) 通過滿分值為每個評價項目給出權(quán)值。 (2) 雖然一張調(diào)查表同時可以填寫多門課程,但對于數(shù)據(jù)信息實體而言,實際上是一門課只對應(yīng)為一個反饋意見的信息實體,因此,把一張調(diào)查表看作是多張數(shù)據(jù)表的組合。 其中最后兩行數(shù)據(jù)列出學(xué)院和全校課堂教學(xué)評價平均分進行比較分析,以評價出學(xué)院整體課堂教學(xué)效果在全校所處的位置,從而發(fā)現(xiàn)先進和尋找差距。 在獲得所有評分結(jié)果后,教師可以查看屬于自己的個人評分統(tǒng)計結(jié)果,而教務(wù)處可以獲得匯總的評價結(jié)果。 (2) 事務(wù)統(tǒng)計 首先數(shù)據(jù)量龐大必然造成 匯總 運算慢,而匯總慢的本質(zhì)原因就是從事務(wù)進行統(tǒng)計,統(tǒng)計層次低。 主要的 轉(zhuǎn)換和檢驗結(jié)果如下: 主評單 ( 評單號 ,課堂編號,教師姓名,課程名稱,院名,年級,班級,是否有效,班 號) 評單項 (評單號, 評價序號 ,選項,選項符號) 評價方案 ( 評價類別 , 評價序號 ,評價內(nèi)容, A, B, C, D,權(quán)重) 評分標(biāo)準(zhǔn) ( 選項 ,評分) 注:帶下劃線的屬性為關(guān)系的主屬性(即關(guān)鍵字)。 某些課程,由多位教師同時任教,在教學(xué)任務(wù)書中,多位教師編號( PriTeacherID) 使用‘,’號分隔,需要 生成多個評價對象,分別評分。 然而,在相對固定的時間,數(shù)據(jù)發(fā)生變動的可能性極低,在一學(xué)期之內(nèi),一個教師所上課程和對應(yīng)班級是很少發(fā)生變化的,而評教都是在每學(xué)期期末進行,上述的變數(shù)均已經(jīng)發(fā)生,所以在評教過程中,數(shù)據(jù)不存在任何變化,可以采用生成靜態(tài)聯(lián)結(jié)表的方式,避免大表的頻繁聯(lián)結(jié),以提高系統(tǒng)運行效率。 獲取評分課程 由評分對象表( stu_assess)可知,通過課程編號、教師編號和班級編號可唯一確定一門課程,然而學(xué)生除 了在編 教學(xué)班集體上課外,分級教學(xué)、體育課和任選課都是由來自不同班級的的學(xué)生臨時組成教學(xué)班上課, 這些課程沒有班級號,教務(wù)使用分級教學(xué)任務(wù)書來保存分級教學(xué)、體育 課的評分課程,并創(chuàng)建了學(xué)制一年的臨時班級,而任選課僅僅只提供一張學(xué)生選課表(表格 42),需要將其轉(zhuǎn)換為教學(xué)任務(wù)書,任選課班級和學(xué)生表。 為了防止學(xué)生惡意評分,對于全部選 A、全部選 D 的情況將不予提交,對于漏選的情況也都通過 JavaScript 對表單進行判斷,給出漏選的提示。 如圖表 44 所示,頂部的工具欄菜單可以對指標(biāo)體系進行增加、編輯和刪除。 頂部是搜索工具欄,管理人員可按姓名、課程名、職稱、部門(學(xué)院)、課程類型、課程要求、評分學(xué)期、是否滿足統(tǒng)計比率等條件對評分結(jié)果進行篩選。 存儲過程 updateGroupOrder 用于計算教師最終的全??偱琶?、部門(學(xué)院)排名、課程排名和課程類型排名。 圖 48 指標(biāo)統(tǒng)計 界面 網(wǎng)上評教系統(tǒng)的設(shè)計與實現(xiàn) 第 20 頁 用戶管理 這一部分 包括教師信息管理、專家信息管理和系統(tǒng)人員管理,由于功能都大同小異,都是數(shù)據(jù)庫的基本操作(增加、刪除、編輯、查詢、列表顯示),因此編寫通用 數(shù)據(jù)庫操作類來 實現(xiàn)。 圖 412 專家信息管理 系統(tǒng)人員管理 系統(tǒng)人員管理可增加、編輯、刪除后臺人員登錄注冊信息。 其次,由于使用樹結(jié)構(gòu)來顯示評教情況,需要統(tǒng)計每一級學(xué)生的評教進度,由于學(xué)生學(xué)號保存了學(xué)生的年級、學(xué)院、專業(yè)、班級信息,只需使用 SUBSTRING()函數(shù)取學(xué)號相應(yīng)的位數(shù)進行分類匯總求和。 使用專業(yè)信息表( special)生成樹,學(xué) 生權(quán)限表( stu_right)保存勾選的結(jié)點。 圖 417 教師權(quán)限管理 數(shù)據(jù)導(dǎo)出 由于 PHP 并未提供操作 XLS 格式的對象,我采用‘,’號分隔的 CSV 格式導(dǎo)出數(shù)據(jù), ADODB 可直接將查詢結(jié)果集通過 GetArray()函數(shù)轉(zhuǎn)換 為 hash 數(shù)組,大學(xué)畢業(yè)設(shè)計 第 25 頁 通過對數(shù)組元素進行遍例即可輸出為 CSV 格式。 然而 系統(tǒng) 壓力 測試時,并發(fā)量 僅為個位數(shù),遠遠 不能滿足運行要求,最終,對 WEB 服務(wù)器進行緩存加速 ( APC) ,單臺 PⅢ服務(wù)器每秒并發(fā)數(shù)達到 60,完全能夠滿足系統(tǒng)的運行要求 。 大學(xué)畢業(yè)設(shè)計 第 27 頁 謝辭 在即將結(jié)束的四年大學(xué)生活之際,我首先感謝華東交通大學(xué),特別我的指導(dǎo)老師 —— 李山 。感謝各位專家和評委耐心審閱我的論文,他們提出了許多寶貴的意見和建議。 AND type = 39。 AND type = 39。 INSERT temp VALUES(SourceSql) RETURN END STU_AVG 計算平均分 (剔除 上下 7%) CREATE FUNCTION STU_AVG(id int) RETURNS int AS BEGIN DECLARE avg int SELECT avg = AVG(score) FROM (SELECT TOP PERCENT score FROM stu_score WHERE (score IN (SELECT TOP 93 PERCENT score FROM stu_score WHERE as_id = id ORDER BY score)) AND as_id = id ORDER BY score DESC) T RETURN avg END 。) BEGIN UPDATE stu_group_by_course SET iAll = 全??偱琶? (SELECT COUNT(1) + 1 FROM stu_group_by_course WHERE score AND as_term = term), iCourse = 按課程排名 (SELECT COUNT(1) + 1 FROM stu_group_by_course WHERE score AND as_term = term AND Course = ), iCourseType = 按課程類型排名 (SELECT COUNT(1) + 1 FROM stu_group_by_course WHERE score AND as_term = term AND CourseType = ), iDepartment = 按學(xué)院 (部門 )排名 (SELECT COUNT(1) + 1 FROM stu_group_by_course WHERE score AND as_term = term AND te_department = ) FROM stu_group_by_course AS s WHERE score 0 END createStuCourseNum 統(tǒng)計學(xué)生評教課程數(shù) 網(wǎng)上評教系統(tǒng)的設(shè)計與實現(xiàn) 第 32 頁 CREATE PROCEDURE createStuCourseNum term nvarchar(6) AS BEGIN TRANSACTION SELECT , , , INTO ClassCourseNum FROM ( 分級教學(xué) SELECT StudentID, ClassID FROM FJStudent UNION 選修課程 SELECT StudentID, ClassID FROM XXStudent UNION 教學(xué)班 SELECT StudentID, SUBSTRING(ClassCode, 1, 12) AS ClassID FROM StudentInfo) s INNER JOIN ( 班級評分課程數(shù)量 SELECT as_cl_id, COUNT(1) AS CourseNum,as_term AS Term FROM stu_assess_join WHERE as_term = term GROUP BY as_cl_id,as_term) a ON = DROP TABLE stu_course_num 學(xué)生評分課程數(shù)量 SELECT , SUBSTRING(,1,12) AS ClassID, INTO stu_course_num FROM s INNER JOIN (SELECT StudentID, SUM(CourseNum) AS CourseNum FROM ClassCourseNum GROUP BY StudentID) c ON = DROP TABLE ClassCourseNum COMMIT SPLIT 分隔函數(shù) 大學(xué)畢業(yè)設(shè)計 第 33 頁 CREATE FUNCTION SPLIT( SourceSql varchar(8000), StrSeprate varchar(10) ) RETURNS temp table(a varchar(100)) BEGIN DECLARE i int SET SourceSql=RTRIM(LTRIM(SourceSql)) SET i=CHARINDEX(StrSeprate, SourceSql) WHILE i=1 BEGIN INSERT temp VALUES(left(SourceSql, i 1)) SET SourceSql = SUBSTRING(SourceSql, i + 1, LEN(SourceSql) i) SET i = CHARINDEX(StrSeprate, SourceSql) END IF SourceSql 39。) BEGIN UPDATE stu_group_by_course SET score = ,stat_stdev = ,stat_stdevp = FROM stu_group_by_course a INNER JOIN ( SELECT , , , , t .stat_stdev, t .stat_stdevp FROM ( 平均分 SELECT as_te_id, as_co_id, as_term, CAST(AVG() AS numeric(18, 2)) AS score FROM stu_assess_join WHERE score 0 AND as_term = term GROUP BY as_te_id, as_co_id, as_term ) b LEFT JOIN ( 統(tǒng)計函數(shù) SELECT as_te_id, as_co_id, as_term,