对于一个学校来说,大量教师信息,学生信息管理,学生成绩管理,基本数据的维护都难于通过传统的方法进行管理:这就迫切需要利用计算机技术来帮助学校管理者处理这些日常管理。本系统正是为了简化教学任务的管理,提高办公效率,方便师生而设计的。
本设计所完成的网上教务处管理系统主要实现的功能有:前台学生对班级情况、课程安排、学期成绩、和最新发布的教务信息的查询。后台管理员对全校教师信息、学生信息、学生成绩、课表安排等进行管理,即添加、删除、修改。同时发布新的公告等。
本设计采用ASP(Active Server Pages)和ACCESS数据库等有关技术开发的,因为ASP语言编写容易、支持面向对象并可扩展Active Server组件功能、与任何ActiveX Script语言兼容,能很好地实现本系统中教师与学生交互的各项功能。
本系统从结构上主要分为两部分:管理员部分和学生部分:
管理员模块的建设:包括用户权限验证,学生信息管理(包括录入、修改、删除等),教师信息管理(包括修改、删除、添加),学生成绩管理,课表的发布管理等
学生模块的建设:包括登陆网站,查询教师信息,查看成绩,查看课表,学生留言等。
系统建设是基于Browser/Server模式的。Browser/Server模式即浏览器和服务器结构,通过Internet进行通信,可以不受地域的限制。B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。对于本网上教务处系统,主要是实现学生通过浏览器可以查看到教务处的相应信息。系统的管理者只需自己的口令与密码就能在web页面下进行相应的日常必需管理。
此网上教务处系统共包含了14个数据表,其中主要的数据表结构如下:
1.管理员信息表(y_admin)用来保存管理员信息,该表结构如下:
表1 管理员信息表
字段名称 | 数据类型 |
Id | 自动编号 |
Y_username | 文本 |
Y_password | 文本 |
2.班级信息表(班级)用来保存班级的详细信息,该表的结构如下:
表2 班级信息表
字段名称 | 数据类型 | 说明 |
Id | 自动编号 | |
Classno | 文本 | 班级号 |
Zhuanyeno | 文本 | 专业号 |
Zhuanye | 文本 | 专业 |
Xino | 文本 | 系号 |
Xiname | 文本 | 系 |
Jino | 文本 | 级号 |
Banno | 文本 | 班级 |
Stum | 文本 | 学生人数 |
room | 文本 | 教室 |
3.学生信息表(学生)用来保存学生的详细信息,该表的结构如下:
表3 学生信息表
字段名称 | 数据类型 | 说明 |
Id | 自动编号 | |
Xh | 数字 | 学号 |
User | 文本 | 学生姓名 |
Mm | 文本 | 密码 |
Banno | 文本 | 班级 |
Sex | 文本 | 性别 |
Addr | 文本 | 学生家庭地址 |
yb | 数字 | 邮编 |
4.学生成绩表(成绩)用来保存学生成绩的详细信息,该表结构如下:
表4 学生成绩表
字段名称 | 数据类型 | 说明 |
Id | 自动编号 | |
Xh | 数字 | 学号 |
User | 文本 | 学生姓名 |
Cj | 数字 | 成绩 |
Kc | 文本 | 课程 |
Xq | 文本 | 学期 |
Banno | 文本 | 班级 |
lx | 文本 | 课程类型 |
5.教师信息表(教师),用来保存教师的详细信息,该表的结构如下:
表5 教师信息表
字段名称 | 数据类型 | 说明 |
Id | 自动编号 | |
Teacherno | 数字 | 教师号 |
Teachername | 文本 | 教师姓名 |
Xino | 文本 | 系号 |
Xiname | 文本 | 系名 |
sex | 文本 | 性别 |
teleph | 数字 | 教师电话 |
6.课程信息表(课程),记录了课程安排的详细情况,该表的结构如下:
表6 课程表
字段名称 | 数据类型 | 说明 |
Id | 自动编号 | |
Xiname | 文本 | 系明 |
Zhuanyeno | 文本 | 专业号 |
Xino | 文本 | 系号 |
Zhuanye | 文本 | 专业 |
Jino | 文本 | 级号 |
Banno | 文本 | 班级 |
teachername | 文本 | 教师姓名 |
Lessonname | 文本 | 课程名 |
Stnum | 数字 | 学生人数 |
Room | 文本 | 教师 |
Week | 文本 | 星期 |
Jieci | 文本 | 上课节次 |
Hours | 数字 | 学时 |
Xuefen | 数字 | 学分 |
lx | 文本 | 课程类型 |
7.信息发布表(news),主要包含信息发布的相关信息,该表结构如下:
表7 信息发布表
字段名称 | 数据类型 | 说明 |
newid | 自动编号 | |
Title | 文本 | 消息标题 |
Content | 备注 | |
Authors | 数字 | |
Views | 数字 | |
sentdata | 日期/时间 | 发表日期 |
8.活动信息表(huodong),保存了学校活动的详细信息,该表的结构如下:
表8 活动信息表
字段名称 | 数据类型 | 说明 |
hdid | 自动编号 | |
Name | 文本 | 活动名 |
Baomingdd | 文本 | 报名地点 |
About | 备注 | |
Content | 备注 | |
Hdtime | 文本 | 活动时间 |
Address | 文本 | 活动地点 |
Setndata | 时间/日期 | 发布时间 |
9.活动报名表(baoming),保存了活动报名的详细情况,该表的结构如下:
表9 报名表
字段名称 | 数据类型 | 说明 |
Id | 自动编号 | |
Name | 文本 | 名字 |
Class | 文本 | 班级 |
Tel | 文本 | 电话 |
Sushe | 备注 | 宿舍号 |
Huodong | 文本 | 活动名 |
根据网上教务系统的特点,可以将其分为前台和后台两个部分设计。前台主要用于学生对课程,教师信息和成绩以及重要新闻的查询;后台主要用于管理员对教师、学生、课程、学生成绩、活动安排等进行管理。
前台学生查询部分的功能结构如图3所示:
后台学生管理员功能结构如图4所示:
在进行动态网站开发时,一个很重要的步骤就是建立数据库连接,即访问数据库。访问数据库可以用DSN和非DSN两种方法。应用DSN访问数据库需要配置ODBC数据源(即系统DSN),该方法的优点是比较安全,其具体方法已经在3.2节后台数据库的配置中作了详细的介绍。非DSN访问数据库不需要配置ODBC数据源,比较方便。
创建数据库连接主要分为两步进行:一是创建数据库连接文件conn.asp,二是在需要与数据库连接的页面包含该文件(如:<!--#include file=”conn.asp” -->)。
由于本系统采用的是Access数据库存储数据,所以使用以下的代码连接数据库:
<%Class Cls_Database
Public Conn,Db,Connstr
Public Sub LoadData()
Db="Data/Data.mdb"
Connstr="Provider=Microsoft.Jet.Oledb.4.0;
Data Source="&Server.MapPath(db)
End Sub
Public Sub Connect ()
Set Conn=Server.CreateObject("Adodb.Connection")
Conn.Open Connstr
End Sub
Public Function Execute(Sql)
Set Rs=Server.CreateObject("Adodb.Recordset")
If Isobject(Conn)=false then
Connect()
Rs.Open Sql,conn,1,3
Else
Rs.Open Sql,conn,1,3
End If
Set Execute=Rs
End Function
Public Sub Disconnect ()
Conn.Close
Set Conn=Nothing
End Sub
End Class
Set Data=New Cls_Database
Data.LoadData
%>
由于基本所有的页面都要使用该段代码,所以单独把这段代码保存为一个文件conn.asp。在所有与数据库连接的页面中只要包含该文件,就可以打开和连接数据库。包含该文件的代码如下:
<!--#include file="data/conn.asp"-->
1.模块功能介绍
前台页面主要包括以下功能模块:
a.首页面:通过首页面可以看到教务活动安排和重大新闻
b.课表查询:该查询分为按班级查询和按教师查询
c.教师信息查询:可以看到各教师的详细情况
d.成绩查询:学生只能登录后才能看到自己的成绩,成绩查询又分为按课程查询,按课程类型查询,按学期查询,按成绩查询四种方式
e.作息时间安排
前台功能主要使用的是数据库的查询语句,连接数据库以后通过“select * from 表名”这样的语句对想要查询的信息进行查询,其主要的实现如下:
1.首页面:进入首页面(index.asp),在左下方的登录框中可以看到管理员(admin_login.asp)和学生登录(studenglu.asp)的链接。通过首页面,我们可以看到管理员最近发布的消息,可以了解最近的活动,并对自己想参加的活动进行报名,报名成功后会提示“谢谢你的参与”。并将其信息存储在报名表(baoming)中,此表的数据结构已在3.3数据库的设计中列出了。
2.课程表查询的实现(news1.asp),其页面如图5
该页面分为两种查询方式:按班级查询和按教师查询,选择方式后,点击查询按钮将分别进入不同的页面chaxunclass.asp和chaxunteach.asp。查询结果显示的页面将会根据所选择的条件,列出相应的课表。
3.成绩查询功能的实现
学生需通过登录(studenglu.asp),才能进入查询页面(chaxun.asp)。在教务处的主页面登录框处点击学生,会跳转到学生登录页面(studenglu.asp):
登录验证的主要代码:
<!--#include file="data/conn.asp"-->
<%
response.buffer=true
Response.Expires=0
if session("pwd")<>"" then
mm=session("pwd")
else
mm=request("mm")
end if
if session("user")<>"" then
xh=session("user")
else
xh=request("xh")
end if
Set rs = Server.CreateObject("ADODB.Recordset")
sql="select id from 学生 where xh='"&xh&"' and mm='"&mm&"'"
rs.open sql,conn,3,3
if rs.eof then
response.write("<table width=300 border=0 cellspacing=0 cellpadding=0 align=center>")
response.write("<script language=JavaScript>" & chr(13) & "alert('无效的学号或密码,请重新确认');" & "history.back()" & "</script>")
response.write("</table>")
response.end
else
session("pwd")=mm
session("user")=xh
define="1"
%>
如果不进行登录,直接点首页的课程查询,则会弹出“无效的学号和密码,请重新确认”的对话框,对话框提示的主要实现是通过使用JavaScript。后面的很多提示框都使用的这段代码,其代码如下:
<script language=JavaScript>" & chr(13) & "alert('无效的学号或密码,请重新确认');" & "history.back()" & "</script>
学生登录后进入查询页面,可以通过按课程查询,按学期查询,按类型查询,按成绩查询等四个不同的查询条件,查到相应的成绩,成绩显示页面(stulook.asp),查询页面的主要代码:
<!--#include file="data/conn.asp"-->
<%
xh=session("user")
kc=request.form("kc")
cj=request.form("cj")
xq=request.form("xq")
lx=request.form("lx")
al=request.form("al")
if lx="" and kc="" and cj="" and xq="" and al="" then
response.write "<script language=JavaScript>" & chr(13) & "alert('请输入你要查询的条件');" & "history.back()" & "</script>"
Response.End
end if
set rs=server.createobject("adodb.recordset")
conn="DBQ="+server.mappath("data/tyydb.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
if request("kc")<>"" then
sql="select * from 成绩 where kc like'" & kc & "' and xh like'" & xh & "'"
else if request("cj")<>"" then
sql="select * from 成绩 where cj like'" & cj & "' and xh like'" & xh & "'"
else if request("xq")<>"" then
sql="select * from 成绩 where xq like'" & xq & "' and xh like'" & xh & "'"
else if request("lx")<>"" then
sql="select * from 成绩 where lx like'" & lx & "' and xh like'" & xh & "'"
else
sql="select * from 成绩 where xh like'" & xh &"'"
end if
rs.Open sql,conn,1,1
totalput=rs.RecordCount
if rs.EOF and rs.BOF then
Response.Write "<table width=752 border=0 cellpadding=0 cellspacing=0 align=center><tr><td><br>当前没有符合这个条件的成绩</td></tr></table>"
else
%>
4.教师情况(news3.asp)。
在此页面可以方便的浏览学校的所有教师的一些基本信息,如教师所在的系、教师的姓名、性别、联系电话等。查询的代码如下:
<%
set rs=server.createobject("adodb.recordset")
sql="select * from 教师"
set rs=conn.execute(sql)
do while not rs.eof
xiname=rs("xiname")
teachername=rs("teachername")
sex=rs("sex")
teleph=rs("teleph")
%>
5.班级情况(news4.asp)
此页面主要的功能是把学校的所有班级显示出来,包括班级的学生人数、年级、教室,以及班级所在的专业及系。这可以方便教师及学生对学校的所有班级的一些基本情况的了解,此页面的主要实现和上面教师信息查询页面所用的查询代码一样,都使用“select * from 表名”。
6.作息时间(news5.asp)
此页面主要给老师和学生提供作息时间表,让老师和学生清楚的知道什么时间上课,什么时间休息,保证授课按着正常的秩序进行。此页面的时间表主要是通过静态代码直接实现,而没有采用数据库的方式,如果需要对时间表进行修改的时候,只需news5.asp这一页面进行编辑修改一下就可以了。
后台文件总体架构
1.后台功能介绍
A.管理员登录:用于管理员登录到后台管理系统。
B.管理课程表信息:主要包括课程信息的添加、修改和删除。
C.管理教师信息:主要包括教师信息的添加、修改和删除。
D.学生信息管理:学生信息的添加、修改和删除。
E.学生成绩管理:学包括学生成绩的添加、删除、修改。
F.新闻管理:发布新的消息并对以前的消息进行管理。
G.活动管理:安排活动,并对学生报名情况进行管理。
H.退出系统:退出后台管理系统。
管理员登录页面(admin_login.asp):管理员通过身份验证后,才能登录到后台管理。首先接受管理员用户和密码:
username=request("username")
password=request("password")
然后连接数据库
<!--#include file="inc/conn1.asp"-->
<%
if username<>"" or password<>"" then
set rs=newconn.execute("select * from y_admin where username='"& username & "'")/判断是否存在该用户
if not (rs.bof and rs.eof) then/判断是否有该权限
if rs("password")=password then
session("password")=rs("password")
session("username")=rs("username")/为真则将该用户的该权限放入SESSION中
Response.Redirect"admin_admin.asp"/跳转到管理员管理页面
2.在新闻管理中主要调用的是:admin_news.asp,在管理前台新闻中主要是admin_news.asp页面,而在此网页中需要调用很多模块来进行网页数值判断:Head()首先对管理员权限进行判断,如果你未登录或者不具备该管理的权限,则会提示你“您没有登录或者不是管理员”。sub SaveSet()保存新建的消息、sub SaveEdit()保存修改的消息、Sub del()删除、sub add()添加新的消息、Sub admin()管理员管理、sub add()新建消息。此外还有调用网页<!-- #include file = "edit.asp"-->,调用的edit.asp中的程序是一个ASP的文本编辑器,可以编辑html等特效文字和效果。而在此中的管理中是调用了admin_news.asp?action=admin是调用本网页中的Sub admin()来进行管理。
3.教务处是管理学生工作的一个部门,需要管理一定的学生组织,就特意细化了它们之间的关系,设计了社团管理模块,这样更利于工作的管理和协调。此网页的主要调用的是admin_Shetuan.asp网页。其中为了完成不同的工作也同样调用相同的模块Head()、sub SaveSet()、sub SaveEdit()、Sub del()、sub add()、Sub admin()此外还有调用网页<!-- #include file = "edit.asp"-->等而在此中的管理中是调用了admin_Shetuan.asp?action=admin来进行管理的。
4.在教务处活动管理中,主要调用的是admin_huodong.asp的网页,同样需要调用等能模块块Head()、sub SaveSet()、sub SaveEdit()、Sub del()、sub add()、Sub admin()此外还有调用网页<!-- #include file = "edit.asp"--> 等,来进行管理。在此中的管理页面是调用了admin_huodong.asp?action=admin。在此中的报名页面中我们调用了admin_huodong.asp?action=Bmadmin。两个值传递页面中有效的更新了数据库,以便前台查询。
5.课程表数据管理主要包括以下三个页面如图6:
页面如图7所示:
A.录入课程表(keadd2.asp)是实现新学期课程表的录入,界面见图8
首先应连接数据源:<!--#include file="data/conn.asp"-->, 通过对添加信息的选择
<form name="form1" method="post" action="keadd2lian.asp">/接收表单form1数据,利用“post|”方法把数据送到"keadd2lian.asp"
<select name="xino" size="1">
<option value="--选择系--" selected>--选择系--</option>
<% set rs=server.createobject("ADODB.Recordset")
/建立数据库的链接
sql="select * from 系"
rs.open sql,conn,1,1/打开的方式为可读写可自由移动
do while not rs.eof %>
<option value="<%=rs("xino")%>"><%=rs("xiname")%></option>
<% rs.movenext
loop %>
</select>
(1)keadd2lian.asp
<%jino=request.form("jino") /首先从keadd2.asp表单中接收数据
if xino="--选择系--" then /判断是否选择系
if zhuanyeno="--选择专业--" then判断是否选择专业
session("xino")=xino /再把接受的数据进行存放
对存放的数据进一步处理,在kebiao.asp中进行,由response.redirect "kebiao.asp" %>/跳转页面实现
(2)kebiao.asp,课表添加页面,如图9:
进行了专业班级的选择后,进入课表的添加页面,其中带*号的为必须填写的信息。填写了相应的信息后,数据被post到kebiaolian.asp页面进行添加操作。如有带*号的信息未填,就会弹出相应的提示,并且添加信息不成功。相关的代码如下:
if lessonname="" then/判断其信息是否为空
response.write "<script language='javascript'>"
response.write "alert('请输入课程名');"
response.write "history.back(1);"
response.write "</script>"
response.end
end if
B.添加班级信息(kebiaoclass.asp)是对班级信息的录入,要进行班级信息的录入,就必需填写班级信息(系名、专业、年级、班级、人数、教室),提交到addc.asp录入。其代码实现与上面课表的添加基本相似。都是在建立数据源连接以后,接收表单中的数据并通过post方法把参数传递到下个页面。
C.添加教师信息(kebiaoteach.asp)是对教师信息的录入主要包括教师的系、姓名、性别、电话,填入后提交到addth.asp录入。该部分的建设所用的主要代码也和上面课表的添加类似。
6.课程表更新(keupdatecha.asp)是针对现有的课程进行调整而开发的,要想对现有的课程表进行更新就必须找到该表,设计思想是按以下流程图9进行的,为了便于更新,就得找到该表,按专业查或按教师查,然后进行修改或删除,其流程如下图10:
A.keupdatecha.asp
此页面主要是对想要查询的信息按方式查询:按专业查询和按教师查询,主界面如图10:
选择相应的查询方式后,显示出相关的课表,对此课表我们可以进行修改和删除操作,如图12:
其功能的实现和上个模块选择课表基本类似,都是通过post把表单的值进行传递,然后在下个相关页面进行调用(keupdatez.asp)和(keupdate.asp)。(keupdatez.asp)和(keupdate.asp)这2个页面连上数据源以后,按照上一页面传递的参数进行显示,其中设置了页面显示的记录条数:
rs.PageSize=10 /设置一个页码里面显示的记录数
pagecount=rs.PageCount /pagecount是记录的个数
page=int(request.QueryString ("page"))
if page<=0 then page=1
if request.QueryString("page")="" then /当前页为 page页
page=1
end if
rs.AbsolutePage=page
B.修改(kenew.asp)
仍然使用post方法,把所有的值post到kenew1.asp进行操作,修改的主要使用的代码是:update 表名 set 字段名。修改成功后,出现对话框,提示修改成功。
C.删除(kedeletez.asp),选择删除后,会出现对话框,提示你是否确定要删除,如果确定,进行以下的操作:
<!--#include file="data/conn.asp"-->/连接数据源
<% ID=request("id") /接收 id
set rs=server.CreateObject("adodb.recordset") /打开课程表进行id查询
sqlstr="select * from 课程 where ID="&ID
rs.open sqlstr,conn,3,2 if not rs.eof then rs.delete/数据删除;rs.update移动指针;
end if rs.close关闭数据库表;
set rs=nothing从内存中清空;
set conn=nothing
response.Redirect"keupdatecha.asp"%>
8.成绩数据管理(scoreadd1.asp)的实现
首先是录入学生信息scoreaddstu.asp是为了确定录入学生信息的前提条件比如:系别、专业、年级、班级等,确定好这几个条件后,就可以录入学生的信息了,仍使用<select>……</select>进行选择确定,然后把确定好的信息发送到scoreaddstu1.asp进行值传递的过渡,如果有未选择的信息,将会进行提示,要求你对这些信息进行选择了,才能进行下一步的操作。然后将这些值传递到scoreaddstu2.asp。
接收到上一页面传递的值后并将值查询出来把数据库指针指向这条数据并做出查询、接受值工作。并把表单上接受到的值post到scoreaddstu3.asp进行保存。接收到值后并查询出来把数据库指针指向这条数据并做出数据库写操作。
B.录入班级上课信息
此功能主要是在表单中scoreaddke.asp,此表单只需选择班级、学期、就可以添加本班级在那学期要考试的科目,这个表单至关重要,添加好科目就能对学生成绩进行录入并做查询。把选择出的值接收并把他们post到save_scoreaddke.asp中去用来保存:
lessonname=request.form("lessonname")
xueqi=request.form("xueqi")
set rs=server.createobject("ADODB.Recordset")
sqlstr="select * from 上课"
rs.open sqlstr,conn,3,3 rs.addnew rs("xiname")=xiname rs("zhuanye")=zhuanye
rs("jino")=jino rs("banno")=banno rs("lessonname")=lessonname
rs("xueqi")=xueqi rs("classno")=classno rs.update rs.close
把数据保存到数据库表“上课”中, 当添加一条新数据后,就会在数据库中生成一条新的数据,用与记录班级上课的课程。
C.添加学生成绩
当你添加好班级信息后,添加好班级后,添加好班级的学生后,那就需要添加学生的成绩,对学生成绩的录入:
在此的第一个表单中需选择班级、学期等就可以选择,就进行查询把数据POST到send_scoreadda.asp页面中,进行数据转换:
<!--#include file="data/conn.asp"-->
<% classno=request.form("classno")
xueqi=request.form("xueqi") response.end end if
Session.Contents("classno")=classno
Session.Contents("xueqi")=xueqi
response.redirect "scoreadda.asp"%>
以便下一个表单从中接受到数值进行查询在表单中显示出来并能显示录入信息
<%set rs=server.createobject("adodb.recordset")
sql="Select * from 上课 where classno='"&classno&"' order by id desc "
rs.open sql,conn,1,1
do while not rs.eof %>
<%rs.movenext i=i+1 loop %>
等录入后,要数据POST到save_scoreadda.asp保存
这样就可以接受到此同学的考试成绩,成绩的录入成功,这样后,就又了对数据表成绩的修改和对数据库表的查询成绩
9.成绩更新
成绩更新是更新数据库中的学生的成绩,在现实运用中,假如又一个同学的成绩出错,我们要做出修改,那么我们要更新此条数据,以便恢复数据库的正确性。
成绩更新(scoreupdatecha.asp)
我们首先接收
<%id=request("id")
classno=Session.Contents("classno")
Session.Contents("id")=id%>
接收ID值,以便判断出值。然后在查找
<% set rs=server.createobject("adodb.recordset")
sql ="select * from 成绩 where studentname='"&studentname&"' and xueqi='"&xueqi&"' and classno='"&classno&"'"
rs.open sql,conn,1,1 do while not rs.eof %>
在按ID值进行查找到此人的数据库指针处,进行查询,然后把值传递到scoreupdate.asp?id=<%=rs("id")%>"><%=rs("studentname")%>进行更新修改更新数据库信息。
10.管理员退出页面(admin_logout.asp),当退出系统的时候,会清空登录时所创建的Session变量的值并返回到首页。