在线投票系统课程设计报告材料文档格式.docx
- 文档编号:7186934
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:33
- 大小:51.47KB
在线投票系统课程设计报告材料文档格式.docx
《在线投票系统课程设计报告材料文档格式.docx》由会员分享,可在线阅读,更多相关《在线投票系统课程设计报告材料文档格式.docx(33页珍藏版)》请在冰点文库上搜索。
决策者通过这些统计数据做出相应的决策。
在线投票系统是一般网站必备的程序之一,如果网站开发者想了解用户对该网站的意见和建议。
他可以设计这样一个投票主题:
你认为该网站如何?
(A.很好
B.一般C.不好)然后提供给用户进行投票
二、开发环境
开发环境MyEclipse简介
MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。
在结构上,MyEclipse的特征可以被分为7类:
1.J2EE模型
2.WEB开发工具
3.EJB开发工具
4.应用程序服务器的连接器
5.J2EE项目部署服务
6.数据库服务
7.MyEclipse整合帮助
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。
MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。
三、需求分析
随着科学技术的不断提高,计算机科学日渐成熟,互联网技术的不断发展和普及,众多高校,科研机构及个人从理论与实践两个方面进行了大量的研究与开发工作,涌现出了很多在线投票系统,对学院、企业的管理起到了很好的作用。
总之投票系统概括起来就是要通过科学的管理手段和专业化管理技术来实现统一。
本系统是一个简单的投票系统,主要提供以下功能:
系统首页上显示所有投票选项的列表,用户可以通过选中某个选项并点击“投票”按钮进行投票操作。
另外,还提供查看投票详细信息的超链接,用户点击后可在另一页面上看到各个投票选项目前的投票情况,主要包括各选项所得的票数、占总票数的百分比等信息,并且以柱形图显示各选项的得票率,可以让用户从直观上看到各项的得票情况
投票系统主要是为用户提供一个方便易用的投票界面,同时还具有查看投票、投票选项的功能。
投票系统主要需要实现以下一些基本功能:
1.投票:
用户在投票系统首页上可以通过选中每个投票项前面的单选按钮并单击“投票”按钮来进行投票。
2.查看投票情况:
用户在投票系统首页上可以通过点击“查看投票”超链接来查看当前的最新投票情况,包括各投票项的得票数、得票率等。
二、正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。
正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。
)
4.1概要设计
1)开发平台:
MicrosoftWindowsXPProfessional版本2002ServicePack3
开发工具:
MyEclipse
在线投票系统功能:
功能1:
投票
功能2:
查看投票
功能3:
对同一IP地址的用户重复投票的限制
功能4:
管理员功能,实现发布新问题,删除主题,查看所有主题投票统计,修改统计结果。
2)实现该系统可划分为三个模块:
显示投票选项,参与投票和显示投票结果。
下面来分别介绍。
投票界面:
4.2详细设计:
4.2.1数据表的设计
本系统设计了两张表,表tb-temp保存投票用用户信息,表tb-vote保存投票选项信息。
表tb-temp
字段名
数据类型
字段大小
是否为主键
Id
Int
4
是
Voteip
Char
20
Votemsel
Bigint
8
Votetime
50
表tb-vote
Smallint
2
Vote_title
Vote_num
Vote_order
4.2.2值javabean的设计
建一个值JavaBean用来封装存储表tb-temp中的投票选项信息,代码如下:
packagecom.yxq.valuebean;
publicclassVoteSingle{
privateStringid;
//存儲選項ID
privateStringtitle;
//存儲選項標題
privateStringnum;
//存儲選項所得票數
privateStringorder;
//存儲選項的排列序號
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
publicStringgetNum(){
returnnum;
publicvoidsetNum(Stringnum){
this.num=num;
publicStringgetOrder(){
returnorder;
publicvoidsetOrder(Stringorder){
this.order=order;
publicStringgetTitle(){
returntitle;
publicvoidsetTitle(Stringtitle){
this.title=title;
}
同样建另一个值JavaBean用来封装存储表tb-vote中的信息:
publicclassTempSingle{
//存儲投票用戶ID
privateStringvoteIp;
//存儲投票用戶IP
privatelongvoteMSEL;
//存儲毫秒數
privateStringvoteTime;
//存儲yyyy-MM-ddHH:
mm:
ss形式的時間
publiclonggetVoteMSEL(){
returnvoteMSEL;
publicvoidsetVoteMSEL(longvoteMSEL){
this.voteMSEL=voteMSEL;
publicStringgetVoteTime(){
returnvoteTime;
publicvoidsetVoteTime(StringvoteTime){
this.voteTime=voteTime;
publicStringgetVoteIp(){
returnvoteIp;
publicvoidsetVoteIp(StringvoteIp){
this.voteIp=voteIp;
4.2.3数据库操作类的编写
对于查看投票内容,参与投票和显示结果的操作,都涉及了数据库的操作。
这些操作在一个DB类中实现,具体代码入下:
定义属性及构造方法
packagecom.yxq.toolbean;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.Statement;
importjava.sql.ResultSet;
importjava.util.ArrayList;
importjava.util.List;
importcom.yxq.valuebean.TempSingle;
importcom.yxq.valuebean.VoteSingle;
publicclassDB{
privateStringclassName;
//存儲數據庫驅動類路徑
privateStringurl;
//存儲數據庫URL
privateStringusername;
//存儲登陸數據庫的用戶名
privateStringpassword;
//存儲登陸數據庫的密碼
privateConnectioncon;
//聲明一個Connection對象
privateStatementstm;
//聲明一個Statement對象用來執行SQL語句
privateResultSetrs;
//聲明一個ResultSet對象用來存儲結果集
publicDB(){//通過構造方法為屬性賦值
className="
org.apache.derby.jdbc.ClientDriver"
;
url="
jdbc:
derby:
//localhost:
1527/myeclipse"
username="
classiccars"
password="
/**
*@功能加载数据库驱动程序
*/
publicvoidloadDrive(){
try{
Class.forName(className);
//加載數據庫驅動程序
}catch(ClassNotFoundExceptione){
System.out.println("
加载数据库驱动程序失败!
"
);
e.printStackTrace();
//向控制臺輸出提示信息
}
/**获取数据库连接
*@功能
publicvoidgetCon(){
loadDrive();
con=DriverManager.getConnection(url,username,password);
//獲取連接
}catch(Exceptione){
连接数据库失败!
*@功能获取Statement对象
publicvoidgetStm(){
getCon();
//獲取數據庫連接
stm=con.createStatement();
//獲取Statement類對象
获取Statement对象失败!
*@功能查询数据表,获取结果集
publicvoidgetRs(Stringsql){
getStm();
rs=stm.executeQuery(sql);
//執行SQL語句查詢數據表獲取結果集
}catch(Exceptione){
查询数据库失败!
*@功能查询数据表,获取投票选项
publicListselectVote(Stringsql){
Listvotelist=null;
if(sql!
=null&
&
!
sql.equals("
)){
getRs(sql);
//查詢數據表獲取結果集
if(rs!
=null){
votelist=newArrayList();
try{
while(rs.next()){//依次將結果集中的记录封装到VoteSingle类对象中
VoteSinglevoteSingle=newVoteSingle();
voteSingle.setId(MyTools.intToStr(rs.getInt
(1)));
voteSingle.setTitle(rs.getString
(2));
voteSingle.setNum(MyTools.intToStr(rs.getInt(3)));
voteSingle.setOrder(MyTools.intToStr(rs.getInt(4)));
votelist.add(voteSingle);
//将VoteSingle类对象存储到List集合中
}
}catch(Exceptione){
System.out.println("
封装tb_vote表中数据失败!
e.printStackTrace();
}finally{
closed();
//关闭数据库
}
}
returnvotelist;
*@功能查询数据表,获取指定IP最后一次投票的记录
publicTempSingleselectTemp(Stringsql){
TempSingletempSingle=null;
//查询数据表获取结果集
while(rs.next()){//若该结果集中有记录,说明当前用户投过票
tempSingle=newTempSingle();
tempSingle.setId(MyTools.intToStr(rs.getInt
(1)));
tempSingle.setVoteIp(rs.getString
(2));
tempSingle.setVoteMSEL(rs.getLong(3));
tempSingle.setVoteTime(rs.getString(4));
封装tb_temp表中数据失败!
//关闭数据库
returntempSingle;
//返回TempSingle类对象中
*@功能更新数据表,实现票数累加
publicintupdate(Stringsql){
inti=-1;
getStm();
//获取Statement类对象
try{
i=stm.executeUpdate(sql);
//执行SQL语句更新数据表
}catch(Exceptione){
System.out.println("
更新数据库失败!
e.printStackTrace();
}finally{
closed();
returni;
*@功能关闭数据库连接
publicvoidclosed(){
=null)
rs.close();
//关闭结果集
if(stm!
stm.close();
//关闭Statement类对象
if(con!
con.close();
//关闭数据库连接
关闭数据库失败!
4.2.4工具类的编写
该系统涉及了类型的转换,计算时间差等操作,这些操作在一个类中实现,这样可以实现代码的重复使用。
该工具类为mytools,代码如下:
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassMyTools{
*@功能将int型数据转换为String型数据
*@参数num为要转换的int型数据
*@返回值String类型
publicstaticStringintToStr(intnum){
returnString.valueOf(num);
/**
*@功能比较时间。
*@参数today当前时间,temp为上次投票时间。
这两个参数都是以毫秒显示的时间
*@返回值String类型
publicstaticStringcompareTime(longtoday,longtemp){
intlimitTime=60;
//设置限制时间为60分钟
longcount=today-temp;
//计算当前时间与上次投票时间相差的毫秒数(该结果一定是大于等于0)
if(count<
=limitTime*60*1000)//如果相差小于等于60分钟(1分=60秒,1秒=1000毫秒)
return"
no"
else//如果相差大于60分钟
yes"
*@功能格式化时间为指定格式。
首先通过Date类的构造方法根据给出的毫秒数获取一个时间,然后将该时间转换为指定格式,如"
年-月-日时:
分:
秒"
*@参数ms为毫秒数
publicstaticStringformatDate(longms){
Datedate=newDate(ms);
SimpleDateFormatformat=newSimpleDateFormat("
yyyy-MM-ddHH:
mm:
ss"
StringstrDate=format.format(date);
returnstrDate;
4.2.5显示投票选项的设计
当用户访问首页面后,单击“参与投票”就会进入vote.jsp页面显示投票选项,在该页面中先要查询tb_vote数据表获取所有的投票选项,然后逐一显示投票选项的标题
<
%@pagecontentType="
text/html;
charset=UTF-8"
%>
%@pageimport="
java.util.List"
%>
com.yxq.valuebean.VoteSingle"
jsp:
useBeanid="
myDb"
class="
com.yxq.toolbean.DB"
/>
<
!
--创建一个DB类对象-->
%
response.addHeader("
Pragma"
"
No-cache"
Cache-Control"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在线 投票 系统 课程设计 报告 材料
![提示](https://static.bingdoc.com/images/bang_tan.gif)