《基于.net的三成架构的网上评分系统-毕设论文.doc》由会员分享,可在线阅读,更多相关《基于.net的三成架构的网上评分系统-毕设论文.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、吕传涛:学生信息管理Web技术与开发(ASP.NET)课程设计说明书设 计 题 目: 网上投票系统 指 导 老 师: 学 生 学 号: 学 生 姓 名: 同 组 人: 时 间: 201 年 月 日 I摘 要随着网络技术的迅速发展传统的投票方式已经不能满足人们的需要。而网上投票系统除了能够完成传统的功能之外,更具有时效高和范围广的优点更符合现代社会的需要。 网上投票系统的设计是采用ASP.Net和SQL Server2005技术开发的简易投票系统并在用户登陆过程中设置动态验证码提高系统的安全性。它实现了以下功能:投票、结果查看、增加、删除等。本次课程设计首先介绍了网上投票系统的概念及和适用范围。
2、在系统开发环境中主要对ASP、SQL及系统总体设计作了详尽的介绍。接着通过E-R图说明数据库的搭建和数据库的设计。然后介绍了本系统的总体设计包括系统结构和总体功能设计。论文以功能模块图的形式说明了功能的设计并给出了部分核心代码及主要功能界面图。投票系统概括起来就是要通过科学的管理手段和专业化管理技术来实现统一。网上投票系统应具有以下功能:其一方便的操作。原有的手工投票管理基本上是人工操作效率低下,缺乏方便性,在线管理系统运用计算机和其他附加设备,不再需要手工操作基本上是全自动化,能够节省人力、最大限度地利用各种宝贵的资源,大大的提高了效率。 其二友好的界面。友好的用户界面会给人一种亲切感,在使
3、用起来不会觉得繁琐。用户只需在线登陆点击投票而且可以直接点击查看投票的统计结果。 其三强大的功能。后台管理员可以创建、删除、修改投票候选人、并统计投票结果。 本设计正是基于这样的功能要求展开设计的。 本系统的研究内容主要有两部分,具体如下: 1、数据库设计。基于SQL并根据需求进行数据库表的设计。 2、功能模块的实现。主要包括功能界面的设计和后台实现。 本网上投票系统的开发,遵循了自上而下的开发方式,即从整体到局部,从抽象到具体,从概要设计到详细设计,从而体现结构化的设计思想。贯穿开发过程的方法是:瀑布模型、生命周期方法学、面向对象方法的结合。这也是目前较为行之有效的开发方法。 在进行网上投票
4、系统的开发时,用到了许多计算机方面的相关技术,其中也用到了许多新的开发技术和方法,这些也是完成系统开发的关键性技术,最主要的是:ASP技术、三层应用系统框架结构、SQL数据库技术等。关键词: 网上投票系统; ASP; SQL目 录摘 要I第1章 设计目的11.1 设计目的1第2章 总体设计22.1程序设计组成框图22.2流程图42.3关系图52.4数据库分析与设计5第3章 详细设计63.1 模块功能说明63.2 登录模块63.3 投票模块83.4 排序模块123.5 系统设置模块123.6 数据库表设计13第4章 系统实现154.1录入模块154.2 投票模块164.3排序模块174.4系统设
5、置模块18结束语(心得体会)21III网上投票系统第1章 设计目的1.1 设计目的网上投票系统的开发可以更好的把市场的信息更准确更快速的反馈给客户,使信息的来源更广泛,从而提高信息的准确性。运用此系统可以降低企业为市场调查而消耗的人力和物力,利用节省的资源提高产品的质量,增强竞争力。一个网站不断发展的前提就是众多用户的支持,一个好的网站一定要注意与用户之间信息的交流。能够有效得到用户反馈的信息,并及时对网站内容进行改进,这也是一个网站持续发展的基础。也正是由于以上原因,网络上各式各样的投票系统层出不穷。网络在线投票是目前网上比较常见的一个功能,利用此功能可以提直接在互联网上直接投票,并及时查看
6、投票结果。利用此系统,用户投票比较方便还可以查看并分析投票结果,从中获得对自己有用的信息。本次课程设计的目的,就是制作一个网上投票系统,该系统可以实现对投票数量进行累加,统计票数等操作。投票网页的基本要求:有所有候选人列表(至少10人),有必要的投票说明和要求,如只能选几人(由系统给予限制),显示后可投票,如选5人,选定5人后,网上提交。多选和少选都不能提交(无效票)。网上投票后,再次进入该网页时该网页不能再投票。每个人不能重复投票。获得投票统计结果网页的基本要求:多人投票完毕后,通过该网页获得投票统计结果,按候选人数排列得票最高的人员名单,如选5人就列出5人得名单。按得票多少排列,显示在屏幕
7、上。要求调入该网页时,必须通过输入登录名和密码后才能显示上述投票结果。21第2章 总体设计2.1程序设计组成框图2.1.1.系统主结构图:登录系统管理员页面用户页面用户信息管理主题信息管理查看投票结果选择投票主题查看投票结果2.1.2.子系统结构: (1)用户信息管理:用户信息管理注册用户信息修改用户信息删除用户信息(2)主题信息管理:主题信息管理添加候选人信息删除候选人信息修改候选人信息2.2流程图开始用户登录管理员登录登录登录投票投票结果查看投票结果查看用户信息管理主题信息管理结果显示2.3关系图用户投票投票表1投票表2用户名密码权限候选人编号候选人名字得票总 数候选人编号候选人名字得票总
8、 数2.4数据库分析与设计我们设计了四个表,分别是用户表(yonghu),投票表1(vote1),投票表2(vote2),isvote表。用户表:在用户注册时,用于存储“用户名”,“密码”,“权限”等信息。投票表1:存储投票相关信息如:“候选人编号”,“候选人名字”,“得票总数”。投票表2:存储投票相关信息如:“候选人编号”,“候选人名字”,“得票总数”。Isvote表:存储“用户名”,“向主题1投票”,“向主题2投票”相关信息。数据关系模式用户信息(用户名,密码,权限)投票表1(候选人编号,候选人名字,得票总数)投票表2(候选人编号,候选人名字,得票总数)isvote(userid,isvo
9、te1,isvote2)第3章 详细设计3.1 模块功能说明系统包括四大模块:登录模块,投票模块,排序模块,系统设置模块登录模块:该模块分为登录和注册两个小模块。可以实现普通用户和管理员两种身份的登录,普通用户登录后就跳转到用户操作页面,管理员登录后进入管理员操作页面。还可以实现普通用户的注册,管理员不可以注册,但可以对普通用户进行添加、修改、删除。投票模块:该模块可以为两个主题投票,其中一个是多选(不多于5人),另一个是单选。普通用户可以进行投票,管理员不可以投票,可以对投票主题进行管理,即进行对投票的候选人的添加、修改、删除。排序模块:主要用于投票结果的查看,可以对候选人的总得票数,名字等
10、进行排序,可以看到排名前5的候选人名单和得票数,也可以查看所有候选人的得票数,这样便可以直观的看出得票数的高低。系统设置模块:管理员对页面的管理,如可以对普通用户进行添加、修改、删除,也可以对对投票的候选人的添加、修改、删除。3.2 登录模块该模块分为登录和注册两个小模块。登录模块的具体设计代码如下图所示:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebCo
11、ntrols;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient ;public partial class _Default : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) protected void Button1_Click(object sender, EventArgs e) SqlConnection MyConnection =
12、Conn.CreateCon(); MyConnection.Open(); /打开连接 string strsql = select * from yonghu where userid= + TextBox1.Text + and passwd= + TextBox2.Text + ; SqlCommand cm = new SqlCommand(strsql, MyConnection); SqlDataReader dr = cm.ExecuteReader(); if (dr.Read() /保存当前用户名到Session。 Sessionuserid = druserid; Ses
13、sionpower = drpower; int a = Convert.ToInt32(DropDownList1.SelectedValue); int c = Convert.ToInt32(Sessionpower); if (c = a) if (c = 0) Response.Redirect(用户主页.aspx); else if (c = 1) Response.Redirect(管理员主页.aspx); else Response.Write(alert(权限错误!);); else Response.Write(alert(用户名或密码错误!);); MyConnectio
14、n.Close(); /关闭连接 protected void Button2_Click(object sender, EventArgs e) Response.Redirect(register.aspx); 注册模块的具体设计代码如下图所示:using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.W
15、eb.UI.HtmlControls;using System.Data.SqlClient ;public partial class register : System.Web.UI.Page int a; protected void Page_Load(object sender, EventArgs e) a = Convert.ToInt32(Sessionpower); protected void Button1_Click(object sender, EventArgs e) SqlConnection oCon = Conn.CreateCon(); string ins
16、ertString = INSERT INTO yonghu ( userid,passwd,power) values( + TextBox1.Text + , + TextBox2.Text + ,0); string insertString2 = INSERT INTO isvote(userid,isvote1,isvote2) values( + TextBox1.Text + , 0,0); SqlCommand cmd = new SqlCommand(insertString, oCon); SqlCommand cmd2 = new SqlCommand(insertStr
17、ing2, oCon); oCon.Open(); cmd.ExecuteNonQuery(); cmd2.ExecuteNonQuery(); oCon.Close(); if (a = 1) Response.Redirect(管理员主页.aspx); else Response.Redirect(default.aspx); 3.3 投票模块该模块可以为两个主题投票,其中一个主题是“三好学生”的评选,另一个是“你最喜欢的歌手”的评选。“三好学生”的评选的具体设计代码如下所示:using System;using System.Data;using System.Configuration
18、;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class Default2 : System.Web.UI.Page int c, d, a, i, n; string
19、m; protected void Page_Load(object sender, EventArgs e) m = (string)(Sessionuserid); n = (int)(Sessionpower); protected void Button1_Click(object sender, EventArgs e) quzhi(); c = (int)(Sessionisvote1); if (n = 0) if (c = 0) for (i = 0; i = this.GridView1.Rows.Count - 1; i+) CheckBox chk = (CheckBox
20、)(this.GridView1.Rowsi.FindControl(checkbox1); if (chk.Checked) d = d + 1; sw(); else Response.Write(alert(您已经投过票!谢谢!);); else Response.Write(alert();); public void sw() /此方法用于检验投票次数 if (d = 0) Response.Write(alert(您还没有投票!);); else if (d 6) for (i = 0; i 5) Response.Write(alert(您的选择超过五人!);); public
21、void db() /投票计数操作,并且将用户投票状态改变 a = Convert.ToInt32(GridView1.Rowsi.Cells0.Text); int b = Convert.ToInt32(GridView1.Rowsi.Cells2.Text) + 1; CheckBox chk = (CheckBox)(this.GridView1.Rowsi.FindControl(checkbox1); SqlConnection CON = new SqlConnection(Data Source=.;Initial Catalog=VoteDB;Integrated Secur
22、ity=True); string updatestring1 = update vote1 set sum=sum where voteid=voteid ; string updatestring2 = update isvote set isvote1=1 where userid=id ; SqlCommand cmd1 = new SqlCommand(updatestring1, CON); SqlCommand cmd2 = new SqlCommand(updatestring2, CON); cmd1.Parameters.AddWithValue(voteid, a); c
23、md2.Parameters.AddWithValue(id, m); cmd1.Parameters.AddWithValue(sum, b); CON.Open(); cmd1.ExecuteNonQuery(); cmd2.ExecuteNonQuery(); CON.Close(); public void quzhi() SqlConnection MyConnection = Conn.CreateCon(); MyConnection.Open(); /打开连接 string strsql2 = select * from isvote where userid= +m + ;
24、SqlCommand cm2 = new SqlCommand(strsql2, MyConnection); SqlDataReader dr2 = cm2.ExecuteReader(); dr2.Read(); Sessionisvote1 = dr2isvote1; Sessionisvote2 = dr2isvote2; “你最喜欢的歌手”的评选的具体设计代码如下所示:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using Sys
25、tem.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class Default3 : System.Web.UI.Page int c, d, a, b, i, n; string m; protected void Page_Load(object sender, EventA
26、rgs e) m = (string)(Sessionuserid); n = (int)(Sessionpower); protected void Button1_Click(object sender, EventArgs e) quzhi(); c = (int)(Sessionisvote2); if (n = 0)/如果是普通用户的话,执行下列语句 if (c = 0)/如果没有投票 for (i = 0; i = this.GridView1.Rows.Count - 1; i+)/对选择的对象计数 CheckBox chk = (CheckBox)(this.GridView1
27、.Rowsi.FindControl(checkbox1); if (chk.Checked) d = d + 1; sw(); else Response.Write(alert(您已经投过票!谢谢!);); else/如果是管理员不能投票 Response.Write(alert(管理员不能投票!);); public void sw() /此方法用于检验投票次数 if (d = 0) Response.Write(alert(您还没有投票!);); else if (d =1) for (i = 0; i = this.GridView1.Rows.Count - 1; i+) for
28、(i = 0; i 1) Response.Write(alert(您只能为一人投票!);); public void db() /投票计数操作,并且将用户投票状态改变 a = Convert.ToInt32(GridView1.Rowsi.Cells0.Text); b = Convert.ToInt32(GridView1.Rowsi.Cells2.Text) + 1; CheckBox chk = (CheckBox)(this.GridView1.Rowsi.FindControl(checkbox1); SqlConnection CON = new SqlConnection(Da
29、ta Source=.;Initial Catalog=VoteDB;Integrated Security=True); string updatestring1 = update vote2 set sum=sum where voteid=voteid ;/将总数增加一 string updatestring2 = update isvote set isvote2=1 where userid=id ;/使该用户不能投票 SqlCommand cmd1 = new SqlCommand(updatestring1, CON); SqlCommand cmd2 = new SqlComm
30、and(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(); public void quzhi() SqlConnection MyConnection = Conn.CreateCon(); MyConnection.Open()
31、; /打开连接 string strsql2 = select * from isvote where userid= + m + ; SqlCommand cm2 = new SqlCommand(strsql2, MyConnection); SqlDataReader dr2 = cm2.ExecuteReader(); dr2.Read(); Sessionisvote1 = dr2isvote1; Sessionisvote2 = dr2isvote2; 3.4 排序模块主要用于投票结果的查看,可以对候选人的总得票数,名字等进行排序。该功能是用sqldatasource数据源控件实现
32、的,只要将sortexpression属性设置为要实现排序的字段值即可。3.5 系统设置模块管理员对页面的管理,如可以对普通用户进行添加、修改、删除,也可以对对投票的候选人的添加、修改、删除。该功能是用objectdatasource数据源控件实现的,具体设计代码如下所示:public DataSet Getvote1() string strSql = SELECT voteid,voyename,sum FROM vote1; SqlDataAdapter oDA = new SqlDataAdapter(strSql, oCon); DataSet oDS = new DataSet()
33、; oDA.Fill(oDS, user); return oDS; public void Updatevote1(string voteid, string voyename, string sum) string updateString = UPDATE vote1 set voyename=voyename ,sum=sum where voteid=voteid; SqlCommand cmd = new SqlCommand(updateString, oCon); cmd.Parameters.AddWithValue(voteid, voteid); cmd.Paramete
34、rs.AddWithValue(voyename, voyename); cmd.Parameters.AddWithValue(sum, sum); oCon.Open(); cmd.ExecuteNonQuery(); oCon.Close(); public void Deletevote1(string voteid) /SqlConnection oCon = Conn.CreateCon(); string deleteString = DELETE FROM vote1 WHERE voteid=voteid; SqlCommand cmd = new SqlCommand(deleteString, oCon); cmd.Parameters.AddWithValue(voteid, voteid); oCon.Open(); cmd.ExecuteNonQuery(); oCon.Close(); public void Insertvote1(string voteid, string voyena