6.投票系统

要求:

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

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

解析:

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

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

开发步骤:

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

     6.投票系统

    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.运行截图

6.投票系统

 

你可能感兴趣的:(系统)