曾珍珍+劉海
摘 要:為促使高等院校在學(xué)校、專(zhuān)業(yè)、課程、教師和學(xué)生不同層面建立完整且相對(duì)獨(dú)立的自我質(zhì)量保證機(jī)制,強(qiáng)化各層級(jí)質(zhì)量管理系統(tǒng)的依存關(guān)系,形成全要素網(wǎng)絡(luò)化的內(nèi)部質(zhì)量保證體系,設(shè)計(jì)并實(shí)現(xiàn)了教學(xué)質(zhì)量保證和持續(xù)診斷改進(jìn)系統(tǒng)。采用MySQL5.0+PHP相結(jié)合方式開(kāi)發(fā),使系統(tǒng)更貼近教學(xué)實(shí)際,突顯學(xué)生能力培養(yǎng),以課程教學(xué)過(guò)程的標(biāo)準(zhǔn)化促進(jìn)教學(xué)質(zhì)量的提升,增強(qiáng)了教學(xué)的過(guò)程性評(píng)價(jià)和數(shù)據(jù)分析在教學(xué)質(zhì)量評(píng)價(jià)中的地位。
關(guān)鍵詞:教學(xué)質(zhì)量;診改信息;過(guò)程性評(píng)價(jià);數(shù)據(jù)分析
DOIDOI:10.11907/rjdk.172196
中圖分類(lèi)號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2018)002-0108-06
0 引言
在高等院校課堂教學(xué)中掌握學(xué)習(xí)進(jìn)度是關(guān)鍵,作業(yè)是學(xué)生接受知識(shí)進(jìn)度的最好體現(xiàn)。教師在進(jìn)行作業(yè)批改與分析中往往會(huì)占用很多時(shí)間,難以把握學(xué)生的知識(shí)進(jìn)度,導(dǎo)致教學(xué)上時(shí)間不夠分配。教學(xué)質(zhì)量保證和診改信息化系統(tǒng)為教師節(jié)省了批改及分析作業(yè)的時(shí)間,能準(zhǔn)確掌握學(xué)生接受知識(shí)的進(jìn)度,大大提高課堂的教學(xué)效率。
1 系統(tǒng)需求分析
借助教學(xué)質(zhì)量保證和持續(xù)診改信息化平臺(tái),通過(guò)統(tǒng)一課程標(biāo)準(zhǔn)、教學(xué)資源、教學(xué)過(guò)程以及對(duì)教學(xué)過(guò)程進(jìn)行有效監(jiān)控和數(shù)據(jù)分析,實(shí)現(xiàn)教學(xué)質(zhì)量的穩(wěn)步提升以及持續(xù)的診斷和改進(jìn)。系統(tǒng)主要模塊如圖1所示。
1.1 系統(tǒng)邏輯模塊
(1)基礎(chǔ)數(shù)據(jù)模塊:完成學(xué)生、課程、教師基礎(chǔ)數(shù)據(jù)的增刪改查等功能。
(2)課程資源模塊:把課程項(xiàng)目資源分解成任務(wù),完成所有任務(wù)資源的整合和管理。
(3)“教學(xué)做一體化”過(guò)程設(shè)置模塊:把課程教學(xué)分為不同單元,把項(xiàng)目任務(wù)分解到不同的單元中。
(4)評(píng)價(jià)指標(biāo)設(shè)置模塊:針對(duì)大一、大二、大三不同課程分類(lèi)設(shè)置評(píng)價(jià)指標(biāo),如教學(xué)方法、教學(xué)進(jìn)度、內(nèi)容難易程度、項(xiàng)目步驟是否合理等。
(5)課堂數(shù)據(jù)采集模塊:在“教學(xué)做一體化”過(guò)程中收集學(xué)生對(duì)每個(gè)項(xiàng)目任務(wù)的練習(xí)、建議、評(píng)價(jià),提交數(shù)據(jù),收集教師批改練習(xí)的數(shù)據(jù)。
(6)數(shù)據(jù)統(tǒng)計(jì)和分析模塊:根據(jù)收集的數(shù)據(jù),分析每個(gè)任務(wù)的完成率、完成時(shí)間、完成效果;分析每個(gè)單元的完成率、完成時(shí)間和完成效果;分析學(xué)生對(duì)任務(wù)的評(píng)價(jià),如教學(xué)方法、任務(wù)內(nèi)容難度、任務(wù)步驟清晰度等;統(tǒng)計(jì)學(xué)生平時(shí)成績(jī)。
(7)持續(xù)診改模塊:提出診斷信息,包括任務(wù)完成時(shí)間是否合理、完成率、完成效果是否達(dá)到要求、任務(wù)內(nèi)容是否應(yīng)該修改、每個(gè)單元任務(wù)設(shè)置是否合理、對(duì)課程資源設(shè)置是否合理。
(8)診改數(shù)據(jù)庫(kù)模塊:把專(zhuān)業(yè)課程診改數(shù)據(jù)對(duì)接(導(dǎo)入)學(xué)校診改數(shù)據(jù)庫(kù)平臺(tái)。
2 系統(tǒng)設(shè)計(jì)
按照需求功能要求,將系統(tǒng)分解為多個(gè)子系統(tǒng),根據(jù)每個(gè)子系統(tǒng)的功能不同,分別完成需求分析中的不同要求??傮w結(jié)構(gòu)如圖2所示。
2.1 功能分配
系統(tǒng)各功能需求與程序模塊(組件)之間的關(guān)系如表1所示。
2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
服務(wù)器端程序通過(guò)PDO(數(shù)據(jù)訪問(wèn)對(duì)象)應(yīng)用程序編程接口(API)訪問(wèn)MySQL數(shù)據(jù)庫(kù)。
使用MySQL的備份命令對(duì)數(shù)據(jù)進(jìn)行保存。在網(wǎng)絡(luò)軟件接口方面,使用一種無(wú)差錯(cuò)的傳輸協(xié)議,采用滑動(dòng)窗口方式對(duì)數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)傳輸及接收。
2.3 外部接口
①教師信息管理模塊:提供對(duì)課程的查詢(xún)接口;②學(xué)生信息管理模塊:提供對(duì)學(xué)生信息查詢(xún)的接口,包括按學(xué)號(hào)查詢(xún)、按姓名查詢(xún)和按班級(jí)查詢(xún)3種;③課程管理模塊:提供對(duì)課程信息查詢(xún)的接口,包括按課程名查詢(xún)等,見(jiàn)圖3、圖4。
3 系統(tǒng)實(shí)現(xiàn)
學(xué)生前臺(tái)程序見(jiàn)圖5。
3.1 學(xué)生前臺(tái)核心代碼
實(shí)現(xiàn)學(xué)生前臺(tái)核心代碼如下:
public function submitList()
{
MYMthis->load->model('tea_information_model', 'getALL');
MYMtas_id = isset(MYM_GET['tas_id']) ? intval(MYM_GET['tas_id']) : 0;
MYMlist = MYMthis->getALL->getStuTas(MYMtas_id, MYM_SESSION['stu_user']->cla_id);
echo '
foreach (MYMlist as MYMkey => MYMitem) {
MYMcolor = 'Black';
MYMbig = '';
if (MYMkey < 3) {
MYMbig = 'font-weight:bold;';
MYMcolor = 'Red';
} else if (MYMkey >= 3 & MYMkey < 6) {
MYMbig = 'font-weight:bold;';
MYMcolor = 'DarkOrange';
} else if (MYMkey >= 6 & MYMkey < 10) {
MYMbig = 'font-weight:bold;';
MYMcolor = 'Gold';
客服熱線:400-656-5456??客服專(zhuān)線:010-56265043??電子郵箱:longyuankf@126.com
電信與信息服務(wù)業(yè)務(wù)經(jīng)營(yíng)許可證:京icp證060024號(hào)
Dragonsource.com Inc. All Rights Reserved
}
echo '
' . (MYMkey + 1) . ' | ' . MYMitem->stu_number . '
' . MYMitem->stu_name . '
';
if (isset(MYMitem->s_t_usetime))
echo MYMitem->s_t_usetime . '分鐘';
else
echo 0;
echo '
';
if (isset(MYMitem->s_t_url))
echo '完成';
else
echo '只提交問(wèn)題或建議';
if (isset(MYMitem->s_t_score))
echo "({MYMitem->s_t_score}分)";
else
echo '(待批改)';
echo '';
}
echo '';
}
// 判斷是否已開(kāi)啟交叉批改
MYMdate = array(
'tas_id' => MYMtas_id,
'cla_id' => MYMcla_id,
'is_cross_correct' => 1
);
MYMres = MYMthis->db->where(MYMdate)->get('tb_tea_cla_tas');
MYMrow = MYMres->row();
if (!MYMrow) // 未開(kāi)啟時(shí)
{
echo '';
MYMthis::goBack();
die();
}
else
{
MYMthis::goBack();
}
MYMrandom_number = MYMrow->random_number;
MYMsql = "SELECT * FROM `tb_stu_tas` WHERE `tas_id`={MYMtas_id} AND
`stu_id` IN (SELECT `stu_id` FROM `tb_student` WHERE `cla_id` ={MYMcla_id})";
MYMres2 = MYMthis->db->query(MYMsql);
MYMlist2 = array();
MYMlist = MYMres2->result();
if (count(MYMlist) <= 1) {
echo '';
MYMthis::goBack();
}
foreach (MYMlist as MYMk => MYMv) {
if (MYMrandom_number + MYMk < count(MYMlist))
MYMlist2[MYMrandom_number + MYMk] = MYMv;
else
MYMlist2[MYMrandom_number + MYMk - count(MYMlist)] = MYMv;
if (MYMv->stu_id == MYMstu_id & MYMv->tas_id == MYMtas_id) {
MYMkey = MYMk;
}
}
ksort(MYMlist2);
MYMcorrect_task = MYMlist2[MYMkey];
private static function changeTimeType(MYMseconds)
{
if (MYMseconds > 3600) {
MYMhours = intval(MYMseconds / 3600);
MYMminutes = MYMseconds / 60;
MYMtime = MYMhours . ":" . gmstrftime('%M:%S', MYMminutes);
} else {
MYMtime = gmstrftime('%H:%M:%S', MYMseconds);
}
return MYMtime;
}
}endprint
3.2 教師前臺(tái)核心代碼
實(shí)現(xiàn)教師前臺(tái)(見(jiàn)圖6)核心代碼如下:
public function corretTask()
{
MYMres = MYMthis->db->where('tas_id = ', MYMtas_id)->get('tb_stu_tas');
if (isset(MYM_GET['select_student']) & MYMstu_id != 0) {
MYMcheck = array(
'tas_id' => MYMtas_id,
'stu_id' => MYMstu_id
);
MYMres = MYMthis->db->where(MYMcheck)->get('tb_stu_tas');
// 若不存在則返回到課程&班級(jí)列表視圖
if (!MYMres->row() && MYMstu_id != 0) {
MYMthis::goBack();
}
if (MYMres->row()->s_t_score)
MYMdata['isCorret'] = 1;
} else {
if (!MYMres->row()) {
echo "";
MYMthis::goBack();
}
}
MYMscore = array('s_t_score' => isset(MYM_POST['select_class']) ? MYM_POST['select_class'] : 0);
MYMthis->db->update('tb_stu_tas', MYMscore, MYMcheck);
MYMthis::goBack();
}
MYMthis->load->model('tea_information_model', 'get');
MYMdata['norm'] = MYMthis->get->getNorm(MYMstu_id, MYMtas_id);
MYMdata['word'] = MYMthis->get->getStuTas(MYMtas_id, MYM_SESSION['tea_cla_id']);
MYMdata['corret'] = MYMthis->get->getCorretStuTas(MYMtas_id, MYM_SESSION['tea_cla_id']);
MYMdata['stu'] = MYMthis->get->getStu(MYMtas_id, MYMstu_id);
MYMthis->load->view('tp/task_correct', MYMdata);
}
public function download()
{
MYMtas_id = intval(MYMthis->uri->segment(3));
MYMstu_id = intval(MYMthis->uri->segment(4));
MYMcheck = array(
'tas_id' => MYMtas_id,
'stu_id' => MYMstu_id
);
MYMres = MYMthis->db->where(MYMcheck)->get('tb_stu_tas');
MYMlist = MYMres->row();
if (file_exists(MYMname)) // 存在時(shí)
{
force_download(MYMname, NULL);
}
else // 不存在時(shí)
{
echo "";
}
MYMthis::goBack();
}
3.3 教師后臺(tái)核心代碼
實(shí)現(xiàn)教師后臺(tái)(見(jiàn)圖7)核心代碼如下:
//綁定課程&班級(jí)&教師
public function bindingCourse()
{
MYMthis->load->model('backstage_model');
MYMdata['teacher'] = MYMthis->backstage_model->getAll('tb_teacher');
MYMdata['class'] = MYMthis->backstage_model->getAll('tb_class');
MYMselect_teacher = (isset(MYM_POST['select_teacher'])) ? intval(MYM_POST['select_teacher']) : 0;
MYMselect_class = (isset(MYM_POST['select_class'])) ? intval(MYM_POST['select_class']) : 0;endprint
MYMdata['tea_id'] = MYMselect_teacher;
MYMdata['cla_id'] = MYMselect_class;
MYMcou_id = intval(MYMthis->uri->segment(3));
MYMres = MYMthis->db->where('cou_id = ', MYMcou_id)->get('tb_course');
MYMlist = MYMres->row();
if (MYMlist) {
MYM_SESSION['cou_id2'] = MYMcou_id;
} else {
MYMthis::goHref('goCouManage');
}
MYMdata['cou_name'] = MYMlist->cou_name;
if (isset(MYM_POST['binding'])) {
if (MYMselect_teacher != '' && MYMselect_class != '') {
MYMdate = array(
'cou_id' => MYMcou_id,
'cla_id' => MYMselect_class
);
MYMbool = 0;
MYMres = MYMthis->db->where(MYMdate)->get('tb_cou_cla_tea');
if (MYMres->row()) {
MYMis_repeat = 0;
echo "";
} else {
MYMis_repeat = 1; }
if (MYMis_repeat == 1) {
MYMdate2 = array(
'cou_id' => MYMcou_id,
'tea_id' => MYMselect_teacher,
'cla_id' => MYMselect_class
);
try {
MYMbool = MYMthis->db->insert('tb_cou_cla_tea', MYMdate2); } catch (Exception MYMe) {
echo "";
}
}
if (MYMbool) {
echo "";
}
}
}
MYMdata['url'] = '';
MYMthis->load->view('tb/cou_binding', MYMdata);
}
public function lookCouClaTea()
{
MYMthis->load->model('backstage_model');
MYMlist = MYMthis->backstage_model->courespaging(20, 'admin/lookCouClaTea'); // 調(diào)用login_model模型的分頁(yè)方法
MYMdata['list'] = MYMlist['list'];
MYMdata['links'] = MYMlist['links']; // 顯示分頁(yè)
MYMdata['total_rows'] = MYMlist['total_rows'];
MYMthis->load->view('tb/cou_cla_tea', MYMdata);
}
public function deleteCouClaTea()
{
MYMcou_id = intval(MYMthis->uri->segment(3));
MYMcla_id = intval(MYMthis->uri->segment(4));
MYMtea_id = intval(MYMthis->uri->segment(5));
MYMdate = array(
'cou_id' => MYMcou_id,
'cla_id' => MYMcla_id,
'tea_id' => MYMtea_id
);
MYMthis->db->delete('tb_cou_cla_tea', MYMdate);
MYMthis::goBack();
}
3.4 系統(tǒng)界面實(shí)現(xiàn)
系統(tǒng)主控制平臺(tái)采用簡(jiǎn)單、直觀的布局,通過(guò)菜單實(shí)現(xiàn)對(duì)系統(tǒng)各個(gè)模塊的調(diào)用和各窗體的顯示,見(jiàn)圖8。
參考文獻(xiàn):
[1] 潘凱華,劉中華.PHP開(kāi)發(fā)實(shí)戰(zhàn)1200例[M].北京:清華大學(xué)出版社,2011.
[2] LAURATHOMSON.PHP和MySQL Web開(kāi)發(fā)[M].北京:機(jī)械工業(yè)出版社,2009.
[3] 曾棕根.PHP程序設(shè)計(jì)[M].北京:北京大學(xué)出版社,2012.
[4] 唐漢明,翟振興,關(guān)寶軍,等.深入淺出MySQL:數(shù)據(jù)庫(kù)開(kāi)發(fā)、優(yōu)化與管理維護(hù) [M].第2版.北京:人民郵電出版社,2014.
[5] 楊曉軍,秦方.MVC Web開(kāi)發(fā)學(xué)習(xí)實(shí)錄[M].北京:清華大學(xué)出版社,2011.endprint