投票系统设计

投票系统设计(ASP.NET内置对象综合应用)

实训目标

1、  了解Page对象的事件

2、  了解Request对象常用方法和属性

3、  了解Response对象常用方法和属性

4、  能够创建网页模板

   5、了解Application对象常用方法和属性

   6、了解Session对象常用方法和属性

   7、了解Cookie对象常用方法和属性

   8、理解Application对象的生命周期、Session对象的生存期、Cookie对象的生命周期

实施步骤

1.在线投票系统登陆界面(default.aspx),这里是用匿名用户登录,不需要密码,但用户名不能为空,登录到投票页面。

图1 在线投票系统登录界面

//default.aspx.cs后台代码参考

protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    //点击按钮事件代码

    protected void Button1_Click(object sender, EventArgs e)

    {

        if (TextBox1.Text != "")//如何文本框不为空才执行下面的代码

        {

            Session["username"] = TextBox1.Text.Trim();//保存Session,记住会话状态

            Response.Redirect("vote.aspx");//跳转到投票页面

        }

        else

        {

            Response.Write("<script>alert('用户名不能空!')</script>");//用户名文本框为空时,弹出对话框提示

        }

}

 

 

2.在线投票系统主界面(vote.aspx),用于显示登录用户的用户名,登录的IP地址,并显示投票选项单选按钮列表、投票按钮、查看结果按钮,退出登录按钮等。

用户选择具体选项进行投票,每个用户只允许投票一次!使用Cookie对象实现一个客户

只能投票一次,点击投票按钮会提示“投票成功”或者“已经投过票”。

 

图2在线投票系统主界面

//vote.aspx.cs代码参考

    //页面加载时执行的代码

    protected void Page_Load(object sender, EventArgs e)

    {

        //RadioButtonList1.Items[0].Selected = true;//设置第一项为默认选中项

        if (Session["username"] != null)//判断是否有登录?

            Label1.Text = Session["username"] + "欢迎您!IP地址:"+Request.UserHostAddress;

        else

            Response.Redirect("default.aspx");//没有登录则跳转到登录页面

    }

    //点击按钮事件代代码

    protected void Button1_Click(object sender, EventArgs e)

    {

        if (RadioButtonList1.SelectedValue != "")//判断有没有选择?

        {

            //if(Request.Cookies["ip"]!=null){//判断cookie是否存在

           // string newip=Request.Cookies["ip"].Value;

            //if(newip==Request.UserHostAddress){//判断cookie中的IP是否相同

            //    Response.Write("<script>alert('你已经投票啦!')</script>");

             //   return;//跳出方法,结束!

            //   }

             // }

            int selectvalue = Convert.ToInt32(RadioButtonList1.SelectedValue);//获取单选按钮列表的选中项的值

            switch (selectvalue)//根据不同的选择,执行不同的代码,采用switch分支结构(打开对应数据文件,改变投票数)

            {

                case 1://选择:1广州,2深圳,3东莞,4珠海

                    read2write(1);

                    break;

                case 2:

                    read2write(2);

                    break;

                case 3:

                    read2write(3);

                    break;

                case 4:

                    read2write(4);

                    break;

            }

            //保存cookie

            string ip = Request.UserHostAddress;//获取IP地址

            Response.Cookies["ip"].Value = ip;//定义cookie

            Response.Cookies["ip"].Expires = DateTime.MaxValue;//设置cookie有效期,必须设置有效期才能生效

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

        }

        else

        {

            Response.Write("<script>alert('必须选择!')</script>");

        }

    }

    //自定义一个方法,根据选择不同的项目带入参数,读取不同的文本数据文件并完成写入!

    public void read2write(int i)

    {

        System.IO.StreamReader sr = System.IO.File.OpenText(Server.MapPath("." + "\\data\\"+i+".txt"));//打开文件

        //System.IO.StreamReader sr = new System.IO.StreamReader(Server.MapPath("." + "\\data\\" + i + ".txt"));//使用这个方法也可以

        Application.Lock();

        Application["count"] = sr.ReadLine();// 读取内容

        sr.Close();

        int all = Convert.ToInt32(Application["count"]);

        all += 1;

        System.IO.StreamWriter rw = System.IO.File.CreateText(Server.MapPath("." + "\\data\\" + i + ".txt"));//创建文件

        //System.IO.StreamWriter rw = new System.IO.StreamWriter(Server.MapPath("." + "\\data\\" + i + ".txt"));//使用这个方法也可以

        rw.WriteLine(all);//写入内容

        rw.Close();

        Application.UnLock();

    }

    //查看结果按钮事件代码

    protected void Button2_Click(object sender, EventArgs e)

    {

        Server.Transfer("result.aspx");

    }

    //退出登录按钮事件代码

    protected void Button3_Click(object sender, EventArgs e)

    {

        Session["username"] = null;//清除session,关闭会话状态

        Session.Clear();

        Response.Redirect("default.aspx");

}

 

