用PHP開發(fā)網(wǎng)絡(luò)考試系統(tǒng)_第1頁
用PHP開發(fā)網(wǎng)絡(luò)考試系統(tǒng)_第2頁
用PHP開發(fā)網(wǎng)絡(luò)考試系統(tǒng)_第3頁
用PHP開發(fā)網(wǎng)絡(luò)考試系統(tǒng)_第4頁
用PHP開發(fā)網(wǎng)絡(luò)考試系統(tǒng)_第5頁
已閱讀5頁,還剩73頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第10章用PHP開發(fā)網(wǎng)絡(luò)考試系統(tǒng)分析常用的網(wǎng)絡(luò)考試系統(tǒng)的功能;網(wǎng)絡(luò)考試系統(tǒng)的需求分析;網(wǎng)絡(luò)考試系統(tǒng)的系統(tǒng)總體設(shè)計(jì);網(wǎng)絡(luò)考試系統(tǒng)的系統(tǒng)詳細(xì)設(shè)計(jì);網(wǎng)絡(luò)考試系統(tǒng)課程管理;網(wǎng)絡(luò)考試系統(tǒng)班級管理;網(wǎng)絡(luò)考試系統(tǒng)學(xué)生管理;網(wǎng)絡(luò)考試系統(tǒng)試題管理。任務(wù)1:網(wǎng)絡(luò)考試系統(tǒng)整體設(shè)計(jì)

利用計(jì)算機(jī)對數(shù)據(jù)庫的并發(fā)存取功能和網(wǎng)絡(luò)傳輸特性,實(shí)現(xiàn)高效、準(zhǔn)確和科學(xué)的網(wǎng)絡(luò)考試將成為現(xiàn)代教育方式中的一種重要手段。它的優(yōu)點(diǎn)主要體現(xiàn)在以下幾個方面:1.出卷方便快捷。通過現(xiàn)成的題庫管理系統(tǒng),只要輸入試卷的題型題量等約束條件,軟件會自動生成符合要求的試卷,簡便、快捷、公平;2.閱卷準(zhǔn)確快速。通過計(jì)算機(jī)閱卷,可以大大減輕教師閱卷的工作量,提高教師的工作效率,同時(shí)提高閱卷的準(zhǔn)確性;3.成績分析統(tǒng)計(jì)科學(xué)直觀。成績分析統(tǒng)計(jì)由計(jì)算機(jī)自動完成,可以方便地分析每題的得分情況等。任務(wù)1:網(wǎng)絡(luò)考試系統(tǒng)整體設(shè)計(jì)網(wǎng)絡(luò)考試系統(tǒng)的功能結(jié)構(gòu)如圖10-1所示。任務(wù)1:網(wǎng)絡(luò)考試系統(tǒng)整體設(shè)計(jì)1.管理員功能管理員負(fù)責(zé)對學(xué)生、教師身份、課程、班級、試題、考試時(shí)間進(jìn)行管理,其主要功能包括:(1)課程管理:能夠完成添加、刪除和修改課程信息。(2)班級管理:能夠完成添加、刪除和修改班級信息。(3)學(xué)生管理:能夠完成添加、刪除和修改學(xué)生信息。(4)教師管理:能夠完成添加、刪除和修改教師信息。(5)考試時(shí)間安排:安排課程考試時(shí)間,指定考試班級。(6)修改密碼:管理員和教師可以修改登錄密碼。(7)退出系統(tǒng):管理員、教師和學(xué)生使用完考試系統(tǒng)后,可以退出系統(tǒng)。2.教師功能教師的主要工作是完成試卷的命題和評閱試卷。其功能包括:(1)設(shè)置試題題型:教師在給一門課程的試題輸入題目之前,首先要添加一份試題,設(shè)置好該試題的題型。(2)考試命題:教師根據(jù)所選擇的課程試題,給該份試題添加、修改和刪除各種題型的題目。(3)評閱試卷:教師根據(jù)所選擇的試卷和班級,對一個班的學(xué)生答卷自動評閱。(4)輸出成績表:教師可以根據(jù)所選擇的課程和班級,輸出一個班的課程成績表。3.學(xué)生功能(1)進(jìn)入考場:管理員安排好課程的考試時(shí)間后,學(xué)生在指定的時(shí)間登錄進(jìn)入考試系統(tǒng),準(zhǔn)備開始某一門課程的考試。當(dāng)?shù)竭_(dá)考試時(shí)間,自動從服務(wù)器讀取試題,傳輸?shù)娇蛻舳耍瑢W(xué)生即可答題。(2)查詢成績:學(xué)生可以查詢自己參加的各門課程的成績。任務(wù)2:數(shù)據(jù)庫設(shè)計(jì)1.創(chuàng)建數(shù)據(jù)庫按照第5章的介紹的內(nèi)容使用phpMyAdmin來創(chuàng)建一個數(shù)據(jù)庫exam,在瀏覽器地址欄中輸入http://localhost/phpMyAdmin/,結(jié)果如圖10-2所示。任務(wù)2:數(shù)據(jù)庫設(shè)計(jì)2.設(shè)計(jì)表結(jié)構(gòu)根據(jù)任務(wù)1的總體設(shè)計(jì),網(wǎng)絡(luò)考試系統(tǒng)主要由10個表組成:分別是課程表、教師表、班級表、學(xué)生表、試卷類型表、試卷信息表、成績表、試卷表、考試時(shí)間表、答卷表。其中課程表(course)的結(jié)構(gòu)如表10-1所示:創(chuàng)建數(shù)據(jù)表的腳本文件如下:CREATETABLE`course`(`course_id`int(4)NOTNULLauto_increment,`course_name`varchar(40)NOTNULLdefault'',PRIMARYKEY(`course_id`))ENGINE=MyISAMDEFAULTCHARSET=gbkAUTO_INCREMENT;教師表teachuser如表10-2所示創(chuàng)建數(shù)據(jù)表的腳本文件如下:CREATETABLE`teachuser`(`t_id`int(5)NOTNULLauto_increment,`t_userid`varchar(16)NOTNULLdefault'',`t_username`varchar(16)NOTNULLdefault'',`t_pwd`varchar(60)NOTNULLdefault'',`t_usertype`varchar(16)default'教師',PRIMARYKEY(`t_id`),UNIQUEKEY`t_userid`(`t_userid`))ENGINE=MyISAMDEFAULTCHARSET=gbkAUTO_INCREMENT;班級表class如表10-3所示創(chuàng)建數(shù)據(jù)表的腳本文件如下:CREATETABLE`class`(`class_id`int(10)NOTNULLauto_increment,`enroll_year`int(4)NOTNULLdefault'0',`classname`varchar(30)NOTNULLdefault'',PRIMARYKEY(`class_id`))ENGINE=MyISAMDEFAULTCHARSET=gbkAUTO_INCREMENT;學(xué)生表student_user如表10-4所示創(chuàng)建數(shù)據(jù)表的腳本文件如下:試卷類型表exam_type如表10-5所示

