【C#】投票系统

【C#】投票系统用C#写网站后台时的记录该功能要实现的内容有,动态的发布投票,可以任意的添加投票项,可以实现单选和多选的功能并提示用户输入。首先编写发布投票的内容,数据库设计。由于要动态的添加,所以需要两个表,一个VOTE表存储投票的标题,类型,一个VOTEITEM表存储投票的每一个投票项,两者之间用ID连接。数据库设计如下T_VOTE(ID(PRIMARY KEY),VO

【C#】投票系统

用C#写网站后台时的记录

该功能要实现的内容有,动态的发布投票,可以任意的添加投票项,可以实现单选和多选的功能并提示用户输入。

首先编写发布投票的内容,数据库设计。由于要动态的添加,所以需要两个表,一个VOTE表存储投票的标题,类型,一个VOTEITEM表存储投票的每一个投票项,两者之间用ID连接。

数据库设计如下

T_VOTE(ID(PRIMARY KEY),VOTENAME,VOTEKIND,VOTETIME)

T_VOTEITEM(VOTEID,VOTEITEMCONTEXT,VOTENUM)

动态添加的实现代码:

页面部分

<div>

       <h2>创建投票</h2>

        <p>标题:<asp:TextBox ID=”voteTitle” runat=”server”></asp:TextBox><span id=”voteTitleRemind” class=”ml5 r3″></span></p>

        <p>种类:<asp:RadioButton ID=”voteKindSingle” runat=”server” Text=”单选” GroupName=”voteKind” Checked=”true” />

        <asp:RadioButton ID=”voteKindMulti” runat=”server” Text=”多选” GroupName=”voteKind” /></p>

        <asp:Panel ID=”votePanel” runat=”server”>

            <ol class=”vote_item_list”>

                <li>候选项1<asp:TextBox ID=”voteItem1″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项2<asp:TextBox ID=”voteItem2″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项3<asp:TextBox ID=”voteItem3″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项4<asp:TextBox ID=”voteItem4″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项5<asp:TextBox ID=”voteItem5″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项6<asp:TextBox ID=”voteItem6″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项7<asp:TextBox ID=”voteItem7″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项8<asp:TextBox ID=”voteItem8″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项9<asp:TextBox ID=”voteItem9″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项10<asp:TextBox ID=”voteItem10″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

            </ol>

            <a id=”voteAddMore” href=”javascript:void(0);”><b>+</b>增加更多选项</a>

            <ol id=”voteItemMoreList” class=”vote_item_list hd”>

                <li>候选项11<asp:TextBox ID=”voteItem11″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项12<asp:TextBox ID=”voteItem12″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项13<asp:TextBox ID=”voteItem13″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项14<asp:TextBox ID=”voteItem14″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项15<asp:TextBox ID=”voteItem15″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项16<asp:TextBox ID=”voteItem16″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项17<asp:TextBox ID=”voteItem17″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项18<asp:TextBox ID=”voteItem18″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项19<asp:TextBox ID=”voteItem19″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

                <li>候选项20<asp:TextBox ID=”voteItem20″ runat=”server” CssClass=”vote_input”></asp:TextBox></li>

            </ol>

        </asp:Panel>

        <p><asp:Button ID=”voteAddSubmit” runat=”server” Text=”发布投票” οnclick=”voteAddSubmit_Click” /></p>   

    </div>

通过JAVASCRIPT动态的添加候选项,如果不用添加则不需要填写;

