业界动态
投票系统设计
2024-11-11 09:48

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,在先进的计算机技术、通信技术、控制技术及IC卡技术基础上,采用系统集成方法,逐步建立一个智能化的投票系统。

投票系统设计

本文阐述了一个功能齐全的在线投票系统的实现过程及一些关键技术。以实现在校评三好学生为主要实现目的,重点完成投票应用子系统,此系统基于.NET平台下以C#为主要编程语言,采用Visual Studio 2005为工具。后台数据库采用Microsoft Access 2003。在数据库设计中,将部分常用的数据库访问操作采用类和对象的方式。在线投票系统主要包括:投票应用子系统、投票管理子系统、用户管理子系统三个模块。

本系统在对在线投票系统进行管理时,不同权限的用户可以分别登录,包括管理员权限和普通用户权限,管理员可以对用户的个人信息进行检索、管理。为了投票的公正、公平性,还设定在线显示系统时间以及每个用户只允许投票一次。

关键词:B/S  ASP.NET    Microsoft Access 2003   在线投票  三好学生

    

  

1 设计目的

1.1 设计目的

1.2系统需求分析

1.2.1系统总体需求分析

1.2.2开发的可行性分析

2 总体设计

2.1程序设计组成框图

2.2流程图

2.3数据库分析与设计

2.3.1数据库设计

3 详细设计

3.1 模块功能说明

3.2 登录模块

3.2.1验证用户身份

3.2.2用户注册

3.3 投票模块

3.3.1用户投票模块

3.3.2显示投票结果

3.4 输出结果模块

3.5 系统设置模块

3.5.1用户权限

3.5.2用户投票限制

3.5.3选项设置

3.5.4 新增候选人

4 系统实现

4.1数据库的操作

4.2 母版页的运用

4.3站点地图的使用

4.4 主要源程序

5 优缺点及改进

6 结束语(心得体会

在追求管理效率的今天,仅仅靠原始的手工管理或简单的单机管理,管理部门面对大量的信息,无法有效率地将其中的重要部分提取出来,并做出相应的判断和处理。投票管理者的决策只能依据手工表数据,在浪费大量人力、物力的同时无法做到实时监控,难以保证数据的准确性和及时性。因此,先进的管理思想就成为了一个可望而不可及的目标。投票工作非常急需一套既有先进管理思想的系统,作为实现目标和提高现有投票管理水平的一种重要手段。

网上投票系统的开发可以更好的把市场的信息更准确更快速的反馈给客户,使信息的来源更广泛,从而提高信息的准确性。运用此系统可以降低企业为市场调查而消耗的人力和物力,利用节省的资源提高产品的质量,增强竞争力。

一个网站不断发展的前提就是众多用户的支持,一个好的网站一定要注意与用户之间信息的交流。能够有效得到用户反馈的信息,并及时对网站内容进行改进,这也是一个网站持续发展的基础。也正是由于以上原因,网络上各式各样的投票系统层出不穷。

网络在线投票是目前网上比较常见的一个功能,利用此功能可以提直接在互联网上直接投票,并及时查看投票结果。利用此系统,用户投票比较方便还可以查看并分析投票结果,从中获得对自己有用的信息。

1.2.1系统总体需求分析

此投票系统是模拟平时选举先进的方式(如从10人中选举3名先进人员。得票多者当选)。

该系统要求至少有四个页面:分别为登录页面,投票页面,统计投票结果页面,系统设置页面等。该系统需要的数据库由自己设计并建立。

登录页面主要是确定投票人身份和投票资格,防止重复投票。

投票网页:有所有候选人列表(至少10,有必要的投票说明和要求,如只能选几人(由系统设置,如选3,选定3人后,网上提交。多选和少选都不能提交,要给出提示。某用户网上投票后,再次进入系统时不能再投票。

获得投票统计结果网页:投票完毕后,可通过该网页获得投票统计结果,按得票多少排列投票结果名单。要求只有系统管理员(投票组织者)才能调用该网页。

 1.2.2开发的可行性分析 

  1. 技术可行性 

1)操作系统 Windows XP 及以上服务器版本

2)数据库管理系统Microsoft Access 2003 

3)编程工具:编程软件为 Visual Studio 2005,编程语言选用 C#

  1. 操作可行性:

本在线投票系统的用户只需懂得运用互联网络者均可以使用,此系统在网站中的使用频度预计非常的频繁;该系统属于实用型网站,需要对数据的处理,比如对投票票数的统计并把结果反馈给投票者,故对数据的及时更新要求较高,保证数据的真实性。该系统在任何操作系统下都可以运行,但必须装有 Microsoft Access 2003数据库。

该系统的操作包括:多选投票、删除投票人、添加投票人、修改投票人信息查看投票结果、增加候选人、删除候选人。 

