第26章投票模块设计.pdf
《第26章投票模块设计.pdf》由会员分享,可在线阅读,更多相关《第26章投票模块设计.pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第 26 章 投票模块设计 在一些网站的应用中,为了加强用户和网站之间的交互,常常开发投票模块让用户能够参与到网站的活动中,网站还能够通过投票模块进行用户信息的统计和调查,使用投票模块能够更好的让网站与用户进行交互。26.1 学习要点 投票模块需要涉及到一些 ASP.NET 3.5 的基本知识,如果要仔细学习投票模块的开发,需要详细了解本书的一些章节知识,这些章节如下所示:Web 窗体基本控件。数据库基础。ADO.NET 常用对象。Web 窗体数据控件。ASP.NET 内置对象。生成静态的概念 自定义控件和用户控件。基本了解了以上章节的知识点后,就能够熟练学习和开发此模块。26.2 系统设计
2、 投票模块开发起来对技术的要求并不是很高,但是投票的表设计和样式呈现都是有技巧的。在网站应用中,有些应用就需要使用投票模块,例如网站信息统计和网站信息调查等,投票模块还能够进行热点调查等。26.2.1 模块功能描述 投票模块能够加强用户与网站之间的交互,投票模块能够加强用户和网站信息之间的互动,网站可以使用投票功能进行网站内容的调查,例如调查用户是否满意网站的设计或者是否满意网站改版等等。同时投票模块还能够进行热点事件的调查,例如“你怎么看待 XX 事件”等等,都可以使用投票模块进行统计。投票模块在设计上来说比较的简单,在后台的投票发布中,只需要进行相应的投票项目的发布即可,而在呈现时,需要调
3、用多个表进行投票的呈现。例如在投票表的设计中,不能够将一个投票和选项设计在一起,那么一个投票有可能有单个选项或多个选项,不同的投票之间可能选项不同,如果将这些字段设计在一起,那么就会造成很大的数据浪费。投票模块的功能模块比较容易和简单,模块图如图 26-1所示。626 图 26-1 投票模块功能描述 正如图 26-1 所示,投票模块的功能大概可以描述为投票管理和投票呈现,管理员可以在后台进行投票管理,包括投票发布、投票修改和投票删除。投票发布或修改完毕后,用户就能够在前台进行相应的操作,包括投票和查看结果等。在前台的用户投票页面中,可以使用 ASP.NET 3.5 AJAX 进行无刷新操作实现
4、用户的无刷新进行投票和结果统计。从上述模块功能描述中可以规划成以下几个页面和控件:登录页面:管理员登录页面,为管理员提供身份验证。后台框架集:用于管理员的管理操作。投票发布页面:管理员用于投票的发布。投票删除页面:管理员用于删除投票。投票修改页面:管理员用于投票的修改。其中登录页面用于制作后台的登录窗口,其作用同新闻模块中的登录一样。框架集用于制作后台管理界面,能够方便管理员在不同的页面和功能之间进行切换。管理员首先需要进行身份验证,当身份验证通过后管理员就能够在后台进行投票的发布、删除和修改,管理员在后台进行投票操作后,用户能够在前台查看相应的投票并进行操作,投票控件可以用用户控件制作,这样
5、能够为用户投票提供操作。而投票的查看可以使用自定义控件制作,使用自定义控件能够呈现更多的投票效果,这些效果包括统计、百分比等。26.2.2 模块流程分析 虽然投票模块不是网站开发过程中最重要的模块,但是投票模块在网站开发过程中也非常的实用。现在可以看到在各个大型网站中都会有投票模块的存在,因为投票模块可以提高用于和网站之间的交互,也能够提高用户与用户之间的交互。当出现了一个热门话题时,例如“您对番茄花园作者被抓有什么看法”时,使用新闻模块能够进行网站和用户之间的交流,但是却很难明显的看出用户的意愿,也无法统计用户的观点的信息。使用投票功能能够良好的解决这个问题,投票能够很好的进行统计,非常直观
6、的呈现百分比,如图 26-2 所示。627 图 26-2 投票模块 从图 26-2 中可以看出不同的用户的不同的观点,也能够快速的统计出大流的用户管理,例如“喜欢读书还是工作”这个问题上,可以看出很多人选择了“我现在工作了,我想回到学校去读书”这一选项。在新闻模块中虽然能够通过评论来进行用户交互,但是很多时候的效果并没有投票好。投票可以快速的统计群体对于某观点的意向,但是在投票模块中,管理员和用户进行的操作流程都是不同的,投票模块相应的流程如图 26-3 和图 26-4 所示所示。图 26-3 用户操作流程图 图 26-4 管理员操作流程图 对于用户而言,用户需要访问投票模块,在访问投票模块时
7、可以查看投票数据然后进行投票操作,当用户进行了投票操作就会更新投票数据和相应的统计信息,系统在对数据进行重更新后再呈现在页面。而对于管理员而言,需要在后台进行投票发布和修改,在发布和修改后系统根据投票进行数据的初始化或统计并呈现在相应的页面中。628 26.3 数据库设计 在投票模块的数据库设计中,需要多个表进行投票数据的描述。同样为了系统运行的安全,在后台同样需要登录操作,只有管理员进行登录后才能够发布投票。而对于用户,进行不同的操作时,还需要对数据库中的相应字段进行更新。26.3.1 数据库设计 在投票模块中,需要多个表进行投票模块的描述,其中最重要的数据库就是投票问题表和投票选项表。投票
8、问题表用于存放和投票相关的问题的数据,而投票选项表用于存放和投票选项相关的数据,在对投票模块和流程分析后,可以为几个表进行字段规划,其中投票表字段可以归纳如下。投票编号:用于标识投票,为自动增长的主键。投票标题:用于显示标题,作为投票模块的标题。投票内容:用于解释投票信息的一些内容。投票问题表的字段非常的少,其主要是用于索引,而投票选项表需要同投票问题表一起整合使用,一同描述一个投票模块。投票选项编号:用于标识投票选项,为自动增长的主键。投票选项统计:用于标识该投票被选择的次数。投票描述:用于描述投票中的一个选项。投票选项 ID:用于标识该投票选项是隶属于哪个投票问题,为投票问题表的外键。管理
9、员表用于管理员登录和验证操作,其作用同登录模块和新闻模块中的登录模块基本相同,其字段如下所示。管理员编号:用于标识管理员信息,为自动增长的主键。管理员用户名:用于标识管理员用户名。管理员密码:用于标识管理员的密码,通常情况下和管理员用户名一起进行身份验证。其中投票问题表和投票选项表一同描述投票模块,如图 26-5 所示。图 26-5 投票模块的形成 投票问题表和投票选项表一同描述投票模块,在呈现一个投票项目时,在投票问题表中只需要显示 629 投票的问题,而投票的选项则需要通过投票问题的标识(ID)号来进行筛选,在投票选项表中有一个投票选项 ID 字段,该字段就是用于标识这个选项是属于哪个投票
10、问题的。只有将这两个表中的数据进行整合才能够完整的实现一个投票所需要的数据表。投票模块的数据设计并不复杂,而投票模块中将不同的表的数据进行呈现却比数据设计更加复杂的。26.3.2 数据表的创建 创建表可以通过 SQL Server Management Studio 视图进行创建也可以通过 SQL Server Management Studio 查询使用 SQL 语句进行创建。在创建表之前首先需要创建数据库 post,在 post 数据库中只需要创建 3 个表就能够实现投票项目的描述,其中投票表(posttitle)的字段如图 26-6 所示。图 26-6 投票表结构图 从投票表的结构图可以
11、看出只需要创建三个字段就能够表述投票问题,这三个字段的意义如下所示。id:用于标识投票,为自动增长的主键。title:用于显示标题,作为投票模块的标题显示。content:用于解释投票信息的一些内容。创建表的 SQL 语句如下所示。USE post GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE dbo.posttitle(/创建 posttitle 表 id int IDENTITY(1,1)NOT NULL,title nvarchar(50)COLLATE Chinese_PRC_CI_AS NULL,co
12、ntent nvarchar(max)COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT PK_posttitle 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:用于标识投票选
13、项,为自动增长的主键。hits:用于标识该投票被选择的次数。content:用于标识投票项及其描述。askid:用于标识该投票选项是隶属于哪个投票问题,为投票问题表的外键。这里值得注意的是,选项表中的 askid 字段同投票表一同描述投票项,投票选项表创建的 SQL 语句 630 如下所示。USE post GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE dbo.postchoose(/创建 postchookse 表 id int IDENTITY(1,1)NOT NULL,hits int NULL,cont
14、ent nvarchar(max)COLLATE Chinese_PRC_CI_AS NULL,askid int NULL,CONSTRAINT PK_postchoose 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 上述代码创建了 postchookse 表用于描述投票的选项,其中 asdid 为投票问题表的 id
15、,该键为外键,用于筛选和整合两个表中的数据。在投票的发布中,为了系统的安全性,还需要创建系统表用于管理员登录,admin 表只需要保存管理员的用户名和密码即可,则其字段可以描述为如下所示。id:用于标识管理员信息,为自动增长的主键。admin:用于标识管理员用户名。password:用于标识管理员的密码,通常情况下和管理员用户名一起进行身份验证。上述字段描述了 admin 表中需要使用的字段,可以使用 SQL 语句进行表和字段的创建,创建newsclass 表的 SQL 语句如下所示。USE post GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER
16、ON GO CREATE TABLE dbo.admin(/创建 admin 表 id int IDENTITY(1,1)NOT NULL,admin nvarchar(50)COLLATE Chinese_PRC_CI_AS NULL,password nvarchar(50)COLLATE Chinese_PRC_CI_AS NULL,CONSTRAINT PK_admin PRIMARY KEY CLUSTERED (id ASC )WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_L
17、OCKS =ON,ALLOW_PAGE_LOCKS =ON)ON PRIMARY )ON PRIMARY 上述代码创建了 admin 表,用于进行管理员的身份验证,在后台的管理员登录中需要使用到该表,在表创建完成后,需要向数据库中添加管理员,添加管理员代码如下所示。INSERT INTO admin(admin,password)VALUES(guojing,0123456)执行上述代码就能够进行 admin 表的数据插入,插入一个新管理员之后,就能够在后面的登录操作中使用该表的管理员信息进行登录和投票操作。631 26.4 界面设计 投票模块包括众多的页面,这些页面包括发布投票页面、修改投票
18、页面和删除投票页面,这其中还包括投票管理页面。在投票模块中,不适用进行 ASP.NET 自带的控件进行操作,在投票模块的页面设计中需要自行开发自定义页面。26.4.1 后台框架集 在 Microsoft Expression Web 2 中,选择菜单栏中的【文件】选项,在下拉菜单中选择【新建】选项,单击【新建】选项中的【网站】选项创建网站,在弹出窗口中选择框架集,如图 26-7 所示。图 26-7 创建框架集 框架集可以将多个页面放置在同一个页面,在 Microsoft Expression Web 2 中可以创建框架集并为框架集中的页面进行指定或新建,这里可以创建一个目录类型的框架集,创建后
19、框架集代码见光盘中源代码第 26 章26-126-1admindefault.aspx。开发人员可以在框架集中创建网页或选择设置初始网页,这里创建两个网页,一个用于显示导航,此页面为 sidebar.aspx,管理员能够在该页面进行导航处理。另一个则是主工作区,用于管理员操作,导航栏初始化代码见光盘中源代码第 26 章26-126-1adminsidebar.aspx。投票管理的操作并不多,所以在后台中管理员导航的节点也并不多,管理员在后台主要执行投票管理和添加投票两个操作,投票管理操作包括了投票的修改和删除。26.4.2 投票管理页面 投票管理页面的数据显示可以使用 ASP.NET 3.5
20、提供的 GridView 控件,由于投票模块其功能的复杂性,这里并不能使用 ASP.NET 3.5 自带的控件进行修改,所以在投票管理页面只能够使用 GridView控 件 进 行 数 据 罗 列,并 添 加 相 应 的 超 链 接,示 例 代 码 见 光 盘 中 源 代 码 第 26 章26-126-1adminmanage.aspx。在管理页面中,其代码使用了 GridView 控件进行数据罗列,但在 GridView 控件中添加的是两个数 632 据绑定的超链接分别用于实现修改和删除功能,如图 26-8 和图 26-9 所示。图 26-8 添加修改超链接 图 26-9 添加删除超链接 可
21、以看出修改和删除超链接都会通过参数传递跳转到另一个页面,其中修改超链接跳转的是modi.aspx?id=编号,而删除超链接跳转的是 delete.aspx?id=编号。通过参数的传递,开发人员能够在相应的页面进行业务逻辑处理。注意:这种情况很像 ASP 的开发过程,为了能够让开发人员更好的理解控件的制作,可以使用类似 ASP 的开发流程进行过程开发。由于页面只需要进行数据的呈现,所以数据源并不需要支持数据操作,数据源代码如下所示。asp:SqlDataSource ID=SqlDataSource1 runat=server ConnectionString=SelectCommand=SEL
22、ECT*FROM posttitle ORDER BY id DESC 从上述代码可以看出,数据源中并没有自动支持插入、更新、删除等数据操作,因为对于投票管理页面的 GridView 控件而言,其作用只是用于数据的呈现,而无需进行数据操作。26.4.3 投票发布页面 投票发布页面用于管理员的投票发布,管理员可以在投票发布页面进行投票信息的填写,在投票发布页面,管理员需要填写投票信息和投票选项信息,这就涉及到多个表的数据操作。在管理员填写投票选项信息时,需要向投票选项表中重复插入数据,因为投票选项往往是多项,而投票问题只是一项。投票发布页面涉及到两个表和程序筛选,将在后面的章节中讲到,而投票发布
23、页面的设计只需要进行基础控件布局即可,示例代码见光盘中源代码第 26 章26-126-1adminpost.aspx。投票代码使用了 TextBox 控件用于管理员的信息输入,管理员能够在相应的控件中填写投票信息并通过按钮控件提交数据。在投票发布页面中,投票选项同样使用的是 TextBox 控件。再次回到流程分析中,用户在前台进行投票。投票同样包含多个选项,有的投票包含 1 个或 3 个选项,有的投票包含 2 个或 4 个选项,那么在投票功能中就不能规定死投票选项的个数。在投票发布时,管理员需要按照投票的选项个数进行投票发布,同时在投票中又需要降低数据库的使用率,这里就需要智能筛选数据。这里使
24、用的是回车筛选,即一个回车就是一个选项。为投票功能设 633 计页面以便管理员添加投票项目,页面设计后如图 26-10 所示。图 26-10 投票页面设计 26.4.4 投票修改页面 投票修改页面同投票发布页面相同,在投票页面被加载时,投票的基本信息需要载入并存储在投票修改页面中的控件里,当管理员单击【修改投票】按钮时,就能够进行数据筛选和修改,投票修改页面示例代码见光盘中源代码第 26 章26-126-1adminmodi.aspx。投票修改页面在加载时接受传递过来的参数,使用传递的参数获取数据库中投票的相应信息进行页面中控件的文本填充。管理员可以通过修改页面中相应的信息进行数据更改,当更改
25、完毕后管理员可以进行数据操作更新相应的数据选项。26.4.5 投票删除页面 投票删除页面可以不进行页面布局的处理,因为投票删除页面主要作用为删除数据。当管理员在投票管理页面进行投票删除选择时,会跳转到投票删除页面,投票删除页面通过获取传递过来的参数进行投票的删除,删除完毕后再次返回投票管理页面,所以在投票删除页面中只需要进行事务的处理而不需要进行页面布局和控件处理。26.5 代码实现 投票模块的页面整体设计比较简单,但是投票功能的实现还需要掌握一些难点。投票模块的难点就在于一个投票的问题和多个投票选项是如何整合,并且在发布投票时如何进行多项投票发布,在修改投票时同样修改选项和筛选选项都是一个难
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 26 投票 模块 设计
限制150内