当前位置:文档之家› 基于BBS论坛系统实现

基于BBS论坛系统实现

目录

第2篇 https://www.doczj.com/doc/9a14846709.html, 3.5综合实例——BBS论坛系统 (2)

一、系统概述 (2)

二、设计前的准备 (4)

三、数据库设计 (3)

四、设计实体 (Model) 层 (4)

五、设计数据访问 (DAL) 层 (13)

六、设计业务逻辑 (BLL) 层 (41)

七、主要功能界面 (WebUI 层)的实现 (45)

八、系统运行效果 (132)

第2篇 https://www.doczj.com/doc/9a14846709.html, 3.5综合实例——BBS论坛系

一、系统概述

网络论坛系统为用户提供了一个发布信息和讨论问题的平台,是访问者进行信息交流的主要方式。本次实验将介绍如何使用Visual Studio 2008开发一个简洁、实用的小型网络论坛系统。通过该实例,可以使读者快速掌握Web编程及数据库编程的基本技能,理解网站开发的实现过程。

1.1学习目标

?理解https://www.doczj.com/doc/9a14846709.html,多层架构应用程序的概念。

?掌握第三方组件FreeTextBox的使用方法。

?掌握在Web.Config文件中配置相关信息的方法。

?熟练掌握使用Web应用程序操纵SQL Server数据库的技术。

?掌握论坛中浏览帖子、回复帖子、发表帖子、版块管理等模块的制作过程。

1.2开发软件

Visual Studio 2008 + SQL Server 2005

1.3项目任务和范围

?搭建多层架构设计BBS论坛,创建解决方案,创建Model层、DAL层、BLL层、WebUI层。

?在Model层中,创建实体类,如Module类(版块类)、Post类(帖子类)和Revert类(回复信息类),等等。

?在DAL层中,创建5个类,它们分别是SQLHelper类、PostDAL类、UserDAL类、ModuleDAL 类和RevertDAL类。

?在BLL层中,创建4个类,如UserBLL类、PostBLL类、ReplayBLL类和ModuleBLL类。

?在WebUI层中,设计论坛的各个页面。

1.3设计思路

本章要实现的论坛系统主要包括如下功能:

用户管理:主要为用户提供用户注册、登录、修改个人信息等功能。用户有三种级别,分别是游客、会员和管理员,其中会员又分为版主和普通用户,具有管理员权限的用户可以增加用户、删除用户和修改用户的信息,游客只能浏览帖子,注册用户即会员可以发表话题和对其他帖子进行回复。

帖子管理:提供发表帖子、回复帖子、删除帖子和浏览帖子的功能。注册用户可以发表帖子表达自己的看法,发帖要求用户指定帖子标题,用户也可以对已发表的帖子表达自己不同的看法,参与讨论。帖子的发表和回复是论坛的主要功能,所有用户均具有此权限,而帖子的删除需要由系统的版主和管理员来完成。

版块管理:版块管理主要是将帖子进行分类,讨论相同话题的帖子放在一个版块中,这样可以使得对某一个话题感兴趣的用户不会受到其他帖子的干扰,有利于相同兴趣的用户相互讨论。管理员具

三、数据库设计

论坛系统中主要的数据表有用户信息表、帖子信息表、回帖信息表和版块信息表。数据库名:BBSDB。

(1)tbUser(用户信息表):用来存储注册用户的基本信息,表结构如表1所示。

(2)tbPost(帖子信息表):帖子信息表用来存储发布帖子的详细信息,表结构如表2所示。

(3)tbRevert(回帖信息表):用来存储对某个帖子的回帖信息,表结构如表3所示。

表3 tbRevert

二、设计前的准备

在论坛系统主要用到的关键技术有两点,一个是引入第三方组件FreeTextBox,还有一个是多层架构的开发思想,在设计论坛系统之前,先对这两点进行介绍。

2.1引入第三方组件FreeTextBox

在实现论坛功能的过程中,发表帖子和回复帖子,若要对帖子的内容进行一些修饰,如改变字体大小,颜色,添加背景等,这些功能如果用.NET的控件来实现比较复杂,故可以引用第三方组件FreeTextBox来完成,FreeTextBox控件是一个在线编辑器,可以对文字以及图片内容进行处理,读者可以从微软网站下载此组件。使用第三方组件的具体步骤如下:

(1)打开Visual Studio 2008开发环境,新建一个网站ch13_Test,在解决方案资源管理器中,右击该站点,在弹出的快捷菜单中选择【添加引用】命令,在弹出的对话框中选择【浏览】选项卡,在【查找范围】中找到下载的FreeTextBox组件所在的位置,FreeTextBox 3.0以上版本均支持内部模式,即图片资源和javascript都集成在dll中,故找到FreeTextBox.dll文件的位置,一般在“FTBv3-1-1\Framework-4-0”文件夹下,如图1所示。

图1“添加引用”

