基于ASP的某学校校园BBS的设计与实现.docx
《基于ASP的某学校校园BBS的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于ASP的某学校校园BBS的设计与实现.docx(27页珍藏版)》请在冰豆网上搜索。
![基于ASP的某学校校园BBS的设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-1/31/a6c65d76-48ed-4ace-9d9b-1f9644f12d13/a6c65d76-48ed-4ace-9d9b-1f9644f12d131.gif)
基于ASP的某学校校园BBS的设计与实现
天津电子信息职业技术学院(软件学院)
毕业论文
题目基于ASP.NET的企业在线BBS设计与实现
姓名吕鹏
专业班级软件S09-5
指导教师朱云霞
完成时间2012-2-20
天津电子信息职业技术学院(软件学院)制
2007.6
基于ASP.net的企业在线BBS的设计与实现基于ASP的企业在线BBS的设计与实现
摘要
BBS是BulletinBoardSystem的缩写,即电子公告板。
它是以文字为主的界面,为广大网友提供了一个彼此交流的空间。
如今BBS已经在各个企业里普及,是学生之间交流信息,共享资源,娱乐休闲的场所,并已经成为广大学生在校生活不可获缺的一部分。
本设计具有一般网上论坛的所有功能,并体现出企业的风格。
该系统提供的功能包括会员注册、个人信息查询和修改、阅读帖子、发表帖子、帖子搜索查询、管理员可以删除帖子和会员留言等。
本系统一大特点是共设置了3种不同身份的会员等级,每个等级都具有特殊的操作权限,使该系统能得到更好的维护和管理。
本文首先介绍了该系统的设计思路和需求分析,接着介绍了该系统所使用的一些关键技术,然后是对系统的详细介绍,包括系统所创建的数据库及该系统的具体功能。
关键词:
注册;阅读帖子;发表帖子;搜索;权限
TheDesignandRealizationofCampusBBSBasedonASP
Abstract
IndicationofBulletinBoardSystem,BBSistheelectronicbulletinboard.Itwasbasedonthetext-basedinterfaceandprovidesaplaceofcommunicateeachotherforthepeopleontheInternet.Nowadays,BBSisverypopularinthecampuses,wherethestudentscanenjoytheservicessuchastheexchangeofinformation,sharingofresources,leisureandentertainment.Itplaysaimportantpartinthestudyinglife.
InadditiontoallfunctionsofthecommonBBSsystem,thisdesignexhibitstheschoolstyle.ThefunctionsofthisBBSincludestheregistration,inquiryandchangeofpersonalinformation,passwordrecovery,readthetopics,publishedtopics,searchtopicsandsendmessagetoothermembers.Fourlevelsofmembershipistheobviousfeatureofthissystem,becauseeachlevelhasspecialcompetence,sothesystemiseasytomanage.
Atfirst,thispaperintroducesthemainideaandtherequirementsanalysisofthesystematfirst,andsomekeytechnologiesareusedinthissystem,thenextistheintroductionofthesystemindetail,includingthedatabaseandspecificoperations.
Keywords:
registration;readtopics;publishedtopics;search;privilege
论文总页数:
29页
1引言
1.1课题背景与开发目的
BBS是BulletinBoardSystem的缩写,即电子公告板。
它是以文字为主的界面,为广大网友提供了一个彼此交流的空间。
随着互联网技术的迅猛发展,网络给人们带来了很多便利,人们借助于网络进行相互交流变得更加方便。
于是,以互联网为基础的网上论坛逐渐成为人们发表言论的一个平台。
一些具有前卫风格的企业BBS随着互联网的普及在各大高校建立,并逐渐成为学生之间交流信息,共享资源,娱乐休闲的场所,成为广大高校学生课余生活中不可获缺的一部分。
而且在不久的将来,各种各样展现自身风格的企业BBS会深入到企业。
本系统采用B/S模式设计,开发目的除了作为在校学生、老师发布消息,共享资料,娱乐休闲的平台,也可成为对外展示企业的一个“活广告”。
1.2开发环境
本系统是在windowsXP操作系统下,使用UltraEdit-32和DREAMWEAVER作为开发工具进行开发的。
数据库使用的是ACCESS。
1.3硬件需求
在运行本系统前,请检查一下计算机是否满足以下要求。
计算机要求的配置为:
(1)WINDOWSServicePack4.0和Internet信息服务器5.0(IIS5.0)
(2)MicrosoftOfficeAccess2000以上版本
(3)Windows2000/XP简体中文版+简体中文IE5.0以上版本
2需求分析
2.1系统概述
根据该BBS的逻辑功能划分,本系统一共分为七大功能模块,分别是用户注册和登陆模块,用户资料管理模块,文章发表和文章浏览模块,文章搜索模块,管理员操作模块,版主操作模块,论坛短消息功能模块。
其中管理员操作又划分为论坛文章操作模块及论坛设置模块。
用户资料管理模块可划分为用户密码重设模块,用户信息查询模块,用户资料修改模块。
其功能结构图如图2.1所示。
企业BBS系统
图2-1系统功能结构图
(1)用户注册和登陆模块
主要是完成新用户的注册,将新用户注册信息加入数据库;登陆模块主要验证用户身份,使用会员身份登陆论坛即可进入论坛并享有会员的使用权限。
(2)用户资料管理模块
主要功能是注册用户可以随意修改自己的个人信息,可随时查询其他用户的个人资料;如果不幸遗忘自己的登陆密码,还可利用本论坛的密码重设功能,重设密码,极大的方便了用户使用。
(3)文章发表和文章浏览模块
本论坛最主要的功能,登陆用户和游客都可随意点击感兴趣的帖子进行浏览,而登陆用户还可以随时在论坛里发表自己的文章,或者对论坛里的帖子进行回复。
(4)文章搜索模块
登陆用户可利用该功能对感兴趣但无法记起位置的帖子进行查找,方便用户游览论坛的一个功能。
(5)管理员操作模块
本论坛管理者才拥有的功能,可以对论坛中任意版块的帖子进行固顶,加精,删除等操作,还可以对论坛的一些基本设置进行修改。
(6)版主操作模块
论坛各个版块的具体管理者,在自己的版块有和管理员一样的管理权限,负责维护自己版块的秩序。
(7)论坛短消息功能模块
登陆用户可利用该功能对其他论坛用户留言,进行私下的交流。
2.2系统角色划分
本系统操作用户按不同级别依次可分为:
游客,普通会员用户、版主、管理员。
高级别的用户可以继承低级别用户的公用功能。
同时,各级别用户具有一定的只有以本级别身分登录才具有的私有功能。
1.游客:
只能进入论坛浏览帖子,无其他权限。
2.普通会员:
浏览帖子,发表或回复帖子、资料维护、文章搜索、论坛短消息。
3.版主:
除会员基本功能外,可对自己所在版块的文章进行操作。
4.管理员:
除会员基本功能外,可对所有版块的文章进行固顶,加精,删除等,并且有论坛设置修改权限。
3系统总体设计
3.1关键技术
3.1.1ASP技术
ASP技术是一种类似HTML(HypertextMarkupLanguage超文本标识语言)、Script与CGI(CommonGatewayInterface通用网关接口)的结合体,简单的讲它是一种运行于服务器的脚本语言,但是其运行效率比CGI更高、程序编制也比HTML更方便且更有灵活性,程序安全性及保密性也远比Script好。
其特点归纳如下:
1.ASP可以和HTML或其他脚本语言(VBScript与JavaScript)互相嵌套。
2.ASP是一种在Web服务器端运行的脚本语言,因此,程序代码完全保密。
3.ASP以对象为基础,因此可以使用ActiveX控件继续扩充其功能。
4.ASP内置ADO组件,因此可以轻松地存取各种数据库,大大缩短了程序开发时间。
5.ASP可以将运行结果以HTML的格式传送至客户端浏览器,因此ASP可以适用于各种浏览器。
下面来介绍一下ASP的几个内置对象:
Request对象,我们知道HTTP通讯协议是一种请求与响应(Request/Response)的通讯协议,因此通常由客户端向Web服务器提出请求,Web服务器才会响应信息。
因此在ASP中,特别将“客户端提出的要求”与“Web服务器响应的信息”等动作封装成Request对象与Response对象。
换而言之,Request对象通常包含了用户端的相关信息,如浏览器的种类、表头信息、表单参数及cookies等等。
Response对象,每一种程序语言或开发工具一定都有与用户沟通的界面或函数,ASP也不例外。
在ASP中负责将信息传达到用户的对象就是Response对象。
Server对象,Server对象允许用户取得服务器提供的各项功能,例如,Server对象的CreateObject方法允许客户端用户建立一个ActiveXServer组件实例,其所建立组件实例会随着服务器端完成ASP网页的处理而自动被释放。
如果希望此对象实例可以跨多个ASP网页,就要用到Session对象保留该组件实例,直到Session对象的运行时间到了,或是在其他ASP网页调用Session对象的Abandon方法,此组件实例才会被释放。
Session对象,Session对象在ASP程序编写中占了相当重的份量,由于网页是一种无状态的程序,因此几乎无法知道用户的浏览状态。
必须通过Session对象记录用户的相关信息,以供用户再次对此Web服务器提出要求时作确认,例如,在某些特定的网页中,常需要用户输入确认的账号和密码,假如这些身份确认的结果无法保留,那岂不是每一个网页都需要重新输入一次密码。
换而言之,每一个Session的用户,Web服务器均会自动的为它们建立一个Session。
必须说明,Session对象只能适用于具备Cookie功能的浏览器。
3.1.2数据库技术
在基于微软IIS/PWS的网络平台上,通过服务器端运行的ASP程序来访问后台数据库,是一种最常见的模式了。
而对于小型的数据库应用需求,微软的Access数据库应该是与ASP程序配套使用的首选。
由于Access数据库的ODBC驱动程序支持的SQL指令全,执行效率高,所以Access后台数据库+ASP服务器端程序+客户端IE浏览器,是一个精练实用高效的组合模式。
利用SQL语言,可以查询和管理自已的数据库。
它由大约30条命令构成,但实际只需要少数的几个命令就可以完成相当多的工作,常用的SQL查询命令有:
Select、Insert、Delete、Update等。
3.1.3加密技术
本设计在会员密码和密码问题的存储时使用了MD5加密算法来保护数据库中的重要数据。
MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位的散列值。
本设计在保存会员密码和密码提示问题答案时都先将传递的数据通过MD5加密后才存入数据库,故在数据库中只能看到已经加密的信息,保证了信息的安全。
又因为该算法是单向加密的,所以当有数据要和保存的数据进行比较时,都是先将新数据加密再比较密文的差异。
3.2系统流程图
论坛设计按照一般操作进行设计:
非论坛会员仅可阅读论坛文章
管理员
进入论坛显示管理员操作项
论坛版主
进入相应版块显示版主操作项
一般会员享有的除管理权限外的一切功能
N
Y
Y
N
N
Y
登陆
结束
开始
图3-1系统流程图
3.3方案选择
3.3.1数据库需求分析
根据系统功能和数据流程,可以确定一下数据项和数据结构:
1.会员信息:
包括会员标示ID号,姓名,性别,论坛头像,论坛币,发帖数等论坛资料。
2.论坛配置信息:
包括创建时间,会员总数,论坛货币单位等。
3.版块信息:
版块说明,版主等。
4.论坛帖子信息:
帖子号,作者,内容,发表日期,回复数等。
5.好友信息:
论坛好友的姓名,注册时间。
3.3.2数据库设计
根据数据库的需求分析,酒店管理系统需要建立10个数据表,他们分别是:
论坛文章表(BBS),论坛版块表(BBSForumID),论坛配置表(Config),用户好友表(Friend),论坛短消息表(message),用户等级表(UserGroups),用户信息表(Users)。
各表具体信息见下表:
表3-1BBS表中字段
字段名
数据类型
字段描述
ID
自动编号
主题帖子号ID(主键)
ForumID
数字
论坛版块号
RID
数字
回复主题帖子号ID
TopicFace
数字
作者心情贴图
Title
文本
文章标题
Content
备注
文章内容
DateTime
日期/时间
发表日期
UserName
文本
作者
IsBest
数字
是否为精华帖
IsTop
数字
是否为置顶帖
IsNews
数字
是否为论坛公告
IsLocked
数字
是否被锁
IsVote
数字
是否为投票帖
IsMana
数字
是否需要威望
ManaNum
数字
要求威望值
LastUserName
文本
最后回复人
LastDateTime
日期/时间
最后回复时间
ReadTimes
数字
浏览次数
ReTimes
数字
回复次数
表3-2BBSForumID表中字段
字段名
数据类型
字段描述
ForumID
数字
论坛版块号ID(主键)
版块说明
文本
版块说明
版块名称
文本
版块名称
BorderUserName
文本
版主名字
表3-3Config表中字段
字段名
数据类型
字段描述
Site_Name
文本
系统名字
Site_BuildDate
文本
系统创建时间
Site_PostNum
数字
论坛发帖数
Site_TopicNum
数字
论坛主题帖数
Site_UserNum
文本
论坛会员数
Site_LastUser
文本
论坛最近注册会员
Site_CheckReg
数字
是否允许新会员注册
Site_RegWord
文本
注册校验码
Site_MoneyUnit
文本
论坛货币单位
Site_PostMoney
数字
发帖收入
Site_ReplyMoney
数字
回复收入
Site_MsgMoney
数字
发送消息消耗货币
表3-4UserGroups表中字段
字段名
数据类型
字段描述
UserGroupID
数字
组ID
GroupTitle
文本
用户组名称
GroupClass
文本
用户组分类
MinArticle
数字
需发表多少文章
TitlePic
文本
类别图
GroupClassID
数字
等级ID
表3-5Friend表中字段
字段名
数据类型
字段描述
ID
自动编号
好友ID(主键)
UserNameMD5
文本
用户加密名称
FriendName
文本
好友名字
JoinDate
日期/时间
加为好友时间
CheckUser
数字
是否列入黑名单
表3-6message表中字段
字段名
数据类型
字段描述
ID
数字
消息ID号(主键)
Title
文本
消息标题
content
文本
消息标内容
to_man
文本
收件人
from_man
文本
发件人
isread
数字
是否已读
表3-7Users表中字段
字段名
数据类型
字段描述
UID
自动编号
会员ID(主键)
UserName
文本
会员姓名
UserNameMD5
文本
会员姓名加密
UserPassWord
文本
会员密码
UserQuestion
文本
密码提示问题
UserAnswer
文本
密码提示问题答案
UserHonour
文本
会员头衔
UserFace
文本
会员头像
UserSex
数字
会员性别
UserHomePage
文本
会员主页
UserEmail
文本
会员邮箱
UserSignature
文本
会员签名
UserBests
数字
会员精华帖数
UserPost
数字
会员发贴数
UserMoney
数字
会员财富
UserMana
数字
会员威望
JoinDate
日期/时间
会员注册时间
LastLoginIP
文本
上次登陆IP
UserLogins
数字
登陆次数
LastLogin
日期/时间
上次登陆时间
UserGroup
文本
会员用户组名称
UserGroupID
数字
会员等级组ID
UserGroupClass
文本
会员用户组分类
UserGroupClassID
数字
会员等级ID
IsAdmin
数字
是否为管理员
3.3.3数据库连接的实现
数据库连接操作是一个相当频繁的操作,在ASP的数据库编程中,connection对象是我们不可能离开的一个对象,该对象是ADO对象模块中的一个专门打开和关闭数据库连接的对象,在对数据库进行任何的操作,比如更新记录,插入,删除,检索等,都必须以connection对象的建立为前提。
形象地来说,connection对象就是程序与数据库沟通的管道,所有对数据库的操作,都必须经过它,因此,本系统首先建立一个connection对象的实例变量,然后才能在它的基础上建立Recordset对象实例来操作数据库。
这里首先利用connection对象的属性ConnStr设置数据库的连接方式,使用的是AccessOLEDB驱动程序。
本设计还使用了server对象的Server.MapPath(Path)方法,作用是将(path)指定的虚拟路径转换为实际路径,大大提高了本系统的移植性。
然后使用server.createobject方法建立connection对象的实例变量conn,使用connection对象的Open方法打开数据库连接,核心代码如下:
mdb="Data/MyBBS.mdb"'数据库相对路径
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(""&mdb&"")
Setconn=server.createobject("adodb.connection")
Conn.OpenConnstr
4系统的完整设计与开发
4.1系统显示前的准备
4.1.1论坛基本配置
系统运行时,有些数据库里的数据是会被频繁调用的,为了便于书写代码和程序的严谨,可以将这些数据首先赋给一些变量,在后面的程序运行中直接调用变量,不用频繁的访问数据库。
一些保存论坛基本信息的数据就属于这类。
所以在运行时首先将论坛一些基本参数在数据库连接后即从数据库中调出,以上内容在Conn.asp文件里连接数据库后执行,其中使用connection对象的execute方法对存放基本配置信息的表进行SQL查询,还使用了Recordset对象的BOF和EOF属性,其中BOF属性表示查询数据库的指针位于第一条记录之前,则为真:
EOF属性表示查询数据库的指针位于最后一条记录之后,则为真。
如果两者都为真,说明数据库里并没有对应的数据,然后可关闭刚才创建的对象实例,并将其清空,释放系统资源;如果找到需要的记录,则将其数据读出到创建的变量里以便使用:
'=========读取论坛基本设置========
SetrsConfig=conn.execute("Select*fromConfig")'创建一个查询数据库的对象实例
IfrsConfig.BOFAndrsConfig.EOFThen'查询为空而且到最后
rsConfig.Close'关闭变量
SetrsConfig=Nothing'释放对象实例
Response.Write"网站配置数据丢失!
系统无法正常运行!
"
Response.End
Else
Site_Name=rsConfig("Site_Name")
Site_PostNum=rsConfig("Site_PostNum")
………………………’省去部分代码
EndIf
进入系统时由于有些功能只针对注册会员和管理员开放的,并不是进入论坛的人都能使用,这里就涉及到一个用户身份判断的问题。
本设计包含了一个用户验证功能函数的User_Auditing.asp文件,在其他程序执行前都会先执行该文件里的函数,在需要验证时不必重复书写代码,只需在需要身份验证的程序之前调用该具有验证功能的函数就行。
其中的CheckUsers()函数验证会员,CheckUnAdmin()函数验证管理员或版主。
本设计一大特点是使用了Cookies来暂存会员信息,主要是会员姓名、密码这两项,这一功能的实现对程序的运行是十分方便的,如上面提到的CheckUsers()函数的功能就是根据Cookies里的会员密码来验证会员是否登陆;因为一旦会员登陆后登陆处理程序会将该会员的密码暂存到Cookies中,所以只需验证当前Cookies里的会员密码是否为空就可以判断目前的用户是否登陆论坛。
CheckUnAdmin()函数则是创建一个ADO对象模块的两个Recordset对象实例来访问数据库中存放管理员身份信息和版主身份信息的表,读取有关管理员或版主身份的字段进行比较判断。
SubCheckUnAdmin()
Setwd=server.createobject("adodb.Recordset")
SQL="SelectBorderUserNamefromBBSForumID"
w