电子论坛系统的设计与实现.docx
《电子论坛系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《电子论坛系统的设计与实现.docx(45页珍藏版)》请在冰点文库上搜索。
电子论坛系统的设计与实现
电子论坛系统的设计与实现
电子论坛系统的设计与实现
摘要
电子论坛即BBS已经是互联网上的一种极为常见的互动交流服务。
论坛可以为网友提供开放性的分类讨论区专题服务,网友们可以在此发表自己的观感,交流某些技术,经验等。
论坛也可以作为用户和商家交流的渠道,商家也可以在此回答用户提出的问题或发布某些消息。
本系统使用ASP进行开发,数据库采用MicrosoftSQLServer2000。
本文描述了电子论坛系统的设计与实现。
首先对系统的需求进行了分析,建立系统工作流程图,设计系统数据库,对数据库结构进行了详细分析。
然后划分系统功能模块,最后详细描述了各个功能模块实现的方法,并给出相应代码。
关键词:
电子论坛系统;ASP;SQLServer2000
TheDesignandImplementationofBBS
Abstract
BBSasanelectronicforumontheInternetisaverycommoninteractionservices.Forumprovidesanopenplatformtodiscussonesubjectamonynetizens.Netizenscanexpresstheirimpressionsandcommunicatetechnologiesandexperience.Italsocanbeusedasachannelforthecommunicationbetweencustomerswithbusinessmen.
ThesystemisdevelopedwithASPandMicrosoftSQLServer2000.Inthispaper,howtodesignandimplementaBBSisintroduced.First,itanalyzesthedemandsforthissystem,establishessystemflowchart,designssystemdatabaseandanalyzesthedatabasestructure.Second,itintroducesthemodules.Thewayofimplementationofeachmodulesisintroduced,andthesourcecodesareshowedintheend.
Keywords:
BBS;ASP;SQLServer2000
论文总页数:
32页
1引言
1.1课题背景
论坛服务已经是互联网上的一种极为常见的互动交流服务。
论坛可以为网友提供开放性的分类讨论区专题服务,网友们可以在此发表自己的观感,交流某些技术,经验乃至人生的感悟与忧欢,亦可以作为用户和商家交流的渠道,商家也可以在此回答用户提出的问题或发布某些消息。
1.2国内外研究现状
BBS起源于20世纪初。
最初,论坛只是用于发布公共信息和讨论问题的在线交流平台;后来,随着网络的普及,论坛的功能也越来越丰富,不仅仅可以发表文字,更是可以使用多媒体,受到了广大网民的欢迎。
因此,商业网站对论坛重视起来,纷纷在自己的网站上开辟论坛,作为与网民交流的园地,同时在线技术支持和在线服务也在论坛中开展起来。
1.3本课题的研究意义
随着互联网技术的迅猛发展,网络给人们带来了很多便利,比如人们借助于网络进行相互交流变得更加方便。
电子论坛也称为BBS,BBS是BulletinBoardSystem的缩写,意即电子公告牌,一种在Internet上常见的用于信息服务的Web系统,它的主要服务是用来帮助浏览者相互沟通,吸引用户,服务用户的。
技术的发展一日千里,尤其是Web开发技术。
早年间,我们还只能用静态的HTML编写静态的网站,毫无交互性可言。
随着技术的飞速发展,我们有了动态的HTML(DHTML),然后有了脚本(Script),脚本有很多种,这些都伴随着早期的Web开发者走了很长,很苦的日子。
到了21世纪,Web的开发者们迎来了幸福的生活,Microsoft,Sun等公司相继推出了强大,快捷的ASP,PHP,JSP和ASP.NET等开发技术,我们可以使用多种编程语言来进行开发,大大提升了网站开发的效率,质量。
我们尽管可以说哪一种技术是最流行的,但是很难说哪一种技术是最好的,每一种技术都在它最对口的应用上。
对于电子论坛系统,我选择了ASP技术,它同样可把我们想要的功能很好的实现。
2系统分析
2.1系统需求分析
首先找出论坛针对的对象,得出一个简洁的例表:
1.用户:
论坛的使用人员,进行某些操作时需要注册。
2.版面:
表明发言内容的类型。
3.公共信息:
与论坛相关的信息。
4.帖子:
论坛中单个观点的讨论。
5.管理员:
与论坛服务的人员。
论坛的对象不是孤立的,它们是紧密联系的,下面是论坛各个对象之间的关联表,关联是单向的,是指左侧对象对上方对象的活动。
无关联的用×表示,如果两者只要单向关联,那么在另一个对象关联时用√表示。
表1各对象之间的关系表
用户
版面
公共信息
帖子
管理员
用户
注册修改浏览联系
浏览
浏览发布
浏览发布修改删除
√
版面
√
×
×
×
√
公共信息
√
×
×
×
√
帖子
√
×
×
×
√
管理员
删除授权
添加删除修改
添加删除修改
添加删除修改
×
至此,论坛的需要分析完成,接下来是论坛的功能设计。
2.2系统功能描述
2.2.1主要功能
首先从用户开始,用户关联的对象是自身,版面,公共信息,帖子。
分别根据用户与这些对象的联系给出一个明确的菜单
表2用户功能表
序号
功能名称
说明
1
用户注册
用户在论坛填写必要信息就可以成为注册用户,注册后,可修改自己的注册信息
2
用户登录
用户注册后可使用用户名,密码登录,可选择用户名,密码保存期限
3
浏览用户信息
注册用户可查看其它用户信息
序号
功能名称
说明
4
与其它用户联系
注册用户可发站内短信
5
浏览版面
任何用户可浏览版面信息
6
浏览公共信息
任何用户可浏览公共信息
7
浏览帖子
任何用户可浏览帖子
8
发布修改删除帖子
注册用户登录后可发布帖子,修改自己的帖子,删除自己的帖子
9
对帖子的特殊操作
主要针对版主类型的用户,可对帖子置顶,设置精华,删除帖子,移动帖子等操作
接下来的版面,公共信息,帖子都没有和其他对象的关联,它们在论坛中是被动对象,是被其它对象所操作。
因此针对它们的主要功能是由其它对象产生,例如浏览版面就是用户的功能。
管理员是论坛的一个特殊群体,它们的主要工作是保证论坛的正常运行,他们可以和论坛的所有对象产生联系,因此他们的功能也很丰富
表3管理员功能表
序号
功能名称
说明
1
用户删除
对于在论坛中造成很坏影响的用户,应该删除他们的身份
2
用户授权
授予用户版主权限
3
版面管理
版面是论坛的枝干,对版面进行添加,修改,删除等操作
4
公共信息管理
公共信息展示论坛的状态,不能出现非法言论
5
帖子的管理
帖子是论坛的枝叶,帖子的好坏关系到论坛的健康发展,对帖子进行删除,移动等
6
数据库的备份
管理员应该定期地对系统数据库备份,以免造成不必要的损失
现在分析各个对象的相关操作,设计为对象的功能实现接口,即为对象的操作方法。
各个板块有浏览列表和管理两个方法,管理方法又可以分为添加,修改,删除3个子方法。
帖子有浏览,发帖,回帖,搜索和管理5个方法,浏览方法又分为列表和查看两个子方法,管理方法分为编辑,删除,置顶,移动,指定精华5个子方法,如图。
图1帖子对象的相关关系
用户有注册、登录2个方法,管理用户方法又分为删除和设置权限2个子方法,如图。
图2用户对象的相关关系
这样分析完后,前面列出的功能列表就有了各自的归属对象。
论坛一般存在两种用户:
注册用户和管理员。
用户的权限是向下覆盖的,既上级权限包含下级权限,在论坛中,管理员是上级权限。
论坛的3大基本功能的相互关系如下图所示。
图3论坛基本功能的关系
本系统还有一些是论坛的内容更加丰富的扩展功能。
2.2.2论坛扩展功能
下面是个一个论坛扩展功能表。
表4扩展功能表
序号
功能名称
说明
1
用户控制自己的信息
用户不想让其他用户看到自己的信息,可以控制自己的信息是否公开
序号
功能名称
说明
2
用户登录添加验证码
防止暴力破解密码,输入用户名或密码错误会重新生成验证码
3
站内短信
方便用户在站内联系
4
帖子评价
提高用户参与论坛的积极性
5
帖子发布添加多媒体
吸引用户,扩展帖子发布功能
6
论坛收藏
保留用户喜欢的内容,方便用户查看
7
帖子搜索
提供模糊搜索,方便用户找到感兴趣的主题
8
用户等级
给用户一个荣誉,提高用户发帖的积极性
9
论坛情况显示
把论坛的一些数据显示给用户,如发帖数,在线用户人数等
10
数据备份
防止论坛出现故障,能够正常运行
11
非法言论过滤
对于一些非法言论可以在论坛中进行默认设置过滤
添加了这几个扩展功能后,论坛就显得平易近人多了,也更具有使用性。
3系统设计
3.1功能模块
根据上一节给出论坛所必须的功能,划分模块。
模块的划分主要是按照每一个对象的操作来归类。
论坛操作的对象是上一节所归纳的5个。
下面就针对这5个对象划分功能模块。
用户:
有两个模块,一个是用户注册,登录,修改信息等功能组合,是用户对用户自身的操作;另一个是管理员对用户进行删除,授权,是管理员对用户的操作,如表5。
表5用户功能模块表
模块
模块包含的功能
用户模块
用户注册
用户登录
浏览其它用户信息
与其它用户联系
用户控制自己的信息
用户登录添加验证码
用户等级
管理员模块
用户删除
用户授权
版面:
也有两个模块,一个是浏览模块,一个是管理模块。
其功能模块列表如表6。
表6版面功能模块表
模块
模块包含的功能
版面浏览模块
浏览版面
版面管理模块
版面管理
公共信息:
用户浏览公共信息的功能划分一个模块,管理员对公共信息的操作划分为一个模块,其功能模块列表如表7
表7公共信息功能模块表
模块
模块包含的功能
公共信息显示模块
浏览发布的公共信息
公共信息管理模块
公共信息管理
帖子:
帖子包括用户对帖子的操作和管理员对帖子的操作,相应地分为帖子模块和帖子管理模块,如表8。
表8帖子功能模块表
模块
模块包含的功能
帖子模块
浏览帖子
发布/修改/删除帖子
对帖子的特殊操作
帖子评价
帖子发布添加多媒体
论坛收藏
帖子搜索
帖子管理模块
删除帖子
移动帖子
管理员:
管理员是对其他对象进行操作,如表9。
表9管理员管理功能模块表
模块
模块包含的功能
管理员管理模块
用户管理
版面管理
帖子管理
数据备份
另外,对于用户使用的模块称为前台模块,管理员使用的模块称为后台模块。
系统总体功能划分如图4。
图4系统总体功能划分
3.2数据库设计
本论坛使用MicrosoftSQLServer2000数据库,下面列出是数据库设计的详细。
1.建立数据表间的关系
本论坛数据库共有11个数据表,具体如表10所示。
表10论坛数据表
序号
表名
说明
1
user_t
用户信息表
2
topic_t
主题信息表
3
superAdmin_t
论坛管理员表
4
post_t
帖子信息表
5
message_t
短消息信息表
6
grade_t
用户积分等级表
7
friend_t
用户好友表
8
file_t
文件上传表
9
board_t
子版面信息表
10
area_t
父版面信息表
11
admin_t
版主信息表
下面是数据表之间的关系图,如图5。
图5数据表关系
2.数据表结构的详细设计
表11用户信息表(user_t)
序号
字段名
字段类型
说明
备注
1
userid
Int
用户编号
主键
2
username
Varchar(50)
用户名
Notnull
3
userpassword
Varchar(50)
密码
Notnull
4
useremail
Nvarchar(255)
电子邮件
Notnull
5
usersign
Nvarchar(255)
用户签名
6
usersex
Varchar(50)
用户性别
Notnull
7
userface
Nvarchar(255)
头像
8
point
Int
积分
9
joindate
Datetime
注册日期
Notnull
10
userbirthday
Nvarchar(50)
用户生日
11
userquestion
Nvarchar(50)
密码问题
Notnull
12
useranswer
Nvarchar(50)
密码答案
Notnull
13
userlastip
Nvarchar(40)
最后登录IP
Notnull
14
userhidden
bit
是否隐身登录
Notnull
15
userqq
Nvarchar(255)
用户QQ
16
truename
Nvarchar(255)
真实姓名
17
country
Nvarchar(255)
国家
18
city
Nvarchar(255)
城市
19
constellation
Nvarchar(255)
星座
20
blood
Nvarchar(255)
血型
21
phone
Nvarchar(50)
电话
22
Works
Nvarchar(255)
职业
23
School
Nvarchar(255)
毕业院校
24
Address
Nvarchar(255)
家庭住址
25
jbzl
bit
是否公开基本资料
Notnull
26
xxzl
bit
是否公开详细资料
Notnull
在用户信息表里保存的是在论坛注册用户的信息,用户编号和用户名在论坛中是不能重复的,用户名不能重复还使用用户编号的原因是计算机对数字检索速度更快。
表12父版面信息表(area_t)
序号
字段名
字段类型
说明
备注
1
areaid
Int
父版面编号
主键
2
areaname
Varchar(255)
父版面名
Notnull
3
setuptime
datetime
建立时间
Notnull
表13子版面信息表(board_t)
序号
字段名
字段类型
说明
备注
1
boardid
Int
子版面编号
主键
2
boardname
Varchar(50)
子版面名
Notnull
3
areaid
Int
父版面编号
Notnull
序号
字段名
字段类型
说明
备注
4
readme
Varchar(255)
版面说明
Notnull
5
setuptime
Datetime
建立日期
Notnull
6
boardmaster
Varchar(50)
版主
7
topicnumber
Int
主题数量
Notnull
8
indexIMG
Varchar(255)
版面图片
Notnull
表12和13是版面信息表,这里使用两个表是为了编程方便,父版面和子版面是通过areaid字段关联的。
表14主题信息表(topic_t)
序号
字段名
字段类型
说明
备注
1
topicid
Int
主题编号
主键
2
title
Varchar(255)
主题
Notnull
3
bordid
Int
版面编号
Notnull
4
reply
Int
主题回复数
Notnull
5
userid
Int
用户编号
Notnull
6
username
Varchar(50)
用户名
Notnull
7
DateAndTime
Datetime
发表日期
Notnull
8
hits
Int
点击数
Notnull
9
istop
Bit
是否置顶
Notnull
10
isbest
Bit
是否精华
Notnull
11
fileid
int
上传文件编号
Notnull
表15帖子信息表(post_t)
序号
字段名
字段类型
说明
备注
1
postid
Int
帖子编号
主键
2
parentid
Int
回复帖子编号
Notnull
3
boardid
Int
版面编号
Notnull
4
username
Varchar(50)
用户名
Notnull
5
userid
Int
用户编号
Notnull
6
topicid
Int
主题编号
Notnull
7
title
Varchar(255)
主题
Notnull
8
DateAndTime
Datetime
发表日期
Notnull
9
body
Text
帖子内容
Notnull
10
ip
Varchar(40)
用户IP
Notnull
以上两张表是紧密关联的,论坛主题信息表记载了论坛中主题帖的信息,建立这个表的原因是用户在浏览论坛中的帖子时先应看到的是主题列表,如果主题能够吸引用户,用户才会去看其中的内容,否则用户一进来就看到帖子内容,会使用户感觉非常的杂乱。
这两个表是通过topicid字段联系起来的,parentid字段是用来针对特定的帖子回复。
接下来几张表是论坛的其它功能需要的数据表。
表16短消息信息表(message_t)
序号
字段名
字段类型
说明
备注
1
mid
Int
短消息编号
主键
2
sender
Varchar(50)
发送者
Notnull
3
incept
Varchar(50)
接受者
Notnull
4
title
Varchar(255)
主题
Notnull
5
content
Varchar(255)
内容
Notnull
6
sendtime
Datetime
发消息时间
Notnull
7
flag
bit
是否已读
Notnull
表17用户等级信息表(grade_t)
序号
字段名
字段类型
说明
备注
1
gradeid
Int
自动编号
主键
2
userid
Int
用户编号
Notnull
3
postid
Int
帖子编号
Notnull
4
grade
Varchar(255)
等级
Notnull
5
point
Int
积分
Notnull
6
ip
Varchar(40)
IP
Notnull
表18文件上传信息表(file_t)
序号
字段名
字段类型
说明
备注
1
fileid
Int
文件编号
主键
2
fname
Varchar(100)
文件名
Notnull
3
userid
Int
用户编号
Notnull
4
ename
Varchar(50)
文件扩展名
Notnull
5
ftype
Varchar(255)
文件类型
Notnull
6
fsize
Varchar(255)
文件大小
Notnull
表19好友信息表(friend_t)
序号
字段名
字段类型
说明
备注
1
Fid
Int
自动编号
主键
2
Userid
Int
用户编号
Notnull
3
username
Varchar(50)
用户名
Notnull
4
friendid
Int
好友编号
Notnull
5
frinedname
Varchar(50)
好友名
Notnull
6
addtime
datetime
添加时间
Notnull
表20管理员信息表(admin_t)
序号
字段名
字段类型
说明
备注
1
masterid
Int
自动编号
主键
2
userid
Int
用户编号
Notnull
3
username
Varchar(50)
用户名
Notnull
4
boardid
Int
版面编号
Notnull
5
flag
bit
权限标识
Notnull
4系统实现
4.1首页
当用户打开论坛时,首先看到的是论坛首页,用户从首页可以看到和论坛相关的并且能激起用户兴趣的东西。
比如发帖数,在线用户数以及论坛板块的情况,如图6所示。
图6论坛首页
首页分为3个部分,最上面的导航条为一部分,中间的公共信息为一部分,下面的版面为一部分。
将导航条部分单独写入文件top.asp作为公共程序,以后任何一个页面需要就使用
--#includefile="top.asp"-->来调用。
下面是top.asp的程序。
1<%IfSession("userid")=""Then%>
这里显示的是游客的导航条
2<%Else%>
这里显示的注册用户的导航条
3<%EndIf%>
程序说明:
用户登录后将用户名存入session对象来判断用户状态。
公共信息部分是显示了论坛和当前用户的状态,该部分的详细内容将在后面的公共信息部分讨论。
版面部分显示了版面的列表,该部分的详细内容将在后面的版面部分讨论。
至此,首页的主要程序已经介绍了,以后章节是各个模块的主要程序。
4.2数据库连接函数
SQLServer数据连接要求提供用户名,密码,数据库名及数据库服务器地址,下面是使用ADO连接数据库的代码:
1<%dim