6.投票系统

要求:

     1.界面上有两个按钮,一个是支持,一个是反对,并显示它们的计数,如支持(10),反对(3)

     2.一个ip用户在24小时内只能投一次票,如果在24小时内再次投票则给提示

解析:

    建立两个数据表,一个为用户的表,记录用户ip和点击时的时间,时间主要用来判断当前时间和他原来点击时间是否过24小时

    另一表为按钮表,记录按钮的类型和计数,类型1为支持票数,2为反对票数

开发步骤:

   1.建立数据表及强类型数据集

    

    CheckHours():查询此ip是否过24小时

SELECT id, ip, date FROM dbo.T_Stock where ip=@ip and datediff(hour,[date],getdate())<24

GetDataByIp():检查此ip是否存在

SELECT id, ip, date FROM dbo.T_Stock where ip=@ip

UpdateDateByIp():更新ip的点击时间

UPDATE [dbo].[T_Stock] SET  [date] = @date WHERE ip=@ip

getcountbytype():读取支持或反对票的总数,以类型进行分类

SELECT [count] FROM T_Button where type=@type

IncNumByType():给支持或反对票加1

UPDATE [dbo].[T_Button] SET  [count] = [count]+1 WHERE type=@type

2.建立服务端

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using 投票系统.DataSetStockTableAdapters;

namespace 投票系统
{
    /// <summary>
    /// stock 的摘要说明
    /// </summary>
    public class stock : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string action=context.Request["action"];
            int typeid = Convert.ToInt32(context.Request["typeid"]);
            string ip = context.Request.UserHostAddress;

            T_ButtonTableAdapter adapterbtn = new T_ButtonTableAdapter();
            if (action == "getnums")//加载时显示
            {
              int i=Convert.ToInt32(adapterbtn.getcountbytype(typeid));
              context.Response.Write(i);
            }
            else if (action == "inc")//点击按钮时显示
            {
                T_StockTableAdapter adapter = new T_StockTableAdapter();
                var datatable = adapter.GetDataByIp(ip);

                if (datatable.Count <= 0)//没有投过票
                {
                    adapter.Insert(ip, DateTime.Now);
                    adapterbtn.IncNumByType(typeid);
                    context.Response.Write(Convert.ToInt32(adapterbtn.getcountbytype(typeid)));
                }
                else  //如果投过票,就要查看是否已超过24小时
                {
                    var mydata = adapter.CheckHours(ip);
                    if (mydata.Count <= 0)//已过了24小时
                    {
                        adapter.UpdateDateByIp(DateTime.Now, ip);
                        adapterbtn.IncNumByType(typeid);

                        context.Response.Write(Convert.ToInt32(adapterbtn.getcountbytype(typeid)));
                    }
                    else //未过24小时
                    {
                        context.Response.Write("stop");
                    }
                }
            }    
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

4.客户端

  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="js/jquery-1.10.1.min.js" type="text/javascript"></script>
    <style type="text/css">
        #support
        {
            width: 106px;
        }
        #notsupport
        {
            width: 124px;
        }
    </style>
    <script type="text/javascript">
        $(function () {
            $.post("stock.ashx", { "action": "getnums", "typeid": "1" }, function (data, status) {
                if (status == "success") {
                    $("#support").val("支持(" + data + ")");

                }
            });

            $.post("stock.ashx", { "action": "getnums", "typeid": "2" }, function (data, status) {
                if (status == "success") {
                    $("#notsupport").val("反对(" + data + ")");

                }
            });

        });

        function supportclick(src,typeid) {
            $.post("stock.ashx", { "action": "inc", "typeid": typeid }, function (data, status) {
                if (status == "success") {
                    if (data == "stop") {
                        alert("您已投过票,请在24小时后再来.");
                        return;
                    } else {
                       if(typeid=="1")
                           $(src).val("支持(" + data + ")");
                        else if(typeid=="2")
                            $(src).val("反对(" + data + ")");
                    }


                }
                else {
                    alert("AJAX出错.");
                }

            });
           
        }
    </script>
</head>
<body>
<input type="button" id="support" value="支持" onclick="supportclick(this,'1');" />
<input type="button" id="notsupport" value="反对" onclick="supportclick(this,'2');"/>
</body>
</html>

5.运行截图

 

posted on 2013-07-05 17:14  天上星  阅读(277)  评论(0编辑  收藏  举报

导航