多选投票:用户只能从多个选项中选取定项进行投票。 

添加投票人:管理员对大学生进行添加。 

删除投票人:管理员对大学生进行删除。

修改投票人信息:对投票人信息进行修改。

增加候选人:管理员对候选人进行添加。

删除候选人;管理员对候选人进行删除。

查看投票结果:投票者和管理者查看投票结果。

图2-1 程序设计组成框图

图2-2  管理员流程图

图2-3  普通用户流程图

2.3.1数据库设计

此系统中包含三张表:admin表(用户表)、shxs表(三好学生表)、admin表(用户表)包含的字段

  1. id(编码):用于唯一识别用户,用户不可以重复。
  2. name(用户名):用户的代号。
  3. pwd(密码:用户登录系统的密码。
  4. qx(权限):权限有两种:“管理员”和“普通用户”,系统根据权限来现在不同用户的操作。
  5. pand(是否投票):用于判断用户能否进行投票,此属性的值有两个:0和1,“0”表示可以进行投票,“1”表示可以投票,管理员的类型和已经投票用户的类型都为“1”。

图2-4 admin表的设计

图2-5 admin表的内容

  1. shxs表(三好学生表)包含的字段
  1. sname(学生姓名):候选人的姓名信息。
  2. sid(学生编码:用于唯一标识候选学生。
  3. count(得票数:某一候选人的得票数。
  4. bj(备注):对候选人信息进行备注。

图2-6 shxs表的设计

图2-7 shxs表的内容

本系统共有4个模块:登录模块、投票模块、结果输出模块、系统管理模块。每个系统的用户都需要登录系统才能实现功能。对于没有用户名的用户还提供给了注册功能。管理员对系统进行总体管理,可以添加用户、更改权限、新增候选人等,用户进行投票后可以看到总的结果,管理员也可以查看投票的最终结果。

3.2.1验证用户身份

本系统包含两类用户:管理员和普通用户。两类用户拥有的权限不同,因此可以操作的页面也不同,并且为了安全,系统应该验证用户的身份。

图3-1 验证用户信息

3.2.2用户注册

本系统由于是站在学校的投票系统的角度设计的,所以注册不能由任何学生自行注册,必须由管理员添加用户。

图3-2填写注册信息

3.3.1用户投票模块

1、显示要投票的内容。

图3-3投票页面

2、用户投票,并将结果写入数据库,然后再显示投票的结果。每个用户投票一次,每次只能投三张票,多选、少选都有提示信息。

图3-4   少选的提示信息

图3-5  多选的提示信息

3.3.2显示投票结果

在用户投票之后,若用户正确投票则会自动显示总的投票结果。此页面使用了数据源控件,显示在GridView控件里面。

图3-6 显示投票结果

管理员登录后可以查看当前的投票结果,此功能是由Gridview代码实现的,单击票数可以按票数多少排序。

图3-7显示投票最终结果

3.5.1用户权限

在数据库中设置了一个判断值,通过此值来判断用户是否有权投票。字段为“pand”,若此值为0则可以投票,若此值为1则不允许投票。若用户投票后,系统自动将用户的字段值改为1。

3.5.2用户投票限制

每个用户只允许投票3票。

3.5.3选项设置

管理员可以通过页面直接对候选人信息进行编辑,并新增候选人。 

图3-8管理候选人信息

3.5.4 新增候选人

管理员可以新增候选人。

此系统中对数据库的操作是通过类来实现的。我们编写了类“DB”,类里包含有链接数据库的方法creatcon,用于之后页面的数据库连接。 

public class DB

{

public DB()

{

}

    public static OleDbConnection createcon()

    {

        return new OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0;" + @"Data Source=F:网上投票系统DB_vote.mdb");

    }

此系统共有9个页面,其中8个页面运用了模板页,运用母版页不仅可以节省开发时间,而且可以实现网站的统一,使外观更加美观。在母版页中添加的信息完全可以显示在每个调用模板页的页面中。

图4-1 母版页1

图4-2 母版页2

本网站使用了站点地图,达到了导航和页面跳转的目的,使网站的逻辑性更强,更方便用户使用。

<?xml version="1.0encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

    <siteMapNode url="manage.aspxtitle="管理主页"  description="">

        <siteMapNode url="usermanage.aspxtitle="用户管理"  description="" >

<siteMapNode url="userchange.aspxtitle="新增用户"  description="" />

</siteMapNode>

        <siteMapNode url="candimanage.aspxtitle="候选人管理"  description="" >

<siteMapNode url="candichange.aspxtitle="新增候选人"  description="" />

</siteMapNode>

<siteMapNode url="resultchange.aspxtitle="结果投票显示"  description="" />

    </siteMapNode>

</siteMap>

(1)DB类

public class DB

{

public DB()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

    public static OleDbConnection createcon()

    {

        return new OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0;" + @"Data Source=F:网上投票系统DB_vote.mdb");

    }

}

(2)Login

public partial class _Default : System.Web.UI.Page 

{

    OleDbConnection con = DB.createcon();

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        string name = this.TextBox1.Text.ToString();

        string pwd = this.TextBox2.Text.ToString();

        con.Open();

        OleDbCommand sqlcom = new OleDbCommand("select * from admin where id='" + name + "' and pwd='" + pwd + "'and qx='"+this .DropDownList1.SelectedValue+"'",

con);

        OleDbDataReader reader = sqlcom.ExecuteReader ();

        if (this.DropDownList1.SelectedIndex == 0)

        {

            if (reader.Read())

            {

                Session["name"] = reader["name"];

                Response.Redirect("vote.aspx");

            }

            else

            {

                Label3.Text = "您输入错误或没有此权限,请重新输入";

            }

        }

        else if (this.DropDownList1.SelectedIndex == 1)

        {

            if (reader.Read())

            {

                Session["name"] = reader["name"];

                Response.Redirect("manage.aspx");

            }

            else

            {

                Label3.Text = "您输入错误或没有此权限,请重新输入";

            }

        }

    }

    protected void Button2_Click(object sender, EventArgs e)

    {

        this.TextBox1.Text = "";

        this.TextBox2.Text = "";

    }

}

(3)Userchange

public partial class userchange : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        OleDbConnection con = DB.createcon();

        con.Open();

        string sqlcom = "select name from admin where [id]='" + TextBox1.Text + "'";

        OleDbCommand com=new OleDbCommand (sqlcom, con);

        OleDbDataReader rader=com .ExecuteReader ();

        if (rader.Read())

        {

            rader.Close();

            Response.Write("<script>alert("该用户已存在");</script>");

        }

        else

        {

            if (DropDownList1.SelectedIndex == 1)

            {

                rader.Close();

                string sqlstr = "insert into admin (id,name,pwd,qx,pand) values('" + TextBox1.Text + "','" + TextBox5.Text + "','" + TextBox2.Text + "','管理员','1')";

                OleDbCommand co=new OleDbCommand (sqlstr, con);

                co.ExecuteNonQuery();

            }

            else

            {

                rader.Close();

                string sqlsr = "insert into admin (id,name,pwd,qx,pand) values('" + TextBox1.Text + "','" + TextBox5.Text + "','" + TextBox2.Text + "','普通用户','0')";

                OleDbCommand cm= new OleDbCommand (sqlsr, con);

                cm.ExecuteNonQuery();

            }

            con.Close();

            Response.Write("<script>alert("注册成功");</script>");

        }

    }

}

(4) Candichange

public partial class userchange : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        OleDbConnection con = DB.createcon();

        con.Open();

        string sqlcom = "select sid from shxs where sid='" + TextBox1.Text + "'or sname='" + TextBox5.Text + "'";

        OleDbCommand com=new OleDbCommand (sqlcom, con);

        OleDbDataReader reader=com .ExecuteReader ();

        if(reader .Read ())

        {

            reader .Close ();

            Response.Write("<script>alert("该用户编号或姓名已存在");</script>");

        }

        else

        {

            reader.Close();

                string sqlstr = "insert into shxs (sid,sname,bj,[count]) values('" + TextBox1.Text + "','" + TextBox5.Text + "','" + TextBox4.Text + "','0')";

                OleDbCommand co=new OleDbCommand (sqlstr, con);

                co.ExecuteNonQuery();

            con.Close();

            Response.Write("<script>alert("添加成功");</script>");

        }

    }

    protected void Button2_Click(object sender, EventArgs e)

    {

        this.TextBox1.Text = "";

        this.TextBox4.Text = "";

        this.TextBox5.Text = "";

    }

}

