毕业设计论文基于CS模式的小型局域网考试系统(java)_第1页
毕业设计论文基于CS模式的小型局域网考试系统(java)_第2页
毕业设计论文基于CS模式的小型局域网考试系统(java)_第3页
毕业设计论文基于CS模式的小型局域网考试系统(java)_第4页
毕业设计论文基于CS模式的小型局域网考试系统(java)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计[论文]题目:基于C/S模式的小型局域网考试系统系别:专业:姓名:学号:指导教师:第1章绪论1.1设计背景随着计算机技术和网络技术的迅猛发展,计算机已经应用到各个领域。利用校园局域网在计算机上进行考试也越来越普遍。传统的考试从出卷、制卷、评卷、登分工作量极大,而且人工出卷和评卷容易受到教师主观因素的影响。网络考试利用计算机自动的出卷和评卷,大大的减轻了教师的工作量。Java语言作为一种网络编程语言,它具有面向对象、平台独立、多线程等特点,非常适合网络环境下开发应用程序。Java提供的Socket技术也大大的简化了原有的网络操作过程,使得网络应用程序在开发的时候不必再考虑网络底层的代码设计,大大的缩短了设计的时间。1.2设计的目的与意义为了适应新形势的发展,使其尽快在各类考试中发挥高效、便捷的作用,把老师从繁重的工作中解脱出来本次毕业设计我设计了一个简单的小型局域网考试系统——绿光考试系统。绿光考试系统旨在实现考试的无纸化管理,对一些科目的考试可以通过局域网(校园网)进行,方便校方考务的管理,也方便了考生。为了能使系统适应不同的操作系统,我选择了与平台无关的开发语言Java;为了实现考场监控等特色功能,我采用了C/S模式,因为B/S无法满足;为了保障系统通信,我采用了面向连接的TCP协议;为了让用户获得更方便的操作,我努力使系统最终无需安装即可使用,如通过对象序列化技术取代数据库、增加记忆功能等;为了能使系统容易扩展新的功能我采用优秀的设计模式进行系统架构。绿光考试系统以其出色的功能特性为老师和学生带来更高的工作和学习效率。1.3开发环境介绍1.3.1硬件环境编程工具:JDK+Eclipse+RationalRose+Visio机型:联想ThinkPadE40处理器名称:AMDAthlon(tm)IIP340Dual-CoreProcessor双核硬盘驱动器:WDCWD1600AAJS-22WAAO系统内存:金士顿内存2GB硬盘:希捷ST9320325AS(320GB)显示卡: ATIMobilityRadeonHD5400Series(1024MB)网卡:MicrosoftVirtualWiFiMiniportAdapter11b/g/nWirelessLANMini-PCIExpressAdapterIIRealtekPCIeGBEFamilyController显示器: 通用即插即用监视器操作系统:MicrosoftWindows7旗舰版ServicePack1(build7601),32-bit1.3.2软件环境1.EclipseEclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。[1]这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJava开发工具系列的基础。2.JDKJDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。3.RationalRoseRationalRose包括了统一建模语言(UML),OOSE,以及OMT。其中统一建模语言(UML)由Rational公司3位世界级面向对象技术专家GradyBooch、IvarJacobson、和JimRumbaugh通过对早期面向对象研究和设计方法的进一步扩展而得来的,它为可视化建模软件奠定了坚实的理论基础。同时这样的渊源也使RationalRose力挫当前市场上很多基于UML可视化建模的工具,例如Microsoft的Visio2002、Oracle的Designer2000,还有PlayCase、CABPWin、CAERWin、SybasePowerDesigner等等。RationalRose是一个完全的、具有能满足所有建模环境(Web开发,数据建模,VisualStudio和C++)灵活性需求的一套解决方案。Rose允许开发人员,项目经理,系统工程师和分析人员在软件开发周期内在将需求和系统的体系架构转换成代码,消除浪费的消耗,对需求和系统的体系架构进行可视化,理解和精练。通过在软件开发周期内使用同一种建模工具可以确保更快更好的创建满足客户需求的可扩展的、灵活的并且可靠的应用系统。RationalRose的两个受欢迎的特征是它的提供反复式发展和来回旅程工程的能力。RationalRose允许设计师利用反复发展(有时也叫进化式发展),因为在各个进程中新的应用能够被创建,通过把一个反复的输出变成下一个反复的输入。(这和瀑布式发展形成对比,在瀑布式发展中,在一个用户开始尝试之前整个工程被从头到尾的完成。)然后,当开发者开始理解组件之间是如何相互作用和在设计中进行调整时,RationalRose能够通过回溯和更新模型的其余部分来保证代码的一致性,从而展现出被称为"来回旅程工程"的能力,RationalRose是可扩展的,可以使用可下载附加项和第三方应用软件,它支持COM/DCOM(ActiveX),JavaBeans和Corba组件标准.4.MicrosoftOfficeVisio2007MicrosoftOfficeVisio2007便于IT和商务专业人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。使用具有专业外观的OfficeVisio2007图表,可以促进对系统和流程的了解,深入了解复杂信息并利用这些知识做出更好的业务决策。MicrosoftOfficeVisio帮助您创建具有专业外观的图表,以便理解、记录和分析信息、数据、系统和过程。大多数图形软件程序依赖于艺术技能。然而,在您使用Visio时,以可视方式传递重要信息就像打开模板、将形状拖放到绘图中以及对即将完成的工作应用主题一样轻松。使用OfficeVisio2007,可以通过多种图表,包括业务流程图、软件界面、网络图、工作流图表、数据库模型和软件图表等直观地记录、设计和完全了解业务流程和系统的状态。通过使用OfficeVisioProfessional2007将图表链接至基础数据,以提供更完整的画面,从而使图表更智能、更有用。第2章需求分析传统的学校教学中,进行一场考试,要求老师打印试卷、安排考试、监考、收集试卷、评改试卷,这是一个繁杂的过程,需要大量人力、物力与时间的投入,已经越来越不适应学校信息化建设与现代教学的需要。而网络考试系统,正是信息化建设的产物,它是传统考场的延伸,它可以利用计算机网络方便地对学生进行考试,大大简化传统考试的过程,因此网络考试是电子化教学的不可缺少的辅助手段。在当今信息时代,计算机技术与网络技术越来越广地应用于各个领域,改变着人们的学习、工作、生活乃至思维方式,也引起了教育领域的重大变革。将计算机与网络技术应用于现代高等教育中,是现代高等教育发展的需要,也是改革教育模式,提高学校教学效果和教学效率、提高科研和管理水平的必要手段。2.1系统可行性分析可行性分析是对现行系统进行初步调查和研究之后的结论,它反映了新系统开发策略。下面分别从社会可行性、技术可行性以及经济可行性三方面进行可行性分析。2.1.1社会可行性分析由于学校学生人数数量众多,因而通过电脑化操作可以减少纸张的使用,同时由于数据直接通过局域网传输,可以减少信息传递时间,提高效率,这个系统很大程度上方便了老师和学生。因此从社会可行性分析角度来说,该系统的开发和设计是可行的。2.1.2技术可行性分析本系统是一个基于C/S结构的小型局域网系统,采用面向对象技术、序列化技术、各种Java流行框架的应用等Java先进技术开发的应用程序,现有的开发技术已非常成熟,且被广泛应用于各行各业,利用现有技术完全可以达到功能目标。2.1.3经济可行性在经济上,本系统只是针对机房中小型局域网进行设计,旨在减轻教学压力。除此之外,在可扩充性方面,系统采用生命周期法把一个复杂的系统开发工作分解成一些相对独立的部分,可以分阶段实施,为以后的扩充提供方便,另外,系统开发时,充分考虑到,系统以后的可能扩展,因此对于二次开发,将会更加方便,也即是说,系统的适应性很强,可以长期使用。在很大程度上减轻了在考试方面的经济投入,节省一部分教育投入。根据分析研究,使用本套住院信息管理系统对于整个住院部门来说并不是一个很大的负担,因而在经济上是可行的。2.1.4可行性分析结论通过在社会、技术、经济三方面的可行性研究分析,发现系统的开发满足这三方面的要求,因此一致认为系统应该立即开发。2.2系统功能分析在局域网中的考试系统应该满足服务器端与客户端的通信,服务器端必须满足试卷录入、试卷发放、试卷评判、考试时间设置等功能;客户端应该满足在线答题、提交试卷等功能。第3章系统总体设计3.1系统设计原理系统采用C/S设计模式,运用Socket建立服务器与客户端的连接。服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。3.2技术设计方案3.2.1Java网络编程所谓socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。以J2SDK-1.3为例,Socket和ServerSocket类库位于包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。一个完整的socket有一个本地唯一的socket号,由操作系统分配。最重要的是,socket是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的socket系统调用。客户随机申请一个socket(相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个socket号;服务器拥有全局公认的socket,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。socket利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。服务器socket半相关为全局所公认非常重要。假如通信双方没有任何一方的socket固定,就好比打电话的双方彼此不知道对方的电话号码,要通话是不可能的。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。3.2.2Java对象的序列化对于一个存在Java虚拟机中的对象来说,其内部的状态只是保存在内存中。JVM退出之后,内存资源也就被释放,Java对象的内部状态也就丢失了。而在很多情况下,对象内部状态是需要被持久化的,将运行中的对象状态保存下来(最直接的方式就是保存到文件系统中),在需要的时候可以还原,即使是在Java虚拟机退出的情况下。

对象序列化机制是Java内建的一种对象持久化方式,可以很容易实现在JVM中的活动对象与字节数组(流)之间进行转换,使得Java对象可以被存储,可以被网络传输,在网络的一端将对象序列化成字节流,经过网络传输到网络的另一端,可以从字节流重新还原为Java虚拟机中的运行状态中的对象。3.2.3Java多线程编程在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。第4章系统详细设计4.1系统功能设计4.1.1菜单栏主要功能项导入考场设置导入考试试卷导出考试结果为TXT导出考试结果为HTML导出考试结果为EXCEL调用系统工具计算器调用系统工具记事本查看帮助4.1.2工具栏主要功能项试卷录入考试设置考场监控结果查询系统设置4.1.3监考选项卡主要功能项发放考生信息单发放试卷发送即时通知开启监控4.2模块类设计在系统UI模块的设计过程中设计了相关的类,具体类的设计如图4.1所示图4.1系统UI模块设计类图在系统通信/控制模块的设计过程中设计了相关的类,具体类的设计如图4.2所示图4.2系统通信/控制模块设计类图在系统实体/资源模块的设计过程中设计了相关的类,具体类的设计如图4.3所示图4.3系统实体/资源模块设计类图在系统数据处理模块的设计过程中设计了相关的类,具体类的设计如图4.4所示图4.4系统数据处理模块设计类图4.3界面设计在界面设计中采用如下的三种原则,界面整体采用菜单栏、工具栏、选项卡、状态栏结构设计;软件具有自动记忆功能,运行后自动填充已保存的设置;设计遵循用户体验的KISS原则,操作方便快捷。系统主界面的设计如图4.5所示图4.5系统主界面设计图第5章系统的实现与应用5.1服务器端的实现在服务器刚刚开始运行的时候会弹出一个欢迎界面,显示结果如图5.1所示图5.1系统欢迎界面欢迎界面显示一定时间后会显示系统服务器端的登录界面,显示结果如图5.2所示图5.2服务器端登录界面登录成功后进入系统服务器端主界面,显示结果如图5.3所示图5.3系统主界面(考场监考界面)在系统主界面可以录入需要进行考试的试题,试题录入界面如图5.4所示图5.4试卷录入界面另外在主界面可以对考试进行考试时间限定、发放及时信息等设置,并且还可以修改系统的登录密码如图5.5所示图5.5系统设置界面在考试过程中服务器端可以对客户端的屏幕进行监控,监控结果如图5.7所示图5.7考场监控界面考试结束后可以队参加考试的考生成绩进行查询,查询界面如图5.8所示图5.8结果查询界面5.2客户端的实现客户端安装成功后可以进入客户端登录界面,登录界面如图5.9所示图5.9客户端登录界面登录成功后出现考试信息界面,提示学生在考试中应该注意的问题如图5.10所示图5.10考试信息界面考试信息界面显示结束后学生要填写考生信息单,填写界面如图5.11所示图5.11考生信息填写后界面信息单填写结束就可以进入答题界面进行答题,如图5.12所示图5.12答题界面5.3考试结果处理系统测试采用了黑盒测试的方法进行系统测试,各功能点测试结果正常,考试结果成功导出。考试结果的有效导出是考试系统的一个重要功能,本设计提供了三种考试结果导出方式,分别是TXT(如图5.13)、HTML(如图5.14)、EXCEL(如图5.15)。图5.13考试结果导出的TXT文档图5.14考试结果导出的HTML文档图5.15考试结果导出的EXCEL文档5.4源程序清单5.4.1项目文件组织结构 为了更清晰的了解项目文件的组织结构,现将项目文件的的各个项目截图如图5.16、图5.17所示图5.16项目源代码文件组织结构图5.17项目配置/数据文件组织结构5.4.2项目模块关键代码 /** *试卷实体类 */packagecom.vesense.bean;importjava.io.Serializable;publicclassPageimplementsSerializable{ privateStringtitle; privateStringnotice; privateintquestionNum; privateinteachScore; privateQuestion[]questions; publicintgetEachScore(){ returneachScore; } publicvoidsetEachScore(inteachScore){ this.eachScore=eachScore; } publicStringgetNotice(){ returnnotice; } publicvoidsetNotice(Stringnotice){ this.notice=notice; } publicintgetQuestionNum(){ returnquestionNum; } publicvoidsetQuestionNum(intquestionNum){ this.questionNum=questionNum; } publicStringgetTitle(){ returntitle; } publicvoidsetTitle(Stringtitle){ this.title=title; } publicQuestion[]getQuestions(){ returnquestions; } publicvoidsetQuestions(Question[]questions){ this.questions=questions; } } /** *系统资源类 */packagecom.vesense.res;importjavax.swing.ImageIcon;publicclassR{ publicstaticfinalImageIconIMAGE_WELCOME=newImageIcon(R.class.getResource("welcome.jpg")); publicstaticfinalImageIconIMAGE_LOGIN_HEAD=newImageIcon(R.class.getResource("head.jpg")); publicstaticfinalImageIconIMAGE_MANAGER_SEARCH=newImageIcon(R.class.getResource("search.png")); publicstaticfinalImageIconIMAGE_MANAGER_EXAM=newImageIcon(R.class.getResource("exam.png")); publicstaticfinalImageIconIMAGE_MANAGER_PAGE=newImageIcon(R.class.getResource("page.png")); publicstaticfinalImageIconIMAGE_MANAGER_SETUP=newImageIcon(R.class.getResource("setup.png")); publicstaticfinalImageIconIMAGE_MANAGER_RESULT=newImageIcon(R.class.getResource("result.png")); publicstaticfinalImageIconIMAGE_MANAGER_CONF=newImageIcon(R.class.getResource("conf.png")); publicstaticfinalImageIconIMAGE_MANAGER_EXAM2=newImageIcon(R.class.getResource("exam_2.png")); publicstaticfinalImageIconIMAGE_MANAGER_PAGE2=newImageIcon(R.class.getResource("page_2.png")); publicstaticfinalImageIconIMAGE_MANAGER_SETUP2=newImageIcon(R.class.getResource("setup_2.png")); publicstaticfinalImageIconIMAGE_MANAGER_RESULT2=newImageIcon(R.class.getResource("result_2.png")); publicstaticfinalImageIconIMAGE_MANAGER_CONF2=newImageIcon(R.class.getResource("conf_2.png")); publicstaticfinalImageIconIMAGE_STUDENT_CHECKED=newImageIcon(R.class.getResource("checked.png")); publicstaticfinalImageIconIMAGE_STUDENT_NOTCHECKED=newImageIcon(R.class.getResource("not_checked.png")); publicstaticfinalImageIconIMAGE_PAGE_NOTE=newImageIcon(R.class.getResource("note.png")); publicstaticfinalImageIconIMAGE_MANAGER_RUN=newImageIcon(R.class.getResource("running.gif")); publicstaticfinalImageIconIMAGE_EXAM_E1=newImageIcon(R.class.getResource("e1.png")); publicstaticfinalImageIconIMAGE_EXAM_E2=newImageIcon(R.class.getResource("e2.png")); publicstaticfinalImageIconIMAGE_EXAM_E3=newImageIcon(R.class.getResource("e3.png")); publicstaticfinalImageIconIMAGE_EXAM_E4=newImageIcon(R.class.getResource("e4.png")); publicstaticfinalImageIconIMAGE_MONITOR_NO=newImageIcon(R.class.getResource("no.png")); publicstaticfinalStringFILE_LOGIN_CONFIG="conf/perties"; publicstaticfinalStringFILE_NET_CONFIG="conf/perties"; publicstaticfinalStringFILE_DATA_DEFAULT_EXAM="data/exam/default.exam"; publicstaticfinalStringFILE_DATA_DEFAULT_PAGE="data/page/default.page"; publicstaticfinalStringFILE_EXPORT_DEFAULT_TXT="data/export/default.txt"; publicstaticfinalStringFILE_EXPORT_DEFAULT_HTML="data/export/default.htm"; publicstaticfinalStringFILE_EXPORT_DEFAULT_EXCEL="data/export/default.xls"; publicstaticfinalStringFILE_IIB_JXL="lib/jxl.jar";} /** *对象序列化类 */packagecom.vesense.data;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;publicclassObjUtil{ publicstaticObjectread(Stringname){ Objectobj=null; ObjectInputStreaminput=null; try{ input=newObjectInputStream(newFileInputStream(newFile(name))); obj=input.readObject(); }catch(IOExceptione){ e.printStackTrace(); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }finally{ if(input!=null) try{ input.close(); }catch(IOExceptione){ e.printStackTrace(); } } returnobj; } publicstaticvoidwrite(Stringname,Objectobj){ ObjectOutputStreamoutput=null; try{ output=newObjectOutputStream(newFileOutputStream(newFile(name))); output.writeObject(obj); output.flush(); }catch(IOExceptione){ e.printStackTrace(); }finally{ if(output!=null) try{ output.close(); }catch(IOExceptione){ e.printStackTrace(); } } }} /** *文件内容操作类 */packagecom.vesense.util;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStreamWriter;publicclassFileUtil{ publicstaticvoidtoTXT(Stringbuffer,Stringfile){ OutputStreamWriterwriter=null; try{ writer=newOutputStreamWriter(newFileOutputStream(file)); }catch(FileNotFoundExceptione){ e.printStackTrace(); } try{ writer.write(buffer); writer.close(); }catch(IOExceptione){ e.printStackTrace(); } }} /** *系统配置类 */packagecom.vesense.util;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Properties;publicclassConfig{ privateStringname; privatePropertiespro; publicConfig(Stringname){ =name; pro=newProperties(); try{ pro.load(newFileInputStream(name)); }catch(IOExceptione){ e.printStackTrace(); }}publicStringgetProperty(Stringkey){ returnpro.getProperty(key);}publicvoidsetProperty(Stringkey,Stringvalue){ pro.setProperty(key,value); try{ pro.store(newFileOutputStream(name),""); }catch(Exceptione){ e.printStackTrace(); }}}/** *考试结果导出为TXT文档 */ privatevoidtoTXT(){ if(students.size()<=0){ return; } StringBufferbuffer=newStringBuffer(); buffer.append("学号\t姓名\t院系\t专业\t班级\t科目\t分数\r\n"); for(inti=0;i<students.size();i++){ Studentstu=students.get(i); buffer.append(stu.getSno()+"\t"+stu.getName()+"\t" +stu.getDept()+"\t"+stu.getMajor()+"\t" +stu.getCls()+"\t"+stu.getCourse()+"\t" +stu.getScore()+"\r\n"); } FileUtil.toTXT(buffer.toString(),R.FILE_EXPORT_DEFAULT_TXT); JOptionPane.showMessageDialog(this,"考试结果已成功导出至默认目录!"); } /** *考试结果导出为HTML文档 */ privatevoidtoHTML(){ if(students.size()<=0){ return; } StringBufferbuffer=newStringBuffer(); buffer.append("<html><head><metacharset=\"GB2312\"/><title>数据统计报告-绿光考试系统</title><style>body{font-family:'微软雅黑';}a{color:black;}.bl{color:blue;}.h{background:#ccc;}table{width:80%;}.d{color:green;}.dd{color:red;}</style></head><body><tablealign='center'><strong>数据统计报告</strong>-VesenseCorporation<hr>"); buffer.append("<trclass='bl'><tdcolspan='7'>考试结果统计</td></tr>"); buffer.append("<trclass='h'><th>学号</th><th>姓名</th><th>院系</th><th>专业</th><th>班级</th><th>科目</th><th>分数</th></tr>"); doublejgScore=currentPage.getQuestionNum()*currentPage.getEachScore()*0.6; for(inti=0;i<students.size();i++){ Studentstu=students.get(i); buffer.append("<tr><td>"+stu.getSno()+"</td><td>" +stu.getName()+"</td><td>"+stu.getDept()+"</td><td>" +stu.getMajor()+"</td><td>"+stu.getCls()+"</td><td>" +stu.getCourse()+"</td>"); if(stu.getScore()<jgScore){ buffer.append("<tdtdclass='dd'>"+stu.getScore() +"</td><td><tr>"); }else{ buffer.append("<tdtdclass='d'>"+stu.getScore() +"</td><td><tr>"); } } buffer .append("<tr><td> <td></tr><tr><tdcolspan='9'><small>Copyright©2012绿光考试系统</small></td><tr></table></body></html>"); FileUtil.toTXT(buffer.toString(),R.FILE_EXPORT_DEFAULT_HTML); JOptionPane.showMessageDialog(this,"考试结果已成功导出至默认目录!"); } /** *考试结果导出为EXCEL文档 */ privatevoidtoExcel(){ if(students.size()<=0){ return; } WritableWorkbookbook=null; try{ book=Workbook .createWorkbook(newFile(R.FILE_EXPORT_DEFAULT_EXCEL)); }catch(IOExceptione){ e.printStackTrace(); } WritableSheetsheet=book.createSheet("第一页",0); try{ Labellabel=newLabel(0,0,"学号"); sheet.addCell(label); label=newLabel(1,0,"姓名"); sheet.addCell(label); label=newLabel(2,0,"院系"); sheet.addCell(label); label=newLabel(3,0,"专业"); sheet.addCell(label); label=newLabel(4,0,"班级"); sheet.addCell(label); label=newLabel(5,0,"科目"); sheet.addCell(label); label=newLabel(6,0,"分数"); sheet.addCell(label); for(inti=0;i<students.size();i++){ Studentstu=students.get(i); label=newLabel(0,i+1,stu.getSno()); sheet.addCell(label); label=newLabel(1,i+1,stu.getName()); sheet.addCell(label); label=newLabel(2,i+1,stu.getDept()); sheet.addCell(label); label=newLabel(3,i+1,stu.getMajor()); sheet.addCell(label); label=newLabel(4,i+1,stu.getCls()); sheet.addCell(label); label=newLabel(5,i+1,stu.getCourse()); sheet.addCell(label); jxl.write.Numbernumber=newNumber(6,i+1,stu.getScore()); sheet.addCell(number); } }catch(RowsExceededExceptione){ e.printStackTrace(); }catch(Write

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论