网上投票系统的设计与实现.docx
- 文档编号:25336515
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:34
- 大小:1.47MB
网上投票系统的设计与实现.docx
《网上投票系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《网上投票系统的设计与实现.docx(34页珍藏版)》请在冰豆网上搜索。
网上投票系统的设计与实现
网上投票系统的设计与实现
软件工程
[摘要]在科学技术不断进步的今天,建立一个严谨科学的管理系统是十分有必要的。
仅仅依靠传统手工管理的方式管理投票已经不能顺应时代的发展。
在传统的方法中存在着诸多弊病,如交互性差,不能实时了解票数动态。
在面对大量的投票时,数据处理的效率也比较差。
手工处理数据也容易出现漏票等问题。
这给投票管理工作带来了很多不便。
而网上投票系统的出现恰好解决了这些问题。
本系统遵循人们的实际需求,顺应时代的发展。
利用计算机科学与技术,提高处理的效率,管理人员将更多地精力放在结果的判断上,而不是机械的处理数据,也使得票数的管理更方便。
同时,也能够利用投票系统更加直观快速的了解到用户真实的内心想法,从而选出更加合适的选项。
因此本系统的开发对于投票是有非常重大的意义的。
[关键词]PHP;JavaScript;HTML;CSS;
引言
在越来越民主的今天,通过投票来反应用户的内心真实需求已经变得十分普遍。
而在用户投票后票数的处理也是一项十分重大的工程,首先它的数据量是很大的,选手选项也比较多,传统手工方法处理比较繁杂缓慢且容易出错。
在需要投票时,还需要用户本人亲自到现象进行投票表决,这是一件很费时费力的事情。
其次,投票用户也有保密的需要,比如有些用户不愿意泄露用户名以及投票的内容等。
传统的统计方法中可能也不能很好地满足用户对于保密方面的需求。
因此,为了保护投票隐私性,使得投票流程更加的简洁迅速直观,很有必要编写出一个网上投票系统来进行投票。
1开发技术简介
1.1PHP语言
PHP是一种位于服务器端的脚本语言,它的代码是免费且开源的,并且具有很多非常强大的特性,他的执行方法是将程序嵌入到HTML文档中,然后去快速的执行动态网页,因此PHP程序执行的效率是十分高的。
在执行编译后代码方面,PHP也具有很大的优势。
它能够实现加密和优化代码运行。
PHP具有很多的优点,比如开发速度比较快、运行效率比较高、安全性较强等。
并且在全球所有的网站中,其中60%都是使用PHP语言编写的。
在国内网站中,有80%的动态网站都是使用PHP开发。
现如今,越来越多的公司在项目中开始使用PHP,PHP语言已经开始成为全球最受欢迎的语言之一,PHP已经开始大行其道,PHP已经具有很好的发展势头,它将成为Web开发领域的主流技术体系。
因此利用PHP的这些特点,结合投票管理无疑对提高办公效率是很有好处的。
1.2HTML技术
因为HTML是通过URL指针的方式来使浏览器获得网页的,所以将它称为超文本标记语言,HTML是一种规范和标准,它的页面中包含了图片、链接、音频等,在显示的网页中的各个部分时它是通过标记符号的方式来进行标记的。
1.3JavaScript技术
JavaScript属于客户端脚本语言,它是基于对象和事件驱动的。
在安全性能等方面的能力是无可置疑的。
在通常情况下它是用来实现网页的一些动态操作,使得网页更加具有互动性。
因此,互动性是它的一个很大的特点。
JavaScript通过结合php语言、HTML语言等编程语言,使得用户和系统之间实现了实时的沟通和表达,摆脱了网站中原来单向沟通的单一方式。
同时,它的程序设计方式还是面向对象设计,可以进行模块化的开发,也可以重复的进行调用。
它的出现弥补了很多HTML语言已经存在的缺陷。
1.4CSS简介
css是为了表现HTML等文件样式的一种层叠样式表,能够精确的控制网页中的所有元素,包括字体字号,颜色等。
它在1994年由哈坤.利提出,具有非常丰富的样式定义,可以多页面应用,容易使用和修改等特点。
它大大简化的网页的修改和维护,减少了维护人员很大的工作量。
1.5Bookstrap框架
Bookstrap是Twitter推出的一款前端开源工具包,是基于HTML语言、JavaScript语言和css的一款前端框架,在Bootstarp中使用栅格系统来布局,它本身自带全局的css设置、基本的HTML元素样式、可扩展的class,还有十几个可重用的组件和十几个自定义的JQuery插件。
所以由于其简洁灵活,开发快捷等特点,目前受到很大的欢迎。
该框架也对本系统的前端建设起到了非常大的作用。
2系统需求分析
2.1可行性分析
可行性分析的目的就是要以尽可能小的成本在尽可能短的时间内确定系统的可执行程度,在项目开发之前进行可行性分析,能对整体项目的实施有一个全面的规划和掌控。
从开支,收益等不同的方面对开发系统进行估算,并合理的调查软件件系统将带来的社会效益。
这样可以让在实施对软件项目的开发过程中的风险与收益有一个提前的预估,避免系统在投入大量人力物力后才发现问题,浪费资源,因此拟从以下几点进行考虑:
1.经济可行性:
网上投票系统投票系统能够比较准确的了解到投票者内心真正的心理需求,利用网上投票系统,一方面可以节省人力资源和物力资源,降低信息收集的成本,另一方面,网上投票系统能够快速的进行数据的处理,体现出投票的效率。
2.技术可行性:
开发一个投票系统,涉及到的最核心的技术问题就是如何使投票能够被准确的记录并且不伤害到用户的隐私,所以本系统主要采用php+MySQL技术实现了这一诉求。
而这是学生在校时就掌握的知识,经过一定的努力是可以实现的,所以在技术方面也不会存在很大的问题。
3.法律可行性:
该系统是作为学生本人的毕业设计而设计与开发的,由学生本人自主开发与设计的,未用于商业用途,仅供毕业设计答辩使用,因此法律上未涉及到侵权行为也未损害他人利益,因此在法律上是可以实行的的。
根据上面的分析,该系统在技术上可以由学生本人实现用于毕业设计,法律上不会产生任何侵权的问题,经济上,不会产生经济问题,技术上也是可以实现的,因此本项目是可行的。
2.2系统需求
本子系统为网上投票系统,对运行环境的基本要求是:
1.硬件需求
•4G及以上的安装内存
•10G及以上的硬盘空间。
•Intel(R)core(TM)i3-5005ucpu@2.00GHz及以上的处理器
2.软件需求
•操作系统:
windows操作系统
•Web服务器环境:
phpstudy
•数据库服务器:
MySQL。
•语言编辑器:
能够将将php语言源文件编译成可执行软件的工具。
3.功能需求
功能描述如下:
面向用户
登录功能
在投票前正确填写注册好的用户名和密码即可进行投票
注册功能
注册时需要填写登录用户名,密码。
注册后可进行登录
投票功能
顾客浏览投票页面,对自己选中的对象进行投票
留言功能
顾客可以在登录后再网站中发布留言留下自己的宝贵意见
查看公告、查看选手
游客可以查看选手和公告上公布的获奖名单
后台管理
账号密码修改
管理员登录后台后可以自行修改或选择不修改自己的登录密码。
用户管理
管理员登录后台后可以对已经注册的用户执行查询,修改,注销账号的操作
投票管理
管理员登录后台后可以新建投票活动,并查询投票情况以及对投票活动进行修改和删除
公告管理
管理员登录后台后可以发布公告
3系统设计
3.1开发的设计思想
投票管理系统采用的是前后台分离的方式进行管理。
前台部分,如果是未经注册的游客,则只可以查看投票、留言、和公告,只有在注册完账号之后才可以使用投票功能和留言功能,否则系统将要求用户先进行登录。
后台部分,只设置了一个管理员账号,只有通过该账号才能登录系统后台进行管理。
管理员登录后台之后,可以修改密码,并进行用户管理,留言管理,公告管理等操作。
以下为系统设计时为了方便理解画出的一些功能模块图以及流程图。
图1-1系统整体功能模块图
图1-2用户投票流程图
图1-3管理员后台流程图
3.2数据库设计
本系统设计到信息表主要有:
用户信息表、公告信息表、留言信息表、活动规则信息表、投票分类信息表、投票结果信息表、参赛者信息表
由于这些表有相关的联系,所以将这些数据表全部存放在同一数据库中(toupiao),以提高数据的操作速度。
数据库中共包含有以下各表:
用户信息表(users)排序cid,主键自增。
用户信息表中包含了用户的:
用户名,密码。
详细的表结构如表2-1所示。
表2-1用户信息表(users)
列名
数据类型
长度
空
主键
cid
Int
20
No
√
username
Varchar
11
Mo
passwd
Varchar
11
No
admin
Varchar
12
No
isvote
Varchar
12
No
公告信息表(gg)排序id,主键自增,如表2-2所示。
公告信息表主要包含的信息有:
公告发布标题、公告发布内容、公告发布时间。
如表2-2所示。
表2-2公告信息表(gg)
列名
数据类型
长度
空
主键
id
Int
11
No
√
Title
Varchar
12
No
content
Varchar
12
No
time
Date
18
No
留言信息表(msg)排序id,主键自增。
留言信息表主要包含的信息有:
留言人名称、留言内容、留言时间。
如表2-3所示。
表2-3留言信息表(msg)
列名
数据类型
长度
空
主键
id
Int
11
No
√
user
Varchar
12
No
msg
Varchar
12
No
time
Date
18
No
活动规则信息表(sysconfig)排序cid,主键自增。
活动规则信息表主要包括:
活动名称、活动开始时间、活动描述、活动结束时间、活动规则说明如表2-4所示。
表2-4活动规则信息表(sysconfig)
列名
数据类型
长度
空
主键
cid
Int
11
No
√
Vote-name
Varchar
12
No
dietime
Date
18
No
description
varchar
12
No
stime
Date
18
No
reg
varchar
12
No
投票分类信息表(type)排序id,主键自增。
投票分类表主要包含的信息有:
分类、描述。
如表2-5所示。
表2-5投票分类信息表(type)
列名
数据类型
长度
空
主键
id
Int
11
No
√
typename
Varchar
12
No
decs
varchar
18
No
投票结果信息表(voteips)排序cid,主键自增。
投票结果信息表主要包含的信息有:
投票用户名,投票ip,投票选手,投票标题,投票时间,如表2-6所示。
表2-6投票结果信息表(sysconfig)
列名
数据类型
长度
空
主键
cid
Int
11
No
√
User
Varchar
12
No
ip
int
18
No
title
varchar
18
No
time
Date
12
No
参赛者信息表(votename)排序cid,主键自增,该参赛者信息表主要包含的信息有:
参赛者名称、总票数、投票者、参赛者图片、参赛者描述、分类。
如表3-7所示。
表2-7参赛者信息表(votename)
列名
数据类型
长度
空
主键
cid
Int
20
No
√
Question-name
varchar
12
Mo
Sumvotenum
int
12
No
User
Varchar
12
No
pic
Varchar
12
No
des
varchar
80
No
typeid
int
18
No
4系统的实现
4.1网上投票系统首页界面设计
首页页面如图3-1所示,首页中主要有活动规则、投票选手、留言。
页面整体风格主要的采用扁平化化设计的方法,并采用蓝、灰、黑的配色方案。
使得系统看上去更加的具有趣味性,更加童趣和具有观赏性,以达到吸引用户进行投票的目的。
未注册账号的游客进入系统可以查看投票活动的一些情况,查看公告和查看留言。
但是如果想进行投票,必须先进行注册并登陆后才能投票。
如图3-1网上投票系统前台首页。
图3-1网上投票系统首页
4.2用户注册
游客在如果想进行投票,则需要先注册,点击导航栏的注册按钮即可跳转到注册页面。
注册时用户需要自行设置登陆的用户名和登陆密码。
关于代码实现部分,主要是用post方法来实现数据的传递,首先用户需要先在表单填写数据,再传输到后台。
php文件头部首先需要通过include()语句引用conn.php文件连接数据库,再通过sql语句先查询数据库中是否已经存在该用户,如果未存在则进行插入操作,将用户注册的数据存储到数据表中。
如果用户已经存在,则提示该用户已经注册。
图3-2是用户注册前台页面。
图3-3是注册页面主要实现php代码。
图3-2用户注册页面
图3-2用户注册页面主要实现代码
4.3用户登录
已经注册过账号的用户点击登录按钮即可进行登录。
登录部分代码实现方法和注册部分相似,用post方法来实现数据的传递,用户在登录表单填写数据后,传输到后台。
php文件头部首先需要通过include()语句引用conn.php文件连接数据库,再通过sql语句先查询数据库中是否已经存在该用户,如果用户存在则进行登录操作,否则将提示用户需要先进行注册才能登录。
如图3-3所示是用户前台登录页面。
图3-4是登录功能主要php代码。
图3-3用户登录界面
图3-4用户登录代码
4.4查看公告
查看公告是不论游客还是注册用户都可以进行查看的,公告由管理员在后台统一进行发布,可用于公布获奖名单以及一些重要通知,前台用户只能进行查看,没有权限进行编辑。
代码实现部分,主要用mysqli_fetch_assoc()函数从结果集中取得数据作为关联数组,返回根据从mysql_query()返回的结果生成的关联数组显示到前台。
分页部分,主要用ajax来实现分页功能,调用getPageBar()类结合for()函数实现。
如图3-5所示是公告前台页面。
图3-6是主要实现php代码。
图3-5查看公告界面
图3-6查看公告代码
4.5在线留言
在首页的下方是用户留言的展示,在此模块中,用户可以对投票系统的不足之处或者可取之处发表一些个人的感想。
主要用于用户之间进行一些交流沟通,以及系统管理员了解用户的一些意见。
留言功能只有登录的用户才能进行留言,否则,系统将会提醒用户先进行登录在发表留言。
代码实现部分,主要用array[]函数循环输出来创建留言数组,然后进行输出。
如图3-7所示是在线留言页面。
图3-8是主要实现php代码。
图3-7在线留言页面
图3-8在线留言代码
4.6投票操作
首页的中部是关于投票的一些介绍,游客和用户可以在册查看活动的投票介绍、投票规则、投票时间、活动分类、以及选手一些基本情况和获得的票数。
同样的只有登录的用户才能进行投票,游客只能进行查看。
点击选手下方查看的按钮可以查看选手的基本情况和简介。
点击投票按钮就可以进行投票。
并且系统还通过限制ip地址的方式,限制每个用户每天只能投一票。
代码实现部分,投票介绍、投票规则、投票时间是管理员可以后台设置所以用到了query()函数从数据库进行查询,保存到变量$row中需要时结合HTML代码输出到前台。
投票操作也是用query()函数从数据库进行查询,保存到变量$result_vote中进行输出,点击投票和简介按钮时,系统会传输投票选手的id进行将数据传输回数据库保存起来,并在刷新后显示出数据。
如图3-8所示是投票操作页面。
图3-9是主要实现php代码。
图3-8投票操作截图
图3-9投票操作代码截图
4.7后台登录界面
由于本系统是前后台分离的管理方式,所以管理员登录时有独立的登录路径。
如图4-13所示。
、
图3-10后台登录界面
4.8后台管理界面
在后台管理界面中,包含有密码设置、用户管理、投票管理、公告管理、投票设置、留言管理几大模块,如图3-11所示。
图3-11后台管理界面
4.9密码设置模块
管理员在登录后台后可以对自己的登录密码进行修改,修改时需要先输入原来的密码在进行修改,此功能主要用于保障管理员账号的安全性。
代码实现方面,主要是用post方法来实现数据的传递,首先用query()函数查询数据库中的管理员输入的密码是否正确,如果正确将记录下管理员输入的新密码,用sql语句更新管理员的密码。
主要实现php代码如图3-13所示。
密码设置模块界面如图3-12所示。
图3-12密码设置界面
图3-13密码设置代码界面
4.10用户管理模块
用户管理界面如图3-13所示。
用户管理界面可以查看已经注册的用户的用户名、密码,在用户的有要求时,还可以联系管理员进行密码的修改。
图3-13用户管理界面
图3-14用户管理代码
4.11投票管理模块
投票管理模块中包含了标题管理、参赛者票数情况、活动票数情况几个分类。
标题管理界面如图3-15所示。
标题管理界面可以查看所有的参赛标题,同样的,在有需要时管理员可以对已经发布的活动标题进行在线的修改或者直接删除操作。
图3-15标题管理界面
图3-16标题管理代码
参赛者票数情况界面如图3-17所示。
在参赛者票数情况界面中可以查看所有的参赛选手的票数情况,简介以及照片。
主要实现代码如图3-18所示。
图3-17参赛者票数情况界面
图3-18参赛者票数情况代码
活动票数情况界面如图3-19所示。
在活动票数情况界面中可以查看所有的活动的票数情况,参赛人数,以及具体的参赛者的票情况。
主要实现代码如图3-20所示。
图3-19活动票数情况界面
图3-20活动票数情况代码
4.12公告管理模块
公告管理模块中包含了发布公告、查看公告两个分类。
管理员可以在发布公告页面将公告内容发布到网站上,在查看公共页面可以查看所有公告,并可以对公告信息进行编辑。
发布公告界面如图3-21所示。
在发布公告界面中可以管理员可以对公告进行发布。
发布时需要编辑好相关的标题以及公告内容,最后点击发布即可进行发布。
主要实现代码如图3-22所示。
图3-21发布公告界面
图3-22发布公告代码
查看公告界面如图3-23所示。
在查看公告界面中可以管理员可以查看所有已经发布的公告,对公告实行编辑或删除等操作。
主要实现代码如图3-22所示。
图3-23查看公告界面
图3-24查看公告代码
4.13投票设置模块
投票设置模块中包含设置活动介绍、添加投票标题、添加选手几个分类。
图3-25投票设置界面
设置活动介绍界面如图3-26所示。
在活动介绍界面,管理员可以设置活动的投票规则,投票起止时间以及投票方式等。
设置完成后,数据将会同步到前台。
主要实现代码如图3-27所示。
图3-26设置活动介绍界面
图3-27设置活动介绍代码
添加投票标题界面如图3-28所示。
在添加投票界面中,管理员可以自行添加投票标题,并对其作出简要的说明。
主要实现代码如图3-29所示。
图3-28添加投票标题
图3-29添加投票代码
添加选手界面如图3-30所示。
在添加选手界面中,管理员可以自行添加投票选手,在此是对选手进行逐个添加,上上传选手资料时管理员需要设置好选手的名称,参赛标题,上传照片并对其作出简要的说明,以便于前台用户在进行投票时更够更好更快的了解选手。
主要实现代码如图3-31所示。
图3-30添加选手界面
图3-31添加选手代码
4.14留言管理模块
在留言管理模块中,管理员可以对前台用户的留言进行查询,对于一些不恰当的留言,管理员可以进行删除留言操作。
留言管理模块中,管理员可以查询到留言的用户的用户名、留言内容、留言时间。
留言管理界面如图3-29所示。
图3-29留言管理界面
5系统测试
5.1系统测试的介绍
系统测试作为整个系统项目的最后一个阶段,其重要的地位是不容置疑的。
软件测试是项目投入使用前检测其稳定性、正确性、完整性的一项操作。
在软件测试阶段,系统测试人员需要从用户的角度出发应用所学习的测试原则耐心的找出系统中还存在的一些缺陷,发现程序错误并且进行详细的记录以方便后期对所需要修改的部分进行修改,以确保软件系统在最终完工时的质量。
常见的软件测试技术有黑盒测试法、白盒测试法、静态测试法、动态测试法、自动化测试法、随机测试法、验证法和确认法等。
这些都是比较实用的测试方法,测试者可以选用其中的一个或者几个来对软件进行测试以达到找出系统问题的目的。
5.2测试内容
由于经济还有其他一些原因的限制,本系统拟采用黑盒测试法,对系统进行最后的确认测试。
从用户的角度出发,对系统的各个功能在电脑本地进行运行试用,对于出现的问题进行及时的修正。
并对代码进行及时的维护,确保系统在正式使用时能够较为稳定的的运行出来,其中测试项目包括包括注册、登录、投票、留言、公告、后台管理员管理数据的增删改查操作等。
目的是使系统能够更加的稳定,确保能够实现需求分析时的所有需求。
5.3测试结果
通过耐心的测试,不断的修改代码和完善系统结构,系统最终较为稳定的运行了起来,测试结果也比较令人满意,大体上满足了最初的系统需求分析。
以下为修改后最终检测时记录下来的一些数据表格。
检查项
检查结果
注册、登录功能是否正常运行
正常运行
投票规则、投票介绍、投票时间设置
正常运行
投票分类设置
正常运行
投票、简介按钮
正常运行
公告的发布、查询
正常运行
留言的发布、查询
正常运行
管理员密码设置
正常运行
用户管理的修改、删除
正常运行
活动票数情况、参赛人员情况的管理
正常运行
参赛人员的添加
正常运行
6总结和反思
本论文主要介绍我编写的网上投票系统的一些详细信息,从简单的注册、登录、到投票等等功能我都作出了详细的介绍以及对相应的操作界面以及主要实现代码进行了截图。
这是为了自己编写时更加方便直观有条理,同时也是为了他人与老师在阅读的过程中有更好的体验。
本系统虽然略显稚嫩,但是也是我花费了很多的心血才磨砺出来的。
尤其是在整个系统的风格方面,我更是犹豫了很多次,最终决定采用面向年轻人的扁平化的风格。
扁平化的风格,显得系统更加具有童心和乐趣,能够吸引到比较年轻的大学生们参与。
在系统的整体风格的把握上面我还是比较有信心的。
在系统功能方面,我在系统头部增加了投票简介、投票介绍、投票时间等一些介绍,使得投票者在进入系统之后便能够大概了解本次的投票活动。
同时也是为投票增加了许多的选项,在评选时可以更加的灵活。
页面底部留有留言功能,方便用户对系统发表一些个人意见,此外,还有公告,后台的管理等等。
无一不是我经过周密的思考不断的修改才做出来的。
在系统完工时,我认为系统还是达到了我预期的一些需求分析的,并且还是比较具有创意的。
经过漫长的努力过程,终于完成了本次网上投票系统的设计与编写。
在编写过程中,不仅锻炼了我查阅资料的能力以及解决技术问题的能力更使得
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网上 投票 系统 设计 实现