(5)Vote

public partial class vote : System.Web.UI.Page

{   

    protected void Page_Load(object sender, EventArgs e)

    {

       

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        OleDbConnection con = DB.createcon();

        con.Open();

        string str = "select pand ,name from admin where name ='" + Session["name"] + "'";

        OleDbCommand com = new OleDbCommand(str, con);

        OleDbDataReader rader = com.ExecuteReader();

        rader.Read();

        int k = Convert.ToInt16(rader["pand"].ToString());

        rader.Close();

        if (k == 0)

        {

            int m = 0;

            for (int n = 0; n <= this.GridView1.Rows.Count - 1; n++)

            {

                CheckBox rad = (CheckBox)this.GridView1.Rows[n].FindControl("CheckBox1");

                if (rad.Checked)

                {

                    m = m + 1;

                }

            }

            if (m == 3)

            {

                for (int i = 0; i <= this.GridView1.Rows.Count - 1; i++)

                {

                    CheckBox radio = (CheckBox)this.GridView1.Rows[i].FindControl("CheckBox1");

                    if (radio.Checked)

                    {

                        string id;

                        id = GridView1.Rows[i].Cells[1].Text;

                        OleDbConnection coon = DB.createcon();

                        coon.Open();

                        string strl = "update shxs set [count]=[count]+1 where sid='" + id + "'";

                        OleDbCommand comn =new OleDbCommand (strl,coon );

                        comn.ExecuteNonQuery();

                    }

                }

                OleDbCommand comm = new OleDbCommand("update admin set pand=pand+1 where name ='" + Session["name"] + "'", con);

                comm.ExecuteNonQuery();

                con.Close();

                Response.Write("<script>alert("投票成功");</script>");

                Response.Redirect("showvote.aspx");

            }

            if (m < 5)

            {

                Response.Write("<script>alert("你少选了");</script>");

            }

            else

            {

                Response.Write("<script>alert("你多选了");</script>");

            }

        }

        else

        {

            Response.Write("<script>alert("你已选过了");</script>");

        }

    }

}

    以上就是本篇文章【投票系统设计】的全部内容了,欢迎阅览 ! 文章地址:http://keair.bhha.com.cn/news/651.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 康宝晨移动站 http://keair.bhha.com.cn/mobile/ , 查看更多   