(2)单击【确定】按钮,系统将自动创建Bin文件夹,并将组件存放到该文件夹中。将下载的FreeTextBox组件中的aspnet_client文件夹复制到该站点下。

(3)向页面中添加此组件。首先要注册该组件,在页面HTML源码的顶部添加注册代码,代码如下:

在页面中适当的位置添加FreeTextBox组件,代码如下:

(4)设置FreeTextBox组件的属性。回到设计视图,选中FreeTextBox组件,设置该组件的各属性,如设置其高度Height属性和宽度Width属性。

(5)打开Web.config文件,在System.Web节点下添加。,如图2所示。

图2 配置Web.config文件

(6)测试FreeTextBox组件。在页面中添加一个Button控件和一个Label控件用来测试FreeTextBox 控件,双击Button按钮,编写其Click事件的处理代码如下:

(7)保存文件,运行程序,在FreeTextBox组件内输入内容,改变文字的大小,颜色等,单击【提交】按钮。

2.2多层架构设计

多层式运行架构(n-tiers结构,N层结构)是相对于两层结构而言的。传统的项目一般是UI、BLL 和DAL三层,即表示层,逻辑层和数据层。随着需求的增大,为了安全有效地在各层间进行数据传输又出现了Model即实体层,用来保存传输的数据。事实上,现今的多层结构设计并不局限于这三层。

多层结构从逻辑上相互独立,某一层的变动通常不影响其他层,具有很高的可重用性。

多层架构实际是将以前系统中的显示功能、业务运算功能和数据库功能完全分开,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。

主要的几层分别用来实现不同的功能。

(1)业务逻辑层(Business Logic Layer,BLL):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑进行处理。如果说数据层是积木,那么逻辑层就是对这些积木的搭建。

(2)数据访问层(Data Access Layers,DAL):主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,数据访问层是对数据的操作,而不是数据库,主要用途是为业务逻辑层或表示层提供数据服务。业务逻辑层在数据访问层之上,即BLL调用DAL 的类和对象,DAL访问数据并将其结果转给BLL。

的类和对象。

(4)实体层(Model):是数据库表的映射。 本项目的文件组织如图3所示。

图3 BBS 论坛系统的文件组织

业务逻辑层

业务逻辑层中的文件 数据访问层

数据访问层中的文件 实体层

表现层

发表帖子页面 出错页面

首页/默认网页 权限出错页面 登录页面 母版页

增加版块页面 修改版块页面 版块管理页面

帖子的详细信息页面 帖子列表页面 用户注册页面 回复帖子页面 修改用户信息页面 用户管理页面 验证码生成页面

用户控件——网页的头部

四、设计实体 (Model) 层

在多层架构设计中,实体层主要用来映射数据库中的数据表,它把数据表中各字段都封装在一个类中。一般地,一个实体类对应一个数据表,实体类中的每个属性对应表中相应的字段。这样做的好处是当数据库中需要修改某个字段时,只需修改实体层的对应属性,对其他层不产生影响。

在论坛网站系统中,包含4个实体类,它们分别是User类(用户信息类)、Module类(版块类)、Post类(帖子类)和Revert类(回复信息类),这里以Module类为例,其他类请查看源码。

设计步骤如下。

(1)打开Visual Studio工具,选择【文件】∣【新建】∣【项目】命令,在弹出的对话框中,选择项目类型为【Visual Studio 解决方案】,选择【空白解决方案】,将该解决方案命名为“BBS”,选择保存的位置。

(2)单击【确定】按钮,在解决方案资源管理器中,右击【解决方案BBS】,在弹出的快捷菜单中选择【添加】∣【新建项目】命令,在模板中选择【类库】,添加一个新的类库,名称为Model,位置为该解决方案所在的位置。

图4 创建解决方案

(3)单击【确定】按钮,为项目添加Model层。继续同样的操作为BBS系统添加DAL层和BLL 层。

(4)在解决方案资源管理器中,右击【解决方案BBS】,在弹出的快捷菜单中选择【添加】∣【新建网站】命令,命名为WebUI,单击【确定】按钮。搭建好的多层结构的设计图如图5所示。

图5 多层架构的基本框架

(5)在Model层中,将默认添加的Class1.cs文件名修改为Module.cs,在Module类中添加于数据表tbModule对应的各字段,代码如下:

注意:添加各字段对应的属性有一个比较简单的方法可以利用Visual Studio 2008自动产生。方法是将鼠标移到某个字段如“moduleId”上,右击,在弹出的快捷菜单中选择【重构】|【封装字段】命令,单击【确定】按钮并应用,将自动添加属性ModuleId。

