论坛系统后台分类版块管理模块的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

论坛系统后台分类版块管理模块的设计与实现
一、系统开发背景和意义
进入二十一世纪,计算机技术迅速向着网络化、集成化方向发展。

当今出现的网上论坛,与其它媒体相比,可以更加自由地发表、交流各种观点,可以非常及时地,广泛、深入地,具体讨论、辩论各种重要,但常有尖锐分歧。

办好网上论坛,就能非常及时的使许多创新的思想、观点得以交流、展示。

使正确的东西能更加明确、丰富的普及和传播;使错误的理念能得到及时批判、纠正,而不致造成泛滥、毒害;使真理,越辩越明,更加深入发展。

因而,网上论坛是世界上真正最为民主、自由的乐土,是贯彻执行“百花齐放、百家争鸣”方针的有力工具,是培育、发展各种创新思想的重要苗圃。

随着Internet技术的不断发展,以及用户群爆炸性地增长,网络不再仅仅是信息的被动获取来源,更成为人们探讨间题、交换观点的场所,其中,网上论坛扮演了极其重要的角色,随着时间的推移,论坛站点中积存了丰富的信息资源,不但有各类技术资料和新闻文档,还包含着用户的判断和评论,论坛站点己成为Web信息库的重要组成部分,自网上论坛诞生20多年以来,随着Web技术的发展,特别是ASP(动态服务器页面)技术出现以后,己经由原来简单的电子公告板系统发展为功能丰富的网上论坛和虚拟社区模式。

各种论坛随着网络迅速发展,几乎充实着生活工作的每一个方面,无论是商界、政界,还是娱乐界,都有各种论坛。

互联网正在融入我们的生活,网络提供给我们的不只是一个获取信息的来源,而且还是一个可以相互交流的空间,网上论坛正是一种供人们进行交流的网络空间, 影响和改变着我们的生活。

二、环境
为了保证BBS论坛管理系统运行的高效性和可靠性,服务器应具有较高的软硬件配置,客户端的要求不是很高。

此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。

其开发和运行环境要求如下:
开发环境
Windows 7 MS office access MS visual studio 2012
运行环境
Windows 7 Internet Explorer NetBox Version 2.8 Build 4128
ASP技术简介:
动态服务器网页(Active Server Pages,简称ASP),由微软公司开发的服务器端运行的脚本平台,它被Windows下Internet Information Services (IIS)的程序所管理。

通过ActiveX server 的技术让不同的用户能有不同的画面,或需要让他们可以访问服务器 (server)上的数据时,使用ASP3.0中提供了五个内置的对象创建模拟和安全性的动态内容,来协助程序员隐藏复杂的沟通机制,让程序员可以专注在解决问题和应用之上,这样可以更快速地开发动态网页的同时每一个组件都是可以由一组富有经验的程序员根据动态网页最常用的功能而
独立开发。

ASP隐藏了网页服务器与浏览者之间沟通的繁琐机制的同时也基于script base 的特性,网页撰写员可以专心撰写应用的程序的逻辑部份,再者ASP也像 HTML 般通过撰写程序来实时测试网页是否安全地运行,而不必担心程序和服务器不能沟通的问题,另外因为那些 script 是于发送前于服务器中先行转译处理成为HTML后再而发送至代理服务器边的动态网页技术,不必担心浏览器的支持性及,网页撰写员的程序逻辑像 client-side script 会被盗用,因此最终浏览者只会是使用 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提供与数据库的交互,如Microsoft SQL Server、Microsoft Access、MySQL和Oracle,比较流行的是ASP和Microsoft SQL Server的组合。

三、小组成员
肖杨卢霞
四、软件可行性研究
1. 技术可行性:
无论从硬件或软件上来说,建立此套论坛系统的技术方面都是可行的。

从软件开发方面来看,本系统是一个基于ASP + access的Web应用程序。

目前ASP、VBScript和Sql Server2000相结合的Web开发技术已经非常成熟,利用现有的技术完全可以达到功能目标。

从当前计算机技术的发展程度来看,在技术上是完全可行的。

2. 经济可行性
本系统开发成本低,运行和维护简单,不需要复杂的技术要求和昂贵的运行维护成本。

只需要一台便宜的服务器就可以有效运行该系统,完成简单的设置就可。

因此,本系统具有经济可行性。

