计算机专业课程设计在线投票系统.docx

上传人:说****呢 文档编号:88250532 上传时间:2023-04-24 格式:DOCX 页数:16 大小:63.61KB
返回 下载 相关 举报
计算机专业课程设计在线投票系统.docx_第1页
第1页 / 共16页
计算机专业课程设计在线投票系统.docx_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《计算机专业课程设计在线投票系统.docx》由会员分享,可在线阅读,更多相关《计算机专业课程设计在线投票系统.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 - -myeclipse、jSP,数据库开发环境1、开发环境 MyEclipse 简介MyEclipse 企业级工作平台MyEclipse Enterprise Workbench ,简称MyEclipse 是对 Eclipse IDE 的扩展,利用它我们可以在数据库和 J2EE 的开发、公布,以及应用程序效劳器的整合方面极大的提高工作效率。构造上,MyEclipse 的特征分为 7 类:1. J2EE 模型2. WEB 开发工具3. EJB 开发工具4. 应用程序效劳器的连接器5. J2EE 工程部署效劳6. 数据库效劳7. MyEclipse 整合帮助2、需求分析本系统是一个简洁的投票系

2、统,主要供给以下功能:系统首页上显示全部投票选项的列 表,用户可以通过选中某个选项并点击“投票”按钮进展投票操作。另外,还供给查看投票具体信息的超链接,用户点击后可在另一页面上看到各个投票选工程前的投票状况,主要包括各选项所得的票数、占总票数的百分比等信息,并且以柱形图显示各选项的得票率,可以让用户从直观上看到各项的得票状况3、系统设计4、设计1开发平台:Microsoft Windows XP Professional 版本 2023 Service Pack 3开发工具:MyEclipse 在线投票系统功能:功能 1:投票功能 2:查看投票功能 3:对同一 IP 地址的用户重复投票的限制2

3、实现该系统可划分为三个模块:显示投票选项,参与投票和显示投票结果。下面来分别介绍。投票界面:- -4.2.1 数据表的设计本系统设计了两张表,表 tb-temp 保存投票用用户信息,表 tb-vote 保存投票选项信息。表 tb-temp字段名数据类型字段大小是否为主键IdInt4是VoteipChar20VotemselBigint8VotetimeChar表 tb-vote50字段名数据类型字段大小是否为主键IdSmallint2是Vote_titleChar50Vote_numInt4Vote_orderSmallint2值 javabean的设计建一个值 JavaBean 用来封装存储

4、表 tb-temp 中的投票选项信息,代码如下:package com.yxq.valuebean;public class VoteSingle private String id;/存儲選項ID- -private String title;/存儲選項標題private String num;/存儲選項所得票數private String order;/存儲選項的排列序號public String getId return id;public void setId(String id) this.id = id;public String getNum return num;public

5、void setNum(String num) this.num = num;public String getOrder return order;public void setOrder(String order) this.order = order;public String getTitle return title;public void setTitle(String title) this.title = title;同样建另一个值 JavaBean 用来封装存储表 tb-vote 中的信息:package com.yxq.valuebean;public class Temp

6、Single private String id;/存儲投票用戶ID private String voteIp ;/存儲投票用戶IP private long voteMSEL ;/存儲毫秒數private String voteTime ;/存儲yyyy-MM-dd HH :mm :ss形式的時間public long getVoteMSEL return voteMSEL ;public void setVoteMSEL( long voteMSEL) this.voteMSEL = voteMSEL; - -public String getVoteTime return voteTi

7、me ;public void setVoteTime(String voteTime) this.voteTime = voteTime;public String getId return id;public void setId(String id) this.id = id;public String getVoteIp return voteIp ;public void setVoteIp(String voteIp) this.voteIp = voteIp;数据库操作类的编写对于查看投票内容,参与投票和显示结果的操作,都涉及了数据库的操作。这些操作在一个DB 类中实现,具体代码

8、入下: 定义属性及构造方法package com.yxq.toolbean;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List;import com.yxq.valuebean.TempSingle; import com.yxq.valuebean.VoteSingle;public class DB private St

