基于B S架构的班级网站设计与实现--ASP课程设计

基于B S架构的班级网站设计与实现--ASP课程设计
基于B S架构的班级网站设计与实现--ASP课程设计

ASP课程设计

实验报告

项目名称:基于B/S架构的班级网站设计与实现参与成员:

学号:

联系电话:

日期: 2010-11-02

一、前言

ASP(Active Server Pages)活动服务器页面,基于微软公司的服务器IIS的统一环境,是Microsoft的一种技术,它起一种编程语言的作用,利用它编写动态产生网页的HTML程序代码。

ASP可以使用两种脚本语言:VBScript和Jscript(所谓的Jscript语言就是微软件版本的JavaScript语言),但主要使用VBScript。这些脚本可以执行应用程序逻辑,并能够用ActiveX组件执行特殊任务,如数据库查询、文件输入输出等。

ASP内含5个内置的Active Server Components(ActiveX服务器组件),即Database Access component(数据库访问组件)、File Access component(文件访问组件)、Ad Rotator component(广告轮显器组件)、Browser Capabilities component(浏览器信息组件)、Content Linking component(内部链接组件)。最常用的内置组件是文件组件和广告组件。ASP最强大的功能还是使用外置组件。

ASP本身包含了一个DLL文件,名字为asp.dll,缺省安装在Winnt\System32\inetsrv目录下。这个DLL文件负责得到一个ASP页面(由文件扩展名.asp标识),然后对它进行分析,寻找服务器端脚本内容。这个脚本传给相应的脚本引擎,脚本的执行结果与ASP页中的HTML和模板文本结合在一起。完整的页面会送到Web服务器,送往原先请求的客户端。

二、个人网站的设计

⒈体系结构

本系统通过客户端浏览器向网络上的服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。B/S结构简化了客户机的工作,把二层C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由Web服务器单独组成一层来负担其任务,从而减轻了客户机的压力。系统的体系架构:Browser/Web/DataBase(Access)。

⒉设计目标

在现有的各种异构平台的基础之上构筑一个通用的平台无关、语言无关的技术层,将网站的所有功能作为Web服务展示出来,用户根据自己的需要选择相关的服务。

⒊主要功能模块

图1 主要功能模块

本系统的权限采用基于角色的访问控制,权限赋予角色,角色分配给用户。用户通过所属的角色享有权限。通过权限控制,保障了合法用户顺利实现系统功能,禁止了非授权用户对系统的入侵。

⒋数据库设计

⑴通讯录

通讯录数据库文件bjtxl.mdb文件包括两个表,分别为alogin和txl。alogin用来存储登录界面的用户名和密码信息,txl用来存储同学的信息,表1和表2所示

⑵留言簿

留言簿数据库包括两个表GuestBook和hfBook。GuestBook用来存储教师留言信息,hfBook用来存储教务员的回复信息,表3和表4所示。hfBook数据库表中的字段“rID”存储原主题的ID,该ID就是GuestBook

数据库表中的ID字段。

三、系统实现

1.身份认证

主要代码:

<%

syhm=request("yhm")

smm=request("mm")

set rs=server.CreateObject("Adodb.recordset")

sql="select * from alogin where yhm='"&syhm&"'"

rs.open sql,conn

if syhm="" then

response.Write("管理员的名不能为空!")

%>

/>

请输入管理员名!



<%

response.End()

end if

if smm="" then

response.Write("密码不能为空")

%>

请输入密码!

<%

response.end()

end if

if syhm<>"chenqing" then

response.write("您不是系统管理员!")

%>

请重新输入系统管理员名!



<%

response.end()

else

if smm=rs("mm") then

response.Redirect(session("file"))

else

%>

密码错误!请重新输入密码!



<%

end if

end if

rs.close

set rs=nothing

conn.close

set conn=nothing

%>

2.聊天室

进入聊天室需要进行身份认证,完成此操作过后,自动跳转至聊天界面,在页面上方可以可见当前在线人数,其主要代码如下:

※ message.asp:聊天室的信息输入界面

<%

mywords = Request("message")

oneSentence = "姓名:" & Session("username")

