项目结构
项目文件voting_system包含三个文件夹 vote文件夹 是php后端 vote_support_web文件夹 是前端后台系统 vote_web文件夹 是前端前台页面 vote.sql 是数据库文件,导入到数据库
数据表构成
数据库由三个表构成 user表存储注册用户 theme表存储投票主题信息 record表存储用户投票记录(包含投票主题id、用户id、用户ip、投票时间)
主要功能
1.前台页面进入投票页面后免登录即可匿名投票,但根据IP进行重复投票限制。 2.前台页面也可以选择登陆后再投票。 3.后台系统可登陆可注册,在后台系统可以查看所有投票主题。 4.后台系统我的主题页面可以创建我的投票主题,修改主题,激活投票,取消投票,完成投票。 5.点击主题名称可以查看主题详情。 6.每个用户或每个IP仅能对每个主题投票一次。 7.投票可以设置起止时间、单选或多选、多选最大数、最大投票数等信息。
主要逻辑
- 主题的投票项内容、获得票数、以及当时时间(key)以数组对象的形式存储,并在前端转为JSON后存入数据库。
- 用户在选择投票项并投票时,通过判断用户选择的投票项数组new_options中所有key是否存在于主题的投票项数组对象options中,如果存在则将options某个key的number+1.
- 由于前台页面无需登录,但是后端页面需要登录,因此后端PHP对user表和theme表设立了一个非公开控制器和公开控制器。