(1)数据库的建立
本次投票系统使用的是Mysql数据库。我共建了3张表:administrator表、topic表、optionlist表。administrator表是用户表,记录了管理员的帐号和密码;topic表是主题表,这张表记录了所有已存在的投票主题,其中的关键属性有投票主题的id号topic_id、开启或关闭的状态status以及该投票是单选或多选的属性issingle。option表是选项表,所有主题的所有选项都记录在此表,其中相同主题的选项拥有相同的主题id,此id为外码,参照的是topic表的topic_id属性,这样就可以将相同主题的属性关联在一起。数据库设计如下图:
(2)每个投票主题的查看
在用户打开投票系统的首页时,会看到所有已存在的投票主题,包括开启和关闭的投票,在每个主题后有一个状态属性,用于显示该主题是否开启。而每一个主题都是一个超链接,点击超链接可以查看此主题的详细信息以及进入投票等。实现这个功能其实很简单,我是遍历了一遍topic表,并将所有主题以超链接的形式输出,每个主题的超链接是带着该主题的主题号链接到一个servlet的,通过这个servlet进行数据库的访问,将该主题号的所有选项输出,这样就可以看到每个主题的选项以及相应的信息。核心代码如下:
<% if(session.getAttribute("username")!=null) session.removeAttribute("username"); Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/vote"; Connection conn = DriverManager.getConnection(url,"root","root"); Statement stmt = conn.createStatement(); String sql = "select topic_id,topic_name,status from topic"; ResultSet rs = stmt.executeQuery(sql); int i = 1; out.print("<p><table border='5'>"); while(rs.next()){ out.print("<tr>"); int topic_id = rs.getInt( |