oneSentence = oneSentence & "机器号:" & Session("no")& "说: " & mywords

Application.Lock()

Application("talk")=Application("talk") & oneSentence & "
"

Application.UnLock()

%>

※ display.asp:聊天信息显示页面

<%

Response.Write(Application("talk"))

%>

3.留言簿

留言簿包含提交留言,浏览留言,编辑留言(修改和删除),清除重写四大模块,其中编辑留言需要身份认证才可以进行修改、删除操作;并且浏览留言采用分页显示技术。“留言簿”主页面运行效果如图2所示,其主要代码如下:

※ handle.asp:处理程序

<%

'读取各字段的数据

Name = Request("Name")

Email = Request("Email")

Subject = Request("Subject")

Memo = Request("Memo")

'检查各字段是否输入了数据

If Name = "" Or Email = "" Or Subject = "" Or Memo = "" Then Response.Write ("字段空白不接受!")

'不再处理以下的程序

Response.End

End If

'插入到数据库

set conn = Server.CreateObject("ADODB.Connection")

conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" &_ Server.MapPath("lyb.mdb"))

SQL = "INSERT INTO lyb(姓名,email,主题,内容) VALUES('" &_

Name & "','" &Email & "','" & Subject & "','" & Memo & "')"

'Response.Write(SQL)

conn.Execute(SQL)

conn.close()

Response.Redirect("display.asp")

%>

※ display.asp:显示程序

<%

'连接数据库,做查询

set conn = Server.CreateObject("ADODB.Connection")

conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" &_ Server.MapPath("lyb.mdb"))

sql = "SELECT * FROM lyb ORDER BY 时间 DESC"

set rs = conn.Execute( sql )

<%

'按照的样式输出

While Not rs.EOF

%>

姓名: <%=rs("姓名")%>

Email:

">

<%=rs("email")%>

主题: <%=rs("主题")%>
时间: <%=rs("时间")%>

内容 <%=rs("内容")%>


<%

rs.movenext()

Wend

%>

图2 留言簿主页面

4.通讯录

通讯录的功能是保存姓名、E-mail地址、家庭住址等常用的联系信息。模块包含浏览记录,查询记录,添加记录和编辑记录(修改和删除)四个部分,其中添加记录和编辑留言需要身份认证。浏览留言采用分页显示技术,通讯录主页面运行效果如图3所示,其主要代码如下:

※ add.asp:添加记录

<%

set rs=server.CreateObject("adodb.recordset")

rs.open "txl",conn,1,2

rs.addnew

rs("xm")=request.Form("xm")

rs("lxfs")=request.Form("lxfs")

rs("bz")=request.Form("bz")

rs.Update

response.write "记录己经被成功输入。"

rs.close

set rs=nothing

conn.close

set conn=nothing

%>

※ del.asp:删除记录

<%

id=request.querystring("id")

SQLstmt="DELETE from txl where id="& id &""

conn.execute(SQLstmt)

conn.close

set conn=nothing

Server.Transfer "tongxunlu.asp"

%>

※ query.asp:查询记录

<%

xm2=request.form("xm")

sqlstmt="SELECT * from txl where xm='"& xm2 &"'"

set rs=server.createobject("adodb.recordset")

rs.open sqlstmt,conn,1,1

totalerec=rs.recordcount

if totalerec=0 then

response.write "没有符合条件的记录,请重新输入!"

response.end

end if

%>

<% do while not rs.eof %>

<%

rs.movenext

loop

rs.close

set rs=nothing

conn.close

set conn=nothing

%>

姓名联系方式
<%=rs("xm")%><%=rs("lxfs")%><%=rs("bz")%>

※ mod.asp:修改记录

<%

id3=request.form("id")

xm3=request.form("xm")

lxfs3=request.form("lxfs")

bz3=request.form("bz")

sqlstmt="UPDATE txl set xm='"& xm3 &"',lxfs='"& lxfs3 &"',bz='"& bz3 &"' where id="& id3 &""

conn.execute(sqlstmt)

conn.close

set conn=nothing

server.transfer "tongxunlu.asp"

