《计算机软件技术基础》课程设计 BBS论坛设计与实现.docx
《《计算机软件技术基础》课程设计 BBS论坛设计与实现.docx》由会员分享,可在线阅读,更多相关《《计算机软件技术基础》课程设计 BBS论坛设计与实现.docx(24页珍藏版)》请在冰点文库上搜索。
《计算机软件技术基础》课程设计BBS论坛设计与实现
目录
第1章系统概述1
1.1总体概述1
1.2开发目的1
1.3BBS对大学生学习生活的影响1
第2章需求分析2
2.1需求概述2
2.2系统用例图2
2.2.1游客用例图2
2.2.2注册用户用例图3
2.2.3管理员用例图3
2.3系统功能3
第3章系统分析4
3.1BBS论坛管理系统技术的可行性分析4
3.2系统结构5
3.3系统开发环境5
第4章系统设计6
4.1系统总体设计6
4.2数据库设计7
4.2.1数据库和设计概述7
4.2.2概念模型设计(E-R图)7
4.2.3数据库表及关系建立8
4.2.4数据库之间关系图10
第5章系统实现11
5.1发表帖子的实现11
5.1.1实现的关键技术11
5.1.2功能实现11
5.1.2主要相关代码12
5.2浏览帖子的实现12
5.2.1实现的关键技术12
5.2.2功能实现12
5.2.3主要相关代码13
第6章系统测试13
6.1测试方法介绍14
6.2单元测试14
第7章结论15
参考文献16
第1章系统概述
1.1总体概述
BBS是在1992年底随着国际互联网的开始流行而迅速发展起来的。
互联网的产生使得以前只能在本地访问的BBS可以被全世界随意访问,这对大多数人来说是极具诱惑力的。
BBS是一个有多人参加的讨论系统,在BBS上大家可以对一个共同感兴趣的问题进行讨论,自由地发表自己的意见与观点,并且能直接与其他的人进行沟通。
按照网站的性质以及服务对象来分,迄今有以下几种类型:
一是校园BBS。
校园BBS作为主要的集中地,在BBS领域具有举足轻重的地位。
由于校园BBS的繁荣,吸引了很多的社会人士参与。
二是专业BBS。
一般是由各个著名的大公司组建,人们可以利用其交流自己对商品的看法,更为重要的是可以解决商品使用中的问题。
三是商业BBS。
它是由ISP建立的BBS站点,这类BBS站点各种信息比较多,内容相当丰富。
四是小型局域BBS。
一般是由个人或小型集体建立,为小范围信息交流服务。
五是业余BBS。
一般由BBS爱好者个人利用一些免费空间办的BBS,目的是为广大网友提供一个在某些专业上的交流场所。
六是新闻媒体BBS。
是由新闻媒体网站设立的,为广大网友提供对新闻信息进行评论、发表意见和观点的场所。
随着互联网事业的蓬勃发展。
BBS,这个具有强大实时交互功能,信息交流的平台,使人们不再像电视观众、电台听众、报纸杂志读者一样只是被动地观看、收听、阅读,而是可以积极而及时地参与讨论,在了解他人观点意见的同时也可以发表自己的看法。
BBS论坛系统是为了方便大家的沟通和获取信息而开发的系统。
我们利用ASP.NET知识和SQLServer2005开发BBS论坛管理系统。
该系统以Internet为平台,前台可使任何人注册、登录、登录在论坛上进行发帖、回帖、浏览帖子等。
管理员也可以在后台对帖子、版块、用户等进行相关的管理。
一个小型BBS论坛系统的前台功能主要包括浏览搜索帖子、用户登陆注册、发表回复帖子、个人资料管理和帖子管理;后台功能主要包括用户管理、论坛版块管理和帖子管理等。
1.2开发目的
开发本系统意在吸纳大部分游离在众多论坛的大学生,达到校内网等论坛的目标。
系统开发的总任务是实现文章的成功发表,留言的发布与回复。
从而达到用户之间信息交流的目的。
系统主要面向两类用户:
用户和系统管理员。
用户可以先注册,然后在网站里发表文章、留言等。
系统管理员可以对用户的信息进行增添和删除及修改,对版块进行增加、删除和修改操作;还可以对网站进行修改与维护。
1.3BBS对大学生学习生活的影响
1.BBS提供了丰富的网络学习资源
论坛是一个经过学习者整理加工过的网络资源汇en集中心,从新闻、学习到娱乐、体育,从文字到视频、音频,BBS汇集了各种形式、内容的网络资源。
不少BBS都设有专门的NetResources(网络资源)板块;FTP技术和BT技术的发展更是为BBS站内资源的更新、共享提供了方便。
如今,大部分大学的BBS论坛都有相应的FTP服务器,不少BBS还与网络新兴的BT技术、Blog(博客)技术等连接起来BBS水木清华站就有“水木Blog”的栏目)。
2.BBS促进了协作学习
基于网络的论坛社区也是各种学习资源组合的场所,为学习者提供了学习环境。
作为一个学生参与论坛的网络活动可包括许多种学习的意义,在特定板块内,论坛参与者围绕某个话题或者问题,通过发表、回复话题、版面讨论、站内信件等方式进行互动讨论、相互探讨,形成了一种以学习者为中心的学习方式。
从教育网内人气排名前十名的论坛的网友参与的情况来看,在各大学习板块里,基本上每张帖子提出的问题都可以得到网友友好的、认真的回复解答,有着浓郁的协作探讨的学习气氛和良好的学习效果。
3.BBS提高了学生自主学习能力
网络学习的本质是一种自主学习,论坛提供了丰富的网络学习资源,使学习者能自主选择和控制学习地点、学习时间、学习方法和学习内容。
在论坛里,学生可以自主地围绕学习问题,通过发帖、回复的形式提出讨论,寻求解答帮助,提高了学习的积极性和自主学习的能力。
第2章需求分析
2.1需求概述
在需求分析阶段,我们采用UML建模,目的是捕捉系统的所有功能需求并加以描述,同时建立模型,分析并提取所开发系统的各种可以模块化的功能以及描述它们的合作概貌。
BBS系统的基本需求如下:
(1)它是一个计算机网络软件系统,可通过WEB浏览器进行访问;
(2)系统支持三种用户(游客、注册的用户、管理员),每种用户可使用的功能都是不同的;
(3)游客只可以查看帖子;
(4)游客可以通过注册的方法变为注册用户,注册信息包括用户名、密码及其它附属信息。
其中用户名是唯一的,不可与其它注册用户的用户名重复;
(5)游客在登录(输入用户名与密码)之后,其身份变为注册用户;
(6)注册用户可以查看所有旧帖子,并发新帖子;
(7)注册用户可以回复他人或自己发表的帖子;
(8)注册用户可以管理自己的附属信息并修改它们;
(9)管理员是管理BBS的用户,且是一种特殊的注册用户;
(10)管理员可以管理注册用户,如查看、修改、删除注册用户信息;
(11)管理员可以管理BBS的帖子,如删除不合法的帖子等。
2.2系统用例图
在本系统中,通过分析,可以确认BBS中有三种角色:
管理员,注册用户,游客。
在此基础上,为每个角色定义他们所能执行的系统功能(用例,即每个角色的功能需求)。
2.2.1游客用例图
图2.1游客用例图
游客角色指未执行登录过程的系统进入者。
游客可以查看帖子,而不能发新帖子与回复帖子。
游客在登录(输入用户名与密码)后转为注册用户。
游客在注册后自动执行登录过程,即自动转为注册用户。
2.2.2注册用户用例图
图2.2注册用户用例图
注册用户指已经登录过的用户,他们不仅可以查看帖子,还可以发新帖子、回复帖子及管理个人信息。
注册用户在执行用户退出过程后变为游客。
2.2.3管理员用例图
图2.3管理员用例图
管理员可视为一种特殊的注册用户,它不仅拥有注册用户的全部功能(上图中略去这部分功能),还拥有两个其它的功能:
1,帖子管理,2,用户管理(用户指注册用户、管理员)。
2.3系统功能
鉴于本系统的性质,系统应该实现以下功能:
1.用户功能实现
(1)用户的登录
(2)用户的注册
(3)用户的查找
(4)用户资料的修改
2.帖子功能实现
(1)帖子的发表
(2)帖子的回复
(3)帖子的查找
3.后台管理
(1)用户的管理
(2)帖子的管理
(3)论坛信息的管理
(4)图片的管理
第3章系统分析
3.1BBS论坛管理系统的技术可行性分析
BBS论坛管理系统就是提供给注册用户一个平台,会员用户可以通过Internet接入,登录本系统,在这个平台上发表帖子、阅读帖子、回复帖子等等。
此类系统通常有以下四种类型的操作用户:
游客用户、普通用户、版主、管理员。
每类用户有其不同的操作集,系统通常提供一个统一的登录页面,此页面应能自动识别不同级别的用户,并提供不同的操作界面。
与之相应,此类系统通常应具有以下功能:
用户注册、用户登录、发表帖子、阅读帖子、回复帖子、个人资料维护、版块管理、版主管理、用户管理等等,所有操作都可以由用户在客户端浏览器中完成,而服务器端程序会按用户的要求来完成对系统数据的操作,并将结果传给Web服务器,再由Web服务器处理成HTML文件后发送到客户端浏览器。
这就是所谓的B/S结构应用系统,B/S结构即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。
早期的软件系统多以此作为首选设计标准。
B/S结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓N-Tier结构。
B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。
将应用程序分成好几个离散逻辑组件,就是多层式结构(N-Tier)应用程序。
最常见的选择是分成三个部分:
表示层、事务逻辑层和数据层(3-Tier),不过也有其它的组合。
多层式结构应用程序,在一开始是解决某些与传统客户端/服务器(主从式)应用程序相关的问题,但是随着Web的出现,此结构已经成为主导新程序之开发的结构。
下面就是3-Tier结构各层功能以及经常采用的技术作个简介:
表示层主要运行于客户端浏览器,采用Script(脚本)语言编写。
HTML、JavaScript、VBScript是此类应用系统中展示层最常用的脚本编制语言,结合CCS以及ActiveX技术,能设计出交互相当灵活功能又相当强大的客户端网页。
事务逻辑层设计通常有三个选择:
ASP.NET网页、COM或COM+组件、DBMS中所执行的预存程序。
将程序代码的一部分,建立成执行于数据库管理系统(DBMS)中的预存程序,使数据与程序代码储存在相同的位置,有助于最佳化执行效率,但是,预存程序都依赖于特定的数据库系统,在编写和侦错方面都相当复杂,只适宜于大型的商业应用系统。
以COM对象的方式,编写中间层(MiddleTier)事务逻辑,可以使用全功能的语言,来产生经过编译的执行程序,执行效率也相当高,此外,在COM对象中包装事务逻辑,还可以清楚地将此程序代码与网页内含的展示程序代码分隔,这样可以使应用程序更易于维护,但是,COM对象的部署也有一定的麻烦,新编写的组件对象,只有在服务器重新启动后才能被应用程序调用。
用ASP.NET网页设计事务逻辑相对来说比较简单,但是,ASP.NET网页采用脚本语言来编写事务逻辑,比如VBScript,程序代码只有在执行时才被翻译,这样会降低执行效能,此外,ASP.NET网页中的程序代码也是难以维护的,因为事务逻辑程序代码与建立使用者接口的展示程序代码彼此混杂在一起。
数据层较为灵活,视系统规模可选择Sybase、Oracle、MySQL、SQLserver或者MSAccess。
综上所述,结合本系统实际需要,本系统采用B/S结构,使用微软公司的技术解决方案。
开发环境采用微软的VisualStudio2005。
采用3-Tier软件结构:
表示层采用HTML、JavaScript或VBScript结合CSS、ActiveX技术来编写;事务逻辑层,考虑到本系统为通用BBS系统,系统应该具备较大的可伸缩性,应该能适应最基本应用最广泛的WEB平台,特别是个人用户想在一些免费主页空间搭建自已的论坛,而这类免费主页空间通常只支持ASP.NET来处理服务器端数据或数据库,另外,通用系统应该具备较大的可扩展性。
因此,本系统事务逻辑层设计采用ASP.NET网页;至于数据层,本系统采用最基本的SQLServer2005数据库系统。
本系统的开发环境和开发工具为:
WindowsXP,VisualStudio2005,SQLServer2005。
3.2系统结构
根据论坛系统的情况和要求,设计系统结构如图3.1所示。
图3.1系统结构图
3.3系统开发环境
系统开发平台:
MicrosoftVisualStudio2005
数据库管理系统软件:
SQLServer2005
运行平台:
WindowsXP
第4章系统设计
设计阶段的任务是通过综合考虑各个功能间关联,以扩展和细化分析阶段的模型。
设计的目的是指明一种易转化成代码的工作方案,是对分析工作的细化,即进一步细化分析阶段所得出的系统用例与关键领域类。
4.1系统总体设计
图4.1系统功能层次图
1.会员模块:
此模块用来实现会员的登陆注册和会员资料的修改和查找。
(1)会员登陆模块:
会员可以通过此模块对论坛进行登陆,登陆后便可以使用所有的会员功能比如发帖回复等等。
(2)会员注册模块:
没有会员帐号的用户,可以通过此模块添加会员信息,添加成功后便可登陆论坛,使用会员功能。
(3)资料修改模块:
已注册的会员在登陆后,可以通过此模块,对会员的基本资料,联系方式,码,头像等资料进行修改。
(4)会员查找模块:
已注册的会员在登陆后,可以通过此模块,对会员进行查找,并可以查看对方的资料,联系方式等等,从而方便会员之间的联系。
2.帖子模块:
(1)帖子发表模块:
已注册的会员在登陆后,可以在相应的论坛中,发表或转载自己的大作,发表成功后,其他会员便可以在相应的论坛中看到这篇帖子,并可以对其进行回复等操作。
(2)帖子回复模块:
会员在发表完帖子后,用户便可查看相关文章,并可以在文章中对已发表的帖子进行回复。
(3)帖子查找模块:
会员可以通过此模块,根据帖子的标题和作者,对相关的帖子进行查找。
3.后台管理:
(1)帖子查找模块:
此模块和帖子模块中的帖子查找类似,只是管理员的搜索条件比普通用户更加的广泛,使搜索变的便捷。
(2)帖子管理模块:
帖子管理模块是管理员对帖子管理的平台,如果管理员查看到帖子有不适宜发表的内容时,可以对帖子选择删除或者锁定等操作,如果看到优秀的帖子,还可以将帖子进行置顶。
图4.2帖子管理模块功能层次图
(3)会员管理模块:
管理员可以通过此模块,对会员进行管理,对一些不法的用户可以修改或者删除资料。
(4)论坛管理模块:
管理员对论坛的添加,创建,删除等功能都是在此模块里进行处理。
(5)图片管理模块管理员可以管理用户上传的头像,和在文章里发表的图片,从而加强对图片的控制。
4.2数据库设计
在前期的系统结构分析的基础上,对系统进行概要设计.数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
4.2.1数据库和设计概述
数据库是信息系统的核心和基础,把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。
(2)数据库是信息系统的各个部分能否紧密地结合在一起以及如何结合的关键所在。
(3)数据库设计是信息系统开发和建设的重要组成部分。
4.2.2概念模型设计(E-R图)
数据模型是是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表与操作提供一个抽象的框架。
描述了数据结构、数据操作及数据约束。
E-R模型的基本概念:
ER图概念化地构建实体间关系的模型,这使得它们区别于数据库模型图。
ER图的理念是:
项目所有参与者能理解ER图。
ER图由不同实体类型、关系、特性和类型构成。
实体是诸如用户的实际对象,有时更抽象,但必须有业务意义。
特性用于描述实体,关系用于实体之间:
(1)实体:
现实世界中的事物;
(2)属性:
事物的特性;
(3)联系:
现实世界中事物间的关系。
实体集的关系有一对一、一对多、多对多的联系。
本系统的ER图:
4.2.3数据库表及关系建立
在程序开发过程中,设计数据库的表结构是非常重要的一个环节。
一个设计良好的数据库结构,可以提高效率,方便维护,并且为以后进行功能的扩展留有余地。
这就好比高楼大厦一样,有稳固的基础,才能有优秀的成果。
下面设计论坛的数据库。
通过数据表的关系、详细字段结构。
以及相关的数据库扩展设计由浅入深讲解,并对主要的数据库表结构及数据库关系图进行详细的介绍。
本系统采用SQLServer2005数据库系统,在该系统中新建一个数据库,将其命名为db_BBS。
本系统中共用到7个数据表。
在数据库表设计过程中,可以把握几条原则,数据库设计一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体可以再划分,实体的划分原则是最好能够比当前系统开发的实体颗粒度要小;数据表的信息结构一定要适合,表的字段数量一定不要过多;扩展信息和动态变化的信息一定要分开在不同的表里;对于出现多对多这样的表关系系统,尽量不要出现等。
根据上面的数据库需求分析,BBS论坛数据库中各个表的设计结果如下。
(1)tb_User(用户信息表)需要包括的字段如图4.3所示。
图4.3tb_User表
(2)tb_Card(帖子信息表)用于保存各类帖子的详细信息,包括的字段如图4.4所示。
图4.4tb_Card表
(3)tb_Revert(回帖信息表)用于保存对帖子的回复信息,包括的字段如图4.5所示。
图4.5tb_Revert表
(4)tb_Module(版块信息表)用于保存该论坛所包含的版块信息,包括字段如图6.5所示。
图4.6tb_Module表
4.2.4数据表之间关系图
设计数据库表间的关系主要是考虑论坛中各个对象的相互关系,帖子属于版块,回复帖子从属于主题帖,帖子的作者属于用户,因此版块、主题帖、回复帖是一层层的从属依赖关系,帖子的作者必须是论坛的用户,帖子不能脱离版块、用户而单独存在。
最后得到的数据表之间关系图如图4.7所示。
图4.7数据表关系图
第5章系统实现
5.1发表帖子的实现
5.1.1实现的关键技术
主要技术的应用为:
FreeTextBox组件的使用和使用Image控件显示头像。
5.1.2功能实现
发表帖子的页面(Deliver.aspx)实现了在指定版块中发表帖子的功能,该页面运行结果如图5.1所示。
图5.1发表帖子页面
5.1.3主要相关代码
点击“提交”按钮触发其Click事件,在该事件中实现发表帖子功能,代码如下。
protectedvoidbtnSubmit_Click(objectsender,EventArgse)
{
stringstrName="";
stringstrPop="";
if(txtCName.Text==string.Empty)
{
Response.Write("alert('帖子名称不能为空!
')");
return;
}
if(Session["Name"]==null)
{strName="匿名";
strPop="游客";}
else
{strName=Session["Name"].ToString();
strPop=Session["Pop"].ToString();}
cardmanage.CardID=cardmanage.GetCID();
cardmanage.CardName=txtCName.Text;
modulemanage.ModuleName=ddlMName.SelectedValue;
cardmanage.ModuleID=modulemanage.FindModuleByName(modulemanage,"tb_Module").Tables[0].Rows[0][0].ToString();
cardmanage.CardContent=FreeTextBox1.Text;
cardmanage.CardTime=DateTime.Now;
cardmanage.CardPeople=strName;
cardmanage.Pop=strPop;
cardmanage.AddCard(cardmanage);
Response.Write("alert('帖子发表成功!
')");
txtCName.Text=FreeTextBox1.Text=string.Empty;
}
5.2浏览帖子的实现
5.2.1实现的关键技术
实现的关键技术:
DataBinder.Eval方法绑定数据和DataList控件分页。
5.2.2功能实现
浏览帖子页面(CardInfo.aspx)实现了显示指定帖子及其回复信息的功能,该页面运行结果如图5.2所示。
图5.2浏览帖子页面
5.2.3主要相关代码
为了实现帖子显示及其回复信息的功能,本系统自定义了以下4个方法,分别为:
cardBind、dataBind、pageCount、getPhoto方法。
下面例举出其中那一个。
cardBind自定义方法用于显示帖子信息,并根据发帖人姓名显示其头像,代码如下。
publicvoidcardBind(stringstr)
{
try
{
cardmanage.CardID=str;
Label1.Text=Convert.ToDateTime(cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][4].ToString()).ToLongDateString();
Label2.Text=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][5].ToString();
Label4.Text=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][1].ToString();
Label8.Text=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][3].ToString();
stringstrPop=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0]