3. 社会可行性
本网站论坛以操作简单,功能完善,运行速度快,本着一切为用户着想作为其设计目标,本系统主要为大学生用,具备一定的计算机基础知识的用户都能使用,在操作方面不会存在问题,可以推广使用。

因此,本系统具有社会可行性。

4. 结论:
本系统在技术可行性、经济可行性、社会可行性上均具有可行性,因此本系统理论上是可以实现的。

五、软件需求分析
1.软件系统需求描述:
利用ASP和visual studio作为开发工具、MS access作为数据库开发一个基于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图
管理员
管理员ID
最后登录IP
姓名
密码
用户名
最后登录时间
(2)管理员表
2.(1)用户等级实体E-R 图
用户等级
等级图片
等级ID
用户数量
等级名称
等级分数
分类ID
(2)用户等级表
3.(1)论坛板块实体E-R 图
版块
版块ID 投票人
父版块
根ID
版块名称
版块介绍
命令
深度
版块LOGO
今日访问

历史访问量
版块类型
版块锁定
版主
文章数量
最后访问
版块设置
子版块
(2)板块表
4. (1)论坛实体E-R 图
论坛
主题回复
目录
论坛ID
主题ID
版块ID
说明
添加时间
最后登录
IP
管理员姓名
数据类型
删除
购买者
(2)论坛表
六:软件设计与编码
1.软件系统模块结构图:
2.软件系统其中的3个模块的详细设计(画程序流程图):1.整理修复板块流程图
论坛系统
管理员账号
密码
登录
失败
登陆
登陆成功
论坛版面管理
论坛整理修复
整理
失败
开始整理
整理成

退出管理
2.添加论坛分类流程图
论坛系统
管理员账号
密码
登录
失败
登陆
登陆成功
论坛版面管理
添加论坛分类
重置
输入分类名

修改or重置
修改
退出管理
3.论坛合并流程图
论坛系统
分类板块管理
登陆
管理员账号密码
退出管理
登陆成功
登录失败
论坛合并
选择原论坛
选择目标论坛
合并
成功
失败
3.软件系统其中的2个模块的界面以及编码: 1.论坛版面管理界面如图图3-1所示
图3-1
删除分类功能代码:
Sub BoardInfo
Dim Rs,Brs,i,Install,Temp,II,Po,BoardType
%>
<table width="98%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#CCCCCC"><td height="25" align="center">论坛版面</td>
<td align="center">相应操作</td>
</tr>
<%
Set Rs=YxBBs.execute("Select BoardID,BoardName,ParentID,Depth,Child,BoardType from [YX_board] order by Rootid,orders")
If Rs.eof or Rs.Bof Then
Call GoBack("","论坛没有分类!请先<a href=Board.Asp?Action=AddClass> 添加分类</a>")
Exit Sub
End If
Brs=Rs.GetRows(-1)
Rs.close
For I=0 To Ubound(Brs,2)
Temp="<td height=25>"
Install="&nbsp;&nbsp;<a href='?Action=AddBoard&BoardID="&BRs(0,i)&"'>添加论坛</a>"
If Brs(3,i)=0 Then'分类
Temp="<tr bgcolor=#CCCCCC>"&Temp
If Brs(4,i)>0 Then'如果有子论坛
Temp=Temp&Brs(1,i)&" ("&Brs(4,i)&")"
Else
Temp=Temp&Brs(1,i)
End If
Install=Install & "&nbsp;|&nbsp;<a href='?Action=EditClass&BoardID="&Brs(0,i)&"'>分类改名</a>"
If Brs(4,i)>0 Then
Install=Install & "&nbsp;|&nbsp;<a href=javascript:alert('不能删除!该分类含有论坛!\n\n要删除本类,必须先把属下的论坛删除或移走。

')>删除分类</a>"
Else
Install=Install & "&nbsp;|&nbsp;<a onclick=checkclick('删除后将不能恢复!您确定要删除吗?') href='?Action=DelClass&BoardID="&Brs(0,i)&"'>删除分类</a>"
End If
Else'版面
Temp="<tr bgcolor=#DEDEDE>"&Temp
Po=""
For II=1 To Brs(3,i)
Po=Po&" <font color=red>∣</Font> "
Next
If Brs(4,i)>0 Then'如果有子论坛
Temp=Temp&Po&Brs(1,i)&" ("&Brs(4,i)&")"
Else
Temp=Temp&Po&Brs(1,i)
End If
Install=Install & " | <a href='?Action=EditBoard&BoardID="&Brs(0,i)&"'>修改</a> | <a href='BoardSetting.asp?BoardID="&Brs(0,i)&"'>权限设置</a>"
If Brs(4,i)>0 Then
Install=Install & " | <a href='javascript:' onclick=alert('不能删除!该版面含有子论坛!\n\n要删除本版,必须先把属下的子论坛删除或移走。

