BBS论坛.docx
《BBS论坛.docx》由会员分享,可在线阅读,更多相关《BBS论坛.docx(35页珍藏版)》请在冰豆网上搜索。
![BBS论坛.docx](https://file1.bdocx.com/fileroot1/2023-1/29/0c235a2c-6d3d-4774-a97a-72701682c2c7/0c235a2c-6d3d-4774-a97a-72701682c2c71.gif)
BBS论坛
ASP网络程序课程设计报告
题目:
BBS论坛
专业:
地理信息系统
班级:
姓名:
指导教师:
设计日期:
2011.6.20
东华理工大学
测绘工程学院
1、设计题目:
BBS论坛
2、设计目的:
掌握ASP编程,熟悉Dreamweaver的使用及模块的创建过程。
3、设计概述和设计思想:
BBS又称电子公告板,它和E-mail应该是网上最早流行的栏目,并给大家提供了一个空间,可以自由的抒发情感、讨论问题。
该题目目标是基于ASP技术和Access数据库设计并实现一套较为完善的BBS系统,能够实现大部分常见BBS功能。
网上的BBS论坛大都是比较复杂的,一般支持多级回复,并可以根据关键字或作者查询,还可以统计每个人发表的文章数量等。
而这里只能是一个比较简单的BBS,本设计可以实现的功能有:
分为多个栏目、发表新文章、回复文章、统计点击次数和回复文章数、用户注册、登入和修改信息,主要体会BBS的设计思想,本设计宏观上分为两模块:
一个是浏览、发表和回复文章的模块,主要是关于BBS文章的;另一个是用户管理模块,主要关于BBS注册用户的。
4、设计任务:
构建一个BBS论坛系统,其中有注册和登入模块,使得会员可以正常登入,非会员可以通过注册成为会员,且会员可以修改密码,本系统还包含会员的发表和浏览文章的模块,留言和查看留言模块,游客浏览文章模块以及检查并设计与数据库连接模块和界面设计模块。
5、设计步骤:
1)建立数据库文件bbs.mdb,由于涉及论坛栏目信息、文章信息和用户信息,所以依次建立tbforum、tbbbs、tbusers表,结构依次如下图:
栏目信息表tbforum的结构
文章信息表tbbbs的结构
用户信息表tbusers的结构
2)设置ODBC数据源
3)分别建立数据库文件odbc_connection.asp、配置文件config.asp、函数文件function.asp、样式文件bbs.css、BBS首页文件index.asp、BBS列表页文件bbs_list.asp、BBS发表新文章页文件bbs_insert.asp、BBS详细页文件bbs_particular.asp、BBS回复文章页文件bbs_reinsert.asp、
BBS用户注册文件log_register1.asp、log_register2.asp、log_register3.asp、用户登入和注销文件log_in.asp、log_out.asp、用户修改密码和个人信息文件log_updata.asp和log_updatapwd.asp
6、设计代码:
1)BBS首页index.asp
<%OptionExplicit'强制声明变量%>
--#IncludeFile="odbc_connection.asp"-->
--#IncludeFile="config.asp"-->
bbs论坛
functioncheck_Null(){
if(document.frmReg.txtUserId.value==""){
alert("用户名不能为空!
");
returnfalse;
}
if(document.frmReg.txtPwd.value==""){
alert("密码不能为空!
");
returnfalse;
}
returntrue;
}
<%=conBBSTitle%>
returncheck_Null();">
<%IfSession("strUserId")<>""Then%>
已登录用户"disabled>
【注销】
【修改密码】
【修改个人信息】
<%Else%>
用户名
密码
<%EndIf%>
论坛栏目
文章数
<%
'以下建立记录集对象实例rs
Dimrs,strSql
strSql="Select*FromtbForum"
Setrs=conn.Execute(strSql)
'下面利用循环输出所有栏目,其中I变量用来顺序显示图片
DimI
DoWhileNotrs.Eof
I=I+1
Response.Write""
Response.Write"
intForumId="&rs("ID")&"'> | "
Response.Write"
intForumId="&rs("ID")&"'>"&rs("strForumName")&" | "
Response.Write"
"&rs("lngForumCount")&" | "
Response.Write""
rS.MoveNext
Loop
'关闭对象
rs.Close
Setrs=Nothing
conn.Close
Setconn=Nothing
%>
2)BBS列表页bbs_list.asp
<%OptionExplicit%>
--#IncludeFile="odbc_connection.asp"-->
--#IncludeFile="config.asp"-->
--#IncludeFile="function.asp"-->
bbs论坛
<%=conBBSTitle%>
<%
'下面一段分别获取本页面需要的两个变量,首先获取论坛栏目编号变量---------------------------
DimintForumId
intForumId=CInt(Request.QueryString("intForumId"))'获取传递过来的论坛编号
'获取数据页码变量
DimintPage
IfRequest.QueryString("intPage")<>""Then
intPage=CInt(Request.QueryString("intPage"))'获取传递过来的页码,转换为数字
Else
intPage=1'其他情况下设为1,当从首页过来或发表文章后就设为1
EndIf
'下面输出发表文章和返回首页的超链接---------------------------------------------------
Response.Write"intForumId="&intForumId&"'>【发表文章】"
Response.Write"【返回论坛】"
Response.Write"
"'为了美观,输出一个空行
'下面首先输出表格的标题栏-----------------------------------------------------------------
Response.Write""
Response.Write""
Response.Write"编号"
Response.Write"主题"
Response.Write"点击"
Response.Write"回复"
Response.Write"发表时间"
Response.Write"作者"
Response.Write""
'下面建立记录集实例rs,请注意Open方法的参数-----------------------------------------------
Dimrs,strSql
strSql="Select*FromtbBBSWhereintForumId="&intForumId&"AndintLayer=1OrderBydtmSubmitDesc"
Setrs=Server.CreateObject("ADODB.Recordset")
rs.OpenstrSql,conn,1'因为要分页显示,所以用键盘指针
'下面如果非空就显示记录
IfNotrs.BofAndNotrs.EofThen
'以下主要为了分页显示
rs.PageSize=conPageSize'设置每页显示多少条记录,从配置文件中读取
rs.AbsolutePage=intPage'设置当前显示第几页
'下面利用循环显示当前页的所有记录
DimI
ForI=1Tors.PageSize'循环输出当前页的所有记录
Ifrs.EofThenExitFor'如果到了记录集结尾,就跳出循环
Response.Write""
Response.Write""&rs("ID")&""
Response.Write"ID="&rs("ID")&"&intForumId="&intForumId&"&intPage="&intPage&"'>"&myHTMLEncode(rs("strTitle"))&""
Response.Write""&rs("intHits")&""
Response.Write""&rs("intChild")&""
Response.Write""&rs("dtmSubmit")&""
Response.Write""&rs("strEmail")&"'>"&rs("strUserId")&""
Response.Write""
rS.MoveNext
Next
'下面输出表格的结束标记,表格到此结束
Response.Write""
'下面输出当前页和总页数--------------------------------------------------------------------------
Response.Write"当前显示第"&intPage&"页/共"&rs.PageCount&"页"
'下面一段依次输出第1页、上一页、下一页和最后页的超链接
Response.Write" intPage=1&intForumId="&intForumId&"'>【第1页】"
IfintPage>1Then
Response.Write"intPage="&(intPage-1)&"&intForumId="&intForumId&"'>【上一页】"
Else
Response.Write"【上一页】"
EndIf
IfintPageResponse.Write"intPage="&(intPage+1)&"&intForumId="&intForumId&"'>【下一页】"
Else
Response.Write"【下一页】"
EndIf
Response.Write"intPage="&rs.PageCount&"&intForumId="&intForumId&"'>【最后页】"
EndIf
'关闭对象
rs.Close
Setrs=Nothing
conn.Close
Setconn=Nothing
%>
3)发表新文章页bbs_insert.asp
<%optionexplicit%>
--#Includefile="odbc_connection.asp"-->
--#Includefile="function.asp"-->
bbs论坛
--
functioncheck_Null(){
if(document.frmInsert.txtTitle.value==""){
alert("主题不能为空!
");
returnfalse;
}
if(document.frmInsert.txtUserId.value==""){
alert("用户名不能为空!
");
returnfalse;
}
returntrue;
}
//-->
发表文章
returncheck_Null();">
文章主题:
|
文章内容: | |
用户名: | --注释: 下面根据是否已经登录显示不同的用户名,如没有登录,则为“过客”--> <%IfSession("strUserId")<>""Then%> "disabled> <%Else%>
<%EndIf%> |
E-mail: | "> |
--注释:
这里用隐藏文本框将intForumId变量传递了过去-->
">
history.back();">
|
<%
'如果提交了表单,就执行下面的添加语句
IfTrim(Request.Form("txtTitle"))<>""Then
DimstrTitle,strBody,intLayer,intFatherId,intChild,intHits,strIP,strUserId,strEmail,intForumId
strTitle=myDangerEncode(Trim(Request.Form("txtTitle")))'返回文章标题
strBody=myDangerEncode(Request.Form("txtBody"))'返回文章内容
IfSession("strUserId")<>""Then
strUserId=Session("strUserId")'返回作者用户名
Else
strUserId="过客"'如果是未登录用户,则统一命名为过客
EndIf
strEmail=myDangerEncode(Request.Form("txtEmail"))'返回作者E-mail
intForumId=Request.Form("txtForumId")'获取隐藏文本框传递回来的栏目编号
intLay