论坛设计论文.docx
《论坛设计论文.docx》由会员分享,可在线阅读,更多相关《论坛设计论文.docx(32页珍藏版)》请在冰豆网上搜索。
论坛设计论文
摘要
随着计算机的广泛应用,人们已经对网络不再感到陌生。
在科技飞速发展的今天,电脑信息技术与各行各业进行了有效的结合。
人们在网上可以进行网上购物,网上交友,电子商务,网络营效等等。
面对强大的网络功能,必须在某方面要有一个健全的系统才能使网络发挥的淋漓尽致。
在这个平台上,论坛提供了一个全新的人类沟通新方式。
论坛全称为BulletinBoardSystem(电子公告板)或者BulletinBoardService(公告板服务),是Internet上的一种电子信息服务系统。
它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。
它是一种交互性强,内容丰富而及时的Internet电子信息服务系统,用户在BBS站点上可以获得各种信息服务、发布信息、进行讨论、聊天等等。
本文主要分析了论坛的主要组成情况,包括论坛的设计目标,框架结构,数据流程和论坛的主要特点等,重点介绍了论坛前台功能模块的详细思路和实现方法,以及对后台数据库关键技术和部分源代码的详细说明。
关键词:
论坛,网络,代码,实现,数据库
1系统需求分析
1.1开发背景
进入21世纪以后,知识经济的飞速发展对我们的社会产生了巨大的影响。
IT业的飞速发展不仅仅带来了巨大的经济效益,也在逐渐改变着我们的生活,其中影响最为广泛的就是互联网了。
从事IT业工作的人都知道,互联网蕴藏着巨大的“金矿”,如何从这个巨大的财富中获得一份属于自己的财富,需要的不仅仅是努力和勤奋,更多的是知识和技术,只有掌握了知识和技术才有可能成为知识经济时代成功的淘金者。
近年来,随着Internet的迅猛发展,远程信息、网上聊天、分布式多媒体系统、电子商务等网络应用系统的相继问世,为信息处理的网络化展示了美好的前景。
目前呈几何增长的互联网网站中,有相当一部分仍固守“静态”,无形中已大大落后于时代的步伐。
所谓“静态”指的就是网站的网页内容“固定不变”,当用户浏览器通过互联网的HTTP(HypertextTransportProtocol)协议向WEB服务器请求提供网页内容时,服务器仅仅是将原已设计好的静态HTML文档传送给用户浏览器。
其页面的内容使用的仅仅是标准的HTML代码,最多再加上流行的GIF89A格式的动态图片,比如产生几只小狗小猫跑来跑去的动画效果。
若网站维护者要更新网页的内容,就必须手动地来更新其所有的HTML文档。
“静态”网站的致命弱点就是不易维护,为了不断更新网页内容,你必须不断地重复制作HTML文档,随着网站内容和信息量的日益扩增,你就会感到工作量大得出乎想象。
所谓“动态”就是指具有以下几个特点的网站:
1、“交互性”即网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大势所趋。
2、“自动更新”即无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量。
3、“因时因人而即当不同的时间、不同的人访问同一网址时会产生不同的页面。
这种具有动态特性的网站的典型代表就是-------论坛。
1.2系统实用功能分析
随着时代的进步,人们对网络的要求也越来越高,论坛就是在这种背景下诞生的。
它不仅包含了网站原有的特点,还可以让人们在浏览网页的情况下还可以发表自己的观点,其实这只是最基本的,它还有许多优点,下面就让我们简洁的陈述一下:
用户功能:
1发帖。
2用户个人信息记录。
3浏览功能,你即使不进行注册,同样可以浏览帖子内容,但要发言必须注册。
版主功能:
(1)版面显示版主主页地址
(2)除普通用户功能增加删除帖子功能
论坛系统用例图如图1-1所示:
普通用户
图1-1流程图
2系统设计
2.1相关术语解释:
HTML语言:
在网上发布消息,必须使用一种每一台计算机都能够识别的语言,这就是HTML(HyperTextMarkupLanguage),超文本语言。
自从上一个世纪90年代Web网络的迅速发展,这种语言空前繁荣。
到1997年1月,随着HTML3.2的推出,HTML语言得到了很大的发展,但是有些问题始终难以解决,比如对各种平台和各种浏览器都兼容,等等。
因此,人们希望能够设计出一种HTML语言,使其能够尽量反映各个行业的需求和满足不同人群的需要。
在开发的同时也充分考虑到网络上各个方面的使用环境,比如蜂窝电话,手提设备和输入输出的语音系统等等环境。
在1998年4月24日,这一愿望终于实现了,W3C标准化组织发布了HTML4.0,将原先的HTML扩展到一些全新的领域,例如样式表单,Script语言,内嵌对象,框架结构甚至赋予残疾人使用网络能力等新的功能。
这一技术即使到了新的世纪也仍然具有划时代的意义。
使用HTML语言可以赋予网络设计者许多强有力的工具,比如:
1、使用各种基础的印刷元素例如标题、文字、表格、列表、照片、插图等来发布在线的文档。
2、通过超文本链接可以使用户方便地在各种信息之间切换,就像单击一个按钮一样简单。
3、设计一种表单控件控制网络上的各种传输、远程服务等功能,就像查询信息、订购货物等。
4、在文档中直接包含视频剪接、效片断、各种脚本程序和另外的许多对象,比如Flash和Active控件。
以上的这些功能是一般的文档不能完全做到的。
这些优势使得HTML成为网络上使用的事实标准。
ASP语言:
在网络程序设计中,ASP(ActiveServerPages)是服务器端的一种未经编译的开放式程序,程序设计者可按ASP的要求来编写功能强大的网络应用程序,并实现服务器端的数据处理及数据上传与下载。
这种程序通常被称作“ASP程序”(或“ASP页”)。
一个ASP程序通常包括HTML标签语句、文本和脚本程序等。
由于这类程序是以“.asp”为扩展名存放的,因此对应的文件可称作“ASP文件”。
ASP程序是运行于网络服务器端的一种应用程序。
在计算机硬件配置允许的情况下,如果希望运行ASP程序,应当安装一个能够支持网络服务器的操作系统。
常见的网络服务器操作系统有个人网络服务器PWS(PersonalWebServer)和因特网信息服务器IIS(InternetInformationServer)。
严格地说,ASP不是一种编程语言,而是一种开放式的编程环境。
它的数据传送和数据处理功能要通过具体的程序设计语言来实现。
将脚本语言VBScript(或者JavaScript)与HTML语言有机地结合起来,就可以构成这种编程环境。
因此,一个ASP程序的语句串,部分来自于脚本语言,部分来自于HTML。
其中,用HTML语言设计的程序称作HTML文档,是由客户端浏览器解释执行的一种程序;用脚本语言设计的部分,则是专职服务器来运行的。
ACCESS数据库:
数据库的管理系统就是从图书馆的管理方法改进而来的。
人们将越来越多的资料存入计算机中,并通过一些编制好的计算机程序对这些资料进行管理,这些程序后来就被称为"数据库管理系统",它们可以帮我们管理输入到计算机中的大量数据,就像图书馆的管理员。
我们将要学习的Access也是一种数据库管理系统。
2.2论坛前台构架
功能模块划分如图2—1所示:
图2-1功能模块图
2.3论坛前台实现的功能
用户登陆系统:
毕业设计论坛在前台实现了用户登陆系统,当你把用户名和密码输入进去,系统会自动和数据库的用户和密码进行核对,如果一样就登陆进去,如果和原始资料对不上就提示你进入注册页面进行注册,注册成功的话会自动把你的用户名和密码输入到后台数据库里面,下次不用注册直接登陆就可以了。
论坛的登陆系统如图2-2所示:
图2-2登陆界面
你不但可以对你感兴趣的帖子进行留言,而且可以发表自己的主题,等待其他网友对你帖子的评论。
前台功能版块:
图2-3登帖子界面
3数据库设计
3.1数据库简介
本论坛使用ASP+ACCES数据库制作而成。
Access的优点:
(1)存储方式简单,易于维护管理
Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb或.accdb)的数据库文件中,便于用户的操作和管理。
(2)面向对象Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。
它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。
通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。
同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。
(3)界面友好、易操作
Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。
系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。
(4)集成环境、处理多种数据信息
Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。
(5)Access支持ODBC(开发数据库互连,OpenDataBaseConnectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。
Access还可以将程序应用于网络,并与网络上的动态数据相联接。
利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。
(6)支持广泛,易于扩展,弹性较大
能够将通过链接表的方式来打开EXCEL文件、格式化文本文件等,这样就可以利用数据库的高效率对其中的数据进行查询、处理。
还可以通过以Access作为前台客户端,以SQLServer作为后台数据库的方式(如ADP)开发大型数据库应用系统。
总之,Access是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发;即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。
后台数据关系如图3-1
图3-1流程图
箭头表示数据传输,比如:
用户在前台输入自己的用户名和密码进行登陆,系统会自动把用户名和密码传送到后台数据库的用户个人资料中进行核对,如果正确将提示登陆成功,如果对不上将提示你用户名或密码错误并且重新注册一个新的帐号。
3.2后台数据库实现的功能
用户个人信息它包含了个人所有的信息,比如:
新加入时间,用户的头像,密码,等等。
它的作用是用来记录和核对用户的个人资料。
系统提示是当你注册成功的时候系统会给你发出如:
欢迎您的到来
如有任何疑问请及时联系系统管理员。
感谢您注册本系统。
流程图3-2如下:
图3-2流程图
它的作用是用来提示新注册的用户已经注册成功并且成功登陆。
用户的网络个人信息是说明了用户的操作系统,IP地址,浏览器,访问该论坛的时间。
示意图3-3如下:
图3-3流程图
帖子信息包含了用户发帖的题目,具体内容,用户昵称,发帖时间。
具体的示意图3-4如下:
图3-4流程图
用户网络信息和帖子信息这两个数据库的作用是方便管理员的定期查阅与管理。
我们可以通过下面表格来对后台数据库的作用有一个更为直接的认识。
表3.1
后台数据库名称
作用
用户个人资料
记录和核对用户的个人资料
系统提示
提示新注册用户已注册成功且成功登陆
帖子信息
方便管理员的定期查阅与管理
用户网络信息
方便管理员的定期查阅与管理
4系统的实现
4.1连接数据库代码
<%
Response.Buffer=True
DimConn,DataBase,Driver,SearchNum,StartTime
SearchNum=0'数据库查询次数,初始值
StartTime=Timer()'运行开始时间
‘过程用于连接数据库
SubLinkDataBase()
DataBase=Server.MapPath("DataBase/SnowBoy.mdb")
Driver="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&DataBase
SetConn=Server.CreateObject("Adodb.Connection")
Conn.OpenDriver
IfErrthen
Err.Clear
SetConn=Nothing
Response.Write"数据库连接出错,请检查连接字符串"
Response.End
Endif
EndSub
SubCloseConn()
Conn.Close
SetConn=Nothing
EndSub
'IfNotisObject(Conn)ThenCallLinkDataBase()
%>
4.2主要代码
用户登录代码
<%
Snow.Nowstats="会员登陆"
Snow.Head()
dimTempCome,Comeurl,TempLogin
IfRequest.ServerVariables("HTTP_REFERER")<>""Then
TempCome=Split(Request.ServerVariables("HTTP_REFERER"),"/")
Comeurl=TempCome(UBound(TempCome))
Else
Comeurl="index.asp"
EndIf
TempLogin=Template.Main(3)
TempLogin=Replace(TempLogin,"{$LoginStatus}","请输入您的用户名、论坛密码登录")
TempLogin=Replace(TempLogin,"{$Width}","750")
TempLogin=Replace(TempLogin,"{$Comeurl}",Comeurl)
writeTempLogin
Snow.Footer()
%>
图4-1登录
用户注册代码
<%
dimFoundErr
dimUserName,splitwords,UserEmail,ErrMsg
FoundErr=False
IFSnow.UserOption(0)=1thenErrMsg=ErrMsg+"
论坛暂停新用户注册。"
ifrequest("UserName")=""orStrLen(request("UserName"))>10orStrLen(request("UserName"))<0then
ErrMsg=ErrMsg+"
请输入您的用户名(长度不能大于10小于0个字符)。"
FoundErr=true
endif
ifInstr(request("UserName"),"=")>0orInstr(request("UserName"),"%")>0orInstr(request("UserName"),chr(32))>0orInstr(request("UserName"),"?
")>0orInstr(request("UserName"),"&")>0orInstr(request("UserName"),";")>0orInstr(request("UserName"),",")>0orInstr(request("UserName"),"'")>0orInstr(request("UserName"),",")>0orInstr(request("UserName"),chr(34))>0orInstr(request("UserName"),chr(9))>0orInstr(request("UserName"),"")>0orInstr(request("UserName"),"$")>0then
ErrMsg=ErrMsg+"
用户名中含有非法字符。"
FoundErr=true
else
UserName=CheckStr(trim(request("UserName")))
endif
splitwords=split(Snow.UserOption(5),"|")
fori=0toubound(splitwords)
ifinstr(UserName,splitwords(i))>0then
ErrMsg=ErrMsg+"
您输入的用户名包含系统禁止注册字符。"
FoundErr=true
Exitfor
endif
next
ifIsValidEmail(trim(request("UserEmail")))=falsethen
ErrMsg=ErrMsg+"
您的Email有错误。"
FoundErr=true
else
UserEmail=CheckStr((request("UserEmail")))
endif
ifnotfounderrthen
IfNotisObject(Conn)ThenCallLinkDataBase()
ifcint(Snow.UserOption
(1))=0then
SQL="selectUserEmailfrom[UserData]whereUserName='"&UserName&"'orUserEmail='"&UserEmail&"'"
else
SQL="selectUserEmailfrom[UserData]whereUserName='"&UserName&"'"
endif
SetRs=Snow.execute(SQL)
ifNotRs.EofandNotRs.Bofthen
ifcint(Snow.UserOption
(1))=0andRs("UserEmail")=UserEmailthen
ErrMsg=ErrMsg+"
对不起,本论坛已经限制了一个Email只能注册一个帐号,请重新选择您的Email。"
else
ErrMsg=ErrMsg+"
对不起,您输入的用户名已经被注册。"
Endif
founderr=true
else
founderr=false
endif
rs.close
setrs=nothing
endif
%>
<%=Snow.ForumOption(0)%>--检测账号
--
body{
margin-left:
0px;
margin-top:
0px;
margin-right:
0px;
margin-bottom:
0px;
background-color:
#EFF6E0;
background-image:
url(bg.gif);
background-position:
center;
SCROLLBAR-HIGHLIGHT-COLOR:
#ffffff;
SCROLLBAR-SHADOW-COLOR:
#96CCED;
SCROLLBAR-3DLIGHT-COLOR:
#96CCED;
SCROLLBAR-ARROW-COLOR:
#330000;
SCROLLBAR-TRACK-COLOR:
#E2F3F1;
SCROLLBAR-DARKSHADOW-COLOR:
#ffffff;
}
-->
用户检测情况
<%
iffounderrthen
response.writeErrmsg
else
response.write"恭喜,您所填写的用户和Email通过检测,可以正常注册!
请继续将您的注册信息填写完整,谢谢!
"
endif
%>
图4-2注册
图4-3注册成功
用户登录时间函数,用于显示用户登录的时间
图4-4查看
FunctionUserLoginDate()
dimTempStr,StrImg
ifSnow.FoundUserthen
TempStr=Template.Html
(1)
StrImg="if(this.width>90){this.width=90;this.height=90}'>"
TempStr=Replace(TempStr,"{$UserFace}",StrImg)
TempStr=Replace(TempStr,"{$MyNote}",Session("UserInFo")(20))
TempStr=Replace(TempStr,"{$UserName}",Snow.UserName)
Else
TempStr=Template.Html
(2)
Endif
TempStr=Replace(Template.Html(0),"{$UserLoginIsTrue}",TempStr)
TempStr=Replace(TempStr,"{$MemberCount}",Snow.MemberTotal)
TempStr=Replace(TempStr,"{$NewUserName}",Snow.NewMember)
TempStr=Replace(TempStr,"{$YesterdayTopic}",Snow.YesterdayTopic)
TempStr=Replace(TempStr,"{$TodayTopic}",Snow.TodayTopic)
TempStr=Replace(TempStr,"{$TotalTopic}",Snow.TotalTopic)
展开阅读全文
相关搜索
|