为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

ASP.NET校友录系统

2010-10-28 44页 doc 1MB 39阅读

用户头像

is_888212

暂无简介

举报
ASP.NET校友录系统第2章 认识C# 3 第29章 制作一个ASP.NET校友录系统 在现在的网络应用中,用户是网络应用的中心,如现今最风靡的校内网都是把用户放到了网络应用的第一位。而校内网的成功和风靡在很大程度上是因为它是一个真实的社交网络,校友录系统也是利用了真实的社交网络进行设计和开发的。 29.1 系统设计 在编写校友录系统前,首先需要确定校友录系统所需要的一些功能模块和适用场景,例如校友录是以何种形式呈现给用户的,如何判断这个用户是不是一个真实的用户等等,这些功能都是需要在开发初级进行设计和规划的。 29.1.1 需求分析 在上一章A...
ASP.NET校友录系统
第2章 认识C# 3 第29章 制作一个ASP.NET校友录系统 在现在的网络应用中,用户是网络应用的中心,如现今最风靡的校内网都是把用户放到了网络应用的第一位。而校内网的成功和风靡在很大程度上是因为它是一个真实的社交网络,校友录系统也是利用了真实的社交网络进行设计和开发的。 29.1 系统设计 在编写校友录系统前,首先需要确定校友录系统所需要的一些功能模块和适用场景,例如校友录是以何种形式呈现给用户的,如何判断这个用户是不是一个真实的用户等等,这些功能都是需要在开发初级进行设计和规划的。 29.1.1 需求分析 在上一章ASP.NET留言本中,通过一个简单的ASP.NET留言本项目对需求分析进行介绍,需求分析是在系统设计中一个最为重要的组成部分,良好的需求分析设计能够极大的方便在后续过程中的软件开发以及软件维护。 1.目录 需求分析通常情况下是一个单独的需求分析文档,为了模拟在软件开发过程中的顺序,以及软件开发的步骤,这里模拟基本的需求分析文档并为相关的部分进行描述。 ​ 1. 引言:通常是需求分析文档的引言,用户描述为何编写需求分析文档。 ​ 1.1 编写目的:编写目的用户描述为何编写需求分析文档。 ​ 1.2 项目背景:编写相应的项目背景。 ​ 1.3 定义缩写词和符号:编写在需求分析文档中定义的缩写词或符号等。 ​ 1.4 参考资料:用户描述在需求分析文档中所参考的资料。 ​ 2. 任务描述:定义任务,通常情况下用于描述完成何种任务。 ​ 2.1 开发目标:定义开发目标,包括为何要进行开发。 ​ 2.2 应用目标:定义应用目标,包括系统应用人员要实现什么功能,以及有哪些应用等。 ​ 2.3 软件环境:用于定义软件运行的环境。 ​ 3. 数据描述:用户进行数据库中数据设计开发的描述。 对于需求分析文档而言,其格式很像论文或软件开发说明书,所以在需求分析文档前通常会有一个目录方便客户和开发人员进行文档的阅读。上述目录描述了引言、编写文档的目录、项目背景等,当客户进行文档的翻阅时可以很方便的进行文档的查询。 2.引言 对于ASP.NET校友录系统而言,其作用是为了增加同学之间的友情,在需求分析文档的引言部分可以简单的编写为何要开发该系统以及相应的背景。引言编写如下所示: 随着互联网的发展,越来越多的交流社区应用被广泛的接受,这些社区的存在都是为了能够加强人与人之间的交流。在针对现有的系统进行调查,拟开发一套校友录系统进行校友联络,这样不仅方便校友之间的联络,也能够加强老校友和新校友的感情。 此规格说明书在详细的调查了客户现有的应用模块和基本的操作流程后进行编写,对校友录系统以及其功能进行了详细的规划、设计,明确了软件开发中应具有的功能、性能使得系统的开发人员和维护人员能够详细清楚的了解软件是如何开发和进行维护的,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。本规格说明书的预期读者包括客户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员等。 3.项目背景 由于互联网的迅猛发展,越来越多的用户希望在互联网上能够即时的,快速的与家人或朋友进行联络,相对于传统的C/S(客户端/服务器)模式的软件开发而言,其成本较高、难以维护,虽然能够即时的与家人和朋友发送消息,但是无法与家人和朋友分享生活和照片等。 而由于互联网的发展,越来越多的用户已经能够适应基于浏览器的应用程序,即Web应用,也有越来越多的用户尝试在Web服务上进行自己的应用,包括QQ空间、博客、个人日志等,都是基于浏览器的应用程序。 为了解决C/S模式的应用程序中日志、照片、音乐等难以交互的情况,现开发ASP.NET校友录系统用于进行校友之间的交流和通信,方便校友与校友之间进行通信。校友与校友之间不仅能够分享日志,还能够进行身边信息的分享,这样就加强了人与人之间的交互。 4.任务描述 任务描述用于描述客户的任务,以及基本的讲述如何完成任务的描述,ASP.NET校友录系统的任务描述可以编写为如下所示: 为了解决传统的C/S应用程序中程序的信息交互不够的问题,并加强用户与用户之间的信息交互,现开发基于.NET平台的校友录应用程序,用户能够使用校友录进行信息的通信和分享,不仅能够加强校友与校友之间的感情,也能够增强现有的社交。 5.开发目标 ASP.NET校友录系统的开发目标是为了加强现有的用户和用户之间的信息交互,解决传统的用户和用户沟通不便和沟通内容不够丰富的问题,进行用户和用户之间的数据整合和交互。 开发ASP.NET校友录系统可以为现有学校所使用,也可以被班级或个人进行使用,适用性广泛,不仅能够在大型应用中使用,同样也能够适用于小型应用。 6.应用目标 ASP.NET校友录是为了能够让校友之间进行真实的交互,用于加强校友与校友之间的感情,同时也能够收集校友的信息。 29.1.2 系统功能设计 ASP.NET校友录是学校内的一个交流平台,用于校友与校友之间的信息交互,校友能够在校友录系统进行注册,注册完毕后管理员审核相应的用户并进行相应的用户操作,当用户的审核通过后,用户就能够在校友录中进行新鲜事的分享。在ASP.NET校友录系统的开发过程中需要确定基本的系统功能,这些基本的系统功能包括如下: 1.用户注册功能 当用户访问Web页面时需要进行注册,如果用户不进行注册就不能够发表和回复留言,也不能够分享相应的信息。管理员可以配置是否需要进行登录才能够查看校友录的内容,如果管理员设置需要登录查看,则用户不登录就不能够查看相应的内容。 2.用户登录功能 用户注册之后就需要实现用户的登录,登录的用户可以进行信息的发表、回复以及相应内容的分享。登录的用户的操作也会被记录在日志中,用户可以通过自己的ID进行校友录中的功能或文章的索引。 3.用户日志功能 用户注册和登录后就能够在校友录中进行日志分享,发表关于自己觉得的最新事件,其他人能够查阅该日志并进行相应的日志操作。 4.用户留言功能 用户可以查看校友录中日志并进行相应的评论,不仅如此,用户还能够在回复中发布表情,进行文字处理等操作让留言功能更加丰富,用户还能够在校友录系统中对校友录的日志进行评分。 5.管理员审核功能 当用户注册后,需要对用户进行身份的审核,管理员可以审核已知的用户的身份,如果用户不是校友录系统的指定用户,则管理员可以不允许用户进行身份验证和登录,以确保校友录系统中的用户的身份都是真实的。 6.文章管理功能 管理员需要对校友发布的相应的信息进行管理,如果校友发布了反动、黄色、淫秽等文章,管理员有权进行修改、屏蔽和删除等操作。 7.留言管理功能 管理员需要对校友发布的相应的留言进行管理,如果校友发布了反动、黄色、淫秽或广告的留言,管理员可以进行相应的留言的删除操作。 8.用户管理功能 当用户进行了非法操作或者用户注册后发布了太多的反动、黄色、淫秽等内容,管理员可以将用户进行删除,在删除的同时系统数据库中的数据也会被删除。 9.板报/公告等功能 管理员在校友录系统中还可以进行板报、公告等发布和管理,让页面看上去更像学生时代课堂的样子,这样提高了用户友好度也能够及时的将相应的信息反馈给校友,以便校友能够获取该校友录活动等最新消息。 29.1.3 模块功能划分 ASP.NET校友录系统中的模块非常的多,这些模块包含最基本的注册、登录等模块,还包括文章管理、用户管理、用户管理等模块,这些模块都在不同程度上进行系统的协调。当介绍了系统所需实现的功能模块后并执行了相应的功能模块的划分和功能设计,可以编写相应的模块操作流程和绘制模块图,ASP.NET校友录总体模块划分如图29-1所示。 图29-1描述了ASP.NET校友录系统的总体的模块划分,用户在校友录系统中需要进行注册登录等操作。对于用户而言,用户在ASP.NET校友录中必须要进行注册和登录操作,如果用户不进行登录操作就无法进行ASP.NET校友录中校友的信息的查看,ASP.NET校友录中用户的模块流程图如图29-2所示。 图29-1 ASP.NET校友录系统模块划分 图29-2 用户登录模块流程图 用户访问Web应用并能够在Web应用中进行注册,在用户注册后,并不能够立即进行相应的操作,如果用户没有被管理员审核,那么用户只能对校友录中的数据和信息进行查看,并不能进行修改等操作,如果管理员对用户进行了身份审核并通过相应的用户,则说明用户是一个可以被认为是真实的用户,那么用户就能够执行相应操作。 对于管理员而言,管理员不仅能够作为用户的一部分进行用户的活动,包括编写日志等,还应该具备管理功能,这些管理功能包括用户的审核、帖子的审核和用户的管理等等,管理员模块流程图如图29-3所示。 图29-3 管理员模块流程图 正如图29-3所示,管理员在进行操作时同样需要对管理员进行身份验证,由于管理员也是用户的一部分,所以在进入后台管理时,需要判断用户是否有该权限进行管理,如果没有就不允许用户进行操作,如果有管理权限,管理员就能够在后台进行相应的管理操作。 对管理员进行身份验证后,管理员主要进行两大块管理,一个是用户管理,另一个是信息管理。对于用户管理而言,管理员主要是进行用户的删除、积分等操作,而对于信息管理而言,主要是用于不良的日志、评论进行修改和删除管理。 注意:由于管理员是用户的一部分,而一个校友录可以有多个管理员,这些管理员可以是用户,所以在数据库设计中需要额外的字段进行描述。 29.2 数据库设计 ASP.NET校友录比ASP.NET留言本更加的复杂,在数据库设计上也更加复杂,不同的表之间还包含着连接。在这些数据表中,单个表或多个表都用来描述校友录的相应功能,在数据库设计中,还需要考虑到数据的约束和完整性约束以便数据库的维护。 29.2.1 数据库分析和设计 在前面的系统设计中已经非常仔细对功能和模块进行划分并对相应的用户(校友、管理员)进行了模块流程分析,在进行了模块划分和流程分析后就能够对数据库进行设计。从模块中可以看出ASP.NET校友录包含了更多的功能,这些功能都能够让校友用户在网站上分享自己的照片、音乐、视频等,所以在数据库的设计上,其表的数量和表与表之间的关系也比原有的模块或系统更加复杂。针对现有的模块以及模块流程图可以归纳数据库中相应的表,数据库设计图如图29-4所示。 图29-4 数据库设计图 其中初步的为数据库中的表进行设计,这里包括四个表,分别作用如下: ​ 用户注册表:用于存放用户的注册信息,以便登录时使用。 ​ 日志表:用户可以发布相应的日志,这些日志都存放在日志表中。 ​ 日志评论表:用户可以对相应的日志进行评论。 ​ 日志分类表:用户可以选择自己喜欢的分类进行日志发布,但日志分类由管理员管理。 ​ 公告信息表:管理员可以在校友录中发布最新的信息。 其中用户在发布日志时可以选择相应的分类,例如选择“最近心情”或“好歌欣赏”等,用户还能够进行相应的分类日志的索引。在ASP.NET校友录系统中最为重要的就是日志表和与之相关的表,用户在校友录系统中主要通过日志进行信息交换和分享。其中日志表的字段可以归纳如下。 ​ 日志ID:日志的ID,为自动增长的主键。 ​ 日志标题:日志的标题,用于显示日志标题的信息。 ​ 日志作者:日志的作者,用于显示是谁发布了日志。 ​ 日志发布时间:日志发布时间,用于显示日志发布的日期。 ​ 日志内容:日志内容,用于呈现日志的内容,包括音乐、图片等信息。 ​ 日志打分:日志打分,对于其他用户而言可以为该日志进行评分。 ​ 日志所属分类:日志所属分类,用于显示日志所属于的分类。 ​ 日志阅读次数:用于表示阅读被访问的次数。 ​ 日志所属用户ID:日志所属用户ID用于标识该日志所属的用户信息。 日志表能够描述日志的基本信息,而日志分类表和日志所属用户表用户描述整个日志的其他信息,这些信息是日志的分类、日志发布作者的个性签名等等。日志分类表可以规划如下。 ​ 分类编号:用于标识留言本分类的编号,为自动增长的主键。 ​ 分类名称:用于描述分类的名称,例如“阳光男孩”等。 一个日志可以有一个分类进行描述,当对日志的分类进行描述后,用户可以通过索引相应的分类的日志,例如有某个用户对“阳光男孩”这个分类特别感兴趣,那么用户就能够索引这个分类的所有文章,而暂时关闭对其他文章的浏览。注册模块在前面的章节中都有设计,这里同样需要注册模块,注册模块的字段可以描述如下所。 ​ 用户名:用于保存用户的用户名,当用户登录时可以通过用户名验证。 ​ 密码:用于保存用户的密码,当用户使用登录时可以通过密码验证。 ​ 性别:用于保存用户的性别。 ​ 头像:用于保存用户的个性头像。 ​ QQ/MSN:用于保存用户的QQ/MSN等信息。 ​ 个性签名:用于展现用户的个性签名等资料。 ​ 备注:用于保存用户的备注信息。 ​ 用户情况:用于保存用户的状态,可以设置为通过审批和未通过等。 ​ 用户权限:用户区分是管理员还是普通用户。 与前面的用户注册不同的是,这里多了一个用户权限字段,由于管理员也能够进行普通的用户的操作,所以需要另一个字段进行用户权限的描述。当用户进行登录后,可以对相应的日志进行评论。同样,当管理员进行管理登录后,管理员可以对日志的评论进行删除,日志评论表字段如下所示。 ​ 评论ID:用于标识评论,是自动增长的主键。 ​ 评论标题:用于表示评论的标题。 ​ 评论时间:用于表示评论的时间。 ​ 评论内容:用于表示评论的内容。 ​ 用户ID:用于标识评论的用户ID,可以通过该ID进行多表连接查询。 ​ 日志ID:用于标识评论的所在的日志,可以通过该ID进行多表连接查询。 这些表就能够实现校友录的基本信息,在校友录首页就能够通过查询相应的数据进行校友录中的用户和数据的查看。 29.2.2 数据表的创建 创建表可以通过SQL Server Management Studio视图进行创建也可以通过SQL Server Management Studio 查询使用SQL语句进行创建。 1.事务表 在创建日志表之前首先需要创建friends数据库,创建完成后就能够进行其中的表的创建。在ASP.NET校友录系统中最为重要模块的就是日志模块,日志模块的表结构分别如图29-5和图29-6所示。 图29-5 日志表结构 图29-6 日志分类表结构 从数据库中可以看出留言表中的字段信息,日志表中的字段意义如下所示: ​ id:日志的ID,为自动增长的主键。 ​ title:日志的标题,用于显示日志标题的信息。 ​ author:日志的作者,用于显示是谁发布了日志。 ​ time:日志发布时间,用于显示日志发布的日期。 ​ content:日志内容,用于呈现日志的内容,包括音乐、图片等信息。 ​ marks:日志打分,对于其他用户而言可以为该日志进行评分。 ​ classid:日志所属分类,用于显示日志所属于的分类。 ​ hits:用于表示阅读被访问的次数。 ​ userid:日志所属用户ID用于标识该日志所属的用户信息。 创建数据表的SQL查询语句代码如下所示。 USE [friends] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[diary]( [id] [int] IDENTITY(1,1) NOT NULL, [title] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL, [author] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, [time] [datetime] NULL, [content] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL, [marks] [int] NULL, [classid] [int] NULL, [userid] [int] NULL, [hits] [int] NULL, CONSTRAINT [PK_diary] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 同样日志分类表的字段如下所示。 ​ id:用于标识留言本分类的编号,为自动增长的主键。 ​ classname:用于描述分类的名称,例如“阳光男孩”等。 创建数据表的SQL查询语句代码如下所示。 USE [friends] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[diaryclass]( [id] [int] IDENTITY(1,1) NOT NULL, [classname] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT [PK_diaryclass] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 在用户发布日志后,用户可以对相应的日志进行评论,评论表和日志表的连接也是非常重要的,在相应的日志下需要筛选出相应的日志的评论进行呈现,用户也可以在相应的日志中添加自己的评论,评论表字段可以归纳如下。 ​ id:用于标识评论,是自动增长的主键。 ​ title:用于表示评论的标题。 ​ time:用于表示评论的时间。 ​ content:用于表示评论的内容。 ​ userid:用于标识评论的用户ID,可以通过该ID进行多表连接查询。 ​ diaryid:用于标识评论的所在的日志,可以通过该ID进行多表连接查询。 创建数据表的SQL查询语句代码如下所示。 USE [friends] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[diarygbook]( [id] [int] IDENTITY(1,1) NOT NULL, [title] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL, [time] [datetime] NULL, [content] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL, [userid] [int] NULL, [diaryid] [int] NULL, CONSTRAINT [PK_diary_gbook] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 评论表需要同多个表进行连接,其中userid需要与注册表进行连接用于查询用户的信息,而diaryid用于同日志表进行连接查询所在的日志。在进行日志呈现时,同样需要连接日志评论表进行相应的评论的筛选。 2.验证表 在用户注册中,增加了对管理员身份验证的字段,用户注册表字段如下所示。 ​ id:用于标识用户ID,为自动增长的主键。 ​ username:用于保存用户的用户名,当用户登录时可以通过用户名验证。 ​ password:用于保存用户的密码,当用户使用登录时可以通过密码验证。 ​ sex:用于保存用户的性别。 ​ pic:用于保存用户的个性头像。 ​ IM:用于保存用户的QQ/MSN等信息。 ​ information:用于展现用户的个性签名等资料。 ​ others:用于保存用户的备注信息。 ​ ifisuser:用于保存用户的状态,可以设置为通过审批和未通过等。 ​ userroot:用于验证用户是管理员还是普通用户。 创建数据表的SQL查询语句代码如下所示。 USE [friends] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Register]( [id] [int] IDENTITY(1,1) NOT NULL, [username] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, [password] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, [sex] [int] NULL, [picture] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL, [IM] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, [information] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL, [others] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL, [ifisuser] [int] NULL, [userroot] [int] NULL, CONSTRAINT [PK_Register] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] 上述代码创建了一个可以进行身份判断的用户表,开发人员可以通过userroot字段进行管理员身份的判断,其结构如图29-7所示。 图29-7 注册表结构 3.公告数据 公告数据可以不使用数据库进行存储,在这里可以使用txt文档进行数据存储,这样不仅可以减轻数据库服务器的压力,也能够增加公告中文本的可扩展性。 注意:对于公告的数据直接存储在txt文档中,当首页需要调用公告时,可以直接从txt文档中读取数据进行HTML呈现。 29.3 数据表关系图 系统数据库中需要进行约束,需要约束的表包括用户表、留言表和留言分类表,其约束可以使用SQL Server Management Studio视图进行编写。在ASP.NET同学录系统中,包括一些数据约束用于保持数据库中数据的完整性,数据表关系图如图29-8所示。 图29-8 数据库关系图 图29-8中说明了数据库表之间的关系,进行表之间数据的约束。当进行数据插入时,就会判断数据库中表的约束情况和完整性,如果用户表没有任何数据而进行日志表中数据的插入是不被允许的。在进行关系的保存之后系统表就会被关系进行更改,其中的数据库创建的SQL语句也会相应的更改,就不会是原来的简单的创建语句,而更改后的语句包含了键值的约束关系。当对数据库中的表之间进行约束,则在进行数据操作时就应该按照规范来进行插入、删除等操作。 29.4 系统公用模块的创建 在ASP.NET校友录系统中,用户能够分享自己的日志就需要使用HTML编辑器,HTML编辑器是系统的公用模块,可以通过HTML编辑器进行富文本编写和呈现。同样为了简化数据操作,也可以使用SQLHelper类进行数据操作。 29.4.1 使用Fckeditor Fckeditor是现在最热门的开源HTML编辑器,使用Fckeditor能够像Word一样进行页面排版和布局,Fckeditor还能够使用表情、进行拼写检查等。 在留言本系统开发中,并没有使用Fckeditor进行文本提交是因为在留言本系统中不需要进行复杂的文字呈现,而对于校友录系统而言,用户可以分享自己的日志并且进行日志布局和排版,这就需要实现复杂的HTML代码进行页面呈现。Fckeditor能够完成这一系列复杂的操作。Fckeditor在“附-Fckeditor编辑器”中,可以在项目中使用Fckeditor进行文本框制作和二次开发。 在项目中添加Fckeditor的引用,首先需要将Fckeditor文件夹拷贝到项目中。由于ASP.NET应用程序的关系,Fckeditor并不会在解决方案管理器中呈现,单击【解决方案管理器】上方的【显示所有文件】小图标可以进行所有文件的显示,如图29-9所示。 显示所有文件后就能够看到Fckeditor编辑器文件夹,右击Fckeditor文件夹,选择【添加到项目】选项就能够将文件夹中的所有文件批量添加到项目中,如图29-10所示。 图29-9 显示所有文件 图29-10 添加Fckeditor 添加文件后还需要添加相应的DLL文件,以便在程序开发中使用Fckeditor编辑器进行文本框开发。右击现有项目,在下拉菜单中选择【添加现有项】选项,在标签中选择【浏览】选项卡,找到【附-Fckeditor编辑器】目录中的bin目录并添加到项目中,如图29-11所示。 添加引用后就能够在开发中使用Fckeditor编辑器进行富文本编辑,开发人员还能够在工具栏中添加Fckeditor编辑器。单击【工具箱】的空白区域,单击右键,在下拉菜单中选择【选择项】选项,选择刚才添加的DLL文件。选择后单击【确定】按钮即可添加控件。控件添加完毕后就会在工具栏中呈现相应的控件,如图29-12所示。 图29-11 添加引用 图29-12 添加后的Fckeditor编辑器控件 开发人员能够将Fckeditor编辑器控件拖动到其他的区域,以适合自己的开发方式。在控件添加完成后,就可以向页面中添加控件,示例代码如下所示。
上述代码使用了Fckeditor编辑器控件进行富文本操作,运行后如图29-13所示。 图29-13 Fckeditor编辑器 使用Fckeditor编辑器可以更快的进行富文本的编辑,如果开发人员从头开发HTML编辑器会花费大量的时间,使用Fckeditor编辑器能够进行样式的布局、文本格式化等操作而无需从头进行开发。对于Fckeditor编辑器而言,Fckeditor编辑器是免费和开源的,开发人员能够免费的下载Fckeditor编辑器并进行二次开发,极大的简化富文本功能的开发。 29.4.2 使用SQLHelper SQLHepler是一个数据库操作的封装,使用SQLHepler类能够快速的进行数据的插入、查询、更新等操作而无需使用大量的ADO.NET代码进行连接,使用SQLHelper类为开发人员进行数据操作提供了极大的遍历,在现有的系统中,在解决方案管理器中可以选择添加现有项添加现有的类库的引用,也可以通过自行创建类进行引用。 在前面的ASP.NET留言本中详细的讲解了如何使用SQLHepler类进行数据操作,使用SQLHepler类能够无需自己创建ADO.NET对象进行复杂的数据操作。 29.4.3 配置Web.config Web.config文件为系统的全局配置文件,在ASP.NET中Web.config文件提供了自定义可扩展的系统配置,这里同样可以通过配置配置节配置自定义信息,示例代码如下所示。 //编辑server项 //编辑guestbook项 //编辑uid项 //编辑pwd项 //编辑look项 上述代码对配置文件Web.config进行了相应的配置,配置节的配置信息能够在程序中通过ConfigurationManager.AppSettings获取,在SQLHelper类中就使用ConfigurationManager.AppSettings进行相应的自定义配置节的参数值的获取。这些配置节的相应的意义如下所示。 ​ server:server项,用于配置数据库服务器的服务器地址。 ​ database:database项,用于配置数据库服务器的数据库名称。 ​ uid:uid项,用于配置数据库服务器的用户名。 ​ pwd:pwd项,用于配置数据库服务器的密码。 ​ look:look项,用于配置用户是否需要登录才能进行查看。 在配置了Web.config中配置的信息后,不仅SQLHelper类能够进行相应参数的获取,在应用程序中也能够获取Web.config中配置节的参数值。 29.5 系统界面和代码实现 在ASP.NET校友录系统中使用了Fckeditor以及SQLHelper简化了HTML编辑器的开发和数据操作,在系统界面编写和代码实现上也更加容。,对于校友录系统而言,具有比较多的页面,这些页面用于注册、登录、发布日志和管理。 29.5.1 用户注册实现 在用户进行校友录系统登录前必须进行注册,对于注册而言,本书的前面的模块章节以及ASP.NET留言本项目都有比较详细的介绍,这里就不在做过多的介绍,用户注册只需要将数据插入到数据库即可,注册页面HTML核心代码见光盘中源代码\第29章\29-1\29-1\register.aspx。 上述代码进行了用户注册页面的基本布局,当用户打开校友录页面时,系统会提示用户必须要进行登录操作,如果用户没有用户惟一则必须先进行注册,注册页面如图29-14所示。 图29-14 注册页面 当用户进行注册时,需要将数据插入到数据库中,使用SQLHelper类能够简化数据操作,示例代码如下所示。 protected void Button1_Click(object sender, EventArgs e) { try { string strsql = "insert into register (username,password,sex,picture,IM,information,others,ifisuser,userroot) values ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + DropDownList1.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "',0,0)"; SQLHelper.SQLHelper.ExecNonQuery(strsql); //执行SQL语句 Response.Redirect("login.aspx"); //注册后跳转到登录页面 } catch { Response.Redirect("default.aspx"); //出错后跳转到首页 } } 当用户执行注册后,如果注册成功系统就会跳转到登录页面进行登录操作,如果没有注册成功(抛出异常),则系统会认定用户执行了非法操作,会跳转到首页。在进行注册时,默认情况下ifisuser字段为0,用户注册后并不能够立即通过,需要管理员进行身份验证。 注意:在进行注册时首先需要进行查询,查询是否已经有现有的用户,这里可以参考注册模块,由于前面已经讲解了很多关于注册的操作,这里就不再详细讲解如何实现。 29.5.2 用户登录实现 用户登录操作在前面的章节中讲的非常的多,并且在模块篇中还详细的介绍了用户登录模块的开发,这里可以使用简单的登录模块进行登录操作即可而无需实现复杂的登录控制。登录页面HTML核心代码见光盘中源代码\第29章\29-1\29-1\login.aspx。 用户注册完成后就会跳转到登录页面,登录页面能够给用户配置相应的Session对象以存储用户状态,登录界面布局后如图29-15所示。 图29-15 登录界面布局 当用户单击【Login】按钮时进行登录,使用SQLHelper类能够快速进行查询,示例代码如下所示。 protected void Button1_Click(object sender, EventArgs e) { string strsql = "select * from register where username='" + TextBox1.Text + "' and password='" + TextBox2.Text + "'"; //编写SQL SqlDataReader sdr = SQLHelper.SQLHelper.ExecReader(strsql); //执行查询 if (sdr.Read()) { Session["username"] = TextBox1.Text; //用户名 Session["userid"] = sdr["id"].ToString(); //用户ID Session["admin"] = sdr["userroot"].ToString(); //管理员判断 Response.Redirect("friends.aspx"); //页面跳转 } else { Label1.Text = "无法登录,用户名或密码错误"; //提示错误登录 } } 当用户进行登录后,系统会为用户赋予三个Session对象,这个三个对象的意义为用户名、用户ID和管理员判断。在用户表中,其字段userroot用于判断是否为管理员,如果userroot的值为0,说明不是管理员,否则说明该用户是一个管理员用户。 29.5.3 校友录页面规划 校友录页面是校友录系统中最丰富的页面,大部分用户都会在校友录页面中停留较长的时间,在校友录页面不仅要呈现相应的日志,还需要呈现黑板报、公告、管理员等信息,在开发校友录页面时,首先需要进行页面规划。页面规划如图29-16所示。 图29-16 校友录页面规划 正如图29-16所示,校友录页面的基本规划可以分为5块,这5块内容如下所示。 ​ 1:显示头部信息,包括logo等。 ​ 2:背景,用户填充背景颜色。 ​ 3:显示公告,管理员等。 ​ 4:显示最新发布的日志。 ​ 5:显示最新加入的同学,最热门的日志等等。 为了提高用户的友好度,可以将管理员命名为“值日生”,而将用户命名为“同学”,更加有校园的感觉。 29.5.4 自定义控件实现 在进行了页面规划后,就需要使用自定义控件进行相应的数据成呈现,例如呈现值日生、最新加入的同学等。在页面进行数据呈现的自定义控件并没有多大的难度,但是自定义控件能够方便开发和维护,当进行管理员显示的开发时,只需要修改相应的自定义控件即可。 1.值日生控件 值日生控件用于显示校友录系统的管理员,管理员在校友录系统中被称为“值日生”,这样具有更好的友好度,值日生控件实现代码如下所示。 namespace DiaryAdmins { [ToolboxData("<{0}:Myadmins runat=server>")] //控件呈现形式 public class Myadmins : WebControl { protected override void RenderContents(HtmlTextWriter output) { try { StringBuilder str = new StringBuilder(); //使用String string strsql = "select * from register where userroot=1 order by id desc"; //创建SQL语句 SqlDataReader sdr = SQLHelper.SQLHelper.ExecReader(strsql); //查询内容 while (sdr.Read()) //遍历对象 { str.Append("" + sdr["username"] + "
"); //输出HTML } output.Write(str); //呈现HTML } catch { output.Write(""); //输出空 } } } } 上述代码编写了值日生控件,当使用值日生控件,能够将校友录的管理员呈现在页面中。 2.加入校友控件 加入校友控件用于呈现最新加入的校友,校友能够关注最新加入的校友并和他成为好友,加入校友控件代码如下所示。 namespace AddFriends { [ToolboxData("<{0}:NewFriends runat=server>")] //控件呈现形式 public class NewFriends : WebControl { protected override void RenderContents(HtmlTextWriter output) { try { StringBuilder str = new StringBuilder(); //使用String string strsql = "select top 10 * from register where userroot=0 order by id desc"; //编写SQL SqlDataReader sdr = SQLHelper.SQLHelper.ExecReader(strsql); //执行查询 while (sdr.Read()) //遍历对象 { str.Append("" + sdr["username"] + "
"); //输出HTML } output.Write(str); //呈现HTML } catch { output.Write(""); //输出空串 } } } } 上述代码与值日生控件不同的是,值日生控件通过遍历用户表中的userroot为1的用户,而校友控件是遍历用户表中userroot为0的用户,userroot字段用于辨别用户身份,可以通过userroot字段进行筛选。 29.5.5 校友录页面实现 29.5.3中的图片可以作为页面布局的规范,页面布局人员能够使用该图片作为页面布局的蓝本进行页面布局,校友录页面布局头部HTML代码如下所示。
在校友录界面头部布局实现中,需要使用logo进行页面呈现,这里可以使用HTML控件进行图片呈现。在显式了logo之后,就需要呈现banner标签。banner标签的样式在CSS文件中进行编写,在实际的校友录系统中,可以直接使用,示例代码如下所示。 在实现了banner标签后,就需要实现校友录页面中最重要的页面,即标签center内的内容。标签center中包括main_board、main_site以及main_right标签,示例代码见光盘中源代码\第29章\29-1\29-1\friends.aspx。 在编写了校友录页面的主窗体后,就能够编写校友录底部信息,示例代码如下所示。在end标签中,开发人员能够进行版权的声明和编写。
校友录系统由xx开发完成
在校友录页面中使用了GridView控件和自定义控件,GridView控件主要是用于呈现日志数据,其排序方式是按照最后回复时间进行排序,而自定义控件包含值日生控件和加入校友控件,用户呈现相应的用户数据。 注意:在使用自定义控件时,可能会提示SQLHelper类异常,开发人员可以不予理会。开发人员也能够自己编辑异常处理进行错误信息处理。 29.5.6 日志发布实现 在日志发布页面,用户能够使用HTML编辑器进行富文本编辑,这样就提高了交互性。对于用户而言,也能够使用HTML编辑器编写更多丰富的内容,包括音乐分享和文件上传。日志发布页面只需要将数据插入到相应的表即可,日志发布页面示例HTML核心代码见光盘中源代码\第29章\29-1\29-1\new.aspx。 上述代码使用了同日志显示页面相同的CSS和样式进行布局,在一些相同的应用中使用相同的样式和布局能够提高用户的熟悉程度,让用户能够尽快适应。当用户填写了相应的日志之后,就能够进行日志的提交,日志提交代码如下所示。 protected void Button1_Click(object sender, EventArgs e) { try { string strsql = "insert into diary (title,author,time,content,marks,classid,userid,hits) values ('" + TextBox1.Text + "','" + Session["username"].ToString() + "','" + DateTime.Now + "','" + FCKeditor1.Value + "',0," + DropDownList1.Text + ",'" + Session["userid"].ToString() + "',0)"; //编写SQL语句 SQLHelper.SQLHelper.ExecNonQuery(strsql); //执行插入 Response.Redirect("friends.aspx"); //页面跳转 } catch { Label3.Text = "出现错误,请检查日志"; //提示错误信息 } } 在页面载入时,首先需要进行用户的身份的判断才能够进行相应的操作,如果用户没有登录则不允许进行日志操作,在载入时进行判断需要使用Page_Load方法,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) { if (Session["username"] == null || Session["userid"] == null) //如果未登录 { Response.Redirect("login.aspx"); //跳转到登录页 } } 如果用户没有登录或者登录超时,则会跳转到登录页面重新进行登录操作。 29.5.7 日志修改实现 日志修改页面基本同日志添加页面相同,这里就不再重复HTML代码,日志修改页面中的控件基本同日志添加页相同,而在日志修改页面中需要使用控件进行传递的参数的存放,当需要进行修改等操作时可以使用传递的控件进行日志修改。 在页面加载时,需要通过传递的参数进行日志的查询和控件中数据的填充,而当用户进行修改时,需要判断用户是否是作者,否则不运行修改功能,日志页面加载时实现代码如下所示。 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session["username"] == null || Session["userid"] == null) //判断状态 { Response.Redirect("login.aspx"); //页面跳转 } else { string strsql = "select * from diary where id='" + Request.QueryString["id"] + "'"; SqlDataReader sdr = SQLHelper.SQLHelper.ExecReader(strsql); //编写SQL if (sdr.Read()) //存在该文章 { if (sdr["userid"].ToString() == Session["userid"].ToString() || Session["admin"].ToString() == "1") //判断权限 { TextBox1.Text = sdr["title"].ToString(); //控件值初始化 Label1.Text = sdr["author"].ToString(); //控件值初始化 Label2.Text = sdr["time"].ToString(); //控件值初始化 FCKeditor1.Value = sdr["content"].ToString(); //控件值初始化 DropDownList1.Text = sdr["classid"].ToString(); //控件值初始化 } else { Response.Redirect("error/cmodi.aspx?id=" + sdr["id"]); //跳转错误 } } else { Response.Redirect("login.aspx"); //登录跳转 } } } } 当页面加载时会判断用户是否登录,如果用户没有登录则会跳转到登录页面,否则进行数据库查询判断该文章是否为当前用户所能够操作的文章,如果不能够操作文章,则跳转到错误页面。当用户进行修改时,执行UPDATE语句对数据库中的数据进行更改,示例代码如下所示。 protected void Button1_Click(object sender, EventArgs e) { try { string strsql = "update diary set title='" + TextBox1.Text + "',content='" + FCKeditor1.Value + "' w here id='" + Request.QueryString["id"] + "'"; //更新语句 SQLHelper.SQLHelper.ExecNonQuery(strsql); //执行更新 Response.Redirect("news?id=" + sdr["id"]); //页面跳转 } catch { Label3.Text = "出现错误,请检查日志"; //抛出异常 } } 当用户进行日志更新时,只需要进行UPDATE语句的执行就能够执行更新,更新完成后可以跳转到
/
本文档为【ASP.NET校友录系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索