%>

图3 通讯录主页面

图4 通讯录浏览

5.图片计数器

图片计数器是Application对象的一个用途,因为Application是所有的用户所共有的,所以可以存储计数器的值,当有新用户访问网页时自动增值计数器的值。其代码如下:

<% Application.Lock()

Application("Counter") = Application("Counter") + 1

Application.UnLock()

Function G ( counter )

Dim S, i

S = CStr( counter )

For i = 1 to Len(S)

myimage = myimage & ""

Next

G = myimage

End Function %>

您是本站第<%=G (Application("Counter"))%> 位贵宾!

6.当前时间

当前时间是now()自动调用系统时间实现的,其代码如下:

7.在线人数统计

在线人数统计采用Application对象和Session对象来编写。当网站

开启时就自动调用global.asa文件,此时其中的Application_OnStart 首先被调用,然后执行其中的语句,Application("whosOn")被自动清零。然后当第一位用户登录网站时,Session_OnStart被调用,此时Application("whosOn")被自动加一。当第二位、第三位用户登录时,又被加一,所以显示的是在线的人数。其代码如下:

※CountOnLine.asp

<%Response.Write("现在有" & Application("whoson")& "人在线")%> ※global.asa

8.广告轮显

广告图片的动态显示时利用内置组件ADROTATOR来实现的。使用该组件,可以在每次访问中显示不同的图标,可以设置广告的不同权重使得显示频率不同。其代码如下:

※ad.asp

<% set MyAdvertise = Server.CreateObject("MSWC.AdRotator") %>

<%=MyAdvertise.GetAdvertisement("ad.txt") %>

※ad.txt

REDIRECT ad_redir.asp

WIDTH 230 HEIGHT 60 BORDER 0

*

yule.gif

../../web/mifeng.html 娱乐天宫

40

welcome.gif

../../zhuye.asp 我的地盘我做主

30

lvhai.gif

../../web/lvhai.mht 安徽绿海商务学院

30

※ad_redir.asp

<% Response.Redirect(Request("url")) %>

9.文件链接组件

文件链接组件使用户可以在你页面中自由跳转,当有许多并列的页面时,改组件非常有用,可以大大简化每个页面加入相应链接信息的这个过程。其代码如下:

※link.asp

总文件个数为:

<%

Set Link = Server.CreateObject("MSWC.nextlink")

Response.Write(Link.GetListCount("link.txt"))

%>

<% Sum = Link.GetListCount("link.txt") '返回文件总数

For I = 1 to Sum '用循环依次写出所有的文件链接%>" target="_blank"> <%=Link.GetNthDescription("link.txt",I)%>

<% Next %>

※link.txt

wenjian/01.asp 咏白海棠 wenjian/02.asp 荷塘月色

wenjian/03.asp 三国演义 wenjian/05.asp 咏菊问菊

wenjian/06.asp 赤壁怀古

10.记录客户端的IP地址

该程序中OpenTextFile(path,8,true)方法有三个参数,第一个参数“path”打开文件的地址;第二个参数“8”是打开方式,这里是以追加的形式打开;第三个参数“true”表示如果该文件不存在就创建一个新文件。Request.ServerVariables("REMOTE_ADDR")为客户端的IP地址,这样所有访问过该页面的IP地址就被记录下来了。其代码如下:<% path = Server.MapPath("test.log")

set MyFileObject = Server.CreateObject("Scripting.FileSystemObject")

set MyTextFile = MyFileObject.OpenTextFile(path,8,true)

MyTextFile.WriteLine(Request.ServerVariables("REMOTE_ADDR")) MyTextFile.Close()

%>

11.文件上传

文件上传组件可以使用户在ASP页面中接受客户浏览器上传的文件。本文件上传包含下载、浏览、删除操作,其中删除操作需要身份认证,用户上传的文件保存到数据库中,Access中是利用类型“OLE对象”来上传文件的。其代码如下:

※index.asp

上传文件

<%

set conn = server.createobject("ADODB.CONNECTION")

conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &_ server.mappath("temp.mdb")

strSql = "SELECT * FROM uploadfiles ORDER BY submit_date DESC"

