


摘 要: 學生在線選課系統對于學校的決策者和管理者來說是至關重要的。針對選課系統的特點及其應用需求,采用基于WampServer的集成開發環境,開發出一套集數據查詢、數據交換和數據維護等功能的網上模擬選課系統。
關鍵詞: B/S結構; 選課系統; PHP技術; 動態web應用; WampServer
中圖分類號:TP319 文獻標志碼:A 文章編號:1006-8228(2017)07-93-05
Design and implementation of student online course selection system based on WampServer
Li Lei
(Zhejiang Changzheng Vocational and Technical College, Department of Computer and Information Technology, Hangzhou, Zhejiang 310023, China)
Abstract: Student online course selection system is critical for school decision makers and managers. In view of the characteristics and application requirements of the course selection system, an online simulation course selection system based on WampServer is developed, which includes the functions of data inquiry, data exchange and data maintenance.
Key words: B/S structure; course selection system; PHP technology; dynamic web application; WampServer
0 引言
分布式辦公和移動辦公越來越普及,學生選課系統的網絡化、信息化、人性化及科學化已經普及到各個高校的教務教學管理模式里。WampServer是一款集Apach服務器、PHP解釋器和MySQL數據庫的整合軟件包,這款集成環境軟件非常適合初學者使用。本文對使用AMP(Apache+MySQL+PHP)架構出的基于wampServer的學生網上選課模擬系統進行設計和實現。
1 PHP的運行機制及原理
1.1 PHP的核心架構
系統采用windows7作為開發平臺,WampServer服務器是Apache作為Web服務器,MYSQL作為后臺數據庫,用PHP這種開源腳本語言實現后臺數據庫與服務器的連接。PHP總共有三個模塊:內核、Zend引擎、擴展層。其核心架構圖1所示。
[Application
(apache, thttpd, cli, etc.)][SAPI
(see Chap 23)][
][PHP API
(streams, output, etc.)
(see Chap 22)][PHP\&][Extensions
(mysql, standard library, etc.)
(see Chap 22)][Zend Extension API
(see Chap 23)][Zend API\&][Zend Engine\&] [Modular Code]
圖1 PHP四層核心架構
從圖1可以看出PHP從下到上是一個4層體系:Zend引擎、Extensions、Sapi、上層應用。其中Zend引擎是PHP的核心;一些內置函數、標準庫等都是通過extension來實現的;Sapi是服務端應用編程接口,它可以通過一系列鉤子函數,使PHP可以和外圍交互數據;上層應用就是編寫的PHP程序。其實PHP的4層體系可以形象的理解為PHP是一輛車,那么車的框架就是PHP本身,Zend是車的引擎(發動機),Ext下面的各種組件就是車的輪子,Sapi可以看做是公路,車可以跑在不同類型的公路上,而一次PHP程序的執行就是汽車跑在公路上。因此,我們需要:性能優異的引擎+合適的車輪+正確的跑道。
1.2 PHP的執行流程
PHP實現了一個典型的動態語言執行過程:一段代碼先經過詞法解析、語法解析等階段后,源程序會被翻譯成一個個指令(opcodes),然后ZEND虛擬機順次執行這些指令完成操作。PHP本身是用C實現的,因此最終調用的也都是C的函數,實際上,PHP可看做是一個C開發的軟件,其執行流程如圖2所示。
PHP的執行的核心是翻譯出來的一條一條指令,也即Opcode。Opcode是PHP程序執行的最基本單位。一個opcode由兩個參數(op1,op2)、返回值和處理函數組成。PHP程序最終被翻譯為一組opcode處理函數的順序執行。
2 學生網上選課系統架構
“學生網上選課系統”是建立在B/S結構的動態Web應用。其功能從用戶角度分兩個層面。
⑴ 學生:通過客戶端瀏覽器登錄到系統,瀏覽課程、查詢課程和查看課程的詳細信息,并按志愿順序預選自己想要選修的課程,也可顯示自己已經預選的課程。
⑵ 教學秘書:通過客戶端瀏覽器登錄到系統,對課程進行管理(添加課程、修改課程、刪除課程、查詢課程)、瀏覽課程和查看課程的詳細信息等[2]。除此之外,還需按照學校的規模和條件,以及學生集中選課的時間,選定服務器、相應的軟硬件和網絡設施。
本系統是建立在教務部門對系統的描述和需求上的開發,針對系統的需求功能描述,學生/教師必須經過登錄才能使用系統,其系統功能模塊圖如圖3所示。
3 學生網上選課系統功能設計
3.1 數據庫設計
數據庫是按數據結構來組織、存儲和管理數據的倉庫。對于一個給定的應用環境,構造最優的數據庫模式,建立數據庫及其應用系統,使之能夠有效地存儲數據,滿足各種用戶的應用需求(信息要求和處理要求)。在分層DFD中,數據存儲一般僅屬于某一層或某幾層。利用數據庫流圖DFD,來建立學生網上選課系統需求的過程模型,它的每一層次都代表了系統的一個抽象水平。本文只列出學生網上選課系統數據流圖一層分解圖,即管理登錄如圖4所示,在登陸管理進行判斷后,發送學生/教師登陸信息的其中一種。根據用戶身份信息的不同,進入不同的管理界面,相應的操作功能及權限都有所不同。
3.2 用戶界面設計
學生網上選課系統功能的實現往往必須借助頁面來實現,這里所說的頁面是廣義的頁面,把運行在服務器端的程序處理文件也包含在內。實現客戶向服務器提交請求,服務器向用戶提供一個頁面A,用戶對此頁面處理后,提交給服務器;服務器收到提交的數據后,調用程序處理文件B,再把服務器執行的結果以網頁C的形式顯現在客戶面前。這個過程就可以用“頁面A→頁面B→頁面C”的方式進行描述。
在功能模塊內部,首頁登錄頁面文件之間的設計關系如圖5所示,同時也方便程序員按照系統和模塊設計去實現各個模塊的代碼[3]。
4 學生網上選課系統關鍵技術
4.1 登錄驗證碼技術
在開發學生網上選課系統的時候,應當考慮到系統的安全性,為了防止非法用戶采取窮舉法在線攻擊,應當在登錄模塊中采用驗證碼手段。該模塊主要設計思想:用圖片格式顯示隨機碼[4],即在服務端通過程序帶有干擾因素的圖片;在服務器端準備好幾張背景圖片,這些圖片的格式、顏色、花紋等干擾方式各不相同,每次隨機抽取其中一幅作為背景,這樣就加大了通過工具來解讀圖片上字符的難度,在一定程度上提高安全性。本系統利用圖像函數產生一個4位隨機數的圖像驗證碼,其程序實現代碼如下:
<?php
for($i=0;$i<4;$i++) {
$num.=rand(0,9); } //生成一個4位隨機數
$im=imagecreate(100,30); //創建一個100*30的圖像
$blue=ImageColorAllocate($im,0,0,255); //圖像的背景色
$white=ImageColorAllocate($im,255,255,255);
//此顏色用于插入文字的顏色
imagestring($im,5,30,6,$num,$white);
//將4位隨機數寫入圖像中
header('content-type:image/gif'); //設定輸出圖像文件類型
imagegif($im); //輸出圖像?>
4.2 數據庫連接技術
PHP內置了大量操作MYSQL數據庫的函數來與其交互。在訪問數據庫之前首先需要與服務器建立連接。在一個數據庫服務器中通常有多個數據庫,在連接成功后,帶需要選擇數據庫,之后就可以數據庫中的數據進行增加、刪除、修改、查詢等操作了。本系統所創立的數據庫db_xsxk的服務器連接的代碼如下:
<?php
$DB_HOST="localhost"; //本地服務器
$DB_LOGIN="root"; //MYSQL登錄賬戶
$DB_PASSWORD=""; ////MYSQL登錄密碼
$DB_NAME=" db_xsxk"; //連接的數據庫名稱
$conn=mysql_connect($DB_HOST, $DB_LOGIN,
$DB_PASSWORD); //建立和數據庫服務器連接
mysql_select_db($DB_NAME); //選擇數據庫
mysql_query("SET NAMES UTF8"); //設定數據庫編碼
?>
5 學生網上選課系統功能實現
為展示學生網上選課系統學生端和教師端的典型操作和編程范例,我們選擇頁面布局、學生/教師登錄驗證、學生端和教師端等四個典型操作來說明。
5.1 頁面布局設計
在學生網上選課系統頁面樣式制作時采用CSS技術,可以有效地對頁面的布局、字體、顏色、背景和其他效果實現更加精確的控制,可以使html文件內碼更精簡,樣式通常保存在外部的.css文件中,并且只需修正一個CSS文件,便可同時更新眾多的網頁版面外觀及格式,主流瀏覽器均支持層疊樣式表。學生網上選課系統的版面布局采用“T”形結構布局,下方左面為主菜單,右面顯示內容的布局,頁面結構清晰,主次分明,是最容易上手的布局方法,其運行效果如圖6所示。
body {
margin:0 auto; width:1024px; font:12px/1.6 "宋體";
color:#000000; }
#left {
width:200px;float:left; margin-left:120px;margin-top:10px;padding-bottom:35px;margin-bottom:10px; }
#left h3 {
background-color:#628e37;text-align:center;color:#000000; }
#left ul li {
background:url(images/houtai3.gif) bottom no-repeat;
width:150px; margin:5px 10px 0px 30px; font-weight:
bold;color: #000000; }
#footer {
clear:both; width:900px;text-align:center;margin-top:
20px;height:40px;padding-top:8px;
margin-left:120px; }
5.2 學生/教師登錄驗證
學生/教師端登錄過程主要涉及到驗證和跳轉。驗證過程是輸入學生/教師的賬戶和密碼傳入底層數據庫,由WampServer服務器自動去mysql數據庫中進行身份驗證。依據不同的驗證結果,轉入不同的功能頁面。典型的用戶登錄和驗證代碼:
$role=$_POST[role]; //從服務器中采集到的登錄身份
$username=$_POST[username];
//從服務器中采集到的登錄賬戶
$userpwd=$_POST[userpwd];
//從服務器中采集到的登錄密碼
if ($role=="teacher") {
$ChkLogin="SELECT*FROM teacher WHERE TeaNo
='$username' and Pwd='$userpwd'"; //執行身份驗證
} else {
$ChkLogin="SELECT*FROM student WHERE StuNo
='$username' and Pwd='$userpwd'"; //執行身份驗證
}
//如果驗證通過,進入各自不同的角色功能頁面:
if ($role=="teacher") {
header("Location:tea/ShowCourse.php");
} else {
header("Location:stu/ShowCourse.php");
}
5.3 學生端主界面設計
學生登錄該系統后,就可以進入學生瀏覽課程的主頁面。該頁面中提供了查詢可選課程、瀏覽已選課程、退出系統的鏈接。學生可以點擊課程編碼鏈接查看課程細節并完成選課,也可以根據查詢條件,對系部已經開設的可選課程進行查詢并選課。選課頁面設定了學生可選課程的最高數量,當超過選課數量,提示退出或刪除課程后重新選課。
<?php
$StuNo=$_POST[StuNo];
$ShowDetail_sql="SELECT*FROM stucou WHERE
StuNo='$StuNo'";
$ShowDetailResult=db_query($ShowDetail_sql);
if(db_num_rows($ShowDetailResult)<3) {
$insertCourse="insert into stucou(StuNo, CouNo,
WillOrder, State)VALUES('$StuNo','$CouNo',
$WillOrder,'報名')";
$insertCourse_Result=db_query($insertCourse);
if($insertCourse_Result) {
echo"選擇課程成功"; }
else { echo"選擇課程失敗,請重新選擇\"; }
} else { echo"最多可選三門,已經超限,請先刪除已選課程
再選擇"; }
?>
5.4 教師端主界面設計
教師管理課程主頁面將所有課程信息通過表格分頁顯示出來,通過點擊課程編碼鏈接可以查看課程細節,通過點擊“修改”或“刪除”鏈接,可以實現對本系教學秘書開課信息修改或刪除(自動刪除對應的課程圖片)操作,同時該頁面提供了查詢本系部開設的課程信息,實現自動獲取課程編號添加課程信息的功能。
$CouNo=strval(intval($row['CouNo'])+1);
5.5 結果與分析
本系統軟件開發環境:Window7、WampServer的集成開發環境(Apache+MySql+PHP)、IE瀏覽器/谷歌瀏覽器;系統對硬件環境沒有特殊的要求。本系統作為我院PHP動態網站設計課程的創新創業實踐教學項目,經過一段時間的試運行,總結如下:
⑴ 本系統只需通過PC客戶端的瀏覽器運行,采用B/S模式,解決了跨平臺運行的問題;
⑵ 本系統主界面設計人機交互友好,整潔,給人一目了然的感覺;
⑶ 本系統功能實現完善,學生端選課模塊設計更加人性化,提供了搜索可選課程的功能,可以查看課程的基本信息,教務部門設定學生的選課數量;
⑷ 系統內的鏈接實現相應的功能。
雖然系統運行效果良好,但從可利用性角度看,還需增加“教務部門”的權限和功能,對學生端的選課情況和教師端開課信息進行綜合性管理。
6 結束語
本文討論了基于WampServer的學生網上選課系統開發,給出了學生網上選課系統的結構圖,介紹了PHP的核心框架和程序執行流程,并給出了典型的編程案例。學生網上選課系統教師端和學生管理功能完善,并且提供了核心源碼供開發者使用,基本滿足類似Web系統開發的需求。此外,本文研究的學生選課系統作為我院學生創新創業實踐共享項目運用于PHP動態網站設計課程的教學活動中。實踐表明,該系統基本滿足設計需求,并取得了良好的教學效果。
參考文獻(References):
[1] 李蕾.基于VDI技術的開放式教學平臺搭建研究[J].現代商
貿工業,2014.26(15):170-173
[2] 李蕾.高校編程類課程云端仿真實驗教學平臺創新設計與應
用研究[J].軟件導,2016.15(8):210-212
[3] 劉秋菊.Web編程技術—PHP+MQL動態網頁設計[M].北京
師范大學出版社,2015.
[4] 王彥輝.PHP+MySQL動態網頁技術教程[M].東軟電子出版
社,2013.
[5] 數通暢聯.PHP的運行機制與原理(底層)[EB/OL]. http://
www.jb51.net/article/74907.htm.