当前位置:文档之家› 电子公告板_设计

电子公告板_设计

电子公告板_设计
电子公告板_设计

课程设计任务书

学生姓名:专业班级:

指导教师:工作单位:计算机科学与技术

题目: BBS电子公告板

初始条件:本门课程设计的目的旨在使学生进一步巩固课堂上所学的理论知识,深化理解和灵活掌握教学内容,培养学生解决实际问题的动手能力。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)要求学生在上机前应认真做好各种准备工作,熟悉每个题目涉及的网络相关知识,熟悉机器的操作系统、语言的集成环境和设计工具,独立完成算法编制和程序代码的编写;上机时应随带有关的教材或指导书;要学会程序的调试与测试。

课程设计时间为一周。周五交报告,报告的内容应包括:(1)任务书;(2)简要的设计目的和预期结果;(3)程序清单与测试结果;(4)收获与体会。

时间安排:

周一:收集与查阅相关文献,熟悉题目。

周二:需求分析与功能设计。

周三:编码,完成初步功能模块。

周四:代码测试并逐步完善。

周五:撰写报告,课程设计验收。

小组成员可互相讨论,但严禁抄袭。

指导教师签名:年月日

系主任(或责任教师)签名:年月日

一.题目:BBS电子公告板

二.简要的设计目的和预期结果:

1.基本功能设计

通过需求分析,论坛的基本功能可以从众多的需求中筛选出来。顾名思义,基本功能就是构成论坛系统的必要功能,具备这些功能的Web系统即是论坛。

基本功能:

●发帖。论坛最初是为了相互讨论话题而诞生的,发表帖子就是表达自己的看

法,与他人进行讨论,因此发帖是论坛首要的功能。

●浏览帖子。发表了帖子就要供他人浏览查看,与他人分享自己的想法和经验。

●回帖。浏览了他人发表的帖子,想要发表自己的想法,参与讨论,就可以回复

这个帖子。

其实,发帖→浏览帖子→回帖三大功能周而复始的循环进行,就构成论坛。每个参与论坛的人,主要目的就是发帖,查看已经发表的帖子,针对自己感兴趣的帖子进行回帖,参与讨论。

2.扩展功能设计

除了基本功能之外,其他的论坛功能都是扩展功能。

注册登陆。原先的论坛在发帖回帖时,需要填写自己的笔名。这样,经常发帖的人总是要重复填写笔名,比较麻烦。因此,论坛扩展了用户注册登陆功能,参与论坛的注册自己的笔名以及个人信息,拥有论坛中的身份,发言时就不需要重复填写个人信息了。

分板块浏览帖子。随着论坛帖子数量的增多,讨论相同话题的帖子聚集在一起,引出了论坛新的扩展功能,即分板块浏览帖子,属于同一板块的帖子讨论同样的话题。这样,就使得对某一话题感兴趣的用户不会被其他帖子干扰,也有利于相同兴趣的用户相互间讨论,不易跑题。

编辑帖子。发帖回帖的用户,如果需要修改更新自己发表的帖子内容,就引出了编辑帖子内容这个扩展功能,提供给用户更新自己发言的选择。对于论坛管理

员,可以编辑任何帖子的内容,也算是提供给管理员进行管理的选择。

删除帖子。如果用户发表了不符合论坛规则的帖子,则需要管理员删除这些帖

子,这就引出了删除帖子的扩展功能。

转移帖子。论坛划分了板块,如果帖子内容不属于所在板块的关注话题,那么管理员可以选择将此帖移动到所属话题的板块中去,这就引出了移动帖子的扩展功能。这个功能是随着板块功能的出现而出现的,板块将帖子进行了分组,从而提出了随板块移动帖子的要求。

置顶帖子。帖子一般是根据发表以及回复时间到序排列的,这样先发的帖子就慢慢排到后面,管理员如果需要强调某些帖子重要,又必看性,就要打乱默认的排列顺序,将这些帖子放在列表的最前端,不再按照时间进行顺序的变化,但是还要保证其他帖子按照时间变化顺序进行排列,这就引出了置顶帖子的扩展功能。

指定精华帖。如果管理员认为某个帖子的内容非常好,可以打上标记,推荐给看帖的用户,这就引出了指定精华帖的扩展功能。用户可以选择只看打上标记的精华帖。

搜索帖子。论坛中的帖子越来越多,用户需要从大量的帖子中找到自己需要的内容,这就引出了搜索帖子的扩展功能。

管理板块。论坛板需要先创建,才能被使用,管理员还可以删除修改板块的相关信息,因此管理板块是管理员使用的扩展功能。

设置参数。论坛一般有一些初始化信息,比如论坛名称,每页显示帖子数量等参数信息,管理员也可以在后台界面自行设置,这页属于扩展功能。

管理用户。管理员可以对论坛的注册用户进行管理,直接添加用户,赋予相关权限,也可以修改已注册用户权限,对违规用户可以删除,这个扩展功能便于管理员对论坛用户的管理。

三.功能模块与数据库设计:

1.设计框架

在确定了论坛系统的设计思路之后,还需要归纳成系统的相关模块,每个模块实就是功能的合理组合。

