投票系统程序设计论文.docx
- 文档编号:6860621
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:14
- 大小:305.48KB
投票系统程序设计论文.docx
《投票系统程序设计论文.docx》由会员分享,可在线阅读,更多相关《投票系统程序设计论文.docx(14页珍藏版)》请在冰豆网上搜索。
投票系统程序设计论文
投票系统java设计论文
摘要
网络已经深入到日常工作和生活方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。
Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。
然而,虽然现在世界上已经充满了花样繁多的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。
作为一名学生,在系统的学习了Java语言之后,用它编了一些小程序。
这次课程设计,我就想将学过的Java语言中的各种技术综合起来,编写一个测评系统,既对自己学过的技能进行一次检验,也能系统地将学过的知识复习巩固。
【关键词】Java语言;MyEclipse;设计流程
目录
第一章概述3
1.1编程语言3
1.1.1java语言介绍3
1.1.2java语言的优点4
1.2java开发平台5
1.2.1java的开发环境5
1.2.2java的编辑环境6
1.2.3java的运行环境7
第二章需求分析8
2.1测评系统设计的原因8
2.2.1系统的特点及规则8
2.2.2操作界面需求10
2.2.3用户端程序流程11
3.1重点模块分析:
13
3.2设计流程19
第四章结论21
参考文献22
致谢23
投票系统java设计论文
第一章概述
本文使用功能强大的MyEclipse开发工具和java开发语言开发出一款拥有自己特色的五子棋小程序,其中MyEclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,MyEclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
1.1编程语言
1.1.1java语言介绍
现代技术的发展,尤其是网络技术,给现代企业带来了许多新的机遇和挑战,如改善客户服务、全球化和信息检索等,这些在技术上反映为信息的获取、系统管理、系统集成、新技术的开发、Internet、Intranet等等与商业的结合。
而这些要求一个随处可用的开放的结构和在不同的平台之间低成本的信息传递方式,Java正好满足这些要求。
Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。
用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:
跨平台、动感的Web、Internet计算。
从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Javaapplet。
另一方面,Java技术也不断更新。
Java平台由Java虚拟机(JavaVirtualMachine)和Java应用编程接口(ApplicationProgrammingInterface、简称API)构成。
Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。
现在Java平台已经嵌入了几乎所有的操作系统。
这样Java程序可以只编译一次,就可以在各种系统中运行。
Java应用编程接口已经从1.1.x版发展到1.2版。
目前常用的Java平台基于Java1.2。
Java语言是一个支持网络计算的面向对象程序设计语言。
Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。
1.1.2java语言的优点
(1)面向对象
Java提供了简单的类机制和动态的构架模型。
对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。
(2)多线程
多线程使应用程序可以同时进行不同的操作,处理不同的事件。
在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。
(3)兼容性
Java的设计使它适合于一个不断发展的环境。
在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。
并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。
(4)安全性
用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
(5)可移植性
与平台无关的特性使Java程序可以方便地被移植到网络上的不同机器。
同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。
另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有可移植性。
1.2java开发平台
1.2.1java的开发环境
Java是由Sun微系统公司所发展出来的程序语言,它本身是一种对象导向(Object-Oriented)的程序语言。
JAVA目前在手机上应用最多的就是JAVA游戏。
Java也号称是能跨平台使用的语言,这主要是因为Java本身被编译之后,并不是直接产生可执行的码,而是产生一种中间码叫作ByteCode,这种码必需在透过Java的直译器来解读它,才能够真正的被执行,所以只要平台上装有这种Java的直译器,就能解读ByteCode也就能执行Java编译过的程序,故与Java程序是在哪种平台上被编译的,就完全没有关系了。
Java写出来的程序可分为两类,分别是JavaApplet与一般的Application,而Application这一类就与一般的程序如C++的作用是比较类似的,是一个独立可执行的应用程序,像HotJava是一个浏览器,且就是使用Java程序所开发出来的。
最常见的Java程序包括应用程序和applets。
应用程序是单独的程序,诸如HotJava浏览器软件就是用Java语言编写的。
Applets类似于应用程序,但是它们不能单独运行,Applets可以在支持Java的浏览器中运行。
Applet主要是内置于HTML网页中,在浏览时发挥作用。
1.2.2java的编辑环境
(一)用功能强大的开源工具MyEclipse来开发,相对较为方便,MyEclipse比较通用,而且支持很多插件。
(二)Java主要是利用文本编辑器来完成程序设计的编辑工作,可以使用各种文本编辑器来编写,例如:
记事本、Editplus和UltraEdit软件等都可以用来实现。
用记事本编写过程很简单,只需要带开记事本在里面编写代码几可以了。
用Editplus软件配置JAVA编辑环境:
1:
打开Editplus,选择"工具->参数选择"在弹出的窗口中选择"用户工具";
2:
点组名称,将"组1"改成别的名称(当然不改也可以);点"添加工具->应用程序";菜单文件选项可写"Java编译",在命令中选择JDK的javac.exe,是在JDK的目录下的bin目录下;参数在下拉菜单中选择"文件名",初始目录在下拉菜单中选择"文件目录";在"捕获输出"前打勾,这就完成了"Java编译"的配置.
3:
再点"添加工具->应用程序";菜单文件选项可写"Java运行",在命令中选择JDK的java.exe.参数在下拉菜单中选择"文件名(不含扩展名)",初始目录在下拉菜单中选择"文件目录";在"捕获输出"前打勾,完成了"Java编译"的配置.配置完成了,写一个"HelloWorld"来测试一下.只要按快捷键"Ctrl+1",是对当前打开的文件进行编译;只要按快捷键"Ctrl+2",是运行当前文件.
(三)Jbulder也是java一款开发工具,功能更全面,而且操作好多都是即见即所得的,就想VB一样方便快捷,不过它是一款收费软件,所以不是一些大公司一般不会使用它来作为java的开发工具。
1.2.3java的运行环境
通常一个程序运行的平台是一个硬件或者软件运行的环境。
目前比较流行的是Windows2000,Linux,Solaris,和MacOS。
Java的平台不太一样,它由两个部分组成:
一个是JavaVirtualMachine即Java虚拟机,另一部分是JavaApplicationProgrammingInterface(JavaAPI)即Java应用程序设计接口,这两部份软件就构成了Java运行的基本的环境。
JavaAPI是一个大的已经做好的软件集合,这个集合里有许多开发时所需要的控件,用来辅助开发。
JavaAPI和JVM整合在一起处于机器硬件之上。
也就是说,Java平台把一个Java应用程序从硬件系统分离开从而很好的保证了程序的独立性。
为了更好的适应开发的需要,Java的设计者们为我们提供了三种Java平台:
Java2MicroEdition(J2ME),Java2StandardEdition(J2SE)和Java2EnterpriseEdition(J2EE).每一个版本都提供了丰富的开发工具箱以适应不同的开发需要。
第二章需求分析
2.1测评系统设计的原因
本次编写的测评系统是同过对学院的具体情况做了了解后设计的,学院目前采用的测评过程是一种传统的手工测评,在整个过程中不仅要耗费大量的人力,换需要使用过多的纸张,而且更为麻烦的是当测评结束后将会有海量的数据等待人工完成统计(据调查,需要使用三个人加两台笔记本统计三个工作日),还不能保证数据完全正确,鉴于以上这种情况,通过调查后开发设计的这套测评系统可使管理员只花费几分钟时间将服务端配置好后,将客户端发给参与投票的用户即可,用户端使用拿到的用户端和管理员分配的用户名及密码即可登录系统完成投票,在最终统计结果时可以利用系统自带的统计工具完成自动计算得分、自动生成结果报表等。
整个操作流程简单,统计的数据准确度高。
2.2.1系统的特点及规则
系统最突出的特点为:
对于管理员来说配置方便,数据统计迅速、准确;对于用户来说:
投票数据保密,操作简单,主程序为轻量级设计占用系统资源少等。
系统规则:
(1)对于管理员来说:
系统只允许存在一个管理员
系统只允许管理员执行一次自动创建数据库及数据库表单
系统只允许管理员在系统之内合法操作数据库,在后台中的数据库虽然管理员可以去看系统所用的数据库以及表单,但是保存在数据库中的数据全部是通过加密算法运算后保存的,只有系统在读取时才会自动逆向运算
●对于一些关键性的操作系统均给予了二次明确提示
●管理员配置服务端的顺序必须严格按照配置说明走
●管理员必须将要发给用户的文件中的配置文件做相应的配置
●服务器必须运行在windowsserver2003/2008等服务器中
●必须安装JDBC驱动
●必须安装SQLServer2000数据库的SP4补丁包(即必须开放1433端口)
●服务端IP地址必须是固定的
(2)对于用户来说
●用户必须保证自己的计算机支持java应用程序,一般来说在拿到用户端后都要先安装随用户端一起发放的jre指令包
●不允许用户主动退出系统,登陆成功后必须完成投票程序才会主动退出
●不允许用户端多次登陆,每个用户名只可以登陆一次系统
●用户端可以用任意一款操作系统完成投票
●用户的网络要稳定
2.2.2操作界面需求
用户端操作界面如下所示,登陆所需的服务器IP地址由配置文件夹中的ipconfig.dbox文件控制(此文件由管理员进行配置)
2.2.2-1用户端操作界面
在输入用户名及密码点击进入后会有提示弹出是否登陆成功
2.2.2-2提示是否登陆成功
2.2.2-3验证通过后会弹出主界面
主界面的设计完全考虑了不同的用户,它使用动态数据,可以根据用户此时运行程序电脑的屏幕自动确定位置,不管你使用的是800*600的屏幕还是1366*768的,全部都可以自适应。
2.2.3用户端程序流程
s
2.2.3-1流程图
2.2.3-2服务端程序流程
主界面中也是又大量动态组件控制的菜单,而且各种菜之前都会互相有制约,由于过于复杂,不做图示。
在这里主要说一下界面位置自适应的功能实现,代码如下:
服务端
Toolkittool=Toolkit.getDefaultToolkit();//获取工具箱
Dimensionpingmu=tool.getScreenSize();
login.setBounds(pingmu.width/3,(int)pingmu.getHeight()/5,400,300)
这几行代码就实现了屏幕界面自适应的功能,采用两次二维定位法,第一次二维定位决定了登陆界面O点相对于运行本程序机器屏幕的位置,第二次二维定位决定了窗体本身的大小。
用户端的定位方式类似,只是与服务端的算法略有不同。
3.1重点模块分析:
系统可以自动进行得分统计,统计后的数据可以经过SQL查询语句后动态的根据查询结果自动生成界面,此界面实现的实现:
packageserver;
importjava.sql.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
publicclassquanjujieguojibaobiaoextendsJFrame
{
privatestaticfinallongserialVersionUID=1L;
privateConnectionconnection;
//数据库变量定义
privateStatementstatement;
privateResultSetresultSet;
privateJTabletable;
staticJTextAreaarea;
publicstaticStringtest;
staticToolkittool=Toolkit.getDefaultToolkit();//获取工具箱
staticDimensionpingmu=tool.getScreenSize();
@SuppressWarnings("deprecation")
publicquanjujieguojibaobiao()
{
finalJFramef=newJFrame();
try{
Class.forName(DBsql.DBclassname);//加载JDBC数据驱动
connection=DriverManager
.getConnection(DBsql.url,DBsql.user,DBsql.password);
}catch(ClassNotFoundExceptioncnfex)
{
JOptionPane.showMessageDialog(null,"生成全局结果报表时装载JDBC驱动程序失败。
");
}catch(SQLExceptionsqlex)
{
JOptionPane.showMessageDialog(null,"生成全局结果报表时连接数据库失败。
");
}
area=newJTextArea(test,1,30);
area.setFont(newFont("",Font.BOLD,14));
JPaneltopPanel=newJPanel();
topPanel.setLayout(newBorderLayout());//创建布局界面
table=newJTable();
Containerct=getContentPane();
ct.setLayout(newBorderLayout());
ct.add(topPanel,BorderLayout.NORTH);
ct.add(table,BorderLayout.CENTER);
getTable();
setSize(400,300);
f.add(ct);
f.setEnabled(true);
f.setTitle("报表");
f.setBounds(0,200,pingmu.width,400);
f.show();
f.addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{
f.dispose();
}
});
}
privatevoidgetTable()
{
try{
Stringquery=area.getText();//从文本域中获取内容
statement=connection.createStatement();
resultSet=statement.executeQuery(query);//执行SQL语句
QueryResultSet(resultSet);//显示查询结果
}catch(SQLExceptionsqlex)
{
sqlex.printStackTrace();
}
}
privatevoidQueryResultSet(ResultSetrow)throwsSQLException
{
booleanmoreRecords=row.next();//定位到第一条记录
if(!
moreRecords)
{//如果没有记录,则显示消息
JOptionPane.showMessageDialog(this,"无记录");
setTitle("无记录显示");
return;
}
Vector
Vector
try{
ResultSetMetaDatarsm=row.getMetaData();
for(inti=1;i<=rsm.getColumnCount();++i)
columnHeads.addElement(rsm.getColumnName(i));//获取字段的名称
do{
vec.addElement(getNextRow(row,rsm));//获取记录集
}while(row.next());
//显示查询结果
table=newJTable(vec,columnHeads);
JScrollPanescroller=newJScrollPane(table);
Containerc=getContentPane();
c.remove
(1);
c.add(scroller,BorderLayout.CENTER);
c.validate();
}catch(SQLExceptionsqlex)
{
sqlex.printStackTrace();
}
}
privateVector
throwsSQLException
{
Vector
for(inti=1;i<=rsm.getColumnCount();++i)
currentRow.addElement(row.getString(i));
returncurrentRow;//返回一条记录
}
publicvoiddisconnect()
{
try
{
connection.close();//关闭数据库连接
}catch(SQLExceptionsqlex)
{
JOptionPane.showMessageDialog(this,"关闭数据库连接失败"
代码中包含了大量的高级运算方法,比如集合对象(colletion)、泛型(generic)等,通过它们可以说以面向对象为基础,数据结构为辅助工具,让数据达到最有效率的操作。
泛型类型使用原始数据类型的wrapperclass。
而本类体中所需要的SQL语句又是由单独的类体封装后发送来的,可以说此类体可以根据不同的SQL语句而产生不同报表,其实在系统中有好多地方都调用了此类体,比如查看被投票人名单、查看投票人名单等,可以这样说,系统中凡是用来查询的命令,都是向此类体传递了一个SQL语句后由此类体动态的组织结果报表的,所以说这是一个很重要的类体。
在服务端设计共有11个主类(不包含各个父类的子类),它们之间均有联系,每个类有自己的功能,比如负责数据加密的类:
packageserver;
publicclassJiamisuanfa(由于涉及到核心的加密算法,所以具体的类体源代码不在此展示)
整个类体就只有这么几行,但是也是很核心的一部分,用户的投票数据都要通过它处理才会被保存到数据库、从数据库中读取到的密文也要经过它才会被系统显示出来,它是一个双向加密算法,给它密文它会将密文算为明文返回出来,给它明文它会将明文算为密文返回出来,也正是由于它的存在,才使得系统的加密机制得以实现。
3.2设计流程
3.2-1开发图
在MyEclipse中有两个包,分别是服务端的包和用户端的包,服务端包中共有11个类体,用户端包中共有4个类体,服务端中DBsql是一个连接数据库的类,fuwuqipeizhi是一个模板类,jiamisuanfa是一个加密类,jiyi是一个记忆类,LoginServerFrame是管理员登陆界面,quanjujieguojibaobiao是一个报表类,ServerFrame是服务端主界面类,tongji是一个自动数据计算类,Yanzhengma是一个系统前置检测类,也是服务端的主方法,zhuce是管理员注册类;用户端中denglu是用户登陆类,shuju是用来和服务端数据交换以及主界面中显示控制类,toupiao是投票主界面,Yanzhengmausesss是用户端前置检测类,也是用户端主类。
整个程序由很多个类,程序缺少哪一个类都不可能运行起来,他们都是相辅相成的,这也正是JAVA的面向对象编程的具体体现。
最终报表如下:
3.2-2测试数据
由于系统功能设计较为全面,很多功能比如加密后的数据、用户端投票控制等,鉴于篇幅原因不再展示,将系统在本机部署后即可进行测试,同时为了让管理员能够更好的使用此系统,对本系统的全程配置有一个清晰的了解,我还单独撰写了《管理员服务端配置说明》以及配置系统所用到的《SQLServer2000数据库配置说明》,他们也是本次毕业论文的一部分。
第四章结论
通过对本测评系统的编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 投票 系统 程序设计 论文