(6)在解决方案资源管理器中,右击Model层,在弹出的快捷菜单中选择【添加新项】,在弹出的对话框中,选择“类”模板,在名称一栏中输入类文件名称:Post.cs。默认情况下,将自动添加Post 类,修改Post类的访问属性为“public”,为Post类添加对应的字段和属性。注意,类文件名称和类名称是两个不同的概念,它们可以同名,也可以不同名。同样的方法添加其他的几个实体类,在这里由于篇幅限制,就不再赘述了,代码如下。

Revert.cs文件源码如下:

五、设计数据访问 (DAL) 层

数据访问层(Data Access Layer,DAL)主要用来执行一些数据库的操作,如连接数据库,对数据实行增加、删除、修改、查询等操作,DAL层将这些操作封装起来,并将所取得的结果返回给表现层。

在论坛网站系统中,共包含5个类,它们分别是SQLHelper类、PostDAL类、UserDAL类、ModuleDAL类和RevertDAL类。其中SQLHelper类用来封装一些常用的数据库操作,其他4个类分别用来表示对数据库表的一些基本操作。

5.1 SQLHelper类

在SQLHelper类中,包含一个Connection属性,用来打开数据库的连接;一个ExcuteCommand(),用来执行非查询的操作;两个GetDataSet()方法,分别针对有参数和无参数的查询操作。

SQLHelper类包含的成员如图6所示。

图6 SQLHelper类成员

1. 设计数据结构

首先,将DAL层中默认的Class1.cs文件重命名为SQLHelper.cs。SQLHelper类中需要引用SqlConnection对象、SqlCommand对象等,还需要引用配置文件中的字符串,故先导入命名空间System.Data.SqlClient和System.Configuration,然后在SQLHelper类中定义一个静态的SqlConnection 对象,代码如下:

2. 配置Web.config

为了方便数据操作,可以将一些配置参数放在Web.config文件中。本系统主要在Web.config文件中配置连接数据库的字符串。在WebUI层,打开Web.config文件,在Configuration节点下添加连接字符串,如图7所示。

图7 配置数据库连接字符串

3. 公共属性Connection

SQLHelper类中的属性Connection主要用来建立数据库的连接,需要引用配置文件中Configuration 节点下的连接字符串,因此需要先添加Configuration组件文件。

在DAL层中,右击【引用】,在弹出的快捷菜单中,选择【添加引用】命令,在弹出的对话框的【.NET】选项卡下,找到【System. Configuration】并选中,单击【确定】按钮添加引用。

注意:若在【.NET】选项卡下没找到该引用,则通过在弹出对话框的【浏览】选项卡下,找Configuration组件文件(.dll文件),一般情况下此组件的目录为“C:\WINDOWS\https://www.doczj.com/doc/9a14846709.html,\Framework\v2.0.50727”。

同样的方法将Model层中的Model.dll 组件添加到DAL层中,位置在当前项目下的Model文件夹中的Bin文件夹内。

在SQLHelper类中,添加属性Connection,代码如下:

代码说明:

代码中#region和#endregion预处理指令是Visual Studio代码编辑器的大纲显示功能。主要用途是使得代码结构更加清晰,开发人员在查询代码时可以快速找到需要的代码行。单击左边的“+”或“-”号可以将在#region和#endregion之间的代码显示或隐藏。

4. 填充数据集的方法GetDataSet()

在论坛系统中有两个重载的GetDataSet()方法,它们传入的参数有所不同,主要是针对不同的查询。实现代码如下:

代码说明:

这两个方法基本类似,主要的区别是第一个GetDataSet()方法多了一个SqlParameter[]参数,它们都是用来填充数据集对象的。

5. 执行命令的方法ExcuteCommand ()

在网站系统中,需要对数据库执行增加、删除、修改的操作,这些操作都将通过SqlCommand对象的ExecuteNonQuery()方法来实现。ExcuteCommand ()方法的实现代码如下:

代码说明:

ExcuteCommand ()方法的返回值为bool数据,表示若执行成功,则返回true值,否则返回false 值。

完整的SQLHelper.cs源码如下:

5.2 UserDAL类

在解决方案资源管理器中,右击DAL层,在弹出的快捷菜单中选择【添加】∣【新建项】命令,在弹出的对话框中,选择类文件,并命名为UserDAL.cs,将默认的UserDAL类的访问修饰符改为public。

UserDAL类主要用来处理在论坛系统中有关用户的操作,如增加用户、删除用户、修改用户资料、查询用户信息等,UserDAL类包含的成员如图8所示。

1. 设计数据结构

在UserDAL中,首先添加对数据实体类的Model组件的引用(添加方法参考第5.1小节),如图9所示。

图8 UserDAL类成员图9 添加Model组件

在代码中添加导入组件的语句,以及导入数据库操作类的命名空间,代码如下:

2. 添加用户信息的方法CreateUser()

CreateUser()方法主要实现添加用户信息的功能。实现的关键技术是调用SQLHelper类中的ExcuteCommand()方法,并传递SQL字符串和参数。实现代码如下:

相关主题
文本预览
相关文档 最新文档