处理页部分

        string title = voteTitle.Text;

        string kind = “1”;

        if (voteKindSingle.Checked == true)

        {

            kind = “0”;

        }

        SqlConnection mystr = new SqlConnection();

        mystr.ConnectionString = “Data Source=mike;Initial Catalog=jishengWebSite;User ID=sa;Password=123456;Pooling=False”;

        mystr.Open();

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = mystr;

        //先插入标题,获取插入id

        string command = @”INSERT INTO T_Vote (VoteName,VoteKind,VoteTime) VALUES (@name,@kind,getdate())”;

        cmd.CommandText = command;

        cmd.Parameters.AddWithValue(“@name”, title);

        cmd.Parameters.AddWithValue(“@kind”, kind);

      

        //执行

       int val=cmd.ExecuteNonQuery();

        //获取返回id

       command = @”execute VoteId ‘”+title+”‘”;

       cmd.CommandText = command;

        int vote_id = Convert.ToInt32(cmd.ExecuteScalar());

        //如果标题插入成功

        if (vote_id > 0 && val == 1)

        {

            //遍历投票项

            foreach (Control c in votePanel.Controls)

            {

                if (c.GetType().ToString() == “System.Web.UI.WebControls.TextBox”)

                {

                

                    TextBox txtTemp = c as TextBox;

                    string item = txtTemp.Text;

                    string itemid = txtTemp.ID;

                    string id = vote_id.ToString();

                   

                    if (item != “”)

                    {

                        string sql_item = @”INSERT INTO T_VoteItem (VoteId,VoteItemContext,VoteItemNum) VALUES (@” + itemid + “,@” + itemid + “_con,0)”;

                        cmd.CommandText = sql_item;

                        cmd.Parameters.AddWithValue(“@” + itemid, id);

                        cmd.Parameters.AddWithValue(“@” + itemid + “_con”, item);

                       

                        cmd.ExecuteNonQuery();//执行插入投票选项

                    }

                }

            }

        }

        mystr.Close();

    }

原理是先实现将标题插入VOTE表,若成功,遍历PANEL内的空间找到候选的文本框不为空的项,通过字符串拼接将数据循环存入VOTEITEM表中。

第二个设计的是投票列表的显示,这个参考前面的文章列表显示和数据传输就可以解决。

第三个设计的是投票功能和投票结果。

页面代码

<div>

        <asp:DataGrid ID=”datagrid1″ runat=”server” AutoGenerateColumns=”False” DataKeyField=”VoteID” >

          <Columns>

          <asp:TemplateColumn><HeaderTemplate>投票编号</HeaderTemplate><ItemTemplate><%# DataBinder.Eval(Container.DataItem,”voteid”) %></ItemTemplate></asp:TemplateColumn>

              <asp:TemplateColumn><HeaderTemplate>票数</HeaderTemplate><ItemTemplate>

                  <asp:Label runat=”server” ID=”voteitemnum”  Text=<%# DataBinder.Eval(Container.DataItem,”voteitemnum”) %>></asp:Label></ItemTemplate></asp:TemplateColumn>

              <asp:TemplateColumn><HeaderTemplate>内容</HeaderTemplate><ItemTemplate>

                  <asp:Label runat=”server” ID=”voteitemcontext”  Text=<%# DataBinder.Eval(Container.DataItem,”voteitemcontext”) %>></asp:Label></ItemTemplate></asp:TemplateColumn>

              <asp:TemplateColumn>

              <ItemTemplate>

                  <asp:CheckBox runat=”server” id=”VoteCheck”> </asp:CheckBox>

                  </ItemTemplate>

              </asp:TemplateColumn>

</Columns>

        </asp:DataGrid>

        <asp:Button ID=”Button1″ runat=”server” Text=”投票” OnClick=”VoteBtn_Click” />

<asp:Label ID=”VoteMessage” Runat=”server” Visible=”False” ForeColor=”Red” Font-Bold=”True”>投票成功</asp:Label> 

        <asp:Label ID=”votemassage2″ runat=”server” ForeColor=”Red” Text=”此投票为单项选择,请重新选择” Visible=”False”></asp:Label></div>

通过一个DATAGRID数据网格来查看数据,将自动设置数据字段设置成FLASE,在代码处写模板,将后台绑定的数据显示在页面上,并且加上复选框。

