2.3数据库设计
采用的数据库是Microsoft Access ,拟建立teach.mdb库文件,包含如下几个表文件:
allmessage 留言信息表
Libbooks 图书信息表
Libcategories 图书类别信息表
Libemps 图书馆用户信息表;
stud 学生信息表
第三章 详细设计
3.1 家长学校联络簿
3.1.1功能:
利用SQL语法过滤特定的家长留言意见,让老师可以针对某位特定学生家长所发表的意见作出独立的回答,同时,家长在发表个人意见时,若认为意见内容涉及敏感的话题或是意见内容涉及私人隐私,都可用“悄悄话”的方式发言,这些“悄悄话”将不会被显示出来让大家看到,当然,老师拥有管理的能力,只要以密码登录管理模式,就可以进行各个学生家长的单独意见回复,而且还能看到家长们所留下的“悄悄话”。
3.1.2组成构造
共分成优大部分:
1, 意见留言结果网页guest.asp:用来显示家长发言与老师回复内容,同时还具备一般模式与管理模式两种显示方法。
2, 家长发言表单网页addmsg.asp:让学生家长填写发言内容并选择发言性质。
3, 家长发言数据处理ASP程序add.asp:处理家长发表的意见数据,同时将这些意见数据记录起来并将网页显示转向至意见留言结果网页。
4, 老师回复表单网页teachans.asp:让老师针对某位特定学生家长所发表的意见作出独立的回答。
5, 老师回复数据处理ASP程序anssave.asp:处理老师回复的数据内容,同时将这些意见数据起来并将网页显示转向至意见留言结果网页。
6, 数据表文件allmessage:用来储存家长发言数据与老师回复数据的Access类型数据库文件。
“数据表文件”负责存放家长发言数据与老师回复内容的数据记录,为Access类型的库文件,将它定名为:“message.mdb”。
下图为家庭联络簿的组成与流程图:
老师回复
家长留言
读入 写入
写入
3.1.3数据库结构设计
数据库文件”teach.mdb“中的数据表” allmessage“的栏目设置,如下图:
字段名 字段类型
3.1.4界面设计与重点、难点代码的设计
数据库与留言显示程序网页
家长发言与老师回复的内容数据全部储存在数据库中,要在网页中显示目前的家长发言与老师回复数据,必须先进行数据库的链接与打开,要链接数据库我们必须使用ADO对象群的Connection对象;而要打开数据库则必须使用ADO对象群的Recordset对象,程序:
set cn=server.createobject("adodb.connection")
cn.open "filedsn=c:program filescommon filesodbcdata sourcesms access database.dsn"
set rs=server.createobject("adodb.recordset")
sql="select * from allmessage order by 留言时间 desc"
rs.open sql,cn,1,1
Recordset对象是负责浏览与操作从数据库取出来的数据,Connection对象只负责与数据库进行链接的动作,并不能使用数据库内的数据,因此必须建立一个可以存取数据库数据的Recordset对象,
使用RS.Open方法存取”teach.mdb”数据库
RS.Open SQL,CN,1,1
使用open方法来打开数据表或执行Select指令参数设置如下:
1, 参数一(SOURCE):为欲打开的数据表或SQL指令。
2, 参数二(ActionConnection):指定一个已打开的数据库对象,将此参数设为链接我们已经建立好的Connection对象“CN”。
3, 参数三( CursorType):指定Recordset的打开类型,1为可读写且可自由移动。
4, 参数四(LockType):指定锁定类型,1为只读。
数据排序与SQL指令
1. Select 指令的筛选语句:
格式: Select…From
在SQL语言中:“Select”数据表“中选取某些“栏位”的数据.
2.如果要选取的数据表数据包含了一个以上的栏位,则我们可以利用“,”逗号来栏位名称隔开。
3. 如果要选取的数据表数据包含了全部的栏位,则可以利用万用字符“*”来代表全部的栏位。
可排序数据的Select指令
1. 当我们希望被选取出来的数据记录数据能够依据某个或某几个栏位的内容来排序时,只要将这些排序依据的栏位摆放在“Order By“保留字之后,然后将这处排序的语句连接在”Select…From“后面就行了。
2. “Order By“默认的排序方式是“由小排到大”,但若是希望排序方式是“由大排到小”,则我们可在栏位名称后再加上“Desc“保留字!将排序方式改为”由大排到小“。
在“显示留言意见”网页中的打开数据库ASP程序中的语句:
SELECT*From allmessage order by 留言日期 Desc
功能为:从数据表“allmessage“中取出所有栏位的数据,并将取出的数据记录内容依照”留言日期“栏位使用的”由大排到小“排序方式进行排序。
留言显示网页的管理模式
“显示留言意见”的网页就必须具备显示模式选择的功能,当显示模式在一般情况时要能显示家长们的一般性发言,同时还得将“悄悄话“的发言隐藏起来。当老师以密码登录成为管理模式时,则必须将一般性发言与悄悄话发言的数据全部显示出来,同时还得让老师们可以针对某位特定学生家长所发表的意见作出独立的回答。
这两个情况是通过密码登录管理模式的ASP程序实现的:
<form method="post">
<%if session("checkedit")="yes" then%>
<input type="hidden" value="yes" name="goexit">
<input type="submit" value="离开管理模式">
<%else%>
密码:<input type="password" name="password" size="4" maxlength="4"> <input type="submit" value="教师管理">
<%end if%>
</form>
在这段网页语句中,利用Session对象来记录目前的工作模式。当我们第一次进入“显示留言意见”网页的时候,我们所见的网页画面一定是一般!因为Session尚未被建立,因此它的“变量”值一定不会是“yes”,所以网页中会出现一个输入密码进入“教师管理”模式的栏位,只有当我们输入密码按下“教师管理”的按钮组织上发ASP程序中的进入管理模式语句后,Session对象才会被建立,同时,“checkedit“Session对象变量值被设置为“yes“,所以我们就进入了能将一般性发言与悄悄话发言的数据全部显示出来,同时还让教师们可以针对某位特定学生家长所发表的意见作出独立回答的管理模式页面。
留言显示网页的分页
当家长的发言与老师回复的数据笔数太多时,一次要将全部的数据内容显示在网页中,等待网页下载的时间太长了,因此采用固定笔数分页浏览方式来显示网页。
要进行分页显示,得先知道目前有多少笔的留言数据,而留言数据笔数可以通过Recordset对象的“Recordcount“(记录个数)属性得知,我们将每10笔数据为一单位分页显示:
count=rs.recordcount
if count/10>(count10) then
totalpage=(count10)+1
else totalpage=(count10)
end if
“/”为浮点数除法,“”为整数除法。
跳页选择的ASP程序语句
所有的发言数据采用固定笔数分页浏览的方式来显示后,还要提供一个跳页链接显示的功能,让浏览者可以选择希望浏览的页次进得浏览,ASP程序语句:
pagecount=0
rs.movefirst
if request.querystring("topage")<>"" then pagecount=cint(request.querystring("topage"))
if pagecount<=0 then pagecount=1
if pagecount>totalpage then pagecount=totalpage
rs.move(pagecount-1)*10