CREATETABLE`exam_type`(`id`int(4)NOTNULLauto_increment,`exam_type_id`int(3)NOTNULLdefault'0',`exam_id`varchar(26)NOTNULLdefault'',`exam_type_name`varchar(30)NOTNULLdefault'',`exam_type_desc`text,`auto_grade`int(1)NOTNULLdefault'0',PRIMARYKEY(`id`))ENGINE=MyISAMDEFAULTCHARSET=gbkAUTO_INCREMENT;創(chuàng)建數(shù)據(jù)表的腳本文件如下:試卷信息表exam_info如表10-6所示

CREATETABLE`exam_info`(`course_id`int(4)NOTNULLdefault'0',`exam_id`varchar(26)NOTNULLdefault'',`exam_title`varchar(250)NOTNULLdefault'',`exam_header`text,`exam_t_userid`varchar(20)defaultNULL,`exam_t_name`varchar(20)defaultNULL,`exam_prop_date`datedefaultNULL,`exam_audit`int(1)default'0',PRIMARYKEY(`exam_id`),UNIQUEKEY`exam_id`(`exam_id`))ENGINE=MyISAMDEFAULTCHARSET=gbk;創(chuàng)建數(shù)據(jù)表的腳本文件如下:成績表exam_score如表10-7所示創(chuàng)建數(shù)據(jù)表的腳本文件如下:CREATETABLE`exam_score`(`id`int(12)NOTNULLauto_increment,`s_xh`varchar(16)NOTNULLdefault'',`course_id`int(4)NOTNULLdefault'0',`exam_id`varchar(26)NOTNULLdefault'',`score`decimal(7,1)defaultNULL,PRIMARYKEY(`id`))ENGINE=MyISAMDEFAULTCHARSET=gbkAUTO_INCREMENT;試卷表exam_test如表10-8所示創(chuàng)建數(shù)據(jù)表的腳本文件如下CREATETABLE`exam_test`(`st_id`int(12)NOTNULLauto_increment,`exam_id`varchar(26)NOTNULLdefault'',`tk_type_id`int(4)NOTNULLdefault'0',`tk_content`mediumtext,`tk_option1`mediumtext,`tk_option2`mediumtext,`tk_option3`mediumtext,`tk_option4`mediumtext,`tk_option5`mediumtext,`tk_option6`mediumtext,`tk_ans`mediumtext,`standard_score`decimal(7,1)defaultNULL,`auto_grade`int(1)NOTNULLdefault'0',PRIMARYKEY(`st_id`))ENGINE=MyISAMDEFAULTCHARSET=gbkAUTO_INCREMENT;考試時(shí)間表exam_time如表10-9所示創(chuàng)建數(shù)據(jù)表的腳本文件如下:CREATETABLE`exam_time`(`course_id`int(4)NOTNULLdefault'0',`exam_id`varchar(26)NOTNULLdefault'',`exam_class`text,`exam_date`datedefaultNULL,`exam_starttime`timedefaultNULL,`exam_endtime`timedefaultNULL,`exam_timelen`int(11)defaultNULL,`exam_finish`int(1)NOTNULLdefault'0',PRIMARYKEY(`exam_id`),UNIQUEKEY`exam_id`(`exam_id`))ENGINE=MyISAMDEFAULTCHARSET=gbk;答卷表stud_exam_ans如表10-10所示創(chuàng)建數(shù)據(jù)表的腳本文件如下:CREATETABLE`stud_exam_ans`(`id`int(14)NOTNULLauto_increment,`s_xh`varchar(16)NOTNULLdefault'',`course_id`int(4)NOTNULLdefault'0',`exam_id`varchar(26)NOTNULLdefault'',`st_id`int(12)NOTNULLdefault'0',`exam_type_id`int(11)NOTNULLdefault'0',`stud_ans`mediumtext,`is_submited`int(1)NOTNULLdefault'0',`stud_score`decimal(7,1)defaultNULL,`t_userid`varchar(14)defaultNULL,PRIMARYKEY(`id`))ENGINE=MyISAMDEFAULTCHARSET=gbkAUTO_INCREMENT;任務(wù)3:用戶登錄功能實(shí)現(xiàn)1.公共模塊