加入提交的按钮,在旁边设置两个LABLE控件,将其设置为不可见,内容分别为投票成功与不成功的提示信息。

处理页代码

   protected void VoteBtn_Click(object sender, System.EventArgs e)

    {

 SqlConnection mystr = new SqlConnection();

        mystr.ConnectionString = “Data Source=mike;Initial Catalog=jishengWebSite;User ID=sa;Password=123456;Pooling=False”;

        mystr.Open();

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = mystr;

        string command = “select votekind from T_Vote where id=” + Convert.ToInt32(datagrid1.DataKeys[0].ToString());

        cmd.CommandText = command;

        bool issingle = Convert.ToBoolean(cmd.ExecuteScalar());

        votemassage2.Visible =false;

        if (issingle)

        {//多选

            foreach (DataGridItem item in datagrid1.Items)

            { //查找每个投票项目的选择控件

                CheckBox check = (CheckBox)item.FindControl(“VoteCheck”);

                Label votecontext = (Label)item.FindControl(“voteitemcontext”);

                Label votenum = (Label)item.FindControl(“voteitemnum”);

                if (check != null)

                { //说明用户已经投票,则需要添加这一票

                    if (check.Checked == true)

                    {

                        int num = Convert.ToInt32(votenum.Text.ToString());

                        num = num + 1;

                        command = “execute P_AddVoteNum ‘” + Convert.ToInt32(datagrid1.DataKeys[item.ItemIndex].ToString()) + “‘,'”

                            + votecontext.Text + “‘,'” + num + “‘”;

                        cmd.CommandText = command;

                        cmd.ExecuteScalar();

                    }

                }

            }

            VoteMessage.Visible = true;

        }

        else

        {//单选

            int checknum = 0;

            foreach (DataGridItem item in datagrid1.Items)

            {

                CheckBox check = (CheckBox)item.FindControl(“VoteCheck”);

                if (check.Checked!=false)

                {

                    checknum++;

                }

            }

                if (checknum == 1)

                {

                    foreach (DataGridItem item in datagrid1.Items)

                    { //查找每个投票项目的选择控件

                        CheckBox check = (CheckBox)item.FindControl(“VoteCheck”);

                        Label votecontext = (Label)item.FindControl(“voteitemcontext”);

                        Label votenum = (Label)item.FindControl(“voteitemnum”);

                        if (check != null)

                        { //说明用户已经投票,则需要添加这一票

                            if (check.Checked == true)

                            {

                                int num = Convert.ToInt32(votenum.Text.ToString());

                                num = num + 1;

                                command = “execute P_AddVoteNum ‘” + Convert.ToInt32(datagrid1.DataKeys[item.ItemIndex].ToString()) + “‘,'”

                                    + votecontext.Text + “‘,'” + num + “‘”;

                                cmd.CommandText = command;

                                cmd.ExecuteScalar();

                            }

                        }

                    }

                    VoteMessage.Visible = true;

                }

                else

                {

                    votemassage2.Visible = true;

                }

               

            }

        }

这里只提供投票按钮的代码,数据绑定部分参考前面的文档就可以实现。

首先用查询语句将数据库中对应的投票类型取出来,投票编号由投票裂变传送得到。

判断单选,多选,用IF语句分别写出处理代码,多选时遍历所有的复选框,将选中的复选框对应的内容和投票编号取到,在数据库中就可以确定一条数据,将投票数字段取出来加以后再更新即可。单选时先遍历复选框,统计用户选择了多少个复选框,若多与一个则提示用户选择出错,单个就重复多选的插入代码。

要点:1如何取得绑定的投票内容,编号,和投票数。

在页面出数据绑定的时候不要直接将数据放在表格的单元格里,使用自己命名的LABLE控件,这样在处理也遍历控件的时候就可以取到对应的值了

          2,要熟记遍历控件和数据库语句执行的代码

今天的文章【C#】投票系统分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/32708.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注