在线投票程序开发

 关键问题的解决方案描述

1.  首先是数据库设计问题。本次实验,数据库采用MySQL5.0。首先在数据库中创建新的数据库,命名为votedb。然后在该数据库中创建三个表,分别是:User表,用于记录用户,即管理员资料的表,包括UserId(管理员id号)和UserPwd(管理员登陆密码)两个属性;Topics表,用于记录所有投票的标题、是否关闭、是否单选这些信息,包括TopicId(投票id号)、Title(投票的标题)、Status(投票的状态,即该投票是否打开)以及Single(标示该投票是否为单选,若为单选则值为Single,否则为Multi)属性;Iterms表,该表用于记录投票中各项项目的内容等信息,包括ItermId(项目的ID号)、ItermName(项目名称)、TopicId(该项目所属的投票id号,是该表的外码,也是Topics表的主码)和Number(记录该项目的票数)这些属性。

2.  这个在线投票网站的实现,其实归根到底就是一系列的通过Jsp或者Servlet来访问MySQL数据库的操作。首先是查询操作,在对管理员登陆时验证用户输入的账号密码、显示各项投票供给用户选择其中一项投票或者查看结果、查看投票时、查看投票结果等操作时,都需要进行对数据库的查询操作,这些操作通过Statement接口来实现;另外就是插入操作了,在投票结束时系统自动保存用户投了哪几项、管理员发起投票时需要进行对数据库的插入操作,这些操作是通过PreparedStatement接口来实现的;还有就是在管理员修改投票的状态时(是否打开)时,需要对数据库进行更新操作(update),这也是通过·PreparedStatement接口来实现的。

3.  其他问题。数据库中Topics表中的属性TopicId以及Iterms表中的ItermId属性都是系统自动添加的,每添加一项,系统会自动自增一,然后插入到数据库中,这一功能是通过首先读取数据库中Topics表中有多少项,通过返回的数字作为新的一项的TopicId的值(该属性是从0开始),同理,对于Iterms表中的每一项,也是如此。还有的小问题就是当用户打开查看页面时,用户会选择自己喜欢的投票标题点击投票或者查看投票结果进行相关操作时,下一个页面会根据上一页面传来的投票TopicId号打开相关的投票,这个TopicId则是通过在连接中直接添加参数来传输,如:

<ahref="Voting.jsp?n=<%=str1%>" target="_blank"title="Voting">投票</a>

4.还有就是对表单中数据进行收集的问题。对于上一页面中提交上来的表单,Servlet页面通过request.getParameter方法来获得,特别的是对多选选择值获取时,是要通过一个数组来获取用户的一系列的选择的值。

 系统测试截图

1.  初始界面

2.  游客页面


3.  投票(游客)


4.  查看投票结果(游客)


5.  管理员登陆


6.  管理员页面


7.  发起投票


8.  改变投票状态(是否打开)


9.  选择把id号为1的投票关闭后


10.查看投票(管理员)


由于管理员状态下可以跟游客一样进行投票、查看投票结果这些操作,由于这些操作与游客的操作是一致的,故不再作描述

 

 实验总结

这次数据库的话,收获最大的还是通过Jsp页面或者Servlet来对数据库进行插入、查询、更新这些操作,还有页面之间数值的传递、页面间(包括Jsp页面之间、Jsp和Servlet页面之间的跳转),基本上是对本学期这门课所学的所有内容进行了一次大温习,让我觉得收获不少,而且很多已经遗忘的知识点也能重新学习了一次。

在本次实验刚开始时,对于我来说,最大的问题还是这个在线投票程序的结构问题,页面之间的跳转问题,以及何时使用Servlet进行处理的问题,这些问题我是通过对实验要求进行仔细分析之后,根据该程序的不同的功能进行划分,画出相关的导航图,然后对照想关的图进行编程实现。

还有一些问题,如问题描述那样,通过上网查询,和同学交流之后做出解决方案。

不足。这次实验完成之后,通过与同学们的交流之后,我发现我的程序存在着不少不足。

1.      首先是界面问题,界面过于简陋,不像一些同学那样会有图片又或者通过层叠样式表来进行润色,而且网站交互能力基本为零;

2.      其次是发起投票时,为了简化编程、缩短编程时间,我选择限制管理员发起的投票的选项为四项,不能多也不能少,不像其他同学那样能够自主地、动态地增加选项;

3.      最后就是本次实验最大的不足:程序结构十分混乱,代码中充斥着大量的数据库连接、访问代码,没有使用JavaBean来封装好一个专门来连接数据库的类、以专门来查询数据库的类、一个专门来实现插入数据库的类还有一个专门实现更新数据库的类等等。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值