最新文章
松下 GH6 常见故障 问题汇总手机拍电脑屏幕有条纹怎么解决「松下 GH6 常见故障 问题汇总」
Q01.擅自断电。A01。[环保模式] 正在运行。Q02.电池消耗快。A02。连接到 Wi-Fi 时电池消耗会更快。请使用 [Eco Mode] 小心关闭电
每天走了多少步,微信是怎么知道的?没事摇手机算数吗?手机自动计步器「每天走了多少步,微信是怎么知道的?没事摇手机算数吗?」
计步器怎么知道我们走了多少步呢?如今,每个人都非常关注健康。而运动正是健康最重要的手段。不管是出门佩戴手环、计步器,还是
华为mate60系列,彻底关闭负一屏。华为手机负一屏怎么关闭「华为mate60系列,彻底关闭负一屏。」
华为mate60系列,彻底关闭负一屏,关闭方法目前有几种,本次教程是使用“旧版本,智慧助手·今天”安装覆盖。手机百度网盘下载或
手机中有2个特别耗电的功能,半天耗费一半电量,记得要尽快关闭手机开热点费电吗「手机中有2个特别耗电的功能,半天耗费一半电量,记得要尽快关闭」
朋友们大家好,我是小俊,今天小俊给大家分享一下,关闭手机中的2个功能,可以让我们电池轻松续航一整天,延长到2天充一次电的方
猎豹清理大师一键清理免费版 6.22.3手机清理大师「猎豹清理大师一键清理免费版 6.22.3」
  猎豹清理大师一键清理免费版是一款可以帮助你优化你的手机性能的app,它能对你的手机文件进行仔细的扫描,不会有意思遗漏。
探索苹果生态系统的利器:五大手机助手苹果手机系统「探索苹果生态系统的利器:五大手机助手」
下面给大家推荐几款好用的免费的苹果手机助手软件,有需要的小伙伴们来了解一下。iTunes(32位)是一款数字媒体播放应用程序,是供
Newman 纽曼纽扣手机入手24小时速赏(有小坑)安卓手机有哪些牌子「Newman 纽曼纽扣手机入手24小时速赏(有小坑)」
楼主屌丝男一枚 上有老下有小,今年还上了房贷,压力山大!!一直是犹豫着年前提前还点本金还是将闲钱在股市或者理财中扑腾一下
买手机未付款 这名男子太嚣张手机货到付款「买手机未付款 这名男子太嚣张」
手机商家龙女士,最近遇到了一件郁闷事,一名男子从她店里拿走了手机,但却没有支付2600元购机款,随后进行讨要,还反遭辱骂。龙
手机无线充电是如何实现的?原理其实很简单手机无线充电原理「手机无线充电是如何实现的?原理其实很简单」
近几年来,随着手机市场的日新月异,手机功能也越来越强大,现在不少手机都配备了无线充电功能,但是,你知道手机无线充电的原理
5英寸是多少厘米?手机长度多少厘米「5英寸是多少厘米?」
《周亚夫细柳军》的翻译:汉文帝后元六年,匈奴大规模侵入汉朝边境。于是,朝廷委派宗正官刘礼为将军,驻军在霸上;委派祝兹侯徐
相关文章
相关动态