9、ring className;/存儲數據庫驅動類路徑private String url;/存儲數據庫 URLprivate String username;/存儲登陸數據庫的用戶名 - -private String password;/存儲登陸數據庫的密碼private Connection con;/聲明一個 Connection 對象private Statement stm;/ 聲明一個Statement 對象用來執行 SQL 語句private ResultSet rs;/聲明一個 ResultSet 對象用來存儲結果集public DB /通過構造方法為屬性賦值className

10、 = “org.apache.derby.jdbc.ClientDriver“; url = “jdbc:derby:/localhost:1527/myeclipse“; username = “classiccars“;password = “classiccars“;/* 功能 加载数据库驱动程序*/public void loadDrive try Class.forName(className);/加載數據庫驅動程序 catch (ClassNotFoundException e) System.out.println(“加载数据库驱动程序失败!“);e.printStackTrac

11、e;/向掌握臺輸出提示信息/*猎取数据库连接* 功能*/public void getCon loadDrive; /加載數據庫驅動程序try con = DriverManager.getConnection(url, username, password);/獲取連接 catch (Exception e) System.out.println(“连接数据库失败!“); e.printStackTrace;/* 功能 猎取 Statement 对象*/public void getStm - -getCon;/獲取數據庫連接try stm = con.createStatement;/獲取

12、Statement 類對象 catch (Exception e) System.out.println(“猎取 Statement 对象失败!“); e.printStackTrace;/* 功能 查询数据表,猎取结果集*/public void getRs(String sql) getStm;try rs = stm.executeQuery(sql);/ 執行SQL 語句查詢數據表獲取結果集 catch (Exception e) System.out.println(“查询数据库失败!“); e.printStackTrace;/* 功能 查询数据表,猎取投票选项*/public L

