大家好,今天给大家介绍基于asp+access的学生论坛设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。
文章目录:
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:23045个字58页
包含内容:整套源码+完整毕业论文
资源文件目录简图如下:
提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。
第一章 系统功能设计
1.1 引言
省略
在论坛里大家最熟悉的就是用户浏览论坛中已有的内容,针对别人的主题展开讨论,也可以发表自己的观点供大家品评。同时为了防止用户发布一些不健康不合法的内容,需要有管理人员来对这些内容进行删除、修改。而且用户想在论坛发布信息则要求他注册,这样来控制用户发布信息和方便管理者操作用户的信息。论坛也要有多个版面和分区,用来区分各种帖子的内容范畴,方便整理和管理。所以论坛的基本功能就是要实现用户的数据库管理和帖子的数据库管理,以及怎么样让这些数据库和网页的操作联系起来。
1.2 需求分析
要设计一个一个论坛,首先要分析论坛里需要那些内容,以及各种内容之间的关系。
首先列出论坛常用的名词:用户、版面、公共信息、帖子、主题、积分、称号、版主、注册信息、管理员、系统参数。
对于以上名词可以精简。主题是帖子的一个特例、积分和称号是用户的一个属性、版主是增加了权限的用户,注册信息是用户的具体属性。
所以具体的对象有:用户、版面、公共信息、帖子、管理员、系统参数。
具体的操作包括:管理员对用户、帖子、版块的管理;客人和用户的对版块、帖子的浏览;客人的注册;用户的发帖、回帖、搜索等操作。
把具体的对象和具体的操作相联系,我们可以归结出论坛基本操作的流程图,如图1-1。
图1-1 论坛基本功能流程图
图1-1中个将具体的对象和操作直观的表达了出来,为了更具体的细化对象和操作的关联,用来划分开发的模块,我们将对象与对象之间的关联可以建立出一张表,对象如表1-1。
表1-1中的对象是单向关联,是指左侧对象对上方对象的活动。×表示没有关联,√表示存在单向关联。通过以上设计,论坛需要些什么以及所需要的对象之间存在着怎么的关系就有了基本的概念。
1.3 功能设计
表1-1中用户关联的对象是自身、版面、公共信息、帖子。分别根据用户与这些对
象的联系给出一个明确的菜单,如表1-2。
版面、公共信息、帖子都没有和其他对象的关联,都属于被动的对象,是被其他对象所操作的,因此针对它们的功能主要是有其他对象产生。版面和帖子是有一定关系的,可以看作是对帖子内容的归类,类似文件夹与文件的关系,有时候可以认为版面是帖子的一个属性。
对于管理员的功能,应该认为管理员是论坛的特殊群体,工作是设置论坛参数规则和维护论坛的正常运转。管理员可以和所有对象产生关联,所以其功能设定也很丰富,如表1-3。
表1-3 管理员功能列表
对于管理员和用户功能关系可以细化成以下几个相关用例图。
论坛设置参数,可以把设置一组参数作为一个方法,也可以把设置一个参数作为一个方法,如图1-2。
图1-2 论坛对象的相关用例图
各个版块有浏览列表和管理两个操作,管理方法又包括了创建、修改和删除这3个子方法,如图1-3。
图1-3 版块对象的相关用例图
帖子有浏览、发帖、回帖、搜索和管理5种方法,浏览方法又可以分列表和查看2个子方法,管理方法又可分编辑、删除、置顶、转移、加精华5个子方法,如图1-4。
图1-4 帖子对象的相关用例图
用户类有注册、登陆和管理3个方法,管理方法又分为添加、删除、设置权限3个子方法,如图1-5。
图1-5 用户对象的相关用例图
这样,表1-2和1-3就分别有了各自的归属对象。
论坛一般存在两种用户:注册用户和管理员。用户的权限是向下覆盖的,即上级权限包含下级权限。这样论坛的基本功能就可以从各种需求中筛选出来了,即发帖、浏览帖子、回帖。基本功能就是构成论坛系统的必要功能,具备这些功能的Web系统即是论坛。
1.4 扩展功能设计
具备了发帖、浏览帖子、回帖的Web系统就构成论坛了,但是这样的论坛很简单,没有吸引力,用户使用起来也不会很舒服,无论是作为商业还是个人论坛都是没有竞争力的。所以需要为其添加一些更人性化的功能使内容更丰富。
用表格形式列出可能的扩展功能,如表1-4。
表1-4 扩展功能列表
添加了以上功能,论坛就显得更具有亲和力了,而且也更具有实用性。
第二章 系统架构与数据库设计
2.1 功能模块的划分
模块的划分主要是按每一个对象的操作来归类。论坛操作的对象在第一章里归纳为用户、版面、公共信息、帖子、管理员、系统参数这6个对象,所以就要针对这6个对象划分功能模块。
(1) 用户:有两个模块,一个是用户注册、登陆、修改信息等功能组合,是用户对自身的操作;另一个是管理人员对用户进行删除、授权的操作;如表2-1。
通过以上分析,论坛的模块划分也就完成了。但如果要把整个论坛系统完整的架构出来,还要分析模块与模块之间的关系,把零散的功能模块用一条主线串联起来。对于论坛系统来说,联系各个模块的主线是使用者的权限,用户能使用论坛的哪些功能是由用户的权限决定的,论坛的每个功能都与相应的权限对应。同一类用户使用的功能模块。是以使用者为中心连接起来的。另外,操作同一类事物的功能模块,也是相互关系的。
浏览模块与发帖回帖模块、管理帖子模块关联,是由论坛的系统流程决定的;管理版块模块与浏览模块关联,是有帖子与版块的父子关系决定的,帖子依附与版块,先有版块后有帖子,帖子必须发表在某个版块中;管理用户模块与注册登陆模块关联,是由同一类对象用户决定的,注册后获得论坛的身份,成为用户,所有的用户需要接受管理员的管理,用户登陆证明自己在论坛中的身份。分析了这些关系,我们可以得到论坛系统的整体架构,如图2-1。
图2-1 论坛整体架构图
对于用户使用的模块成为前台模块,管理员使用的模块称为后台模块。其划分如图2-2。
图2-2 功能模块划分
2.2 数据库设计
论坛系统信息的储存一般是在文件或者数据库中,相比之下数据库要简单高效,能对论坛进行更好的控制,也能对资料提供一些严正和保护。所以目前流行的论坛都是使用的数据库系统。使用数据库的首先就是要设计数据库的表结构,一个设计良好的数据库结构可以提高效率、方便维护,而且对于可能的扩充也会留有余地。
2.2.1 需要建立的数据表
为了更方便操作和维护,建立的数据表名都使用相关含义的因为单词,为了区别于数据库中可能出现的其他非表内容,在给每个表名加上一个标识。根据对论坛功能的分析,可以建立16个数据表,如表2-6。
表2-6 论坛数据表
有些表是可以独立的,但大多数表都是存在关联的。其关联一般都是通过主线用户相关联,或者是用户ID,或者是用户的其他信息。所以也可以看到主线用户的列表是相关数据项目最多的。
2.2.2 数据库表结构的详细设计
首先是用户信息表,用户信息是相关信息最多的表。如表2-7。
表2-7 用户信息表(User_T)
在用户信息表里保存的是所有在论坛注册的用户的信息,用户编号是用户在论坛中的唯一标识。其实用户名也是不可重复的,但是使用编号作为主键可以让查找起来更加方便,提高效率,而且编号也是与其他表关联的主要字段。密码和密码答案是在用户忘记密码时验证身份的保证,所以设置为不能为空。用户名和密码是登陆的唯一识别,邮件是为了方便联系和某些可能的服务需要,所以也设置为非空。
表2-8是论坛中的版面信息表。
表2-8 版面信息表(Board_T)
版面信息表中依然是使用了版面编号做主键,一般都会用编号作为主键,这样效率要更高些。上级版面编号是为了方便分层次找到各级版面。发帖数量、主题数量是指本版面的所有发帖数量和主题数量,而上级版面的数量是包括下级版面的所有发帖数量和主题数量的,今日发帖数和最后一帖的规则也相同。版面置顶主题信息所包含的是该版面置顶的主题的编号。与版面相关最密切的是帖子和主题,表2-9是论坛的主题信息表。
表2-9 论坛主题信息表(Topic_T)
以上4个表是紧密关联的。为什么单独建立主题信息表而不把主题当成帖子的特例来筛选,是因为主题会有很多回复,而在论坛帖子搜索时如果搜索要过滤一次帖子将会速度很慢,而且用户浏览主题时也不必要看到帖子的全部内容。表2-9里用到了4个外键,如果在其他表中该字段没有的数据,在主题信息表中也是不能有的。发帖用户名和发帖用户编号来源于用户信息表,可以算是数据冗余,是在查询用户发帖时具有更高的效率。
表2-10也包含了4个外键,其中主题编号是用来关联主题信息表的。层数记录的是该帖子是主帖还是从帖,排序数是对同一层次的帖子进行排序的。签名标识和电子邮件标识是记录用户是否在此帖中开放自己的签名和电子邮件。
表2-11记录了投票类帖子的投票部分的内容。由于投票内容和帖子信息不一样,所以单独建立一张表。后面几个U开头的字段是限制字段,可以对于投票的用户做一些资格上的限制,防止新用户反复注册投票。
表2-12记载了没个投票用户的投票情况。投票编号和用户编号都是外键。投票选项字段和表2-11中的投票内容字段想关联。
接着设计管理员信息表,如表2-13,记载了管理员的信息。
管理员信息表和用户信息表是有关联的,外键是用户信息表里的用户名,所以论坛的管理人员也是论坛的注册用户。这样可以让管理人员在修改论坛参数后可以很直观的看到修改后的状态。
公共信息表记载的是论坛中发布的公共信息,与版面等信息是关联的。如表2-14。
表2-14 公共信息表(BbsNews_T)
表2-14中版面编号和发布用户名是外键,但版面编号可以为0,表示是在论坛首页发布的信息。背景音乐是让大家读枯燥的公告时有亲切感,不至于觉得无聊。
收藏夹信息表是针对用户的一个信息表,如表2-15。
表2-15 收藏夹信息表(BookMark_T)
收藏夹是为了给用户带来方便的,这里收藏的是网页的地址,其实也可以做成收藏主题的编号,但因为可能收藏版面等容易编号混乱。
短消息信息表记录用户之间的短消息,见表2-16。
表2-16 短消息信息表(Message_T)
短消息是用户之间私下交流的内容,所以必须保留两者之间的信息。发送和接收者都是用户信息表关联的外键。删除标识设置两个是防止一方删除操作后另一方看不到的情况。
用户的好友信息表见表2-17。
表2-17 用户好友列表(Friend_T)
用户好友列表是用户用来相互交流的,是论坛感觉更人性化。记录好友用户名是因为用户往往记得这个好友名字却不记得编号,所以这里用用户名做记录而不是编号。
在线用户表是显示即时在先的用户,可以方便用户见看到在线情况而更及时的交流。如表2-18。
表2-18 在线用户表(Online_T)
这里的主键是DOUBLE类型,是因为用户的活动很多,数据量存在溢出的可能。用户名、编号和类型都是来自用户信息表的外键。浏览器类型记录了浏览器和操作系统的类型。
文件上传表是帖子表的一个附表,它记录了在帖子中的附件等信息,见表2-19。
表2-19 用户信息表(User_T)
文件上传表记录了用户上传附件的内容。用户名、用户编号、版面编号等都是外键。文件名字段由于用户上传的文件可能同名,所以采取系统自动命名的方式,缺点是如果同一个文件分包上传,则下载后需要重新命名后才能恢复原文件。文件类型是文件真正的类型,而类型编号是论坛文件类型,表示下载与显示。
帮助信息表是很重要的表,是用来介绍整个论坛的使用的,见表2-20。
表2-20 帮助信息表(Help_T)
帮助信息表是个独立的表,帮助信息对于论坛是很重要的,帮助文件写得好,用户就会上手快,论坛就会更有亲切感。虽然现在的网络用户对论坛都并不陌生,但良好的帮助文件依然可以体现出论坛在设置上的到位。因为帮助文件分用户和管理员的,所有添加一个后台类型来区别帮助文件的显示位置。
论坛日志表是用来记录论坛行为的,一旦论坛出现了问题,可以通过这个表来跟踪一些活动,分析出问题的所在。见表2-21。
表2-21 论坛日志表(Log_T)
为了保证日志记录信息的详实,因此日志表需要设计得很全面。帖子编号和版面编号是外键,记录了论坛中对帖子信息进行操作的信息,当非帖子操作时,这两个字段不是必须的。
系统信息表关系到整个论坛是否可以正常运行,是核心表,见表2-22。
表2-22 系统信息表(Setup_T)
虽然是核心表,但是每个字段的内容都很简单。论坛设置字段存储了论坛名称、地址、联系方式等。过滤词设置比较有用,当用户发表一些禁止的词汇时可以通过过滤让这些词汇不显示在论坛上。其他的一些字段都是记录了一些论坛的状态。
论坛的数据库是非常重要的,它决定了整个论坛最终的使用是否可行。
第三章 基本设计
3.1 论坛首页设计
当用户打开论坛时,首先看到的是论坛首页,用户从首页可以看到和论坛相关的内容,发帖数、用户数量和主要版面的情况等。首先这个页面应该尽量的美观,操作截面也要看起来简单易用而且具有实用性。
一般论坛的首页分4个部分,上面是论坛的顶部LOGO,一般这个要体现出论坛的一个主题;接着是论坛的导航部分,包括了用户状况和论坛了基本状况,且这两个状况应该左右分开;再下面就是论坛主题部分的各个版面信息;最下面就是论坛用户在线状况论坛当前的情况。
基本上可能变动大的只有版面部分,所以其他变动小的部分可以做成公用文件,让其他页面可以重用。这3部分不写在文件里,而是直接写进数据库中。
3.2 数据库连接函数
数据库连接在论坛运行中是必不可少的,把这部分单独做成一个函数,在需要的时候只需要调用这个函数就可以了,而不用每次去写连接程序,这种复用可以让操作更加方便快捷。
选择的Access作为数据库,功能不强大,不能让很多人连接,但是可以省掉很多设置,对机器要求也相对要低得多,适合用PC机架设论坛。ASP中与数据相关紧密的是ADO,要让ADO对象能存取数据库,最重要的东西是OLE DB和ODBC的驱动程序,必须具备对应数据库的其中一种驱动程序,ADO对象才能进行存取。因为根据Microsoft公司的说法,OLE DB驱动程序的执行效能比ODBC要好,所以选择用OLE DB驱动程序。
利用ADO的Connection来建立同数据库的连接。建立ADODB.Connection对象,使用此对象的Open方法打开数据库。用Access在论坛路径下建立一个数据库存储路径“data”,然后建立一个名为mybbs7.mdb的数据库,建立之前数据库设计中的表。利用Microsoft公司的OLE DB机制连接Access,用OLE DB不用建立ODBC就可以直接连接Access数据库。见程序3-2。
程序3-2 Access数据库连接
Sub ConnectionDatabase
Dim ConnStr
Db=”data/mybbs7.mdb”
ConnStr=”Provider=Microsoft.jet.OLEDV.4.0”Data Source=”& Server.MapPath(db)
Set conn=Server.CreateObject(“ADODB.Connection”)
Conn.open ConnStr
if Err Then
Err.Clear
Set Conn=Nothing
Response.Write ”数据库连接出错,请检查连接字符串。”
Response.End
End if
End Sub
Sub声明了函数ConnectionDatabase,End Sub结束这个函数。Dim声明了变量ConnStr,这个变量是用来存储连接数据库信息的。变量Db声明了数据库文件所在的路径。为ConnStr赋值是声明OLE DB连接数据库的方式,Data Source后面跟的是数据库文件所在的路径。Server.MapPath是ASP内置Server对象一个函数,用来取得网站目录下文件的绝对路径。7~12行是一个判断错误的信息,如果连接出错,Asp的Err对象判断系统给出错误的存在,然后清除。
第四章 模块的实现
4.1 用户模块
4.1.1 用户的登陆
首先看用户的登陆。在用户信息表里用户名和用户密码字段是用来验证用户身份的,用这两个字段来写验证用户登陆的程序。
登陆页面命名为Login.asp,这个页面包含了输入用户名和密码、Cookie选项、和隐身登陆选项。隐身登陆只是一个判断登陆状态的标识。主要是验证用户身份和把用户信息写入Cookie。
首先看验证用户身份的程序,如程序4-1。
程序4-1 验证用户身份程序(Login.asp)
sqlstr=" UserName='"&username&"'"
Sql="Select UserID,UserName,UserPassword,UserEmail,UserPost,UserTopic,UserSex,UserFace,
UserWidth,UserHeight,JoinDate,LastLogin,UserLogins,Lockuser,Userclass,UserGroupID,
UserGroup,userWealth,userEP,userCP,UserPower,UserBirthday,UserLastIP,UserDel,UserIsBest,
UserHidden,UserMsg,IsChallenge,UserMobile,TitlePic,UserTitle,TruePassWord,UserToday "
Sql=Sql+" From [Dv_User] Where "&sqlstr&""
set rsUser=Mybbs.Execute(sql)
If rsUser.eof and rsUser.bof Then
ChkUserLogin=false
Exit Function
Else
iMyUserInfo=rsUser.GetString(,1, "|||", "", "")
rsUser.Close:Set rsUser = Nothing
End If
iMyUserInfo = "Mybbs|||"& Now & "|||" & Now &"|||"& Mybbs.BoardID &"|||"& iMyUserInfo
&"||||||Mybbs"
iMyUserInfo = Split(iMyUserInfo,"|||")
If trim(password)<>trim(iMyUserInfo(6)) Then
ChkUserLogin=false
ElseIf iMyUserInfo(17)=1 Then
ChkUserLogin=false
ElseIf iMyUserInfo(19)=5 Then
ChkUserLogin=false
Else
ChkUserLogin=True
Session(Mybbs.CacheName & "UserID") = iMyUserInfo
Mybbs.UserID = iMyUserInfo(4)
RegName = iMyUserInfo(5)
Article = iMyUserInfo(8)
UserLastLogin = iMyUserInfo(15)
UserClass = iMyUserInfo(18)
GroupID = iMyUserInfo(19)
TitlePic = iMyUserInfo(34)
If Article<0 Then Article=0
End If
首先是一个查询用户身份的SQL语句,输入某个用户后将从数据表User_T中查找该用户。set rsUser=Mybbs.Execute(sql)一句是用来执行这条SQL语句,同时返回一个包含了查询信息的记录集。If rsUser.eof and rsUser.bof Then一句判断用户信息是否存在。如果不为空,就将把数据集的信息写入储存用户信息的字符串中。If trim(password)<>
trim(iMyUserInfo(6)) Then一句判断用户密码是否和数据库中的用户密码相同。
Cookie是对于一些有限制注册用户才能看的页面用来识别是否登陆的。是由Web页服务器置于你硬盘上的一个很小的文本文件,一般不超过4KB。程序4-2是把用户信息写入Cookie的程序。
程序4-2 把用户信息写入Cookie(Login.asp)
select case usercookies
case "0"
Response.Cookies(Mybbs.Forum_sn)("usercookies") = usercookies
case 1
Response.Cookies(Mybbs.Forum_sn).Expires=Date+1
Response.Cookies(Mybbs.Forum_sn)("usercookies") = usercookies
case 2
Response.Cookies(Mybbs.Forum_sn).Expires=Date+31
Response.Cookies(Mybbs.Forum_sn)("usercookies") = usercookies
case 3
Response.Cookies(Mybbs.Forum_sn).Expires=Date+365
Response.Cookies(Mybbs.Forum_sn)("usercookies") = usercookies
end select
Response.Cookies(Mybbs.Forum_sn).path = Mybbs.cookiepath
Response.Cookies(Mybbs.Forum_sn)("username") = regname
Response.Cookies(Mybbs.Forum_sn)("userid") = Mybbs.UserID
Response.Cookies(Mybbs.Forum_sn)("password") = TruePassWord
Response.Cookies(Mybbs.Forum_sn)("userclass") = userclass
Response.Cookies(Mybbs.Forum_sn)("userhidden") = userhidden
Response是ASP的一个内置对象,Cookies是这个对象用来向浏览器写Cookie文件的集合。Cookies集合设置Cookie的值。若指定的Cookie不存在,则创建它,若存在。则设置新的值并且将旧值删除。Response.Cookies(Mybbs.Forum_sn).Expires=Date+1是用来保存用户选择的Cookie保存时间的,在选择时间内再次来论坛则可以不用再登陆了。
4.1.2 用户的注册
用户注册也关系到信息的验证,必须确定一些信息符合一定的规则和要求。用户注册后可以修改自己的信息和密码,如果忘记密码还有相关取回密码的操作。
首先就是用户的注册,命名为reg.asp,主要是对用户所填写信息的检测。主要包括字段是否为空,是不是满足长度、字符方面的要求;输入E-mail是否正确,主要判别是@字符是否存在和存在的位置;两次输入的密码是否一致;用户名是否已经存在,电子邮件是否被使用。
注册首先是要向数据库提交你所填写的信息,这些所填写的信息大多是表单的形式,可以使用Request.form()来获取表单内的文本框。Request是ASP的内置对象,Form是Request的一个获得表单的集合。
(1) 用户名的验证:在获取的同时就可以对文件长度等进行检测,使用Cint()函数进行强制执行整数运算判断是否在可接受的范围之内。
Cint(Mybbs.Forum_Setting(41)) or strLength(Request.form("name"))
<Cint(Mybbs.Forum_Setting(40))
使用InStr函数来判断是否存在非法的字符。
If Instr(username,"=")>0 or Instr(username,"%")>0 or Instr(username,chr(32))>0 or
Instr(username,"?")>0 or Instr(username,"&")>0 or Instr(username,";")>0 or Instr(username,",")>0
or Instr(username,"'")>0 or Instr(username,",")>0 or Instr(username,chr(34))>0 or
Instr(username,chr(9))>0 or Instr(username,"")>0 or Instr(username,"$")>0
(2) 密码的验证:主要验证的是密码的长度,采用Len()函数,可以返回字符串中字符的个数。参数可以是字符串也可以是变量名。
If Request.form("psw")="" or len(Request.form("psw"))>10 or len(Request.form("psw"))<6 Then
ErrCodes=ErrCodes+"- "
+template.Strings(13)
(3) 电子邮件的验证:邮件的地址一般是“用户名@域名”,采用VBScript的函数Split(),可以返回一个一维数组。在参数部分可以设置“@”为字符串的标识界限。用这个符号来拆分电子邮件地址,形成数组。UBound()函数返回了数组维数的最大可用下标。
Dim names,name,i,c
Is ValidEmail=true
Names=Split(email,”@”)
If UBound(names)<>1 then
Is VailEmail=false
Exit function
End If
而用户的注册信息如果是合法的则在提交注册信息后要将这个注册信息插入到数据库中去,可以使用Recordset对象。
set rs=Server.CreateObject(“ADODB.Recordset”)
sql=”select * from [User_T]
rs.open sql,conn,2,3
rs.addnew
rs(“Username”)=username
rs(“Userpassword”)=password
rs(“UserEmail”)=useremail
rs(“Userclass”)=userclass
rs(“TitlePic”)=titlepic
rs.update
rs.close
set rs=nothing
省略
4.2 版面与公共信息模块
4.2.1 版面浏览
版面浏览是指版面的列表,版面有层次之分,一般以两层的方式显示。在一级版面下,依次显示子版面。可以使用几个函数来完成,如程序4-5。
程序4-5 版面浏览函数
‘函数一(获得某版面下的子版面):
Public Function ReloadBoardInfo(lBoardID)
If lBoardID=0 Then Exit Function
Dim Rs
Set Rs=Execute("select BoardID,BoardType,ParentID,ParentStr,Depth,RootID,Child,readme,
BoardMaster,PostNum,TopicNum,indexIMG,todayNum,boarduser,LastPost,Sid,Board_Setting,
Board_Ads,Board_user,IsGroupSetting,BoardTopStr,BoardID As TempStr,BoardID As TempStr1,
BoardID As TempStr2,BoardID As TempStr3,cid,BoardID As TempStr4 from Dv_board where
BoardID="&lBoardID)
If Not Rs.Eof Then
Name = "BoardInfo_" & lBoardID
Value = Rs.GetRows(1)
Else
'自动修正所有版面的boards数
Call ReloadAllBoardInfo()
'Response.Redirect "index.asp"
End If
Rs.Close
Set Rs = Nothing
End Function
‘函数二(自动修正所有版面的boards数)
Public Sub ReloadAllBoardInfo()
Dim Rs,Boards
Set Rs=Execute("Select BoardID From Dv_Board Order By RootID,Orders")
If Not Rs.Eof Then
Boards=Rs.GetString(,-1, "",",","")
Boards=Left(Boards,Len(Boards)-1)
End If
Rs.close:Set Rs=Nothing
Execute("Update dv_Setup Set Forum_Boards='"&Boards&"'")
ReloadSetupCache Boards,27
End Sub
Value = Rs.GetRows(1)一句用到了GetRows()方法,其作用是将Recordset对象的多个记录检索到数组中。GetRows可以带3个参数,这里只用到了第一个参数。在调用了GetRows后,下一个未读取的记录就成了当前记录。如果没有其他记录,则EOF的属性将被设置成True。
4.2.2 公共信息模块
公共信息有两类,一类是可以在版面的顶端可以看到的论坛信息,一类是由用户发起的在各个版面的信息,他的功能类似于广播,称之为小字报。一般公告具有时效性,要求只有管理员才能发布,而版主可以在其负责的版区发布。小字报则可有各个会员发布,且版主可以管理这些小字报。发布公告和帖子的原理是一样的,而只需要识别用户的身份来判断是否有发布和管理权限。如程序4-6。
程序4-6 判断用户身份程序(announcements.asp)
程序一:
Select case UserGroupID
Case 4 Vipuser=True
Case 3 Boardmaster=True
Case 2 Superboardmaster=True
Case 1 Master=True
End Select
程序二:
If Mybbs.Master Then
Mybbs. Boardmaster=True
ElseIf Mybbs. Superboardmaste Then
Mybbs. Boardmaster=True
ElseIF Mybbs.UserGroupID=3 And Not Trim(Mybbs. BoardmasteList)=”” Then
IF InStr(“|”&lcase(Mybbs. BoardmasteList)&”|”,”|”&lcase(Mybbs.Membername)&”|”)>0 Then
Mybbs. Boardmaste=True
End If
End If
注意UserGroupID和Mybbs.Membername两个变量,因为当用户登陆都其登陆信息会写如Cookie,这里面的变量信息就是从Cookie里面获得的。
4.3 帖子模块
一个论坛最重要的是数据,数据部分最重要的只有两个,一个是用户数据,另一个就是帖子数据。而帖子是一个论坛存在的根本,所以非常重要。
4.3.1 发布、修改、删除帖子
对于发布、修改和删除帖子,发布是重点,修改帖子和发布帖子是差不多的,而删除帖子只需要多数据库的帖子ID实行删除操作,相对也比较简单。发布帖子的功能很多,使用心情图片和表情图片,正文部分可以自己定义喜欢的格式,还有使用各种UBB代码。
帖子的正文部分可以通过一些代码插图图片、Flash等各种东西,而且可以自定义字体、格式、颜色等,让帖子看起来更丰富多彩。其实这里并没有提供HTML功能,而是用到了UBB码。UBB代码是HTML的一个变种,是Ultimate Bulletin Board(国外的一个BBS程序)采用的一种特殊的TAG。为了避免用户无意或有意的使用HTML代码对论坛进行攻击,一般论坛是禁止HTML代码的,但会开放一些自定义的Tag标签,类似与HTML中的Tag,这样就既可以使用一些等同于HTML代码的功能,又避免了论坛受到恶意的攻击。一般我们自定义的这些Tag叫做UBB代码。
省略
第五章 论坛的架构
5.1 安装环境和参数设置
省略
5.2 运行论坛
配置完以上参数就可以访问论坛了。打开IE浏览器输入之前设置的IP地址,或者直接属于localhost,就可以进入论坛主页面。这里要注意数据库的连接文件是CONN.ASP文件,如果要更改数据库的名称,或者更改数据库路径都要在这个配置文件里更改相应的设置。
访问论坛首页如图5-5。
图5-5 论坛首页
使用管理员登陆后,可以看到管理选项,进入时要再次输入密码。这个密码可以和登陆密码不同。管理员用户名为admin,密码为admin888,后台密码相同。可以更改论坛相关显示信息。
第六章 结论
本文主要说明了ASP论坛的设计和Access数据库的设计和实现,运用的ASP Web数据库技术具有强大的功能和普遍的适用性。ASP技术发展已经有许多年了,现在也有各种其他的更安全稳定的技术,如JSP、PHP等。ASP作为可以直接应用于页面的技术仍然有他的优势,在各种网络应用领域依然很有实用性,也是Web设计的基础技术。Access作为数据库的功能是相当差的,但是在作为最为流行的Office系统的组件,拥有使用简单,平台架设方便和普及性强的特点,作为一般学生论坛或者个人论坛其功能也是足够的。本文的主要是说明如何设计数据库已经如何将页面和数据库进行连接,而且这里的数据库也可以更换成SQL等高级数据库进行应用,只需要修改数据库的连接函数就可以做到数据库的转换。通过研究和设计工作,对于Web编程有了更深入的了解,对掌握和运用ASP和数据库的应用方面也有了更进一步的提高,对于今后的对于其他技术的深入和研究也打好了良好基础。
参考文献
[1]欧阳周,刘道德。理工类学生专业论文导写。长沙:中南大学出版社 2000
[2]刘小华,任廷奇 毕业论文写作指导 北京 科学出版社 2004
[3]黄明,梁旭 Asp信息系统设计与开发实例 北京 机械工业出版社 2004
[4]黄斯伟。HTML4.0动态网页制作。北京:人民邮电出版社, 1999
[5]孙丽君, 吴红普. ASP编程基础及应用实例集锦 [M]. 北京: 人民邮电出版社. 2001 [6]陈会安. ASP网页制作彻底研究[M]. 北京:人民邮电出版社. 2001 [7] Richard Anderson Chris Blexrud. ASP 高级编程[M]. 北京: 机械工业出版社.2001 [8]李瑞旭. ASP实例教程[M]. 北京: 中国电力出版社. 2001 [9]冯能山, 李其艺. --轻松学习ASP网络实用编程 http://www.china-pub.com/computers/common/info.asp?id=4904[M]. 北京: 清华大学出版社 .2002 [10]邓文渊, 陈惠贞, 陈俊荣. ASP与网页数据库设计 [M]. 北京 中国铁道出版社. 2001 [11]张海藩.软件工程导论(修订版). 北京:清华大学出版社 2002 [12]张海藩,牟永敏。面向对象程序设计实用教程。 北京 清华大学出版社 2001
致 谢
省略
附录A ASP的介绍
省略
附录B ADO对象
省略
本项目源码及完整论文如下,有需要的朋友可以点击进行下载
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于asp+access的学生论坛设计与实现(源码+文档)_asp_BS架构_学生论坛.zip |