




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ASP.NET程序设计实验指导书目 录第2篇 ASP.NET 3.5综合实例BBS论坛系统2一、系统概述2二、设计前的准备3三、数据库设计5四、设计实体 (Model) 层7五、设计数据访问 (DAL) 层13六、设计业务逻辑 (BLL) 层41七、主要功能界面 (WebUI 层)的实现45八、系统运行效果132第2篇 ASP.NET 3.5综合实例BBS论坛系统一、系统概述网络论坛系统为用户提供了一个发布信息和讨论问题的平台,是访问者进行信息交流的主要方式。本次实验将介绍如何使用Visual Studio 2008开发一个简洁、实用的小型网络论坛系统。通过该实例,可以使读者快速掌握Web编程
2、及数据库编程的基本技能,理解网站开发的实现过程。1.1学习目标 理解ASP.NET多层架构应用程序的概念。 掌握第三方组件FreeTextBox的使用方法。 掌握在Web.Config文件中配置相关信息的方法。 熟练掌握使用Web应用程序操纵SQL Server数据库的技术。 掌握论坛中浏览帖子、回复帖子、发表帖子、版块管理等模块的制作过程。1.2开发软件Visual Studio 2008 + SQL Server 20051.3项目任务和范围 搭建多层架构设计BBS论坛,创建解决方案,创建Model层、DAL层、BLL层、WebUI层。 在Model层中,创建实体类,如Module类(版块
3、类)、Post类(帖子类)和Revert类(回复信息类),等等。 在DAL层中,创建5个类,它们分别是SQLHelper类、PostDAL类、UserDAL类、ModuleDAL类和RevertDAL类。 在BLL层中,创建4个类,如UserBLL类、PostBLL类、ReplayBLL类和ModuleBLL类。 在WebUI层中,设计论坛的各个页面。1.3设计思路本章要实现的论坛系统主要包括如下功能:l 用户管理:主要为用户提供用户注册、登录、修改个人信息等功能。用户有三种级别,分别是游客、会员和管理员,其中会员又分为版主和普通用户,具有管理员权限的用户可以增加用户、删除用户和修改用户的信息
4、,游客只能浏览帖子,注册用户即会员可以发表话题和对其他帖子进行回复。l 帖子管理:提供发表帖子、回复帖子、删除帖子和浏览帖子的功能。注册用户可以发表帖子表达自己的看法,发帖要求用户指定帖子标题,用户也可以对已发表的帖子表达自己不同的看法,参与讨论。帖子的发表和回复是论坛的主要功能,所有用户均具有此权限,而帖子的删除需要由系统的版主和管理员来完成。l 版块管理:版块管理主要是将帖子进行分类,讨论相同话题的帖子放在一个版块中,这样可以使得对某一个话题感兴趣的用户不会受到其他帖子的干扰,有利于相同兴趣的用户相互讨论。管理员具有增加版块、删除版块和修改版块的权限。三、数据库设计论坛系统中主要的数据表有
5、用户信息表、帖子信息表、回帖信息表和版块信息表。数据库名:BBSDB。(1)tbUser(用户信息表):用来存储注册用户的基本信息,表结构如表1所示。表1 tbUser列名数据类型长度小数位标识主键外键允许空默认值说明userIDint40是是否用户IDuserNamevarchar500是用户名userPswdvarchar500是密码userSexchar100是性别userAgeint40是年龄userEmailvarchar500是Email地址userAddressvarchar500是详细地址userRolevarchar500是角色userPhotovarchar500是头像图片
6、(2)tbPost(帖子信息表):帖子信息表用来存储发布帖子的详细信息,表结构如表2所示。表2 tbPost列名数据类型长度小数位标识主键外键允许空默认值说明postIDint40是是否帖子编号postTitlevarchar500否帖子标题postContentvarchar10000是帖子内容userIDint40是用户IDpostDatedatetime是发帖时间moduleIDint40是对应的版块ID(3)tbRevert(回帖信息表):用来存储对某个帖子的回帖信息,表结构如表3所示。表3 tbRevert列名数据类型长度小数位标识主键外键允许空默认值说明revertIDint40是
7、是否回帖编号revertTitlevarchar500是回帖标题revertContentvarchar10000是回帖内容userIDint40是用户IDrevertDatedatetime是回帖时间postIDint40是帖子编号(4)tbModule(版块信息表):用来存储论坛中所包含的版块信息,表结构如表4所示。表4 tbModule列名数据类型长度小数位标识主键外键允许空默认值说明moduleIDint40是是否版块编号moduleNamevarchar500否版块名称buildDatedatetime83是创建时间moduleIntrovarchar1000是版块介绍二、设计前的准
8、备在论坛系统主要用到的关键技术有两点,一个是引入第三方组件FreeTextBox,还有一个是多层架构的开发思想,在设计论坛系统之前,先对这两点进行介绍。2.1引入第三方组件FreeTextBox在实现论坛功能的过程中,发表帖子和回复帖子,若要对帖子的内容进行一些修饰,如改变字体大小,颜色,添加背景等,这些功能如果用.NET的控件来实现比较复杂,故可以引用第三方组件FreeTextBox来完成,FreeTextBox控件是一个在线编辑器,可以对文字以及图片内容进行处理,读者可以从微软网站下载此组件。使用第三方组件的具体步骤如下:(1)打开Visual Studio 2008开发环境,新建一个网站
9、ch13_Test,在解决方案资源管理器中,右击该站点,在弹出的快捷菜单中选择【添加引用】命令,在弹出的对话框中选择【浏览】选项卡,在【查找范围】中找到下载的FreeTextBox组件所在的位置,FreeTextBox 3.0以上版本均支持内部模式,即图片资源和javascript都集成在dll中,故找到FreeTextBox.dll文件的位置,一般在“FTBv3-1-1Framework-4-0”文件夹下,如图1所示。图1“添加引用”(2)单击【确定】按钮,系统将自动创建Bin文件夹,并将组件存放到该文件夹中。将下载的FreeTextBox组件中的aspnet_client文件夹复制到该站点
10、下。(3)向页面中添加此组件。首先要注册该组件,在页面HTML源码的顶部添加注册代码,代码如下:在页面中适当的位置添加FreeTextBox组件,代码如下: (4)设置FreeTextBox组件的属性。回到设计视图,选中FreeTextBox组件,设置该组件的各属性,如设置其高度Height属性和宽度Width属性。(5)打开Web.config文件,在System.Web节点下添加。,如图2所示。图2 配置Web.config文件(6)测试FreeTextBox组件。在页面中添加一个Button控件和一个Label控件用来测试FreeTextBox控件,双击Button按钮,编写其Click
11、事件的处理代码如下:protected void Button1_Click(object sender, EventArgs e) Label1.Text = FreeTextBox1.Text;(7)保存文件,运行程序,在FreeTextBox组件内输入内容,改变文字的大小,颜色等,单击【提交】按钮。2.2多层架构设计多层式运行架构(n-tiers结构,N层结构)是相对于两层结构而言的。传统的项目一般是UI、BLL和DAL三层,即表示层,逻辑层和数据层。随着需求的增大,为了安全有效地在各层间进行数据传输又出现了Model即实体层,用来保存传输的数据。事实上,现今的多层结构设计并不局限于这三
12、层。多层结构从逻辑上相互独立,某一层的变动通常不影响其他层,具有很高的可重用性。多层架构实际是将以前系统中的显示功能、业务运算功能和数据库功能完全分开,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。主要的几层分别用来实现不同的功能。(1)业务逻辑层(Business Logic Layer,BLL):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑进行处理。如果说数据层是积木,那么逻辑层就是对这些积木的搭建。(2)数据访问层(Data Access Layers,DAL):主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,
13、数据访问层是对数据的操作,而不是数据库,主要用途是为业务逻辑层或表示层提供数据服务。业务逻辑层在数据访问层之上,即BLL调用DAL的类和对象,DAL访问数据并将其结果转给BLL。(3)表现层(WebUI):在ASP.NET中,该层主要包括aspx页面、用户控件以及某些与安全相关的类和对象。(4)实体层(Model):是数据库表的映射。本项目的文件组织如图3所示。用户控件网页的头部验证码生成页面用户管理页面修改用户信息页面回复帖子页面帖子列表页面帖子的详细信息页面版块管理页面修改版块页面增加版块页面用户注册页面登录页面母版页权限出错页面首页/默认网页出错页面发表帖子页面表现层实体层中的文件实体层
14、数据访问层中的文件业务逻辑层中的文件数据访问层业务逻辑层图3 BBS论坛系统的文件组织四、设计实体 (Model) 层在多层架构设计中,实体层主要用来映射数据库中的数据表,它把数据表中各字段都封装在一个类中。一般地,一个实体类对应一个数据表,实体类中的每个属性对应表中相应的字段。这样做的好处是当数据库中需要修改某个字段时,只需修改实体层的对应属性,对其他层不产生影响。在论坛网站系统中,包含4个实体类,它们分别是User类(用户信息类)、Module类(版块类)、Post类(帖子类)和Revert类(回复信息类),这里以Module类为例,其他类请查看源码。设计步骤如下。(1)打开Visual
15、Studio工具,选择【文件】【新建】【项目】命令,在弹出的对话框中,选择项目类型为【Visual Studio 解决方案】,选择【空白解决方案】,将该解决方案命名为“BBS”,选择保存的位置。(2)单击【确定】按钮,在解决方案资源管理器中,右击【解决方案BBS】,在弹出的快捷菜单中选择【添加】【新建项目】命令,在模板中选择【类库】,添加一个新的类库,名称为Model,位置为该解决方案所在的位置。图4 创建解决方案 (3)单击【确定】按钮,为项目添加Model层。继续同样的操作为BBS系统添加DAL层和BLL层。(4)在解决方案资源管理器中,右击【解决方案BBS】,在弹出的快捷菜单中选择【添加
16、】【新建网站】命令,命名为WebUI,单击【确定】按钮。搭建好的多层结构的设计图如图5所示。图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 publi
17、c 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; private DateTime buildDate;
18、/版块创建时间 public DateTime BuildDate get return buildDate; set buildDate = value; 注意:添加各字段对应的属性有一个比较简单的方法可以利用Visual Studio 2008自动产生。方法是将鼠标移到某个字段如“moduleId”上,右击,在弹出的快捷菜单中选择【重构】|【封装字段】命令,单击【确定】按钮并应用,将自动添加属性ModuleId。(6)在解决方案资源管理器中,右击Model层,在弹出的快捷菜单中选择【添加新项】,在弹出的对话框中,选择“类”模板,在名称一栏中输入类文件名称:Post.cs。默认情况下,将自动
19、添加Post类,修改Post类的访问属性为“public”,为Post类添加对应的字段和属性。注意,类文件名称和类名称是两个不同的概念,它们可以同名,也可以不同名。同样的方法添加其他的几个实体类,在这里由于篇幅限制,就不再赘述了,代码如下。Post.cs文件源码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Model public class Post private int postID; /帖子编号 public int PostID get retur
20、n postID; set postID = value; private string postTitle; /帖子标题 public string PostTitle get return postTitle; set postTitle = value; private string postContent; /帖子内容 public string PostContent get return postContent; set postContent = value; private int userID; /用户ID public int UserID get return userI
21、D; set userID = value; private DateTime postDate; /发帖时间 public DateTime PostDate get return postDate; set postDate = value; private int moduleID; /发帖版块 public int ModuleID get return moduleID; set moduleID = value; Revert.cs文件源码如下:Revert.cs文件源码using System;using System.Collections.Generic;using Syst
22、em.Linq;using System.Text;namespace Model public class Revert private int revertID; /回帖编号 public int RevertID get return revertID; set revertID = value; private string revertTitle; /回帖标题 public string RevertTitle get return revertTitle; set revertTitle = value; private string revertContent; /回帖内容 pu
23、blic string RevertContent get return revertContent; set revertContent = value; private int userID; /用户ID public int UserID get return userID; set userID = value; private DateTime revertDate; /回帖日期 public DateTime RevertDate get return revertDate; set revertDate = value; private int postID; /帖子编号 pub
24、lic int PostID get return postID; set postID = value; User.cs文件源码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Model public class User private int userID; /用户ID public int UserID get return userID; set userID = value; private string userName; /用户姓名 publi
25、c string UserName get return userName; set userName = value; private string userPswd; /用户密码 public string UserPswd get return userPswd; set userPswd = value; private string userSex; /用户性别 public string UserSex get return userSex; set userSex = value; private int userAge; /用户年龄 public int UserAge get
26、 return userAge; set userAge = value; private string userEmail; /Email地址 public string UserEmail get return userEmail; set userEmail = value; private string userAddress; /用户地址 public string UserAddress get return userAddress; set userAddress = value; private string userRole; /用户角色 public string User
27、Role get return userRole; set userRole = value; private string userPhoto; /头像 public string UserPhoto get return userPhoto; set userPhoto = value; 五、设计数据访问 (DAL) 层数据访问层(Data Access Layer,DAL)主要用来执行一些数据库的操作,如连接数据库,对数据实行增加、删除、修改、查询等操作,DAL层将这些操作封装起来,并将所取得的结果返回给表现层。在论坛网站系统中,共包含5个类,它们分别是SQLHelper类、PostDA
28、L类、UserDAL类、ModuleDAL类和RevertDAL类。其中SQLHelper类用来封装一些常用的数据库操作,其他4个类分别用来表示对数据库表的一些基本操作。5.1 SQLHelper类在SQLHelper类中,包含一个Connection属性,用来打开数据库的连接;一个ExcuteCommand(),用来执行非查询的操作;两个GetDataSet()方法,分别针对有参数和无参数的查询操作。SQLHelper类包含的成员如图6所示。图6 SQLHelper类成员1. 设计数据结构首先,将DAL层中默认的Class1.cs文件重命名为SQLHelper.cs。SQLHelper类中需
29、要引用SqlConnection对象、SqlCommand对象等,还需要引用配置文件中的字符串,故先导入命名空间System.Data.SqlClient和System.Configuration,然后在SQLHelper类中定义一个静态的SqlConnection对象,代码如下:using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration;namespace DAL public c
30、lass SQLHelper public static SqlConnection con; / 定义数据库连接对象 2. 配置Web.config为了方便数据操作,可以将一些配置参数放在Web.config文件中。本系统主要在Web.config文件中配置连接数据库的字符串。在WebUI层,打开Web.config文件,在Configuration节点下添加连接字符串,如图7所示。图7 配置数据库连接字符串3. 公共属性ConnectionSQLHelper类中的属性Connection主要用来建立数据库的连接,需要引用配置文件中Configuration节点下的连接字符串,因此需要先添加
31、Configuration组件文件。在DAL层中,右击【引用】,在弹出的快捷菜单中,选择【添加引用】命令,在弹出的对话框的【.NET】选项卡下,找到【System. Configuration】并选中,单击【确定】按钮添加引用。注意:若在【.NET】选项卡下没找到该引用,则通过在弹出对话框的【浏览】选项卡下,找Configuration组件文件(.dll文件),一般情况下此组件的目录为“C:WINDOWSMicrosoft.NETFrameworkv2.0.50727”。同样的方法将Model层中的Model.dll 组件添加到DAL层中,位置在当前项目下的Model文件夹中的Bin文件夹内。
32、在SQLHelper类中,添加属性Connection,代码如下:/ / 连接数据库/ #region Connection属性public static SqlConnection Connection get string connectionString = ConfigurationManager.ConnectionStringsConStr.ToString(); if (con = null) con = new SqlConnection(connectionString); con.Open(); else if (con.State = System.Data.Connec
33、tionState.Broken) con.Close(); con.Open(); else if (con.State = System.Data.ConnectionState.Closed) con.Open(); return con; #endregion代码说明:代码中#region和#endregion预处理指令是Visual Studio代码编辑器的大纲显示功能。主要用途是使得代码结构更加清晰,开发人员在查询代码时可以快速找到需要的代码行。单击左边的“”或“”号可以将在#region和#endregion之间的代码显示或隐藏。 4. 填充数据集的方法GetDataSet()在
34、论坛系统中有两个重载的GetDataSet()方法,它们传入的参数有所不同,主要是针对不同的查询。实现代码如下:#region 根据查询条件填充数据 带参数/ / 根据查询条件填充数据/ / SQL语句/ SQL参数/ 数据集对象public DataSet GetDataSet(string sqlStr, SqlParameter param) SqlCommand cmd = new SqlCommand(sqlStr, Connection); cmd.Parameters.AddRange(param); DataSet ds = new DataSet(); SqlDataAdap
35、ter dapt = new SqlDataAdapter(cmd); dapt.Fill(ds); return ds;#endregion#region 根据查询条件填充数据 不带参数/ / 根据查询条件填充数据/ / Sql语句/ 数据集对象public DataSet GetDataSet(string sqlStr) SqlCommand cmd = new SqlCommand(sqlStr, Connection); DataSet ds = new DataSet(); SqlDataAdapter dapt = new SqlDataAdapter(cmd); dapt.Fi
36、ll(ds); return ds; #endregion代码说明:这两个方法基本类似,主要的区别是第一个GetDataSet()方法多了一个SqlParameter参数,它们都是用来填充数据集对象的。5. 执行命令的方法ExcuteCommand ()在网站系统中,需要对数据库执行增加、删除、修改的操作,这些操作都将通过SqlCommand对象的ExecuteNonQuery()方法来实现。ExcuteCommand ()方法的实现代码如下:#region 执行Excute命令/ / 执行更新操作(增加、删除、修改)/ / SQL语句/ bool型数据public bool ExcuteCo
37、mmand(string sqlStr) SqlCommand cmd = new SqlCommand(sqlStr, Connection); cmd.ExecuteNonQuery(); return true; / / 执行更新操作(增加、删除、修改)/ / SQL语句/ SQL参数/ bool型数据public bool ExcuteCommand(string sqlStr, SqlParameter param) SqlCommand cmd = new SqlCommand(sqlStr, Connection); cmd.Parameters.AddRange(param);
38、 cmd.ExecuteNonQuery(); return true;#endregion代码说明:ExcuteCommand ()方法的返回值为bool数据,表示若执行成功,则返回true值,否则返回false值。完整的SQLHelper.cs源码如下:SQLHelper.cs文件源码using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient;using System.Configuration;using System.Data;namespace DAL public class SQLHelper public static SqlConnection con; /定义数据库连接对象 / / 连接数据库 /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科学启蒙活动的规划与实践计划
- 2025-2030中国丙二醇甲醚醋酸酯市场销售规模与未来投资走势研究报告
- 2025至2031年中国按钮式油烟机行业投资前景及策略咨询研究报告
- 八年级双班祖国在我心中主题班会教案
- 2025年随州国投集团公开招聘42名工作人员笔试参考题库附带答案详解
- 2025至2031年中国建筑用丝杠行业投资前景及策略咨询研究报告
- 超声刀的危害和治疗方法
- 急性脊髓炎的治疗方案
- 康复治疗病人病历分析
- 企业知识产权保护的区块链技术路径及法律思考
- 合作联展合同模板
- LNG冷能利用介绍
- 三年级语文下册 第19课《剃头大师》同步训练题(含答案)(部编版)
- 安全生产特种设备日管控、周排查月调度工作制度
- 临时用电施工组织设计-完整
- 2023年高考辽宁卷化学真题(解析版)
- 第三章物流节点选址模型与方法
- 粮油食材配送投标方案(大米食用油食材配送服务投标方案)(技术方案)
- DB3301∕T 65.28-2024 反恐怖防范系统管理规范 第28部分:硬质隔离设施
- 新解读《JTGT 3660-2020公路隧道施工技术规范》
- 北京版小学英语1至6年级词汇
评论
0/150
提交评论