由于已经将功能做了前台与后台的分类,因此模块也应该分为两大类:前台模块和后台模块。用户在前台的注册、登陆,以及修改个人的注册信息组合成注册信息组合成注册登陆模块。用户浏览板块、浏览主题帖列表、查看帖子组合成浏览模块。用户发帖、回帖、编辑自己发布的帖子组合成发帖回帖模块。管理员编辑帖子、删除帖子、转移帖子、置顶帖子和精华帖子组合成管理帖子模块。以上4个模块是前台模块。后台模块都是与管理员相关的,设置论坛参数单独为论坛设置模块;创建、修改和删除板块为管理板块模块;添加、删除和设置权限为管理用户模块。

从用户角度分析问题,首先区分系统中有几种用户,目前的论坛系统,为了楚易懂,简化了用户体系,论坛中只有两种用户:注册用户和管理员。一般论坛中的版主权限,划分为管理员,这也是为了使读者容易分清论坛的使用者和管理者。对于注册用户,在论坛中的行为可归纳如下:

●注册个人身份,登陆论坛,登陆成功后可以修改自己的注册信息。这些行为只与用

户自身相关,功能独立,设计成注册登陆模块。

●浏览板块列表,选择某板块,浏览其下的主题帖列表,查看帖子内容,搜索需要的

帖子。这些行为是用户读取论坛的板块及其帖子的相关信息,设计成浏览模块。可以发表新帖子,也可以回复已有的帖子,同时可以编辑自己写的帖子内容。这些行

为是用户参与论坛讨论,发表自己见解的行为,设计为发帖回帖模块。

管理员需要负责整个论坛的正常运转,因此他需要更多的管理功能,可以归纳为如下行为:

●具备注册用户的所有功能。因为管理员也是论坛用户,可以参与论坛中的讨论。

●管理帖子。管理员对论坛的帖子有监督的权利,好的帖子要奖励,捣乱的帖子要删

除,标识精华帖,置顶帖子,转移发错板块的帖子,这些行为都是针对帖子的操作,设计成管理帖子模块。

●管理板块。论坛中的板块,需要管理员进行创建、管理板块信息,这些针对板块的

操作,设计成管理板块模块。

●管理用户。用户注册成功后,需要管理员赋予权限,才能使用论坛的相关功能。同

时,管理员可以自主添加、删除用户,这些针对用户信息的操作,设计成管理用户模块。

2.模块的划分及设计

每个模块的功能都真实反映需求,通过对需求的认真分析,可以设计出符合要求的单独模块。但是,对于一个论坛系统来说,要很好地把握系统地构架,把零散地功能模块用一条主线串连起来,构建完整的系统。

对论坛系统来说,联系各个模块的主线是使用者的权限,用户能够使用论坛的哪些功能是由用户的权限决定的。论坛的每个功能都与相应的权限对应。例如,注册用户具有浏览帖子、发帖、回帖的权限,那么他就能使用论坛中的浏览、发帖、回帖功能。同一类用户使用的功能模块,是以使用者为中心连接起来的。另外,操作同类事务的功能模块,也是有相互关系的。

因此,浏览模块与发帖回帖模块、管理帖子模块关联,是由论坛的系统流程决定的,管理板块模块与浏览模块关联,是由帖子与板块的父子关系决定的。帖子依附于板块,先有板块,后有帖子,帖子必须发表在某个板块中,管理用户模块与注册登陆模块关联,是由同一类对象——用户决定的。注册后获得论坛的身份,成为用户,所有的用户需要接受管理员的管理,用户登陆证明自己在论坛中的身份,如图:

弄清楚模块间的相互关系,就可以设计出论坛系统的整体架构了,如图:

系统整体架构图

系统因入口的不同而分为前台系统与后台系统。前台系统包括注册登陆模块、浏览模块、发帖回帖模块、管理帖子模块;后台包括管理用户模块、管理板块模块。之所以要把属于管理员权限的管理帖子模块归属于前台,是因为,对于一个论坛系统,帖子是最主要的,为了方便管理,管理员需要一边浏览查看一边进行管理,管理时需要了解帖子的详细内容,以及相关回帖信息,因此将帖子的管理界面融合在前台的浏览界面中。至于其他的模块则比较清楚,是根据用户的权限划分的。

3.设计数据库

本系统所使用的数据库服务器为ACCESS 2000,它在ACCESS 2000的基础上, 扩展了ACCESS的总体功能与性能、工具界面更加方便合理、全面的数据完整性保护、系统安全性更高。ACCESS 2000的数据库空间不会受限于Device空间大小, 方便了数据空间的扩展, 使ACCESS 2000作为一个网络数据库管理系统,其扩展已超出了单个物理计算机的限制,并且多服务器“分布式”事物的内在支持更加充分.本系统主要使用了存储过程S tored Procedure, 所谓Stored Procedure实际上就是一段保存在数据库中的程序, 通过一个名称的命名,其中包含有处理数据库存取与运算的SQL语句, 并且将这样的程