')>删除</a>"
Else
Install=Install & " | <a onclick=checkclick('删除后将不能恢复!您确定要删除吗?') href='?Action=DelBoard&BoardID="&Brs(0,i)&"'>删除</a>"
End If
Install=Install & " | <a href='?Action=ClearData&BoardID="&BRs(0,i)&"'>清理</a> | <a href='?Action=OrdersBoard&BoardID="&BRs(0,i)&"'>置前</a>"
If Brs(5,i) Then
Install=Install & " | <a href='?Action=PassUser&BoardID="&BRs(0,i)&"'>认证用户</a>"
End If
End If
Response.Write(Temp&"</td><td>"&Install&"</td></tr>")
Next
%>
<tr bgcolor="#DEDEDE"><td colspan="2">&nbsp;</td>
</tr></tbody></table>
<%
End Sub
2.论坛整理修复界面如图3-2所示
论坛垃圾清理功能代码:
Sub DelWuiong
Dim ii,i,AllTable%>
<table width="98%" border="0" align="center" cellpadding="4" cellspacing="1" bordercolor="#999999" bordercolordark="#FFFFFF" bgcolor="#FFFFFF">
<tbody>
<tr><td bgcolor="#CCCCCC" height="25" colspan="2" ><b><font color="#FFFFFF">论坛垃圾清理</font></b></td>
</tr>
<tr><td bgcolor="#DEDEDE"><div align="center"><b><span id=YxBBsT name=YxBBsT>正在清理无效主题!请稍等...</span></b></div>
<table width="400" border="0" align="center" cellpadding="1" cellspacing="1"> <tr><td bgcolor=#d7d7d7>
<table width="400" border="0" cellspacing="0" cellpadding="1">
<tr>
<td bgcolor=ffffff height=9><img src="../images/hr1.gif" width=0 height=16 id=YxBBsimg name=YxBBsimg align=absmiddle></td>
</tr></table>
</td></tr></table>
<div align="center"><span id=YxBBstxt name=YxBBstxt style="font-size:9pt">0</span><span style="font-size:9pt">%</span></div></td></tr> </tbody></table><br>
<%Response.Flush
AllTable=Split(YxBBs.BBSTable(0),",")
For i=0 To uBound(AllTable)
YxBBs.execute("delete * from [YX_bbs"&AllTable(i)&"] where TopicID<>0 and not exists (select name from [YX_topic] where [YX_bbs"&AllTable(i)&"].TopicId=[YX_Topic].TopicID)")
YxBBs.execute("delete * from [YX_Topic] where SqlTableID="&AllTable(i)&" and not exists (select name from [YX_bbs"&AllTable(i)&"] where [YX_Topic].TopicID=[YX_bbs"&AllTable(i)&"].TopicId)")
Next
Call Table("无效主题清理完毕!","")
Call PicPro(1,6,"正在清理无效回复帖子!请稍等...;")
For i=0 To uBound(AllTable)
Set Rs=YxBBs.Execute("select ReplyTopicID from [YX_bbs"&AllTable(i)&"] where ReplyTopicID<>0")
Do While Not Rs.eof
If YxBBs.execute("select TopicID from [YX_bbs"&AllTable(i)&"] where TopicID="&Rs(0)&"").eof Then
YxBBs.Execute("Delete from [YX_bbs"&AllTable(i)&"] where ReplyTopicID="&Rs(0)&"")
End IF
Rs.MoveNext
Loop
Rs.Close
Next
Call Table("无效回复清理完毕!","")
Call PicPro(2,6,"正在清理无效投票!请稍等...")
YxBBs.execute("delete * from [YX_TopicV ote] where not exists (select name from [YX_Topic] where [YX_TopicV ote].TopicID=[YX_Topic].TopicId)")
YxBBs.execute("delete * from [YX_TopicVoteUser] where not exists (select name from [YX_Topic] where [YX_TopicV oteUser].TopicID=[YX_Topic].TopicId)") Call Table("无效投票清理完毕!","")
Call PicPro(3,6,"正在清理无效留言!请稍等...")
YxBBs.execute("delete * from [YX_Sms] where not exists (select name from [YX_User] where [YX_Sms].MyName=[YX_User].Name)")
Call Table("无效留言清理完毕!","")
Call PicPro(4,6,"正在清理无效公告!请稍等...;")
YxBBs.execute("delete * from [YX_Placard] where not exists (select name from [YX_User] where [YX_Placard].Name=[YX_User].Name)")
If Not IsArray(YxBBs.Board_Rs) Then YxBBs.CacheBoard()
If IsArray(YxBBs.Board_Rs) Then
For i=0 To Ubound(YxBBs.Board_Rs,2)
'如果是版块为类
If YxBBs.Board_Rs(0,i)=0 Then
YxBBs.execute("delete * from [YX_Placard] where BoardID<0 or BoardID="&YxBBs.Board_Rs(1,i))
End If
Next
End If
Call Table("无效公告清理完毕!","")
Call PicPro(5,6,"正在清理删除用户的帖子!请稍等...")
For i=0 To uBound(AllTable)
YxBBs.execute("delete * from [YX_bbs"&AllTable(i)&"] where not exists (select name from [YX_User] where [YX_bbs"&AllTable(i)&"].Name=[YX_User].Name)")
Next
YxBBs.execute("delete * from [YX_Topic] where not exists (select name from [YX_User] where [YX_Topic].Name=[YX_User].Name)")
Call Table("无效用户的帖子清理完毕!","")
Response.Write
"<script>YxBBsimg.width=400;YxBBstxt.innerHTML=""100"";YxBBsT.innerHTML=""<font color=red>成功完成整理!</font>"";</script>"
End Sub
Sub Table(Str1,Str2)
Response.Write("<table width='98%' border='1' align='center' cellpadding='3' cellspacing='2' bordercolor='#999999' bordercolordark='#FFFFFF' bgcolor='#DEF0FE'><tr><td><Div style='margin:5;line-height: 150%'>"&Str1&"<br>"&Str2&"</Div></td></tr></table>")
End Sub
'进度条
Sub PicPro(i,sum,strtxt)
Response.Write "<script>YxBBsimg.width=" & Fix((i/sum) * 400) & ";" & VbCrLf
Response.Write "YxBBstxt.innerHTML=""" & FormatNumber(i/sum*100,4,-1) & """;" & VbCrLf
Response.Write "YxBBsT.innerHTML="""& StrTxt & """;"& VbCrLf
Response.Write "</script>" & VbCrLf
Response.Flush
End Sub
七:软件测试
1. 设计测试用例6个(白盒法3个,黑盒法3个):白盒法:
黑盒法:
八:用户操作手册
1. 系统安装软硬件要求
独立主机
硬件配置:
CPU:P4 2.4G以上
内存:512M以上
硬盘:20G
网卡:10M-100M
软件配置:
操作系统:Windowsxp/7 ,win2003(推荐Windows 2003 Server)
客户端:硬件无要求,浏览器:IE 5.5以上
网络环境:支持internet或局域网、广域网
2. 系统安装操作步骤
由于本系统基于简易IIS服务器开发,所以只需解压安装包,点击.exe文件运行即可
九、小结
这次课程设计,我们主要利用了面向对象的方法进行了需求分析、系统设计,利用UML 进行分析与建模,画出了软件的用例图,模块结构图和程序流程图,并利用白盒法和黑盒法进行了软件测试。

通过这次设计,我学会了和别人配合工作,因为一个人所学的知识不可能面面俱到的,只有通过合作,发挥自己的优点,体现团队精神,才能使工作做得更为出色。

通过这次设计,我学到了许多书本上学不到的知识,增强了自己的动手能力。

即将大三结束,我十分珍惜这次锻炼的机会,我按部就班的完成了自己的设计任务,但由于自己的知识水平有限,仍然存在很多的不足之处,恳请老师多多指教!当今的社会是竞争的社会,而人才的竞争则是竞争的焦点,课程设计对于我们这些没有接触过实际项目的同学来说,是离校前很好的一次锻炼,使我们各方面的能力都有了很大的提高,为我们踏出校门,走上社会增强了能力与自信!。

相关文档
最新文档