1.在线投票系统设计
在线投票系统应用较普遍,难点在于怎样避免重复投票和按照要求在指定日期及指定范围内进行投票的方法。以 asp 和 asp.net 平台为例,在常见的设计中,有一些应用Request 对象的 Cookies 集合实现投票,可以限制多次投票;也有一些应用 Request 对象的 ServeVariabrles 集合获取 IP 地址,通过查询 IP 地址的方法实现一个 IP 在指定日期内进行投票的方法。
本人在制作企业内部网站的评选月度优秀员工在线投票模块设计中,要求员工根据每月确定的候选人在线进行差额投票评选优秀员工,每月至多投票一次,且不能重复给同一人投票。上述利用 Request 对象的方法不能满足设计要求,本人在Microsoft Visual Studio2010 平台下使用数据库和 vc# 等组件编程完成了设计,网站及评选优秀员工的模块工作状况良好。下面将介绍本模块的设计和制作方法。
1.1 相关数据表
本系统数据库名称为db_OA.mdf, 事务日志文件是db_OA_log.ldf。与评优投票程序设计相关的数据表有系统用户表 sysUser 和评优表 yx,具体内容如下:
1.1.1 系统用户表 sysUser用于储存具有登录权用户的信息及每月评优投票日期。表结构定义如表 1-1 所示。
1.1.2 评优表 yx用于储存月评优秀员工侯选人信息。表结构定义如表 1-2所示。
1.2 连接数据库
本网站将数据库保存在网站的 App_Data 文件夹中。其路径存储在配置文件 Web.confi 的 <connectionStrings> 配置节中,内容如下:
数据库连接串定义在一个常量 conStr 中,其值为:数据源来自本地 Sql Server 2005 EXPRESS 数据库服务器;数据库保存在“|DataDirectory|”,即默认的文件夹 App_Data 中,数据库名为db_OA.MDF,登录用户和密码使用系统默认值,使用系统的“System.Data.SqlClient”命名空间。此时,数据库路径在网站已经确定。
1.3 三层架构与公共类文件
网站采用三层开发架构。将网站需经常使用的代码段定义为方法,保存在公共类文件 BaseClass.cs 文件中,文件存放在系统文件夹 App_Code 中。BaseClass.cs 文件中定义了三个方法,前一个方法是调用 JavaScript 的 alert 方法弹出 window 风格消息框;后二个方法涉及有关 ADO.NET 访问数据库的操作。
1.3.1MessageBox 方法:
定义一个全局字符串型的方法 MessageBox,调用时的形参名为字符串类型的 TxtMessage,字符串变量 str 中包含使用JavaScript 的 alert 方法的代码,返回时在页面弹出 window 风格消息框。定义方法后,在程序中可随时调用。
1.3.2 ExecSELECTE 方法:
定义一个全局整数型方法 ExecSELECTE,形参名为字符串类型的 sQueryString,用于执行 sQueryString 表示的 sql 查询语句,其中 Command 对象采用 ExecuteScalar 方法,执行单一结果的查询。返回结果中第一行的第一列,将该列值转换为一个 int类型的值,用以判断操作是否成功。
#region 执行 SQL 语句,select 读取单一查询结果,操作成功返回 >0
1.3.3 GetDataSet 方法:
定义一个全局系统数据集类型(System.Data.DataSet)的方法GetDataSet, 调用时有两个字符串类型实参 , 一个是sQueryString,为输入的 SQL 语句;另一个是 TableName,为输入的数据表名称。返回值为数据集类型,即返回一个表。
#region: 带二个参数执行 SQL 语句,操作成功返回一个表
语句使用 new 运算符创建类 BaseClass 的对象 bc,并调用BaseClass()对该对象进行初始化,这表示对象 bc 可调用公共类文件 BaseClass.cs 中定义的所有方法。
2.页面设计
2.1 前台页面设计
网站页面为母版页结构,评选优秀员工前台页 yx-vote.aspx为一个内容页,使用 asp.net 的数据列表控件 DataList,页面截图如图 2-1 所示。在每个候选人的选项栏中设置一个投票按钮,投票时若点击某个候选人选项栏的投票按钮,则触发 DataList控件的 EditCommand 事件,将执行后台设置的按钮点击事件代码。
2.2 后台代码编制
2.2.1 启动评优投票页面时,系统打开用户表 sysUser,查询该用户是否有本月的投票记录,如果有则不能再投票,给出提示并返回上级页面。
2.2.2 若无本月的投票记录,则首先从评优表 yx 中取出已知的侯选人数,按一定的条件确定优秀员工的人数,确定的人数值也就是本轮投票的次数。将由员工进行差额不重复投票,评选出本月优秀员工。
2.2.3 单击“投票”按钮开始投票,系统首先判断本轮投票是否完成,如果已完成则退出;退出前应在 sysUser 表写入当前日期,因为每个用户每月至多只能进行一次评优投票。下次投票时若在 sysUser 表查询出已有相同月份,表明已投过票,则不能再投票。这样可有效阻止多次登录重复投票。
2.2.4 如果本轮投票没有完成,投票时应确定不重复投票,鼠标点击某候选人所在行的主键值赋给变量 str,将变量 str 与已存在数组中的 str 值比较,如果相同则表示重复投票给同一人,本票无效;直到投票选择侯选人的 str 与数组中的 str 值不相同时,将不重复投票的主键值 str 存入数组中。
2.2.5 从 yx 表中找到与数组元素 str 相同主键所在记录的票数字段 qty 值,赋给变量 yxqty,给 yxqty 加 1,然后更新表中投票值。每月投票后,yx 表中票数较多的前几人即为评选出的本月优秀员工。
2.2.6 考虑到用户可能在投票中途非正常退出,所以投票开始时对数组和下标清零。
评优投票模块设计流程图如图 2-2 所示,评优投票后台页yx-vote.aspx.cs 代码如下:
2.3 启动时自执行部分:
2.3.1 启动时自动执行开始部分的初始化,然后执行Page_Load 事件,从 sysUser 表中查询用户是否有本月投票记录,有则退出评优页面,返回到 yx-voteResult.aspx 页面显示投票结果。
2.3.2 在 Page_Load 事件中引入 Page 对象属性 Page.IsPostBack,当网页第一次启动时,!Page.IsPostBack 获取回传,即在第一次启动时执行以下初始化页面操作:
首先从 yx 表求和,ExecSELECTE 方法返回结果中第一行的第一列值,即为求和得到的优秀员工的候选人数 rencoun,然后按 60%比例自动计算优秀员工人数 yxcoun,考虑到上一个用户可能在投票中途非正常退出,所以投票开始时对数组和下标清零;最后绑定 DataList1 控件并显示候选人名单,启动页面如图2-1 所示:
2.4 事件代码部分:
2.4.1 单击 " 投票 " 按 钮 , 触发 DataList 控件的EditCommand 事件。首先判断是否已投完票,投完票则在sysUser 表写入当前日期,以便下次投票时查询是否已投过票,然后返回到 yx-voteResult.aspx 页面显示投票结果。投票时应确定不重复投票,投票结果存入 yx 表。代码如下:
Response.Write(" 本次是第["+(i+1)+"]票投票 ="+homestr[i].ToString()+ " 号?<br />"); // 显示投票信息,如图 2-3 所示2.4.2 最后利用 DataSet 行对象 DataRow 从 yx 表中找到主键值 str 所在行的投票数字段 qty 值并赋给变量 yxqty,给 yxqty加 1,然后更新表中投票数字段值,步骤如下:
2.4.2.1 首先从表中找到原投票数 qty 并赋给变量 yxqty。
后台制作完毕,投票结果存入 yx 表的 qty 字段。网站启动时,首页文件 Default.aspx 将在表 yx 中找出票数高的员工为优秀员工,然后在前台的左侧显示优秀员工的姓名、照片等资料。
参考文献:
[1]明日科技.ASP.net 2.0 开发技术大全[M].北京:人民邮电出版社,2008.
[2]程不功.龙跃进.ASP.NET2.0 动态网站开发教程[Z].北京:清华大学出版社,2008.
[3]祝红涛.SQL Server 2008 数据库应用简明教程[Z].北京:清华大学出版社,2010.
[4]沈大林.SQL Server 2005 案例教程[Z].北京:中国铁道出版社,2010.
[5]汪亚菲.网站建设实例教程[Z].北京:清华大学出版社,2013.
ASP动态网页技术、组件技术、ACCESS数据库系统和模板文件相结合进行动态网站管理、维护的方法, 即前台应用和后台管理维护系统相结合的模式。...
计算机网站在企业的发展中具有非常高的应用价值和应用前景,一方面为企业的各项工作提供了很大的高效性和便捷性,另一方面也为用户更好的了解企业信息提供了很大的帮助,除此之外,有利于更好地宣传企业,不断地提高企业的知名度和影响力,从而为最大限度地提...
导购网站是给消费者提供网络购物指导的服务类网站,其职责是解决消费者心理的种种疑虑,引导帮助消费者省时省力的搜索到理想的商品并实现购买,甚至挖掘出消费者潜在的购买欲望。导购网站设计应考衡快速更新的庞大数据及大量并发访问的场景,提出相应的解决...
本文主要分析了电子商务网站的特点, 电子商务网站成本的构成以及电子商务收入的来源。以期能够对电子商务网站建设的成本进行有效的控制, 获取更大的收益。...
第七章总结与展望在高等学校实验室中,信息管理与各类教学硬件资源同等重要,是教学环境和教学质量的具体体现之一。计算中心实验室网站的建立方便了教学和实验室管理维护。论文主要研究工作如下:首先,对网站的需求分析、软件设计作了分析研究。采用UML...
本文将结合1P理论, 联系实际, 对视频网站的发展提出相应的营销建议, 并将其运用到实践之中。...
随着计算机网络技术的发展, 企业对其自身网站的建设也越来越重视, 但是在实际建设过程中, 很多企业均会忽视掉企业网站后续的运营工作与维护、更新工作...
第4章组建网站开发环境与运行环境4.1建立流程网站开发环境。通过使用ZendStudio开发环境配合SVN版本控制器实现网站的快速发布,以下是对这两款软件的基本资料及其在该程序下的主要执行情况的介绍。4.1.1使用集成开发工具编写程序代码。本流程...
本文采用面向对象的思想,对搬家公司网站分析不断地调整和优化。系统严格按照软件开发过程进行研究和设计,最终实现预先设计的功能。...
1、引言网络教学是一种新的教育模式,已成为一种重要的教学手段和教学场所,它突破时间和空间的限制,能让学习者在网络上共享教学资源。网络教学既具有开放性、自主性、交互性和协作性等特点,又具有实时性、异步性、生动性、集成性和大容量等优势。所以在...