基于WampServer的学生网上选课系统设计与实现

2017-07-20 13:45李蕾
计算机时代 2017年7期
关键词:S结构

摘 要: 学生在线选课系统对于学校的决策者和管理者来说是至关重要的。针对选课系统的特点及其应用需求,采用基于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.

猜你喜欢
S结构
基于Java的BBS开发
基于PHP的发印管理系统的实现
基于Java的网上商城开发
基于B/S结构的通信部队训练管理系统的设计研究
新型职业农民培育远程视频监管系统设计与实现
基于B/S技术网上选课管理系统的研究
B/S 结构软件的系统测试方法研究
基于ASP.NET 的图书管理系统
基于C/S结构的机务维修工程类综合实验教学平台建设与实践
基于网络的高校教材管理系统的研究