基于.docx
《基于.docx》由会员分享,可在线阅读,更多相关《基于.docx(28页珍藏版)》请在冰豆网上搜索。
基于
《Web技术与开发(ASP.NET)》
课程设计说明书
设计题目:
网上投票系统
指导老师:
学生学号:
学生姓名:
同组人:
时间:
201年月日
摘要
随着网络技术的迅速发展传统的投票方式已经不能满足人们的需要。
而网上投票系统除了能够完成传统的功能之外,更具有时效高和范围广的优点更符合现代社会的需要。
网上投票系统的设计是采用ASP.Net和SQLServer2005技术开发的简易投票系统并在用户登陆过程中设置动态验证码提高系统的安全性。
它实现了以下功能:
投票、结果查看、增加、删除等。
本次课程设计首先介绍了网上投票系统的概念及和适用范围。
在系统开发环境中主要对ASP、SQL及系统总体设计作了详尽的介绍。
接着通过E-R图说明数据库的搭建和数据库的设计。
然后介绍了本系统的总体设计包括系统结构和总体功能设计。
论文以功能模块图的形式说明了功能的设计并给出了部分核心代码及主要功能界面图。
投票系统概括起来就是要通过科学的管理手段和专业化管理技术来实现统一。
网上投票系统应具有以下功能:
其一方便的操作。
原有的手工投票管理基本上是人工操作效率低下,缺乏方便性,在线管理系统运用计算机和其他附加设备,不再需要手工操作基本上是全自动化,能够节省人力、最大限度地利用各种宝贵的资源,大大的提高了效率。
其二友好的界面。
友好的用户界面会给人一种亲切感,在使用起来不会觉得繁琐。
用户只需在线登陆点击投票而且可以直接点击查看投票的统计结果。
其三强大的功能。
后台管理员可以创建、删除、修改投票候选人、并统计投票结果。
本设计正是基于这样的功能要求展开设计的。
本系统的研究内容主要有两部分,具体如下:
1、数据库设计。
基于SQL并根据需求进行数据库表的设计。
2、功能模块的实现。
主要包括功能界面的设计和后台实现。
本网上投票系统的开发,遵循了自上而下的开发方式,即从整体到局部,从抽象到具体,从概要设计到详细设计,从而体现结构化的设计思想。
贯穿开发过程的方法是:
瀑布模型、生命周期方法学、面向对象方法的结合。
这也是目前较为行之有效的开发方法。
在进行"网上投票系统"的开发时,用到了许多计算机方面的相关技术,其中也用到了许多新的开发技术和方法,这些也是完成系统开发的关键性技术,最主要的是:
ASP技术、三层应用系统框架结构、SQL数据库技术等。
关键词:
网上投票系统;ASP;SQL
目录
摘要I
第1章设计目的1
1.1设计目的1
第2章总体设计2
2.1程序设计组成框图2
2.2流程图4
2.3关系图5
2.4数据库分析与设计5
第3章详细设计6
3.1模块功能说明6
3.2登录模块6
3.3投票模块8
3.4排序模块12
3.5系统设置模块12
3.6数据库表设计13
第4章系统实现15
4.1录入模块15
4.2投票模块16
4.3排序模块17
4.4系统设置模块18
结束语(心得体会)21
第1章设计目的
1.1设计目的
网上投票系统的开发可以更好的把市场的信息更准确更快速的反馈给客户,使信息的来源更广泛,从而提高信息的准确性。
运用此系统可以降低企业为市场调查而消耗的人力和物力,利用节省的资源提高产品的质量,增强竞争力。
一个网站不断发展的前提就是众多用户的支持,一个好的网站一定要注意与用户之间信息的交流。
能够有效得到用户反馈的信息,并及时对网站内容进行改进,这也是一个网站持续发展的基础。
也正是由于以上原因,网络上各式各样的投票系统层出不穷。
网络在线投票是目前网上比较常见的一个功能,利用此功能可以提直接在互联网上直接投票,并及时查看投票结果。
利用此系统,用户投票比较方便还可以查看并分析投票结果,从中获得对自己有用的信息。
本次课程设计的目的,就是制作一个网上投票系统,该系统可以实现对投票数量进行累加,统计票数等操作。
投票网页的基本要求:
有所有候选人列表(至少10人),有必要的投票说明和要求,如只能选几人(由系统给予限制),显示后可投票,如选5人,选定5人后,网上提交。
多选和少选都不能提交(无效票)。
网上投票后,再次进入该网页时该网页不能再投票。
每个人不能重复投票。
获得投票统计结果网页的基本要求:
多人投票完毕后,通过该网页获得投票统计结果,按候选人数排列得票最高的人员名单,如选5人就列出5人得名单。
按得票多少排列,显示在屏幕上。
要求调入该网页时,必须通过输入登录名和密码后才能显示上述投票结果。
第2章总体设计
2.1程序设计组成框图
2.1.1.系统主结构图:
2.1.2.子系统结构:
(1)用户信息管理:
(2)主题信息管理:
2.2流程图
2.3关系图
2.4数据库分析与设计
我们设计了四个表,分别是用户表(yonghu),投票表1(vote1),投票表2(vote2),isvote表。
用户表:
在用户注册时,用于存储“用户名”,“密码”,“权限”等信息。
投票表1:
存储投票相关信息如:
“候选人编号”,“候选人名字”,“得票总数”。
投票表2:
存储投票相关信息如:
“候选人编号”,“候选人名字”,“得票总数”。
Isvote表:
存储“用户名”,“向主题1投票”,“向主题2投票”相关信息。
数据关系模式
用户信息(用户名,密码,权限)
投票表1(候选人编号,候选人名字,得票总数)
投票表2(候选人编号,候选人名字,得票总数)
isvote(userid,isvote1,isvote2)
第3章详细设计
3.1模块功能说明
系统包括四大模块:
登录模块,投票模块,排序模块,系统设置模块
登录模块:
该模块分为登录和注册两个小模块。
可以实现普通用户和管理员两种身份的登录,普通用户登录后就跳转到用户操作页面,管理员登录后进入管理员操作页面。
还可以实现普通用户的注册,管理员不可以注册,但可以对普通用户进行添加、修改、删除。
投票模块:
该模块可以为两个主题投票,其中一个是多选(不多于5人),另一个是单选。
普通用户可以进行投票,管理员不可以投票,可以对投票主题进行管理,即进行对投票的候选人的添加、修改、删除。
排序模块:
主要用于投票结果的查看,可以对候选人的总得票数,名字等进行排序,可以看到排名前5的候选人名单和得票数,也可以查看所有候选人的得票数,这样便可以直观的看出得票数的高低。
系统设置模块:
管理员对页面的管理,如可以对普通用户进行添加、修改、删除,也可以对对投票的候选人的添加、修改、删除。
3.2登录模块
该模块分为登录和注册两个小模块。
登录模块的具体设计代码如下图所示:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Data.SqlClient;
publicpartialclass_Default:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
SqlConnectionMyConnection=Conn.CreateCon();
MyConnection.Open();//打开连接
stringstrsql="select*fromyonghuwhereuserid='"+TextBox1.Text+"'andpasswd='"+TextBox2.Text+"'";
SqlCommandcm=newSqlCommand(strsql,MyConnection);
SqlDataReaderdr=cm.ExecuteReader();
if(dr.Read())
{//保存当前用户名到Session。
Session["userid"]=dr["userid"];
Session["power"]=dr["power"];
inta=Convert.ToInt32(DropDownList1.SelectedValue);
intc=Convert.ToInt32(Session["power"]);
if(c==a)
{
if(c==0)
{
Response.Redirect("用户主页.aspx");
}
elseif(c==1)
{
Response.Redirect("管理员主页.aspx");
}
}
else
{
Response.Write("");
}
}
else
{
Response.Write("");
}
MyConnection.Close();//关闭连接
}
protectedvoidButton2_Click(objectsender,EventArgse)
{
Response.Redirect("register.aspx");
}
}
注册模块的具体设计代码如下图所示:
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Data.SqlClient;
publicpartialclassregister:
System.Web.UI.Page
{
inta;
protectedvoidPage_Load(objectsender,EventArgse)
{
a=Convert.ToInt32(Session["power"]);
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
SqlConnectionoCon=Conn.CreateCon();
stringinsertString="INSERTINTOyonghu(userid,passwd,power)values('"+TextBox1.Text+"','"+TextBox2.Text+"',0)";
stringinsertString2="INSERTINTOisvote(userid,isvote1,isvote2)values('"+TextBox1.Text+"',0,0)";
SqlCommandcmd=newSqlCommand(insertString,oCon);
SqlCommandcmd2=newSqlCommand(insertString2,oCon);
oCon.Open();
cmd.ExecuteNonQuery();
cmd2.ExecuteNonQuery();
oCon.Close();
if(a==1)
{
Response.Redirect("管理员主页.aspx");
}
else
{
Response.Redirect("default.aspx");
}
}
}
3.3投票模块
该模块可以为两个主题投票,其中一个主题是“三好学生”的评选,另一个是“你最喜欢的歌手”的评选。
“三好学生”的评选的具体设计代码如下所示:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Data.SqlClient;
publicpartialclassDefault2:
System.Web.UI.Page
{
intc,d,a,i,n;
stringm;
protectedvoidPage_Load(objectsender,EventArgse)
{
m=(string)(Session["userid"]);
n=(int)(Session["power"]);
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
quzhi();
c=(int)(Session["isvote1"]);
if(n==0)
{
if(c==0)
{
for(i=0;i<=this.GridView1.Rows.Count-1;i++)
{
CheckBoxchk=(CheckBox)(this.GridView1.Rows[i].FindControl("checkbox1"));
if(chk.Checked)
{
d=d+1;
}
}
sw();
}
else
{
Response.Write("");
}
}
else
{
Response.Write("");
}
}
publicvoidsw()//此方法用于检验投票次数
{
if(d==0)
{
Response.Write("");
}
elseif(d<6)
{
for(i=0;i<=this.GridView1.Rows.Count-1;i++)
{
CheckBoxchk=(CheckBox)(this.GridView1.Rows[i].FindControl("checkbox1"));
if(chk.Checked)
{
db();
}
}
Response.Redirect("vote1投票结果.aspx");
}
elseif(d>5)
{
Response.Write("");
}
}
publicvoiddb()//投票计数操作,并且将用户投票状态改变
{
a=Convert.ToInt32(GridView1.Rows[i].Cells[0].Text);
intb=Convert.ToInt32(GridView1.Rows[i].Cells[2].Text)+1;
CheckBoxchk=(CheckBox)(this.GridView1.Rows[i].FindControl("checkbox1"));
SqlConnectionCON=newSqlConnection("DataSource=.;InitialCatalog=VoteDB;IntegratedSecurity=True");
stringupdatestring1="updatevote1setsum=@sumwherevoteid=@voteid";
stringupdatestring2="updateisvotesetisvote1=1whereuserid=@id";
SqlCommandcmd1=newSqlCommand(updatestring1,CON);
SqlCommandcmd2=newSqlCommand(updatestring2,CON);
cmd1.Parameters.AddWithValue("@voteid",a);
cmd2.Parameters.AddWithValue("@id",m);
cmd1.Parameters.AddWithValue("@sum",b);
CON.Open();
cmd1.ExecuteNonQuery();
cmd2.ExecuteNonQuery();
CON.Close();
}
publicvoidquzhi()
{
SqlConnectionMyConnection=Conn.CreateCon();
MyConnection.Open();//打开连接
stringstrsql2="select*fromisvotewhereuserid='"+m+"'";
SqlCommandcm2=newSqlCommand(strsql2,MyConnection);
SqlDataReaderdr2=cm2.ExecuteReader();
dr2.Read();
Session["isvote1"]=dr2["isvote1"];
Session["isvote2"]=dr2["isvote2"];
}
}
“你最喜欢的歌手”的评选的具体设计代码如下所示:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Data.SqlClient;
publicpartialclassDefault3:
System.Web.UI.Page
{
intc,d,a,b,i,n;
stringm;
protectedvoidPage_Load(objectsender,EventArgse)
{
m=(string)(Session["userid"]);
n=(int)(Session["power"]);
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
quzhi();
c=(int)(Session["isvote2"]);
if(n==0)//如果是普通用户的话,执行下列语句
{
if(c==0)//如果没有投票
{
for(i=0;i<=this.GridView1.Rows.Count-1;i++)//对选择的对象计数
{
CheckBoxchk=(CheckBox)(this.GridView1.Rows[i].FindControl("checkbox1"));
if(chk.Checked)
{
d=d+1;
}
}
sw();
}
else
{
Response.Write("");
}
}
else//如果是管理员不能投票
{
Response.Write("");
}
}
publicvoidsw()//此方法用于检验投票次数
{
if(d==0)
{
Response.Write("");
}
elseif(d==1)
{
for(i=0;i<=this.GridView1.Rows.Count-1;i++)
{
for(i=0;i<=this.GridView1.Rows.Count-1;i++)
{
CheckBoxchk=(CheckBox)(this.GridView1.Rows[i].FindControl("checkbox1"));
if(chk.Checked)
{
db();
}
}
}
Response.Redirect("vote2投票结果.aspx");
}
elseif(d>1)
{
Response.Write("");
}
}
publicvoiddb()//投票计数操作,并且将用户投票状态改变
{
a=Convert.ToInt32(GridView1.Rows[i].Cells[0].Text);
b=Convert.ToInt32(GridView1.Rows[i].Cells[2].Text)+1;
CheckBoxchk=(CheckBox)(this.GridView1.Rows[i].FindControl("checkbox1"));
SqlConnectionCON=newSqlConnection("DataSource=.;InitialCatalog=VoteDB;