网上投票的制作(.net)

网上投票几乎是当今网站不可缺少的一部分,而制作的方式却有多种,大多数静态网站采用的方法是利用多个radioButton逐一添加内容来实现,而动态网站多采用radioButtonList控件绑定数据库,从而动态获得投票内容。

1.数据库的设计(MSSQL)

如果是流量比较大的网站,则更新投票内容是频繁的工作,好的数据库设计可以让更新相对科学和容易.

先设计一个主表,它记录投票的主题与参与该投票的人数:

create database vote

use vote

create table voteMaster
(
voteID int primary key,
voteTitle varchar(100) not null,
voteSum int default 0
)

insert into voteMaster values(1,‘尤文降级,米兰被剥夺欧冠,您认为判决是否合理?‘,0)

insert into voteMaster values(2,‘您如何评价舍甫琴科告别米兰?‘,0)

然后设计从表,它记录了相关主题的详细项目:

create table voteDetails
(
voteID int foreign key references voteMaster(voteID),
voteDetailsID int not null,
voteItem varchar(100) not null,
ItemSum int default 0,
primary key(voteID,voteDetailsID)
)

insert into voteDetails values(1,1,‘非常合理‘,0)

insert into voteDetails values(1,2,‘不太合理,判罚过重‘,0)

insert into voteDetails values(1,3,‘说不清楚‘,0)

insert into voteDetails values(2,1,‘迎接新的开始,米兰舍瓦双赢‘,0)

insert into voteDetails values(2,2,‘痛失射手王,米兰将一蹶不振‘,0)

insert into voteDetails values(2,3,‘切尔西未必好呆,舍瓦选错了‘,0)

insert into voteDetails values(2,4,‘不好说‘,0)

2.得到投票主题

新建立一个DB类,用来返回数据库连接对象,这样做的好处是:如果以后数据库有变化,则只需要修改这个类:

public static SqlConnection createConnection()
{
    SqlConnection conn = new SqlConnection("server=.;database=vote;uid=sa;pwd=millfox");
    return conn;
}

在设计好的投票栏里添加一个Lable(服务器控件)和RadioButtonList,然后编写代码动态得到主题和内容:

private string voteId = "1"; //将用这个字符串变量来控制投票主题

private void Page_Load(object sender, System.EventArgs e)
{
    // 在此处放置用户代码以初始化页面

    if(!IsPostBack)
    {
        SqlConnection conn = DB.createConnection();
        conn.Open();

        //得到标题信息
        string select = "SELECT voteTitle FROM voteMaster WHERE voteID="+voteId;
        SqlCommand cmd = new SqlCommand(select,conn);
        string voteTitle = Convert.ToString(cmd.ExecuteScalar());
        this.lblTitle.Text = voteTitle;

        //数据绑定到radioButtonList
        string getItem = "SELECT voteDetailsID,voteItem FROM voteDetails WHERE voteID="+voteId;
        SqlCommand cmdItem = new SqlCommand(getItem,conn);
        SqlDataReader sdr = cmdItem.ExecuteReader();
        this.rbtnItems.DataSource = sdr;
        this.rbtnItems.DataTextField = "voteItem";
        this.rbtnItems.DataValueField = "voteDetailsID";
        this.rbtnItems.DataBind();
        sdr.Close();
        conn.Close();
    }
}

这样绑定了数据库的Label和RadioButtonList就能显示出主题及相关内容了,而切换不同的主题,只需要修改之前定义的变量voteId的值。

3.投票

投票要实现的功能,就是点击button后,相应主题的项目票数加1,主题的票数也要加1。在已添加的button(btnVote)上编写代码:

private void btnVote_Click(object sender, System.EventArgs e)
{
    SqlConnection conn = DB.createConnection();
    conn.Open();

    //更新从表中的itemSum项,条件为voteID为当前指定值,且voteDetailsID为当前选中项的值
    string ItemSum = "UPDATE voteDetails SET ItemSum=ItemSum+1 WHERE voteDetailsID ="+this.rbtnItems.SelectedValue+"and voteID="+this.voteId;

    SqlCommand cmd = new SqlCommand(ItemSum,conn);
    cmd.ExecuteNonQuery();
    conn.Close();
}

上面有个方法很常用,那就是radioButtonList的SelectedValue,它能得到当前选定项的Value值。

现在发现了一个问题,那就是无法将主表中的票数与从表中的票数联系起来,而我们想要的是从表中某项的值加1,主表中的票数也要增加1,于是自然想到要添加一个Trigger:

create trigger voteMaster_update on voteDetails

for update

as

begin

Update voteMaster Set voteSum=voteSum+1 Where voteID=(select voteID from inserted)

end

这样投票部分就完成了。

4.查看

我们希望查看到的一般就是:各项得到的票数、多少人参与投票(即总票数)

我们先将投票页面的voteId值通过btnView(查看)传递出去:

private void btnView_Click(object sender, System.EventArgs e)
{
    Response.Redirect("ShowResult.aspx?voteID="+this.voteId);
}

新建一个aspx文件,编写如下代码:

private void Page_Load(object sender, System.EventArgs e)
{
    // 在此处放置用户代码以初始化页面

    //得到通过btnView(查看)传递过来的参数
    string getID = Request.QueryString["voteID"].ToString();

    SqlConnection conn = DB.createConnection();
    conn.Open();

    //得到标题
    string getTitle = "SELECT voteTitle FROM voteMaster WHERE voteID="+getID;

    //得到总票数
    string getSum = "SELECT voteSum FROM voteMaster WHERE voteID="+getID;
    SqlCommand cmd = new SqlCommand(getTitle,conn);

    //显示标题
    this.lblTitle.Text = cmd.ExecuteScalar().ToString();

    //显示总票数
    cmd = new SqlCommand(getSum,conn);
    this.lblSum.Text = "共有"+cmd.ExecuteScalar().ToString()+"人参加投票";

    string getAll = "SELECT * FROM voteDetails WHERE voteID="+getID;
    SqlCommand exec_cmd = new SqlCommand(getAll,conn);
    SqlDataReader sdr = exec_cmd.ExecuteReader();

    //利用DataReader的游标显示出从表中的项目与总和
    while(sdr.Read())
    {
        Response.Write("<div align=center><font color=red>"+sdr.GetString(2)+" - "+sdr.GetInt32(3)+"票</font></div><p>");
    }
    sdr.Close();
    conn.Close();
}

点击查看,将显示出相关信息:

非常合理 - 4票

不太合理,判罚过重 - 2票

说不清楚 - 0票

尤文降级,米兰被剥夺欧冠,您认为判决是否合理?

共有6人参加投票

时间: 2024-11-06 22:22:07

网上投票的制作(.net)的相关文章

NABCD(网上投票系统)

