论坛系统后台分类版块管理模块的设计与实现.docx
《论坛系统后台分类版块管理模块的设计与实现.docx》由会员分享,可在线阅读,更多相关《论坛系统后台分类版块管理模块的设计与实现.docx(30页珍藏版)》请在冰豆网上搜索。
论坛系统后台分类版块管理模块的设计与实现
论坛系统后台分类版块管理模块的设计与实现
一、系统开发背景和意义
进入二十一世纪,计算机技术迅速向着网络化、集成化方向发展。
当今出现的网上论坛,与其它媒体相比,可以更加自由地发表、交流各种观点,可以非常及时地,广泛、深入地,具体讨论、辩论各种重要,但常有尖锐分歧。
办好网上论坛,就能非常及时的使许多创新的思想、观点得以交流、展示。
使正确的东西能更加明确、丰富的普及和传播;使错误的理念能得到及时批判、纠正,而不致造成泛滥、毒害;使真理,越辩越明,更加深入发展。
因而,网上论坛是世界上真正最为民主、自由的乐土,是贯彻执行“百花齐放、百家争鸣”方针的有力工具,是培育、发展各种创新思想的重要苗圃。
随着Internet技术的不断发展,以及用户群爆炸性地增长,网络不再仅仅是信息的被动获取来源,更成为人们探讨间题、交换观点的场所,其中,网上论坛扮演了极其重要的角色,随着时间的推移,论坛站点中积存了丰富的信息资源,不但有各类技术资料和新闻文档,还包含着用户的判断和评论,论坛站点己成为Web信息库的重要组成部分,自网上论坛诞生20多年以来,随着Web技术的发展,特别是ASP(动态服务器页面)技术出现以后,己经由原来简单的电子公告板系统发展为功能丰富的网上论坛和虚拟社区模式。
各种论坛随着网络迅速发展,几乎充实着生活工作的每一个方面,无论是商界、政界,还是娱乐界,都有各种论坛。
互联网正在融入我们的生活,网络提供给我们的不只是一个获取信息的来源,而且还是一个可以相互交流的空间,网上论坛正是一种供人们进行交流的网络空间,影响和改变着我们的生活。
二、环境
为了保证BBS论坛管理系统运行的高效性和可靠性,服务器应具有较高的软硬件配置,客户端的要求不是很高。
此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。
其开发和运行环境要求如下:
开发环境
Windows7MSofficeaccessMSvisualstudio2012
运行环境
Windows7InternetExplorerNetBoxVersion2.8Build4128
ASP技术简介:
动态服务器网页(ActiveServerPages,简称ASP),由微软公司开发的服务器端运行的脚本平台,它被Windows下InternetInformationServices(IIS)的程序所管理。
通过ActiveXserver的技术让不同的用户能有不同的画面,或需要让他们可以访问服务器(server)上的数据时,使用ASP3.0中提供了五个内置的对象创建模拟和安全性的动态内容,来协助程序员隐藏复杂的沟通机制,让程序员可以专注在解决问题和应用之上,这样可以更快速地开发动态网页的同时每一个组件都是可以由一组富有经验的程序员根据动态网页最常用的功能而独立开发。
ASP隐藏了网页服务器与浏览者之间沟通的繁琐机制的同时也基于scriptbase的特性,网页撰写员可以专心撰写应用的程序的逻辑部份,再者ASP也像HTML般通过撰写程序来实时测试网页是否安全地运行,而不必担心程序和服务器不能沟通的问题,另外因为那些script是于发送前于服务器中先行转译处理成为HTML后再而发送至代理服务器边的动态网页技术,不必担心浏览器的支持性及,网页撰写员的程序逻辑像client-sidescript会被盗用,因此最终浏览者只会是使用HTML来浏览。
利用ASP程序最常用的是Cookies,它利用Session组件实现的。
同时还可以利用第三方组件延伸ASP的作用,如利用MailSender组件发送电子邮件。
通过ASP,可以结合HTML网页、ASP指令和ActiveX组件创建动态、交互且高效的WEB服务器应用程序。
同时,ASP也支持VBScript和JScript等脚本语言,默认为VBScript,而其中其中JScript是微软公司的ECMAScript标准的实现,并且有自己的扩展。
ASP是经过服务器解析之后再向网页浏览器返回数据,所以有了ASP就不必担心客户的浏览器是否能运行你所编写的代码。
因为所有的程序都将在网页服务器端执行,包括所有嵌在普通HTML中的脚本程序。
当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。
由于代码是需要经过服务器执行之后才向浏览器发送的,所以在客户端看到的只能是经过解析之后的数据,而无法获得源代码,故编写者不用担心自己的源代码会被别人剽窃。
但不排除黑客利用系统漏洞窃取服务器端的ASP源代码。
基于这样的解析方式,也导致运行ASP页面相对于普通的HTML页面要慢一点。
因为普通的HTML页面只需要浏览器就能够解析,而ASP则必须是服务器将整页的代码都执行一遍之后再发送数据。
ASP提供与数据库的交互,如MicrosoftSQLServer、MicrosoftAccess、MySQL和Oracle,比较流行的是ASP和MicrosoftSQLServer的组合。
三、小组成员
肖杨卢霞
四、软件可行性研究
1.技术可行性:
无论从硬件或软件上来说,建立此套论坛系统的技术方面都是可行的。
从软件开发方面来看,本系统是一个基于ASP+access的Web应用程序。
目前ASP、VBScript和SqlServer2000相结合的Web开发技术已经非常成熟,利用现有的技术完全可以达到功能目标。
从当前计算机技术的发展程度来看,在技术上是完全可行的。
2.经济可行性
本系统开发成本低,运行和维护简单,不需要复杂的技术要求和昂贵的运行维护成本。
只需要一台便宜的服务器就可以有效运行该系统,完成简单的设置就可。
因此,本系统具有经济可行性。
3.社会可行性
本网站论坛以操作简单,功能完善,运行速度快,本着一切为用户着想作为其设计目标,本系统主要为大学生用,具备一定的计算机基础知识的用户都能使用,在操作方面不会存在问题,可以推广使用。
因此,本系统具有社会可行性。
4.结论:
本系统在技术可行性、经济可行性、社会可行性上均具有可行性,因此本系统理论上是可以实现的。
五、软件需求分析
1.软件系统需求描述:
利用ASP和visualstudio作为开发工具、MSaccess作为数据库开发一个基于WEB的图书馆管理系统。
系统的主要用户是论坛管理人员、和用户两类,具体功能如下:
图1-1论坛系统用例图
(1)浏览功能:
用户可以浏览论坛中的信息;
(2)权限设置:
管理员设置浏览权限;
(3)后台管理:
管理员对论坛各项功能进行设置,包括添加分类,添加板块等;
(4)前台管理:
管理员发布公告等;
(5)论坛清理:
对论坛多余的帖子、分类进行清理。
2.软件系统数据流图(由加工、数据流、文件、源点和终点四种元素组成):
1)顶层数据流图
图2-1论坛系统顶层数据流图
2)0层数据流图
图2-2论坛系统0层数据流图
3)1层数据流图
图2-3添加分类1层图
图2-4添加论坛1层图
图2-5论坛整理1层图
3.软件系统数据字典:
以下仅以图2-3,添加分类的1层数据流图为例,其相对应的数据字典如下。
1)数据源点及汇点描述:
1.名称:
管理员
简要描述:
论坛系统后台管理
有关数据流:
后台管理的结果显示
名称:
用户
简要描述:
浏览论坛
有关数据流:
后台管理结果的显示
2)加工逻辑词条描述:
1.加工名:
添加分类
加工编号:
1.1
简要描述:
添加论坛分类
输入数据流:
输入相关数据
输出数据流:
添加结果
加工逻辑:
添加论坛分类,前台显示出添加的分类,用户可以浏览发帖
2.加工名:
分类改名
加工编号:
1.2
简要描述:
修改分类名
输入数据流:
输入分类名
输出数据流:
修改结果
加工逻辑:
修改论坛分类名,用户可以查看修改结果
3.加工名:
删除分类
加工编号:
1.3
简要描述:
删除论坛分类
输入数据流:
删除命令
输出数据流:
删除结果
加工逻辑:
删除成功后,前台没有显示
4.加工名:
分类排序
加工编号:
1.4
简要描述:
输入数据流:
输入分类顺序
输出数据流:
排序结果
加工逻辑:
排序完成后,用户看到的是排好序的分类
3)数据流名词条描述:
1.数据流名:
管理成功
说明:
用来通知管理员操作结果
数据流来源:
分类记录
数据流去向:
管理员
数据流组成:
管理成功=相应操作成功,返回论坛分类板块
2.数据流名:
显示结果
说明:
用于系统前端显示
数据流来源:
分类记录
数据流去向:
用户
数据流组成:
显示结果=存在添加的分类,分类名称更改成功,删除的分类不存在,分类排序成功
4)数据文件词条描述:
1.数据文件名:
分类记录
简述:
存放分类操作信息
输入数据:
输出数据:
操作结果
数据文件组成:
分类记录=论坛名称+论坛标志+论坛版主+论坛介绍+论坛顺序+访问等级
存储方式:
关键码
存取频率:
4.数据库设计
1.
(1)管理员实体E-R图
(2)管理员表
2.
(1)用户等级实体E-R图
(2)用户等级表
3.
(1)论坛板块实体E-R图
(2)板块表
4.
(1)论坛实体E-R图
(2)论坛表
六:
软件设计与编码
1.软件系统模块结构图:
2.软件系统其中的3个模块的详细设计(画程序流程图):
1.整理修复板块流程图
2.添加论坛分类流程图
3.论坛合并流程图
3.软件系统其中的2个模块的界面以及编码:
1.论坛版面管理界面如图图3-1所示
图3-1
删除分类功能代码:
SubBoardInfo
DimRs,Brs,i,Install,Temp,II,Po,BoardType
%>
论坛版面
相应操作
<%
SetRs=YxBBs.execute("SelectBoardID,BoardName,ParentID,Depth,Child,BoardTypefrom[YX_board]orderbyRootid,orders")
IfRs.eoforRs.BofThen
CallGoBack("","论坛没有分类!
请先Action=AddClass>添加分类")
ExitSub
EndIf
Brs=Rs.GetRows(-1)
Rs.close
ForI=0ToUbound(Brs,2)
Temp=""
Install=" Action=AddBoard&BoardID="&BRs(0,i)&"'>添加论坛"
IfBrs(3,i)=0Then'分类
Temp=""&Temp
IfBrs(4,i)>0Then'如果有子论坛
Temp=Temp&Brs(1,i)&"("&Brs(4,i)&")"
Else
Temp=Temp&Brs(1,i)
EndIf
Install=Install&" | Action=EditClass&BoardID="&Brs(0,i)&"'>分类改名"
IfBrs(4,i)>0Then
Install=Install&" | alert('不能删除!
该分类含有论坛!
\n\n要删除本类,必须先把属下的论坛删除或移走。
')>删除分类"
Else
Install=Install&" | 您确定要删除吗?
')href='?
Action=DelClass&BoardID="&Brs(0,i)&"'>删除分类"
EndIf
Else'版面
Temp=""&Temp
Po=""
ForII=1ToBrs(3,i)
Po=Po&"∣"
Next
IfBrs(4,i)>0Then'如果有子论坛
Temp=Temp&Po&Brs(1,i)&"("&Brs(4,i)&")"
Else
Temp=Temp&Po&Brs(1,i)
EndIf
Install=Install&"|Action=EditBoard&BoardID="&Brs(0,i)&"'>修改|BoardID="&Brs(0,i)&"'>权限设置"
IfBrs(4,i)>0Then
Install=Install&"|'onclick=alert('不能删除!
该版面含有子论坛!
\n\n要删除本版,必须先把属下的子论坛删除或移走。
')>删除"
Else
Install=Install&"|您确定要删除吗?
')href='?
Action=DelBoard&BoardID="&Brs(0,i)&"'>删除"
EndIf
Install=Install&"|Action=ClearData&BoardID="&BRs(0,i)&"'>清理|Action=OrdersBoard&BoardID="&BRs(0,i)&"'>置前"
IfBrs(5,i)Then
Install=Install&"|Action=PassUser&BoardID="&BRs(0,i)&"'>认证用户"
EndIf
EndIf
Response.Write(Temp&"
"&Install&" | ")
Next
%>
<%
EndSub
2.论坛整理修复界面如图3-2所示
论坛垃圾清理功能代码:
SubDelWuiong
Dimii,i,AllTable%>
论坛垃圾清理
正在清理无效主题!请稍等...
|
|
9pt">09pt">%
<%Response.Flush
AllTable=Split(YxBBs.BBSTable(0),",")
Fori=0TouBound(AllTable)
YxBBs.execute("delete*from[YX_bbs"&AllTable(i)&"]whereTopicID<>0andnotexists(selectnamefrom[YX_topic]where[YX_bbs"&AllTable(i)&"].TopicId=[YX_Topic].TopicID)")
YxBBs.execute("delete*from[YX_Topic]whereSqlTableID="&AllTable(i)&"andnotexists(selectnamefrom[YX_bbs"&AllTable(i)&"]where[YX_Topic].TopicID=[YX_bbs"&AllTable(i)&"].TopicId)")
Next
CallTable("无效主题清理完毕!
","")
CallPicPro(1,6,"正在清理无效回复帖子!
请稍等...;")
Fori=0TouBound(AllTable)
SetRs=YxBBs.Execute("selectReplyTopicIDfrom[YX_bbs"&AllTable(i)&"]whereReplyTopicID<>0")
DoWhileNotRs.eof
IfYxBBs.execute("selectTopicIDfrom[YX_bbs"&AllTable(i)&"]whereTopicID="&Rs(0)&"").eofThen
YxBBs.Execute("Deletefrom[YX_bbs"&AllTable(i)&"]whereReplyTopicID="&Rs(0)&"")
EndIF
Rs.MoveNext
Loop
Rs.Close
Next
CallTable("无效回复清理完毕!
","")
CallPicPro(2,6,"正在清理无效投票!
请稍等...")
YxBBs.execute("delete*from[YX_TopicVote]wherenotexists(selectnamefrom[YX_Topic]where[YX_TopicVote].TopicID=[YX_Topic].TopicId)")
YxBBs.execute("delete*from[YX_TopicVoteUser]wherenotexists(selectnamefrom[YX_Topic]where[YX_TopicVoteUser].TopicID=[YX_Topic].TopicId)")
CallTable("无效投票清理完毕!
","")
CallPicPro(3,6,"正在清理无效留言!
请稍等...")
YxBBs.execute("delete*from[YX_Sms]wherenotexists(selectnamefrom[YX_User]where[YX_Sms].MyName=[YX_User].Name)")
CallTable("无效留言清理完毕!
","")
CallPicPro(4,6,"正在清理无效公告!
请稍等...;")
YxBBs.execute("delete*from[YX_Placard]wherenotexists(selectnamefrom[YX_User]where[YX_Placard].Name=[YX_User].Name)")
IfNotIsArray(YxBBs.Board_Rs)ThenYxBBs.CacheBoard()
IfIsArray(YxBBs.Board_Rs)Then
Fori=0ToUbound(YxBBs.Board_Rs,2)
'如果是版块为类
IfYxBBs.Board_Rs(0,i)=0Then
YxBBs.execute("delete*from[YX_Placard]whereBoardID<0orBoardID="&YxBBs.Board_Rs(1,i))
EndIf
Next
EndIf
CallTable("无效公告清理完毕!
","")
CallPicPro(5,6,"正在清理删除用户的帖子!
请稍等...")
Fori=0TouBound(AllTable)
YxBBs.execute("delete*from[YX_bbs"&AllTable(i)&"]wherenotexists(selectnamefrom[YX_User]where[YX_bbs"&AllTable(i)&"].Name=[YX_User].Name)")
Next
YxBBs.execute("delete*from[YX_Topic]wherenotexists(selectnamefrom[YX_User]where[YX_Topic].Name=[YX_User].Name)")
CallTable("无效用户的帖子清理完毕!
","")
Response.Write""
EndSub
SubTable(Str1,Str2)
Response.Write("<