ASP.NET 程序设计实验指导书
目 录
第 2 篇 ASP.NET 4.0 综合实例——BBS 论坛系统 ............................................. 2
一、系统概述 .................................................................................................................................................... 2
二、设计前的准备 ............................................................................................................................................ 3
三、数据库设计 ................................................................................................................................................ 5
四、设计实体 (Model) 层 .............................................................................................................................. 7
五、设计数据访问 (DAL) 层 ........................................................................................................................ 13
六、设计业务逻辑 (BLL) 层 ........................................................................................................................ 41
七、主要功能界面 (WebUI 层)的实现 ........................................................................................................ 45
八、系统运行效果 ........................................................................................................................................ 132
1
ASP.NET 程序设计实验指导书
第 2 篇 ASP.NET 4.0 综合实例——BBS 论坛系
统
一、系统概述
网络论坛系统为用户提供了一个发布信息和讨论问题的平台,是访问者进行信息交流的主要方式。
本次实验将介绍如何使用 Visual Studio 2010 开发一个简洁、实用的小型网络论坛系统。通过该实例,
可以使读者快速掌握 Web 编程及数据库编程的基本技能,理解网站开发的实现过程。
1.1 学习目标
理解 ASP.NET 多层架构应用程序的概念。
掌握第三方组件 FreeTextBox 的使用方法。
掌握在 Web.Config 文件中配置相关信息的方法。
熟练掌握使用 Web 应用程序操纵 SQL Server 数据库的技术。
掌握论坛中浏览帖子、回复帖子、发表帖子、版块管理等模块的制作过程。
1.2 开发软件
Visual Studio 2010 + 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 设计思路
本章要实现的论坛系统主要包括如下功能:
用户管理:主要为用户提供用户注册、登录、修改个人信息等功能。用户有三种级别,分别是游
客、会员和管理员,其中会员又分为版主和普通用户,具有管理员权限的用户可以增加用户、删除用
户和修改用户的信息,游客只能浏览帖子,注册用户即会员可以发表话题和对其他帖子进行回复。
帖子管理:提供发表帖子、回复帖子、删除帖子和浏览帖子的功能。注册用户可以发表帖子表达
自己的看法,发帖要求用户指定帖子标题,用户也可以对已发表的帖子表达自己不同的看法,参与讨
论。帖子的发表和回复是论坛的主要功能,所有用户均具有此权限,而帖子的删除需要由系统的版主
和管理员来完成。
版块管理:版块管理主要是将帖子进行分类,讨论相同话题的帖子放在一个版块中,这样可以使
得对某一个话题感兴趣的用户不会受到其他帖子的干扰,有利于相同兴趣的用户相互讨论。管理员具
有增加版块、删除版块和修改版块的权限。
2
ASP.NET 程序设计实验指导书
二、设计前的准备
在论坛系统主要用到的关键技术有两点,一个是引入第三方组件 FreeTextBox,还有一个是多层架
构的开发思想,在设计论坛系统之前,先对这两点进行介绍。
2.1 引入第三方组件 FreeTextBox
在实现论坛功能的过程中,发表帖子和回复帖子,若要对帖子的内容进行一些修饰,如改变字体
大小,颜色,添加背景等,这些功能如果用.NET 的控件来实现比较复杂,故可以引用第三方组件
FreeTextBox 来完成,FreeTextBox 控件是一个在线编辑器,可以对文字以及图片内容进行处理,读者
可以从微软网站下载此组件。使用第三方组件的具体步骤如下:
(1)打开 Visual Studio 2010 开发环境,新建一个网站 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 源码的顶部添加注册代码,代码
如下:
<%@ Register TagPrefix="ftb" Namespace="FreeTextBoxControls" Assembly="FreeTextBox" %>
在页面中适当的位置添加 FreeTextBox 组件,代码如下:
(4)设置 FreeTextBox 组件的属性。回到设计视图,选中 FreeTextBox 组件,设置该组件的各属
性,如设置其高度 Height 属性和宽度 Width 属性。
(5)打开 Web.config 文件,在 System.Web 节点下添加
。,如
图 2 所示。
3
ASP.NET 程序设计实验指导书
图 2 配置 Web.config 文件
(6)测试 FreeTextBox 组件。在页面中添加一个 Button 控件和一个 Label 控件用来测试 FreeTextBox
控件,双击 Button 按钮,编写其 Click 事件的处理代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = FreeTextBox1.Text;
}
(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。
(3)表现层(WebUI):在 ASP.NET 中,该层主要包括 aspx 页面、用户控件以及某些与安全相关
的类和对象。
(4)实体层(Model):是数据库表的映射。
本项目的文件组织如图 3 所示。
4
ASP.NET 程序设计实验指导书
业务逻辑层
业务逻辑层中的文件
数据访问层
数据访问层中的文件
表现层
发表帖子页面
出错页面
用户控件——网页的头部
首页/默认网页
权限出错页面
登录页面
母版页
增加版块页面
修改版块页面
版块管理页面
帖子的详细信息页面
帖子列表页面
用户注册页面
回复帖子页面
修改用户信息页面
用户管理页面
验证码生成页面
实体层
实体层中的文件
图 3 BBS 论坛系统的文件组织
三、数据库设计
论坛系统中主要的数据表有用户信息表、帖子信息表、回帖信息表和版块信息表。数据库名:
5
ASP.NET 程序设计实验指导书
BBSDB。
(1)tbUser(用户信息表):用来存储注册用户的基本信息,表结构如表 1 所示。
表 1 tbUser
列名
数据类型 长度 小数位 标识 主键 外键 允许空 默认值
说明
userID
int
userName
varchar
userPswd
varchar
userSex
char
userAge
int
userEmail
varchar
userAddress varchar
userRole
varchar
userPhoto
varchar
4
50
50
10
4
50
50
50
50
0
0
0
0
0
0
0
0
0
是 是
否
是
是
是
是
是
是
是
是
用户 ID
用户名
密码
性别
年龄
Email 地址
详细地址
角色
头像图片
(2)tbPost(帖子信息表):帖子信息表用来存储发布帖子的详细信息,表结构如表 2 所示。
表 2 tbPost
列名
数据类型 长度 小数位 标识 主键 外键 允许空 默认值
说明
postID
int
postTitle
varchar
4
50
postContent varchar
1000
userID
int
postDate
datetime
moduleID
int
4
4
0
0
0
0
0
是 是
否
否
是
是
是
是
帖子编号
帖子标题
帖子内容
用户 ID
发帖时间
对应的版块 ID
(3)tbRevert(回帖信息表):用来存储对某个帖子的回帖信息,表结构如表 3 所示。
表 3 tbRevert
列名
数据类型 长度 小数位 标识 主键 外键 允许空 默认值
说明
revertID
int
revertTitle
varchar
4
50
revertContent varchar
1000
userID
int
revertDate
datetime
postID
int
4
4
0
0
0
0
0
是 是
否
是
是
是
是
是
回帖编号
回帖标题
回帖内容
用户 ID
回帖时间
帖子编号
(4)tbModule(版块信息表):用来存储论坛中所包含的版块信息,表结构如表 4 所示。
表 4 tbModule
列名
数据类型 长度 小数位 标识 主键 外键 允许空 默认值
说明
moduleID
int
4
0
是 是
否
版块编号
6
ASP.NET 程序设计实验指导书
moduleName
varchar
50
buildDate
datetime
8
moduleIntro varchar
100
0
3
0
否
是
是
版块名称
创建时间
版块介绍
四、设计实体 (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 所示。
7
ASP.NET 程序设计实验指导书
图 5 多层架构的基本框架
(5)在 Model 层中,将默认添加的 Class1.cs 文件名修改为 Module.cs,在 Module 类中添加于数
据表 tbModule 对应的各字段,代码如下:
Module.cs 文件源码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Model
{
public class Module
{
private int moduleID; //版块 ID
public int ModuleID
{
get { return moduleID; }
set { moduleID = value; }
}
private string moduleName; //版块名称
public string ModuleName
{
get { return moduleName; }
set { moduleName = value; }
}
private string moduleIntro; //版块说明
public string ModuleIntro
{
get { return moduleIntro; }
set { moduleIntro = value; }
8