Set rs = conn.Execute(strSql)

Do while Not rs.Eof

Response.Write "

"

Response.Write "

"

Response.Write "

"

Response.Write "

"

Response.Write "

"

Response.Write "

"

Response.Write "

"

Response.Write "

"

Response.Write "

"

Response.Write "

"

rs.MoveNext

Loop

%>

预览名称大小(K)类型简介下载浏览删除
" & rs("filename") & "" & Int(rs("size")/1024)

& "

" & rs("ext") & "" & rs("intro") & "

href='download.asp?id=" &_

rs("id") & "'>下载

href='browse.asp?id=" &_

rs("id") & "' target='_blank'>浏览

href='delete.asp?id=" &_

rs("id") & "'>删除

※add_form.asp

上传文件

ENCTYPE="multipart/form-data" NAME="form1" ONSUBMIT="return check_Null();">

选择文件
(文件名请勿用中文)
简单说明

(必须输入)

※browse.asp

">

※showimage.asp

<% set conn = server.createobject("ADODB.CONNECTION")

conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &_ server.mappath("temp.mdb")

'打开记录集

strSql = "SELECT * FROM uploadfiles WHERE id = " & Request("id") Set rs = conn.Execute(strSql)

'下面将文件输出到客户端浏览器

Response.ContentType = "image/*"

Response.BinaryWrite rs("fileimage") %>

※download.asp

<% set conn = server.createobject("ADODB.CONNECTION")

conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &_ server.mappath("temp.mdb")

'打开记录集

strSql = "Select * From uploadfiles where id = " & Request("id") Set rs = conn.Execute(strSql)

'下面将文件输出到客户端,首先指明ContentType

Response.ContentType = "application/octet-stream"

'告诉浏览器文件名称

Response.AddHeader

"Content-Disposition","attachment;filename=" & rs("filename") '告诉浏览器文件大小

Response.AddHeader "Content-Length", CStr(rs("size"))

'输出二进制文件

Response.BinaryWrite rs("fileimage")%>

※delete.asp

<%

'删除数据库中的记录

set conn = server.createobject("ADODB.CONNECTION")

conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &_

server.mappath("temp.mdb")

strSql = "Delete From uploadfiles Where id=" &_

Request.QueryString("id")

conn.Execute(strSql)

'返回首页

Response.Redirect ("index.asp")

%>

※upload.asp

<% set conn = server.createobject("ADODB.CONNECTION")

conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &_ server.mappath("temp.mdb")

Set upload = Server.CreateObject("LyfUpload.UploadFile")

upload.maxsize=20*1024*1024 '设置文件上传的最大为20MB

'保存文件到服务器内存中,upfile是表单中的名称

filename = upload.SaveFiletodb("upfile")

If filename="0" Then

'表示文件过大,超出体积

Response.Write "文件超出2M!请返回"

Response.Write "重新上传

"

Else

'将文件信息保存到数据库,首先建立Recordset对象

strSql="SELECT * FROM uploadfiles"

Set rs = Server.CreateObject("Adodb.Recordset")

rs.Open strSql,conn,1,3

'下面增加一条新记录

rs.AddNew

rs("filename") = filename

rs("ext") = GetExt(filename) '调用函数获取扩展名

rs("size") = Upload.filesize

rs("intro") = Upload.Request("intro") '获取表单信息

rs("fileimage").AppendChunk Upload.DBContent '给文件内容字段赋值

rs.Update

'成功插入数据库后,返回首页

Response.Redirect("index.asp")

End If%>

<% '该函数用来得到文件的扩展名

Function GetExt(thefilename)

strTemp = Split(thefilename,".")

numTemp = Ubound(strTemp)

If numTemp = 0 Then

GetExt="No" '表示没有扩展名

Else

GetExt="." & strTemp(numTemp) '是数组中最后一项End If

End Function

%>

四、结束语

ASP课程已经学过,但理解的不够深。本次课程设计将静态网页和动态网页结合起来,使我有了网站设计的经验,我感觉以后在工作中遇到类

相关主题
相关文档
最新文档