3.在线投票系统的投票结果查看界面(result.aspx),把结果用数字和图形显示出来。

图3在线投票系统结果查看页面

//result.aspx.cs代码参考

//页面加载事件代码

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            //if (Session["username"] == null)//判断是否登录

            //    Response.Redirect("default.aspx");

            int c1, c2, c3, c4, total;//定义变量,分别存储每一个投票选项的票数

            System.IO.StreamReader sr;

            sr = System.IO.File.OpenText(Server.MapPath("." + "\\data\\1.txt"));//分别读取每一个数据文件的内容

            c1 = Convert.ToInt32(sr.ReadLine());

            sr.Close();

            sr = System.IO.File.OpenText(Server.MapPath("." + "\\data\\2.txt"));

            c2 = Convert.ToInt32(sr.ReadLine());

            sr.Close();

            sr = System.IO.File.OpenText(Server.MapPath("." + "\\data\\3.txt"));

            c3 = Convert.ToInt32(sr.ReadLine());

            sr.Close();

            sr = System.IO.File.OpenText(Server.MapPath("." + "\\data\\4.txt"));

            c4 = Convert.ToInt32(sr.ReadLine());

            sr.Close();

            total = c1 + c2 + c3 + c4;//计数总票数

            Label1.Text = c1.ToString();//在label控件中显示对应的票数(赋值)

            Label2.Text = c2.ToString();

            Label3.Text = c3.ToString();

            Label4.Text = c4.ToString();

            Label5.Text = total.ToString();

 

            Label1.Width = 300 * c1 / total;//根据比例设置对应label控件的宽度

            Label2.Width = 300 * c2 / total;

            Label3.Width = 300 * c3 / total;

            Label4.Width = 300 * c4 / total;

            Label5.Width = 300 * 1;

        }

    }

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、引言 1.1编目的 在完成了针对《学生信息系统》软件市场的前期调查,同时与多位同学进行了全面深入地探讨和分析的基础上,提出了这份软件需求规格说明书。 此需求规格说明书对《学生信息系统》软件做了全面细致的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。 1.2项目背景 由于文件多,种类多,文件创建者多,创建时间为不定期,要保护好一些公司重要的文件极为不便,同时由于人员的流动,对原有的文件的再现,显得力不从心,有时查找与重新整理文件要浪费许多的人力、物力。 为了有效的共享文件资源,保护好文件,及促进学生信息系统管理的信息化、规范化和集成化,本人多方听取意见、追加和完善大量实用功能,进而了解文件管理的流程,同时结合各部门、各专业与学科管理的方法,开发出一套适合于学生信息系统多而复杂的管理系统。 1.3定义、缩词和符号 需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足标准,规范或其它正式规定文档所需具有的条件或权能。 1.4参考资料 张海藩:《软件工程导论》,清华大学出版社,2008年2月版 黄德才: 《数据库原理及其应用教程》,科学出版社,2006年2月版 2.任务概述 2.1目标 2.1.1开发目标 在当今世界电脑普及的时刻,人们已经习惯用电脑办公,结果自然会产生大量的电子文件,这些文件有宝贵的历史价值,但我们如果将更多的时间花费在寻找这些文件上,即费时又费力。本软件根据此需求进行开发的。 2.1.2应用目标 让学校能够有效的掌握,有效的共享文件资源,保护好文件,及促进学生信息系统管理的信息化、规范化和集成化,实现计算机的智能化管理,以提高工作效率和经济效益。 2.2运行环境 2.2.1硬件环境 A. 一台.NET系统的微机 B.内存足够大 2.2.2软件环境 A.windows 98 以上的操作系统 B.Microsoft Visual studio 2007 C.Microsoft SqlServer 2000 2.3条件与限制 此学生信息系统管理软件是应用于各个学校的。在功能上还可进一步实现安全防范、与E-Mail和因特网电话集成起来,成为学生信息系统管理软件。 3. 数据描述 3.1静态数据 1)Students表 2)Reports表 3)Courses表 4)Log on表 3.2动态数据 输入数据:菜单选项,添加项,查询项,修改项,删除项。 输出数据:由添加、查询、修改、删除所确定的数据库记录集合。 内部生成的数据:查询结果。 3.3数据库描述 本软件采用SQL数据库。 3.4数据流程图 《学生信息系统》软件的数据流程图是比较清晰的,对各功能模块来说都比较有规律。但完整的图比较繁琐,各个功能模块的基本流程图如下。 3.5数据字典 这里给出一个数据元素的字典卡片与具体数据卡片的含义: 名称:学生信息系统 描述:产生学生信息文件送交学生信息目录表 定义:学生信息系统=学生信息类型+安全级别 4. 功能要求 4.1功能划分 本系统有以下功能模块: 1)学生信息录入模块 2)学生信息查询模块 3)学生信息修改模块 4)学生信息删除模块  4.2功能描述 下面详细描述一下各个功能模块: 1)学生信息录入 (1) 学生信息目录管理:只限于一般用户和管理员操作。而且不同的用户级别所操作的信息类型是有限制的。用户可以向里面添加、修改和删除档案类型。也可设置信息类型的级别,以加强它们的保密性。 (2) 学生信息仓库:限于全体操作员工。一般浏览者只能查看学生信息,不能对学生信息做任何的修改。而且不同的用户级别所看到的档案是有限制的。一般用户可向里面添加、修改和删除档案。也可设置学生信息级别,以加强它们的保密性。 2)学生信息查询 (1) 查询单条学生信息记录:主要是适合于全体操作人员的。在窗体上,先可以选择查询的条件,再输入关键字名。按查询即可。查到记录后,也可双击记录即可显示详细信息。 (2) 查询全部学生信息:是给管理员用的,是为了方便管理员查找学生信息,也有按班级查询、按姓名查询和按学号查询。查到记录后,也可双击记录即可显示详细信息。 也有多种查询方法。查到记录后,也可双击记录即可显示详细信息。 3)学生信息修改 (1)修改单条学生信息:主要是适合于全体操作人员的。在窗体上,修改学生信息。修改记录后,也可双击记录即可显示详细信息。 (2)修改全部学生信息:是给管理员用的,是为了方便管理员修改学生信息。修改记录后,也可双击记录即可显示详细信息。 4)学生信息删除 (1)删除单条学生信息:主要是适合于全体操作人员的。在窗体上,删除学生信息。删除记录后,也可双击记录即可显示详细信息。 (2)删除全部学生信息:是给管理员用的,是为了方便管理员删除学生信息。删除记录后,也可双击记录即可显示详细信息。 5.性能需求 5.1数据精确度 A.要按照严格的数据格式输入,否则系统不给予响应进行处理。 B.查询时要保证查全率,所有相应域包含查询关键字的记录都应能查到。因为通常有文件的记录会很多,所以本系统采用了两种方法进行查询:按班级查询、按姓名查询和按学号查询。 5.2时间特性 一般操作的响应时间应在1~2秒内,对软磁盘和打印机的操作也应在可接受的时间内完成。 5.3适应性 满足学校使用的需求(记录量控制在1000项内)。 对前面提到的运行环境要求不应存在困难。 6. 运行需求 6.1用户界面 超越VB的界面,全新感觉,操作简便,一目了然,视图优美等特点。并且采用菜单界面驱动方式,给操作用户带来了极大的便利,对用户友好。对鼠标和键盘单独支持。 6.2硬件接口 本软件不需要特定的硬件或硬件接口进行支撑。 6.3软件接口 运行于Windows 2000及更高版本具有.net的操作系统之上。 6.4故障处理 正常使用时不应出错,若运行时遇到不可恢复的系统错误,也必须保证数据库完好无损。 调试中遇到的问题及解决的方案: 1)遇到跳出“数据库已经关闭“提示信息阻止程序运行时 可以查看一下进行此项操作时,操作的表是否已经被关闭了或者是在没有关闭此表的情况 下又一次运用打开语句打开此表。 2)关于空记录带来的麻烦 有些空记录往往会使程序无法运行。此时你可用“if not isnull”语句先判断一下是否为 空记录,再操作。 3)有些运行错误也可用如下语句排除 On Error GoTo Erropoint Erropoint : Msgbox Err.Descripton Exit sub 或用On Error resume Next 等语句进行处理。 7.其它要求 1)系统的功能实现情况: 用户可在本系统下实现各种用户要求的功能 2)系统的安全性: 对于系统的重要数据都有密码保护,具有一定的安全性 3)系统的容错性: 用户输错数据都有提示信息,具有较好的容错性能。 4)系统的封闭性: 用户的封闭性较好,用户基本上在提示信息下输数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值