13、ist selectVote(String sql) List votelist = null;if (sql != null & !sql.equals(“) getRs(sql);/查詢數據表獲取結果集if (rs != null) votelist = new ArrayList; try while (rs.next) /依次將結果集中的记录封装到 VoteSingle 类对象中VoteSingle voteSingle = new VoteSingle; voteSingle.setId(MyTools.intToStr(rs.getInt(1); voteSingle.setTit

14、le(rs.getString(2); voteSingle.setNum(MyTools.intToStr(rs.getInt(3);voteSingle.setOrder(MyTools.intToStr(rs.getInt(4); votelist.add(voteSingle);/将 VoteSingle 类对象存储到 List 集合中 catch (Exception e) System.out.println(“封装 tb_vote 表中数据失败!“); e.printStackTrace; finally - -closed;/关闭 数据库return votelist;/* 功

15、能 查询数据表,猎取指定 IP 最终一次投票的记录*/public TempSingle selectTemp(String sql) TempSingle tempSingle = null;if (sql != null & !sql.equals(“) getRs(sql);/查询数据表猎取结果集if (rs != null) try while (rs.next) /假设该结果集中有记录,说明当前用户投过票tempSingle = new TempSingle; tempSingle.setId(MyTools.intToStr(rs.getInt(1); tempSingle.set

16、VoteIp(rs.getString(2); tempSingle.setVoteMSEL(rs.getLong(3); tempSingle.setVoteTime(rs.getString(4); catch (Exception e) System.out.println(“封装 tb_temp 表中数据失败!“); e.printStackTrace; finally closed;/关闭数据库return tempSingle;/返回 TempSingle类对象中/* 功能 更数据表,实现票数累加*/public int update(String sql) int i = -1;

17、if (sql != null & !sql.equals(“) getStm;/猎取Statement 类对象try i = stm.executeUpdate(sql);/执行 SQL 语句更数据表 catch (Exception e) - -System.out.println(“更数据库失败!“); e.printStackTrace; finally closed;return i;/* 功能 关闭数据库连接*/public void closed try if (rs != null)rs.close;/关闭结果集if (stm != null)stm.close;/ 关闭Sta

18、tement 类对象if (con != null)con.close;/ 关闭数据库连接 catch (Exception e) System.out.println(“关闭数据库失败!“); e.printStackTrace;4.2.4 工具类的编写该系统涉及了类型的转换,计算时间差等操作,这些操作在一个类中实现,这样可以实现代码的重复使用。该工具类为 mytools,代码如下:package com.yxq.toolbean;import java.text.SimpleDateFormat; import java.util.Date;public class MyTools /*

19、功能 将 int 型数据转换为 String 型数据* 参数 num 为要转换的 int 型数据* 返回值 String 类型*/public static String intToStr(int num) return String.valueOf(num); - -/* 功能 比较时间。* 参数 today 当前时间,temp 为上次投票时间。这两个参数都是以毫秒显示的时间* 返回值 String 类型*/public static String compareTime(long today,long temp)int limitTime=60;/设置限制时 间为 60分钟long cou

20、nt=today-temp;/计算当前时间与上次投票时间相差的毫秒数(该结果肯定是大于等于 0) if(count=limitTime*60*1000)/假设相差小于等于 60 分钟(1 分=60 秒,1 秒=1000 毫秒) return “no“;else/假设相差大于 60 分钟/*return “yes“;* 功能 格式化时间为指定格式。首先通过 Date 类的构造方法依据给出的毫秒数猎取一个时间,然后将该时间转换为指定格式,如“年-月-日 时:分:秒“* 参数 ms 为毫秒数* 返回值 String 类型*/public static String formatDate(long m

21、s) Date date=new Date(ms);SimpleDateFormatformat=newSimpleDateFormat(“yyyy-MM-dd HH:mm:ss“);String strDate=format.format(date);return strDate;显示投票选项的设计当用户访问首页面后,单击“参与投票”就会进入 vote.jsp 页面显示投票选项,在该页面中先要查询 tb_vote 数据表猎取全部的投票选项,然后逐一显示投票选项的标题在线投票没有选项可显示!%int i=0;while(iinput type=“radio“ name=“ilike“ valu

22、e=“票!i+;/while 完毕留意事项:1小时内只能投一次           &nb sp;- -参与投票的设计%String mess=“;/用来保存提示信息String selectId=request.getParameter( “ilike“ );if(selectId= null|selectId.equals( “)选项/猎取用户选择/没有选择投票mess=“请选择投票!“;elseboolean mark= false;投票的标志/选择了投票选项/是否允许long

23、today=( new Date).getTime;/new Date 猎取当前时间,通过调用Date类的getTime 方法猎取从1970年1月1 日00:00:00 起到当前时间的毫秒数long last=0;/上次投票的时间(以毫秒显示)String ip=request.getRemoteAddr;用户IP地址/猎取String sql=“SELECT * FROM app.tb_temp WHERE voteMSEL = (SELECT MAX(voteMSEL) FROM tb_temp WHERE voteIp=”“ +ip+“”)“; /SQL语句,功能:从数据表中猎取当前用户

24、上次投票时的记录TempSingle single=myDb.selectTemp(sql);if(single= null) tb_temp 表中不存在当前IPmark=true;投票else推断从上次投票到现在是否超过指定时间,本系统指定为 60分钟last=single.getVoteMSEL;JavaBean 中猎取上次投票的时间( 以毫秒显示)String result=MyTools pareTime(today,last);将现在时间与上次投票时的时间进展比较if(result.equals( “yes“)/在/允许/存在当前IP,则/从该/- -返回“yes“,表示时间差已超过

25、 60分钟,允许投票mark=true;else/否则,不允许投票mark=false;String strTime=MyTools.formatDate(today);前投票时间(以毫秒显示的)转为“ 年-月-日 时: 分:秒“ 的形式if(mark)/* 【1】记录用户IP和投票时间 */ sql=“insert into tb_tempvalues(”“ +ip+“”,”“+today+ “”,”“+strTime+ “”)“;int i=myDb.update(sql);/将当/允许投票IP失败IP成功/* 【2】推断记录用户IP是否成功 */if(i0)mess=“投票生效! “ ;

26、else/更失败elsemess=“投票失败!“;/不允许投票mess=“对不起,通过推断您的IP,您已经投过票了! 上次投票时间: “+single.getVoteTime+ “60 分钟之内不允许再进展投票! “;session.setAttribute( “mess“ ,mess);到session 范围内response.sendRedirect( “messages.jsp“ );到messages.jsp 页面,进展提示%/保存提示信息/将恳求重定向- -查看结果的设计先编写猎取投票选项代码: 显示投票结果代码在线投票没有选项可显示!%else int i=0;while(i 票   没有选项可显示!%/计算图片长度else int i=0;while(iimg src=“images/count.jpg“ width=“ height =“15“ alt=“影片:“- -%

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