Web程序設(shè)計(jì)開發(fā)中,一個很重要的步驟就是建立數(shù)據(jù)庫的連接,即訪問數(shù)據(jù)庫。本系統(tǒng)將數(shù)據(jù)庫連接代碼做成一個數(shù)據(jù)庫連接文件,以便需要與數(shù)據(jù)庫連接的其他頁面中包含該文件,該文件名為conn.php,代碼如下:<?$host="localhost";$user="root";$passwd="";$db="exam";$conn=mysql_connect($host,$user,$passwd)ordie("連接MYSQL服務(wù)器失敗");mysql_selectdb($db);mysql_query("setnames'gbk'");?>任務(wù)3:用戶登錄功能實(shí)現(xiàn)(1)登錄界面設(shè)計(jì)我們設(shè)計(jì)讓管理員、教師和學(xué)生通過一個登錄頁面進(jìn)入網(wǎng)絡(luò)考試系統(tǒng),因此設(shè)計(jì)了一個下拉列表框供登錄用戶選擇,選擇用戶類別,輸入用戶名(學(xué)號)和密碼,進(jìn)行用戶身份的合法性驗(yàn)證。如果合法,則進(jìn)入相應(yīng)的頁面,登錄頁面如圖10-3所示:任務(wù)3:用戶登錄功能實(shí)現(xiàn)登錄成功后,不同的用戶進(jìn)入的頁面不同,管理員功能頁面如圖10-4所示:任務(wù)3:用戶登錄功能實(shí)現(xiàn)教師功能功能頁面如圖10-5所示:任務(wù)3:用戶登錄功能實(shí)現(xiàn)學(xué)生功能頁面如圖10-6所示:任務(wù)3:用戶登錄功能實(shí)現(xiàn)(2)用戶登錄功能實(shí)現(xiàn)為了方便實(shí)現(xiàn)我們設(shè)計(jì)了多套頁面,管理員、學(xué)生與教師登錄成功后進(jìn)入不同的頁面,設(shè)計(jì)代碼(checkuser.php)如下:<?session_start();require("conn.php");$sql="select*fromteachuserwheret_userid='admin'";$rs=mysql_query($sql,$conn)ordie("查詢失敗");if(mysql_num_rows($rs)==0){$sql="insertintoteachuser(t_userid,t_username,t_pwd,t_usertype)values('admin','管理員',PASSWORD('admin'),'管理員')";mysql_query($sql)ordie("插入記錄失敗");}if(!isset($_SESSION['name'])){ if(isset($_REQUEST['userid'])){ $userid=$_REQUEST['userid']; $pwd=$_REQUEST['pwd']; if($_REQUEST["userkind"]=="學(xué)生"){ $sql="select*fromstudent_user,classwheres_xh='$userid'ands_pwd=password('$pwd')ands_class_id=class.class_id"; $result=mysql_query($sql,$conn)ordie("執(zhí)行SQL錯誤:$sql"); if(mysql_num_rows($result)==1){ $row=mysql_fetch_array($result); $_SESSION['xh']=$row['s_xh']; $_SESSION['name']=$row['s_name']; $_SESSION['class_id']=$row['s_class_id']; $_SESSION['classname']=$row['classname']; $_SESSION['photo']=$row['s_photo']; header("Location:./exam/index.php"); }else{ include"login.php"; exit; } }else{//教師和管理員 $sql="select*fromteachuserwheret_userid='$userid'andt_pwd=password('$pwd')"; $result=mysql_query($sql,$conn);if(mysql_num_rows($result)>0){ $row=mysql_fetch_array($result); $_SESSION['t_userid']=$row['t_userid']; $_SESSION['name']=$row['t_username']; $_SESSION['usertype']=$row['t_usertype']; header("Location:./admin/index.php"); }else{ include"login.php"; exit; } } }else{ include"login.php"; exit; }}else{echo$_SESSION['name'].",歡迎你回來。請刷新頁面<br>";exit;}?>任務(wù)3:用戶登錄功能實(shí)現(xiàn)3.管理員、教師、學(xué)生退出系統(tǒng)退出系統(tǒng)操作非常簡單,清空session屬性的值,然后跳轉(zhuǎn)到登錄頁面即可,退出系統(tǒng)代碼(logout.php)如下:<?session_start();session_destroy();$_SESSION=array();?><scriptlanguage="JavaScript">top.location.href="./login.php";</script>任務(wù)4:管理員功能的實(shí)現(xiàn)1.課程管理(1)課程管理主程序課程管理主程序(admin_course.php)實(shí)現(xiàn)了增加、刪除和修改課程信息,將課程信息保存到數(shù)據(jù)庫中的course表,頁面運(yùn)行效果如圖10-7所示,關(guān)鍵代碼如下:任務(wù)4:管理員功能的實(shí)現(xiàn)<?session_start();require("../conn.php");$sql="select*fromcourse";$rs=mysql_query($sql,$conn)ordie("查詢課程失敗");?><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>課程管理</title><scriptlanguage="javascript">functionsubmitit(myform){if(myform.course_name.value==""){ alert("課程名稱不能為空!"); returnfalse;}}</script></head><body>課程管理<hrnoshadecolor="#FFffFF"size="1"><formaction="admin_course_insert.php"method="POST"name="courseform1"onSubmit="returnsubmitit(this);"><tableborder="1"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#AED6F7"width="100%"height="30"bgcolor="#F1F1F1"><tr><tdwidth="115"class="noborder"align="center"><palign="center">課程名稱</td><tdwidth="872"align="center"><palign="left"> <inputtype="text"name="course_name"size="40"><inputborder="0"value="添加課程"type="submit"></td></tr></table></form><?echo$_GET['msg'];?><formname="courseform2"method="get"><tableborder="1"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#AED6F7"width="100%"bgcolor="#F1F1F1"><tr><tdwidth="85"align="center"height="24"class="border"><spanstyle="font-weight:400">課程編號</span></td><tdwidth="383"align="center"class="border"><spanstyle="font-weight:400">課程名稱</span></td><tdwidth="501"align="center"class="border">操作</td></tr><? $i=0; while($row=mysql_fetch_array($rs)){ ?><tr><inputname="course_id"type="hidden"value="<?echo$row['course_id'];?>"><td><?echo$row['course_id'];?></td><td><?echo$row["course_name"];?></td><tdalign="center"><ahref="admin_course_edit.php?id=<?echo$row['course_id'];?>&cname=<?echourlencode($row['course_name']);?>">編輯</a> <ahref="admin_course_del.php?id=<?echo$row['course_id'];?>">刪除</a></td></tr><? $i++; } ?></table></form></body></html>任務(wù)4:管理員功能的實(shí)現(xiàn)(2)添加課程程序在課程管理主程序文本框輸入新增課程的名稱,然后點(diǎn)擊“添加課程”按鈕,提交表單數(shù)據(jù),調(diào)用admin_course_insert.php程序,完成添加課程操作,程序內(nèi)容如下:<?session_start();require("../conn.php");$sql="insertintocourse(course_name)values('{$_POST['course_name']}')";if(mysql_query($sql,$conn))header("Location:./admin_course.php?msg=".urlencode('增加課程成功'));elseheader("Location:./admin_course.php?msg=".urlencode('增加課程失敗'));?>任務(wù)4:管理員功能的實(shí)現(xiàn)(3)編輯課程程序在課程管理主程序界面找的要編輯的課程標(biāo)題,單擊右邊的“編輯”鏈接,進(jìn)入編輯課程界面admin_course_edit.php,如圖10-8所示,代碼如下:任務(wù)4:管理員功能的實(shí)現(xiàn)<?session_start();if($_POST['course_id']){ require("../conn.php"); $sql="updatecoursesetcourse_name='".$_POST['course_name']."'wherecourse_id=".$_POST['course_id']; mysql_query($sql,$conn)ordie("修改課程失敗"); header("Location:./admin_course.php"); exit;}?><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>修改課程</title></head><body>修改課程名稱<formname="form1"method="post"action="admin_course_edit.php"><inputname="course_id"type="hidden"value="<?echo$_REQUEST['id'];?>"><tableborder="1"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#AED6F7"width="100%"height="30"bgcolor="#F1F1F1"><tr><tdwidth="115"class="noborder"align="center"><palign="center">課程編號</td><tdwidth="872"><?echo$_REQUEST['id'];?></td></tr><tr><tdclass="noborder"align="center">課程名稱</td><td><inputname="course_name"type="text"value="<?echo$_REQUEST['cname'];?>"size="40"><inputname="submit"type="submit"value="保存"border="0"></td></tr></table></form></body></html>任務(wù)4:管理員功能的實(shí)現(xiàn)(4)刪除課程程序在課程管理主程序界面找的要刪除的課程標(biāo)題,單擊右邊的“刪除”鏈接即完成單條課程的刪除,編寫實(shí)現(xiàn)刪除課程功能程序admin_course_del.php,代碼如下:<?session_start();if($_REQUEST['id']){ require("../conn.php"); $sql="deletefromcoursewherecourse_id=".$_REQUEST['id']; mysql_query($sql,$conn)ordie("刪除課程失敗"); header("Location:./admin_course.php"); exit;}?>任務(wù)4:管理員功能的實(shí)現(xiàn)2.班級管理班級管理程序(admin_class.php)實(shí)現(xiàn)添加、修改和刪除班級信息,將課程信息保存到數(shù)據(jù)庫中的class表,頁面運(yùn)行效果如圖10-9所示,關(guān)鍵代碼如下:任務(wù)4:管理員功能的實(shí)現(xiàn)<?session_start();require("../conn.php");$sql="select*fromclass";$rs=mysql_query($sql,$conn)ordie("查詢班級失敗");?><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>班級管理</title><scriptlanguage="javascript">functionsubmitit(myform){if(myform.course_name.value==""){ alert("班級名稱不能為空!"); returnfalse;}}</script></head><body>班級管理<hrnoshadecolor="#FFffFF"size="1"><formaction="admin_class_insert.php"method="POST"name="classform1"onSubmit="returnsubmitit(this);"><tableborder="1"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#AED6F7"width="100%"height="30"bgcolor="#F1F1F1"><tr><tdwidth="115"class="noborder"align="center"><palign="center">入學(xué)年度</td><tdwidth="872"align="center"><palign="left"><inputname="year"type="text"id="year"size="4"maxlength="4"></td></tr><tr><tdalign="center">班級名稱</td><td><inputname="classname"type="text"id="classname"size="30"maxlength="30"><inputname="提交"type="submit"value="添加班級"border="0"></td></tr></table></form><?echo$_GET['msg'];?><tableborder="1"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#AED6F7"width="100%"bgcolor="#F1F1F1"><tr><tdwidth="71"align="center"height="24"class="border"><spanstyle="font-weight:400">班級編號</span></td><tdwidth="151"align="center"class="border">入學(xué)年度</td><tdwidth="232"align="center"class="border"><spanstyle="font-weight:400">班級名稱</span></td><tdwidth="246"align="center"class="border">操作</td></tr><? $i=0; while($row=mysql_fetch_array($rs)){ ?><tr><inputname="course_id"type="hidden"value="<?echo$row['course_id'];?>"><td><?echo$row['class_id'];?></td><td><divalign="center"><?echo$row["enroll_year"];?></div></td><td><?echo$row["classname"];?></td><tdalign="center"> <ahref="admin_class_edit.php?id=<?echo$row['class_id'];?>&year=<?echo$row['enroll_year'];?>&cname=<?echourlencode($row['classname']);?>">編輯</a>  <ahref="admin_class_del.php?id=<?echo$row['class_id'];?>">刪除</a></td></tr><? $i++; } ?></table></body></html>任務(wù)4:管理員功能的實(shí)現(xiàn)在文本框輸入入學(xué)年度和班級名稱,然后單擊“添加班級”按鈕,提交表單數(shù)據(jù),調(diào)用admin_cclass_insert.php程序,完成添加班級操作,程序內(nèi)容如下:<?session_start();require("../conn.php");$sql="insertintoclass(enroll_year,classname)values({$_POST['year']},'{$_POST['classname']}')";if(mysql_query($sql,$conn))header("Location:./admin_class.php?msg=".urlencode('增加班級成功'));elseheader("Location:./admin_class.php?msg=".urlencode('增加班級失敗'));?>任務(wù)4:管理員功能的實(shí)現(xiàn)3.學(xué)生管理學(xué)生管理主程序(admin_student.php)實(shí)現(xiàn)添加、修改和刪除學(xué)生信息,將學(xué)生信息保存到數(shù)據(jù)庫中的student_user表,頁面運(yùn)行效果如圖10-10所示:任務(wù)4:管理員功能的實(shí)現(xiàn)

在學(xué)生管理主程序頁面文本框輸入學(xué)號、姓名,然后選擇班級,單擊“添加學(xué)生”按鈕,提交表單數(shù)據(jù),調(diào)用admin_student_insert.php程序,完成添加學(xué)生操作,程序內(nèi)容如下:<?session_start();require("../conn.php"); $sql="insertintostudent_user(s_xh,s_name,s_pwd,s_class_id)"; $sql.="values('{$_POST['xh']}','{$_POST['name']}',PASSWORD('{$_POST['xh']}'),{$_POST['class_id']})";if(mysql_query($sql,$conn))header("Location:./admin_student.php?msg=".urlencode('增加學(xué)生成功'));elseheader("Location:./admin_student.php?msg=".urlencode('增加學(xué)生失敗'));?>任務(wù)4:管理員功能的實(shí)現(xiàn)4.教師管理教師管理主程序(admin_teacher.php)實(shí)現(xiàn)添加、修改和刪除教師信息,將教師信息保存到數(shù)據(jù)庫中的teachuser表,頁面運(yùn)行效果如圖10-11所示:任務(wù)4:管理員功能的實(shí)現(xiàn)

在教師管理主程序頁面文本框輸入教師編號、姓名,然后選擇教師類別,單擊“添加學(xué)生”按鈕,提交表單數(shù)據(jù),調(diào)用admin_teacher_insert.php程序,完成添加教師操作,程序內(nèi)容如下:<?session_start();require("../conn.php");$sql="insertintoteachuser(t_userid,t_username,t_pwd,t_usertype)";$sql.="values('{$_POST['userid']}','{$_POST['name']}',PASSWORD('{$_POST['userid']}'),'{$_POST['type1']}')";if(mysql_query($sql,$conn))header("Location:./admin_teacher.php?msg=".urlencode('增加教師成功'));elseheader("Location:./admin_teacher.php?msg=".urlencode('增加教師失敗'));?>任務(wù)4:管理員功能的實(shí)現(xiàn)5.考試時(shí)間安排考試時(shí)間安排程序(admin_exam_time.php)實(shí)現(xiàn)設(shè)置試卷的考試日期和時(shí)間,,頁面運(yùn)行效果如圖10-12所示,參考代碼如下:任務(wù)4:管理員功能的實(shí)現(xiàn)<?session_start();require("../conn.php");$sql="select*fromexam_info,coursewhereexam_info.course_id=course.course_id";$rs=mysql_query($sql,$conn)ordie("查詢試卷失敗");$examid=$examname=$courseid=$coursename=$teacher="";while($row=mysql_fetch_array($rs)){ $examid.='"'.$row["exam_id"].'",'; $examtitle.='"'.$row["exam_title"].'",'; $courseid.=$row["course_id"].','; $coursename.='"'.$row["course_name"].'",'; $teacher.='"'.$row["exam_t_name"].'",';}if(strlen($examid)>0){$examid=substr($examid,0,strlen($examid)-1);//去掉字符串的最后一個逗號$examtitle=substr($examtitle,0,strlen($examtitle)-1);$courseid=substr($courseid,0,strlen($courseid)-1);$coursename=substr($coursename,0,strlen($coursename)-1);$teacher=substr($teacher,0,strlen($teacher)-1);}?><SCRIPTLANGUAGE="JavaScript">functionselect_exam(i){<?echo"varexamid=newArray(".$examid.");\n";echo"varexamtitle=newArray(".$examtitle.");\n";echo"varcourseid=newArray(".$courseid.");\n";echo"varcoursename=newArray(".$coursename.");\n";echo"varteacher=newArray(".$teacher.");\n";?>varid,i; document.form1.coursename.value=coursename[i]; document.form1.courseid.value=courseid[i]; document.form1.examid2.value=examid[i]; document.form1.exam_t_name.value=teacher[i];}</SCRIPT>任務(wù)4:管理員功能的實(shí)現(xiàn)上面代碼從exam_info和course數(shù)據(jù)表中讀取每份試卷的名稱、編號和課程名、命題老師。動態(tài)生成了JavaScript數(shù)組。JavaScript的select_exam()函數(shù)用來改變表單中顯示的考試課程、課程編號、命題老師文本框的值。為了在表單的“試卷名稱”下列列表中選擇一份試卷后,能夠觸發(fā)select_exam()函數(shù),還需要給該下拉列表標(biāo)記定義onChange事件代碼,設(shè)置如下:<selectname="examid"id="examid"onChange="select_exam(this.selectedIndex)">

在圖10-12所示的界面表單中輸入考試時(shí)間后,單擊“保存”按鈕,提交表單,調(diào)用admin_examtime_save.php程序,將考試時(shí)間保存到exam_time數(shù)據(jù)表中,并將參加考試的班級學(xué)生信息添加到exam_score表。代碼如下:任務(wù)4:管理員功能的實(shí)現(xiàn)<?session_start();require("../conn.php");$class=implode(",",$_POST["exam_class"]);//將表單的班級號數(shù)據(jù)轉(zhuǎn)換為字符串,用逗號分開$sql="insertintoexam_time(course_id,exam_id,exam_class,exam_date,exam_starttime,exam_endtime,exam_timelen)";$sql.="values({$_POST['courseid']},'{$_POST['examid']}','$class','{$_POST['exam_date']}',";$sql.="'{$_POST['exam_starttime']}','{$_POST['exam_endtime']}','{$_POST['exam_timelen']}')";$rs=mysql_query($sql,$conn)ordie("添加考試時(shí)間錯誤");//以下循環(huán)將各班的參加考試學(xué)生信息添加到成績表exam_score表$class=$_POST["exam_class"];for($i=0;$i<count($class);$i++){$sql="select*fromstudent_userwheres_class_id=".$class[$i];$rs=mysql_query($sql,$conn);$sql="insertintoexam_score(s_xh,course_id,exam_id)values";while($row=mysql_fetch_array($rs))$sql.="('{$row['s_xh']}',{$_POST['courseid']},'{$_POST['examid']}'),";$sql=substr($sql,0,strlen($sql)-1);mysql_query($sql,$conn);}header("Location:admin_exam_time.php");?>任務(wù)4:管理員功能的實(shí)現(xiàn)6.考試時(shí)間管理考試時(shí)間管理程序(admin_examtime.php)實(shí)現(xiàn)修改試卷的考試日期和時(shí)間。單擊該頁面中的“編輯”鏈接可修改對應(yīng)試卷的考試日期和時(shí)間,參考代碼如下:<?session_start();require("../conn.php");$sql="updateexam_timesetexam_date='".$_POST[exam_date]."',exam_starttime='".$_POST[exam_starttime]."',";$sql.="exam_endtime='".$_POST[exam_endtime]."',exam_timelen='".$_POST[exam_timelen]."'whereexam_id='".$_POST[examid2]."'";$rs=mysql_query($sql,$conn)ordie(mysql_error());header("Location:admin_examtime.php");?>任務(wù)5:教師功能的實(shí)現(xiàn)1.設(shè)置試題題型設(shè)置試題題型程序用來完成試題基本信息的添加、刪除和修改,并設(shè)置試題的題型。(1)設(shè)置試題題型主程序設(shè)置試題題型主程序頁面(teach_exam_type_step1.php)將當(dāng)前已經(jīng)設(shè)置的試卷基本信息通過表格顯示出來,如圖10-13所示,程序代碼如下:任務(wù)5:教師功能的實(shí)現(xiàn)<?session_start();require("../conn.php");$sql="select*fromexam_info,coursewhereexam_t_userid='{$_SESSION['t_userid']}'andexam_audit=0and";$sql.="exam_info.course_id=course.course_id";$rs=mysql_query($sql,$conn)ordie("查詢試卷失敗");?><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>設(shè)置試卷基本信息</title><scriptlanguage="javascript">functionredirectit(){self.location.href="teach_exam_add.php";}</script></head><body><tableborder="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#007CD0"width="100%"><tr><tdwidth="100%">設(shè)置試卷基本信息:添加、修改試卷名;添加、刪除、修改試卷的題型</td></tr></table><hrnoshadecolor="#FFFFFF"size="1"><tableborder="1"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#AED6F7"width="97%"id="AutoNumber3"height="30"class="withborder"bgcolor="#F1F1F1"><tr><tdcolspan="5"align="center"><divalign="left">第一步:選擇試卷</div></td></tr><tr><tdwidth="189"><divalign="center">課程名稱</div></td><tdwidth="396"><divalign="center">試卷名稱</div></td><tdwidth="122"align="center"><divalign="center">命題教師</div></td><tdwidth="128"align="center">命題日期</td><tdwidth="116"align="center">操作</td></tr><?while($row=mysql_fetch_array($rs)){?><tr><td><?echo$row['course_name'];?></td><td><ahref="teach_exam_type_step2.php?examid=<?echo$row['exam_id'];?>"><?echo$row['exam_title'];?></a></td><tdalign="center"><?echo$row['exam_t_name'];?></td><tdalign="center"><?echo$row['exam_prop_date'];?></td><tdalign="center"><ahref="teach_exam_edit.php?examid=<?echo$row['exam_id'];?>">編輯</a> <ahref="teach_exam_del.php?examid=<?echo$row['exam_id'];?>"target="_self">刪除</a></td></tr><?}?><tr><tdcolspan="5"><divalign="right"><inputtype="submit"name="Submit"value="添加試卷"onClick="redirectit()"></div></td></tr></table><br></body></html>任務(wù)5:教師功能的實(shí)現(xiàn)(2)添加試卷程序在設(shè)置試題題型主程序點(diǎn)擊“添加試卷”按鈕可以進(jìn)入添加試卷程序頁面(teach_exam_add.php),如圖10-14所示,任務(wù)5:教師功能的實(shí)現(xiàn)

在添加試卷程序輸入試卷信息,單擊“添加試卷”按鈕,提交表單數(shù)據(jù),將試卷添加到exam_info表,代碼如下:<?session_start();require("../conn.php");if($_POST['Submit']=="添加試卷"){$exam_id="exam".date("YmdHis");//試卷編號$examdate=date("Y-m-d");$sql="insertintoexam_info(course_id,exam_id,exam_title,exam_header,exam_t_userid,exam_t_name,exam_prop_date)";$sql.="values({$_POST['course_id']},'{$exam_id}','{$_POST['exam_title']}','{$_POST['exam_header']}'";$sql.=",'{$_SESSION['t_userid']}','{$_SESSION['name']}','{$examdate}')";mysql_query($sql,$conn)ordie("添加試卷基本信息失敗");header("Location:./teach_exam_type_step1.php");exit;}?>任務(wù)5:教師功能的實(shí)現(xiàn)(3)設(shè)置試題題型程序在圖10-13所示的頁面中,單擊某一試卷名稱超鏈接,則調(diào)用程序,自動添加三種客觀題型,如圖10-15所示:任務(wù)5:教師功能的實(shí)現(xiàn)(4)修改題型程序在圖10-15所示的設(shè)置試題題型程序頁面中,單擊某一題型的“編輯”超鏈接,調(diào)用teach_exam_type_edit.php程序,修改題型的相關(guān)說明,如圖10-16所示:任務(wù)5:教師功能的實(shí)現(xiàn)2.考試試卷命題包括下面幾個程序。(1)顯示試卷名稱程序顯示試卷名稱程序(teach_examtest_step1.php)顯示出當(dāng)前存在的試卷名,如圖10-17所示,程序代碼如下:任務(wù)5:教師功能的實(shí)現(xiàn)<?session_start();require("../conn.php");$sql="select*fromexam_info,coursewhereexam_t_userid='{$_SESSION['t_userid']}'andexam_audit=0and";$sql.="exam_info.course_id=course.course_id";$rs=mysql_query($sql,$conn)ordie("查詢試卷失敗");?><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>考試命題</title><styletype="text/css"></style></head><body><spanclass="STYLE1">考試命題:編輯一份試卷的題目</span><hrnoshadecolor="#FFFFFF"size="1"><tableborder="1"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#AED6F7"width="97%"height="30"bgcolor="#F1F1F1"><tr><tdcolspan="4">第一步:選擇試卷</td></tr><tr><tdwidth="189"align="center">課程名稱</td><tdwidth="396"align="center">試卷名稱</td><tdwidth="122"align="center">命題教師</td><tdwidth="128"align="center">命題日期</td></tr><?while($row=mysql_fetch_array($rs)){?><tr><td><?echo$row['course_name'];?></td><td><ahref="teach_examtest_step2.php?examid=<?echo$row['exam_id'];?>"><?echo$row['exam_title'];?></a></td><tdalign="center"><?echo$row['exam_t_name'];?></td><tdalign="center"><?echo$row['exam_prop_date'];?></td></tr><?}?></table></body></html>任務(wù)5:教師功能的實(shí)現(xiàn)(2)顯示試卷內(nèi)容程序在圖10-18所示的程序頁面中單擊某一個試卷名稱,進(jìn)入到顯示試卷內(nèi)容程序(teach_examtest_step2.php),顯示試卷的內(nèi)容。任務(wù)5:教師功能的實(shí)現(xiàn)(3)增加單選題目程序增加單選題目程序(teach_examtest_add_singlechoice.php)以試卷編號為參數(shù),通過在表單里面輸入題目內(nèi)容、選項(xiàng)和答案,如圖10-19所示,程序代碼如下:任務(wù)5:教師功能的實(shí)現(xiàn)(4)增加判斷題目程序增加判斷題目程序(teach_examtest_add_judge.php)以試卷編號為參數(shù),通過在表單里面輸入題目內(nèi)容和答案,然后單擊添加題目完成添加。(5)保存試題程序保存試題程序(teach_examtest_insert.php)將添加的單選題、多選題和判斷題內(nèi)容保存到exam_test表。程序代碼如下。任務(wù)5:教師功能的實(shí)現(xiàn)<?session_start();require("../conn.php");$examid=$_POST['examid'];$tk_type_id=$_POST['tk_type_id'];if($_POST['tk_type_id']==2){ $tk_ans=implode(",",$_POST["tk_ans"]);}else{ $tk_ans=$_POST['tk_ans'];}if($_POST['tk_type_id']==1or$_POST['tk_type_id']==2){//構(gòu)造INSERT命令 $sql="INSERTINTOexam_test(exam_id,tk_type_id,tk_content,tk_option1,tk_option2,tk_option3,tk_option4,"; $sql.="tk_option5,tk_option6,tk_ans,standard_score,auto_grade)"; $sql.="VALUES('{$_POST['examid']}',{$_POST['tk_type_id']},'{$_POST['tk_content']}','{$_POST['tk_option1']}'";$sql.=",'{$_POST['tk_option2']}','{$_POST['tk_option3']}','{$_POST['tk_option4']}','{$_POST['tk_option5']}'";$sql.=",'{$_POST['tk_option6']}','$tk_ans',{$_POST['standard_score']},{$_POST['auto_grade']})";}else{//其他題型//構(gòu)造INSERT命令 $sql="INSERTINTOexam_test(exam_id,tk_type_id,tk_content,tk_ans,standard_score,auto_grade)"; $sql.="VALUES('{$_POST['examid']}',{$_POST['tk_type_id']},'{$_POST['tk_content']}'";$sql.=",'$tk_ans',{$_POST['standard_score']},{$_POST['auto_grade']})";}mysql_query($sql,$conn)ordie("添加試題失敗");$id=mysql_insert_id();if($_POST['Submit']=="添加題目并返回"){header("Location:teach_examtest_step2.php?examid=".$examid);exit;}if($_POST['Submit']=="繼續(xù)添加題目"){switch($tk_type_id){case1:header("Location:teach_examtest_add_singlechoice.php?examid=".$examid."&exam_type_id=1"); break; case2:header("Location:teach_examtest_add_multichoice.php?examid=".$examid."&exam_type_id=2"); break; case3:header("Location:teach_examtest_add_judge.php?examid=".$examid."&exam_type_id=3"); break; default:header("Location:teach_examtest_add_other.php?examid=".$examid."&exam_type_id=".$tk_type_id); break;} exit;}?>任務(wù)5:教師功能的實(shí)現(xiàn)3.試卷評閱(1)選擇試卷程序選擇試卷程序(teach_grade_step1.php)顯示要評閱的試卷名稱供教師選擇,運(yùn)行結(jié)果如圖10-20所示:任務(wù)5:教師功能的實(shí)現(xiàn)(2)選擇考試班級程序選擇考試班級程序(teach_grade_step2.php)從課程的考試班級中選擇一個考試班級,以方便對具體某一個班級評卷,運(yùn)行結(jié)果如圖10-21所示。任務(wù)5:教師功能的實(shí)現(xiàn)(3)顯示班級成績程序顯示班級成績程序(teach_grade_step3.php)根據(jù)選擇的試卷和班級,顯示某個班的課程成績和評卷操作。如果考生沒有成績,則選擇評卷按鈕,如圖10-22所示:任務(wù)5:教師功能的實(shí)現(xiàn)(4)評閱試卷程序評閱試卷程序(teach_grade_step4.php)根據(jù)選擇的試卷編號、班級編號和考生編號,自動計(jì)算該考生每道題目的得分,并顯示每題得分,程序代碼如下:<?session_start();require("../conn.php");$examid=$_REQUEST['examid'];$examtitle=$_REQUEST['examtitle'];$xh=$_REQUEST['xh'];$name=$_REQUEST['name'];$coursename=$_REQUEST['coursename'];$classname=$_REQUEST['classname'];mysql_query("updatestud_exam_anssett_userid='".$_SESSION['name']."'",$conn);//給客觀題自動評分$sql="selectid,standard_score,tk_ans,stud_ans,auto_grade";$sql.="fromstud_exam_ans,exam_testwheres_xh='$xh'andstud_exam_ans.st_id=exam_test.st_id";$sql.="andstud_exam_ans.exam_id='$examid'andauto_grade=1orderbytk_type_id";$rs=mysql_query($sql,$conn);while($row=mysql_fetch_array($rs)){ if($row["stud_ans"]==$row["tk_ans"]){ $update_sql="updatestud_exam_anssetstud_score=".$row['standard_score']."whereid=".$row['id']; mysql_query($update_sql,$conn); }else{ mysql_query("updatestud_exam_anssetstud_score=0whereid=".$row['id'],$conn); }}?>任務(wù)6:學(xué)生考試功能的實(shí)現(xiàn)1.進(jìn)入考場主程序進(jìn)入考場主程序頁面(stud_exam_test.php)先檢查是否已到考試時(shí)間。如果未到考試時(shí)間,則不斷顯示當(dāng)前時(shí)間和剩余時(shí)間,如果到達(dá)考試時(shí)間,則進(jìn)入考試頁面,顯示考試內(nèi)容和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論