【Asp.net精品源码栏目提醒】:网学会员Asp.net精品源码为您提供精品课件-10第10章设计实例 - 大学课件参考,解决您在精品课件-10第10章设计实例 - 大学课件学习中工作中的难题,参考学习。
第10章 设计实例 本章学习目标 利用
ASP.NET开发基于 Web的数据库应用系统的常用 技术与技巧第10章 设计实例10.1 留言簿10.2 文件上传10.3 在线投票系统10.4 在线问卷调查系统10.5 在线考试系统10.6 在线购物系统10.1 留言簿10.1.1 留言簿简介10.1.2 留言显示模块10.1.3 “留言”模块 10.1.1 留言簿简介 网站中的留言簿提供两种主要功能,一是分页显示留言内容,二是允许用户写入留言内容。
为了提高运行效率、增强留言信息的可管理性,本例将留言以及相关信息存储在数据库中。
本节实现的留言簿由两个
ASP.NET网页和一个Access数据库组成。
其中数据库用于保存留言及相关信息,网页则分别用于显示留言和写入留言。
留言显示界面如图所示,该界面与文件Prac10-01-1.aspx对应。
该界面主要实现分页显示留言记录的需求。
此外,为了便于用户使用,还另外提供了允许用户选择每页显示记录数的功能。
在留言显示界面中,设置了一个指向“留言”界面的超链接。
10.1.1 留言簿简介“留言”界面如图所示,该界面与文件Prac10-01-2.aspx对应。
该界面主要供访客撰写并提交留言,此外,还提供了简单的数据有效性验证功能。
在“留言”界面中,设置了一个指向“留言”界面的超链接。
10.1.2 留言显示模块留言存放在数据库中。
分页显示数据库中的记录,最简单的工具是DataGrid控件,但为了演示如何自由访问存储在内存中的记录,本例选择了Repeater控件作为显示工具。
为了实现分页显示,在内存中建立一个临时数据表,根据当前页码和每页记录数,将需要显示在页面中的留言写入临时数据表,然后将Repeater控件绑定到该表以将表中记录显示到页面中,实现此功能的代码是本模块的核心部分。
与每页显示留言数列表框有关的程序操作,则是根据列表框中当前选择的条目,确定每页记录数目。
为了便于用户在不同的记录页间进行切换,本例提供了两种供用户选择页面的方法,一种是典型的首、尾、上、下页方式,另一种是由用户直接选择目的页码的方式。
根据以上分析可知,如果能将显示任意页记录的代码写成一个过程,则其余的编程工作不过是根据用户操作,确定目的页码,然后再调用上述过程而已。
10.1.3 “留言”模块“留言”模块主要包括供用户撰写、提交留言的前台输入界面和将留言信息写入数据库的后台代码组成。
当用户留言被写入数据库后,本例采用了重新载入留言显示页面的处理方式。
可以采用的另一方式是,显示一个包括提交成功的提示信息、指向留言显示和“留言”页面的超链接。
为了保证用户提交信息的完整性和有效性,在供用户撰写、提交留言的前台输入界面中加入了验证控件,以保证用户必须输入其姓名和留言内容。
10.2 文件上传在ASP网页中,如果想提供文件上传功能,必须使用专门的文件上传组件。
而
ASP.NET内建了文件上传功能,可以十分方便地实现文件上传。
10.2.1 上传一个文件到服务器10.2.2 上传多个文件到服务器 10.2.1 上传一个文件到服务器本例实现的功能是,提供可浏览文件的“浏览”按钮,供用户选择文件,在用户完成文件选择并单击“上传文件”按钮后,文件将被复制到服务器,之后,显示相关提示信息。
本例的运行结果如图所示,请仔细阅读附加在
源码后的注释内容。
10.2.2 上传多个文件到服务器本例实现的功能是,提供多个可浏览文件的“浏览”按钮,供用户连续选择文件,在用户完成文件选择并单击“上传文件”按钮后,所选择的多个文件将被复制到服务器,之后,显示相关提示信息。
本例的运行结果如图所示,请仔细阅读附加在
源码后的注释内容。
10.3 在线投票系统10.3.1 在线投票系统简介10.3.2 投票模块10.3.3 得票模块 10.3.1 在线投票系统简介本节实现的在线投票系统主要提供两个功能,一是允许用户进行投票,二是用户随时可查看提供当前投票结果清单。
本节实现的在线投票系统由两个
ASP.NET网页和一个Access数据库构成。
其中网页用于提供投票和查看当前得票情况。
而数据库中则包含两个数据表,一个数据表用于保存候选项及其所获选票的总数,另一个用于保存投票者的IP地址以及投票时间。
在数据表中保存投票者的IP地址以及投票时间的目的是为了防止用户在短时间内连续投票(即通常所谓的“灌水”)。
本例防止“灌水”的策略是,当用户提交其选票后,系统将获取其IP地址,然后在数据表中查找该地址,如果已经存在,且来自该IP地址的最后一张选票发出时间不在10分钟以前,则拒绝接受选票。
投票界面如图所示,该界面与文件Prac10-04-1.aspx对应,主要供用户投票,此外,也允许用户不投票而直接查看当前投票结果。
10.3.1 在线投票系统简介投票结果清单如图所示,该界面与文件Prac10-04-2.aspx对应。
为改善投票结果的显示效果,除了提供精确的统计数据外,还用直方图示意了得票情况。
10.3.2 投票模块本模块的主要功能是获取用户的选票,然后根据防“灌水”规则,确定选票是否有效,如果有效,则改写数据库中的相应候选项的得票总数,然后记录发出选票的IP地址以及发出时间;否则,提示用户不能重复投票。
源码中需要注意的是:06~20:定义Page_Load过程。
该过程的主要功能是,当网页不是因为客户端返回数据而加载时,从数据库中提取候选项,然后生成单选按钮组。
21、52:定义Vote_Click过程。
当用户单击投票按钮后,本过程触发。
38:判断选票是否有效(如果数据库中没有当前选票的IP地址,程序为什么可以将选票视为有效?请读者自己考虑)。
53 ~ 55 : 定 义 View_Click 过 程 。
该 过 程 的 功 能 是 将 浏 览 器 重 定 向 到 网 页Parc10-04-2.aspx。
10.3.3 得票模块本模块的主要功能是从数据库中获取各候选项的得票情况,然后输出统计表和直方图。
因为在显示统计结果时,需要用到一些未直接存储在数据库中的信息(如各选项的得票率),因此,将存储候选项的得票情况的表装入内存,然后在内存数据表中新增两个字段,一个是“得票率”,另一个是“直方图”。
在直方图字段中,存储能够显示正确的横条图的HTML标记。
10.4 在线问卷调查系统10.4.1 在线问卷调查系统简介10.4.2 选择、提交评价模块10.4.3 调查结果统计、显示模块 10.4.1 在线问卷调查系统简介在线问卷调查与在线投票系统类似。
不过,因为所调查的问题有多个,因此代码略显复杂。
下面是一个供用户对某讲义中的若干章进行评价的例子。
如果不考虑代码可重用性的话,实现起来并不很麻烦,但如果需要改变调查内容和评语时,就必须改写
源码。
本例所实现的系统,可随意更改调查内容和数量以及评语内容。
本例的运行结果如图所示。
其中供用户选择、提交评价的页面与文件Prac10-05-1.aspx对应;调查结果统计页面与文件Prac10-05-2.aspx对应。
10.4.1 在线问卷调查系统简介本例共使用了两个数据表,数据表的结构及内容如图所示。
在本例子中,数据表option1中的d_Id字段在本例中没有用到。
其余字段的意义可按照字面意义理解,但是需要注意的是,为了便于编程,数据表option1中的d_opcount列的取值为Title表中记录得票数目的字段名,这样设置的目的,主要是为了便于构造根据用户所填的数据改写数据表内容的SQL语句。
10.4.2 选择、提交评价模块本模块的主要功能是获取用户的评价,然后根据防“灌水”规则,确定用户提交的评价是否有效,如果有效,则改写数据库中的有关数据项,否则,提示用户不能再填表。
与上节系统所实现的系统不同的是,本例是通过在Session变量中记录用户的填表情况以防止“灌水”的。
即定义一Session变量,用于记录用户的填表情况。
如果用户所提交的数据被写入数据库,则将该变量置为一特殊标记,当用户启动提交过程后,程序将首先根据这个变量的值判断用户是否还有填表的权利,然后根据判断结果转入相应的处理。
需要指出的是,这种防“灌水”的机制是十分脆弱的,因为用户在提交数据后,可以打开第二个浏览器提交数据。
10.4.3 调查结果统计、显示模块本模块的主要功能是从数据库中获取各候选项的得票情况,然后输出统计表和直方图。
因为在显示统计结果时,需要用到一些未直接存储在数据库中的信息(如各选项的得票率),因此,将存储候选项的得票情况的表装入内存,然后在内存数据表中新增两个字段,一个是“得票率”,另一个是“直方图”。