网上投票系统 N(need) 投票这件事情,在所有事情上都可能用得到,在互联网的影响下,投票的范围变得越来越广,比如在商业的里,往往要做市场分析,那么在互联网这个大的前提下,用网上投票系统来获取用户的选择,再加以大数据分析,那么这样的投票数据将至关重要. A(approach) 针对企业和个人的对投票分析的需求 我们想出一个招数:做一个个人或者企业的基本投票的网页,方便随时随地的了解. B(benefit) 1:方便企业,个人了解投票信息 2:方便个人,企业网上数据分析 3:减少个人的工作量(不

基于SSH的网上投票系统-java网上投票系统mysql数据库

基于SSH的网上投票系统-java网上投票系统mysql数据库 1.包含源程序,数据库脚本.代码和数据库脚本都有详细注释.2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善开发环境:Eclipse ,MYSQL,JDK1.7,Tomcat 7涉及技术点:MVC模式.Struct.Hibernate.Spring.HTML.JavaScript.CSS.JQUERY.DWR.Ajax等系统采用Hibernate框架实现ORM对象关系映射,前台JSP实现,后台springMvc映射,使用Spr

网上投票系统刷票代码

很多网站上的投票依据是ip地址,不同的ip地址一天可投票一次 下面的代码就是利用curl扩展来伪造ip地址 达到无限制投票: $times = $_POST['times']; //投票次数 $url = $_POST['url']; //投票地址[某个选手下方投票按钮的链接] while ($times) { $ip1 = 'X-FORWARDED-FOR:'.rand(115,225).'.'.rand(115,225).'.'.rand(115,225).'.'.rand(115,225)

linux网络编程实现投票功能

投票系统 1.说明: 写了一个投票系统,过程是先配置好服务器,在写一个网上投票功能,要实现网上投票功能. 其实功能实现还是很简单的,麻烦一点的在于过程比较繁杂,要做的东西还是挺多的! 2.过程: 第一步:配置httpd服务器 先配置好httpd服务器.我先下载好了和http服务器的包后,由于fedora的httpd配置相对比较简单,所以我也只是简单的做了一下修改,如下: 把: <Directory"/var/www/cgi-bin"> AllowOverrideNone O

基于Mac制作iPhone铃声教程,iTunes定制铃声

前言: 网上太多制作方法了,不管是借助第三方软件还是基于iTunes的,不过这些方法都太旧了,有时看起来 ,界面的变化或其他原因,导致很不爽. 正好记录下我最近使用的一种方法: 正文: 一.下载你需要的铃声音乐,必须是iTunes支持的MP3/WAV/AAC等格式. 这里,我借助的网易云,直接下载到本地,然后查看本地,获取到.mp3格式的歌曲.当然,如果有现成的音乐,或其他音乐平台都行. 二.打开iTunes,如果你没有使用过铃声功能,那么,最好在iTunes左上角的媒体种类菜单中添加"铃声&q

css+javascript网页抖动图标、抖动制作教程,输入抖动命令js执行命令让网页抖动起来(详细版)

首先我想说关于网页中做css抖动不难,用js命令也不难,下面我将为大家详细介绍具体做法. 一.我们要先有个网页代码的基本架构,比如 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>抖动网页的基本框架</title> </head> <body> <div> <h1

验证码的制作(二):使用开源组件jcaptcha来实现验证码

使用开源组件jcaptcha来实现验证码 之前说了简单的运用servlet来实现验证码,但其实现的验证码样式比较单一,容易被破解.所以接下来我来介绍另一种实现验证码的方式:那就是运用开源组件jcaptcha来实现样式更全面的验证码样式. 开始之前咱们先来看看运用jcaptcha实现验证码以及对其的验证的一个大致流程:流程图如下 开始之前我们需要下载jcaptcha开源组件jar包 上边就是该项目中需要用到的war包:可以到网上下载,然后将war包解压:这里需要注意的是需要把里面的.class文件

PHP基于B/S模式下的校园在线投票系统,源码分享

大家好,我是全微毕设团队的创始人,本团队擅长JAVA(SSM,SSH,SPRINGBOOT).PYTHON.PHP.C#.安卓等多项技术. 今天将为大家分析一个校园在线投票系统,系统web前端设计工具为Adobe Dreamweaver,前端开发语言html+css+javascript,php后端语言和mysql数据库. 从国际互联网到校园网,企业局域网,各种网上投票系统随处可见,意见调查,用户信息统计,经营情况调查都可以作为投票的内容.校园在线投票系统凭借其方便快捷等特点,已经成为统计收集信

7000个源码批量下载---复制来的

7000个源码批量下载 7000个源码批量下载 < type="text/javascript" language="JavaScript">document.title="7000个源码批量下载 - "+document.title http://asp.lt263.com/soft/SaGuestBook.rar 安全天使字符界面留言本(SaGuestBook)http://asp.lt263.com/soft/lbs.rar L