序文件紧密结合在数据库中,这样我们的前台应用系统在执行过程中,可以直接执行数据库中设置好的Stored Procedure,甚至可以传递参数。

4.创建数据库

datetime是用来保存日期和时间数据的,text 是用来保存不定长度的备注说明内容的, 有了这两个数据类型, 应用系统中就不用再为输出格式和限制字符串长度而增加额外代码了。

数据表间关系:

序号数据表名称说明

1 T_Operator 操作员(用户)表

2 T_Forum 论坛回帖表

3 T_Topic 论坛主题表

4 T_UserPara 系统参数表

5 T_Mark 积分头衔表

6 T_OperatorFunction 用户功能权限关联表

7 T_Function 功能表

程序清单与测试结果本论坛系统完成之后,就必须设计许多的测试用例来验证本系统的正确性,容错能力/恢复能力,信息安全性,可靠性等,尽可能多地找出系统的错误所在。

四.程序清单与测试结果:

1.主要程序清单:

2.if SiteSettings("AdminPassword")<>session("pass") then response.redirect "Admin.asp?menu=Login"

3.Log(""&Request.ServerVariables("script_name")&"
"&Request.ServerVariables("Query_String")&"
"&Request.form&"")

4.id=HTMLEncode(Request("id"))

5.bbsid=HTMLEncode(Request("bbsid"))

https://www.doczj.com/doc/3b8391668.html,erName=HTMLEncode(Request("UserName"))

2.response.write "

"

3.select case Request("menu")

4.case ""

5.error2("请选择您要操作的项目")

6.case "ApplyManage"

7.ApplyManage

8.case "activation"

9.activation

10.case "bbsManage"

11.bbsManage

12.case "bbsManagexiu"

13.bbsManagexiu

14.case "bbsManagexiuok"

15.bbsManagexiuok

16.case "bbsadd"

17.bbsadd

18.case "bbsaddok"

19.bbsaddok

20.case "classs"

21.classs

22.case "upSiteSettings"

23.upSiteSettings

24.case "upSiteSettingsok"

25.upSiteSettingsok

26.case "bbsManageDel"

27.Conn.execute("Delete from [BBSXP_Forums] where id="&id&"")

28.error2("已经将该论坛的所有数据删除了!")

29.case "Delforumok"

30.if bbsid<>"" then BbsIdList="and ForumID="&bbsid&""

31.Conn.execute("Delete from [BBSXP_Threads] where

lasttime<"&SqlNowString&"-"&TimeLimit&" "&BbsIdList&"")

32.error2("已经将"&TimeLimit&"天没有更新过的主题删除了!")

33.case "DelUserTopicok"

34.if UserName="" then error2("您没有输入用户名!")

35.if bbsid<>"" then BbsIdList="and ForumID="&bbsid&""

36.Conn.execute("Delete from [BBSXP_Threads] where UserName='"&UserName&"'

"&BbsIdList&"")

37.error2("已经将"&UserName&"发表的主题删除了!")

38.case "DellikeT opicok"

39.Topic=HTMLEncode(Request("Topic"))

40.if Topic="" then error2("您没有输入字符!")

41.if bbsid<>"" then BbsIdList="and ForumID="&bbsid&""

42.Conn.execute("Delete from [BBSXP_Threads] where Topic like '%"&Topic&"%' "&BbsIdList&" ")

43.error2("已经将标题里包含有"&Topic&" 的帖子全部删除了!")

44.case "DelForumsok"

45.Conn.execute("Delete from [BBSXP_Forums] where ForumHide=1 and

lasttime<"&SqlNowString&"-"&TimeLimit&"")

46.error2("已经将"&TimeLimit&"天没有新帖子的论坛删除了!")

47.case "clean"

48.Conn.execute("Delete from [BBSXP_Threads] where IsDel=1 and

lasttime<"&SqlNowString&"-"&TimeLimit&"")

49.error2("已经清空"&TimeLimit&" 天以前的主题!")

50.case "uniteok"

51.hbbs=Request("hbbs")

52.YBBs=Request("YBBs")

53.if hbbs = YBBs then error2("不能选择相同论坛!")

54.if UserName<>"" then UserNamelist="and UserName='"&UserName&"'"

55.Conn.execute("update [BBSXP_Threads] set ForumID="&int(hbbs)&" where

ForumID="&int(YBBs)&" and lasttime<"&SqlNowString&"-"&TimeLimit&" "&UserNamelist&"")

56.error2("移动论坛资料成功!")

57.case "BatchCensorship"

58.for each ho in request.form("ThreadID")

59.ho=int(ho)

60.Conn.execute("update [BBSXP_Threads] set IsDel=0 where id="&ho&"")

61.error2("已经将激活/还原所选帖子!")

62.case "BatchDel"

63.for each ho in request.form("ThreadID")

64.ho=int(ho)

65.Conn.execute("Delete from [BBSXP_Threads] where id="&ho&"")

66.error2("已经将删除所选帖子!")

67.case "Delapplication"

68.Application.contents.ReMoveAll()

69.error2("已经清除服务器上所有的application缓存!")

70.

71.

72.

73.