主页
软件技术
返回
智能办公软件开发平台

        Word的普遍性已经是人所共知的,它作为最流行的文字处理软件,有很多功能和特点,所见即所得是其主要的特点。另外,word软件可以编辑文字图形,图像,声音,动画。Word不仅可以自动制表,还可以手动制表。用word软件制作表格,既轻松又美观,即快捷又方便。 

        Java语言以简单,面向对象,健壮,多线程,体系结构中立,解释执行,高性能,分布式,动态等特点成为现今主流编程语言之一。我们选择java swing技术及其开源组件Itext来处理word相关的生成和制作。 

        本文首先介绍软件产生的背景,然后对软件的主要模块进行详细分析。Java是可以跨平台,并且是开放源代码的,它本身类库也是很丰富的,我们选择Itext来处理word表格的生成和数据的处理。本软件设计用到了command模式来封装请求,对于每一个模块都做了封装。  

        1、引言 

        Word作为最流行的文字处理软件,是Microsoft公司的一个文字处理器应用程序。它最初是由Richard Brodie为了运行DOS的IBM计算机而在1983年编写的。随后的版本可运行于Apple Macintosh (1984年), SCO UNIX,和Microsoft Windows (1989年),并成为了Microsoft Office的一部分Word的主要功能与特点可以概括为如下几点: 

        所见即所得——用户用Word软件编排文档,使得打印效果在屏幕上一目了然。直观的操作界面——Word软件界面友好,提供了丰富多彩的工具,利用鼠标就可以完成选择,排版等操作。 

        多媒体混排——用Word软件可以编辑文字图形、图像、声音、动画,还可以插入其它软件制作的信息,也可以用Word软件提供的绘图工具进行图形制作,编辑艺术字,数学公式,能够满足用户的各种文档处理要求。 

        强大的制表功能——Word软件提供了强大的制表功能,不仅可以自动制表,也可以手动制表。Word的表格线自动保护,表格中的数据可以自动计算,表格还可以进行各种修饰。在Word软件中,还可以直接插入电子表格。用Word软件制作表格,既轻松又美观,既快捷又方便。 

        自动功能——Word软件提供了拼写和语法检查功能,提高了英文文章编辑的正确性,如果发现语法错误或拼写错误,Word软件还提供修正的建议。 

        Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性以及广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。  

        2、概述 

        2.1 问题的提出 

        由于word的广泛适用性,基于word处理的表格和数据模板很多。办公软件在老师的日常生活中也是基础的应用,像每学期一次的教学工作量的学时计算和表格的绘制跟每年的毕业论文考核表等,有了电脑我们更希望其自动化的制作我们所需要的模板,用户只需要关心其要输入的数据,即原始数据,而不必浪费时间在数据的计算、表格的绘制以及一些固定文字的输入等方面,这样就大大地提高了用户的工作效率跟质量。我们尽可能的利用计算机的特点,把一些重复而有不需要太多逻辑的任务让计算机来处理。 

        但是像word这个不开放源代码的软件,Microsoft本来就是把它当作一个商业的软件来制作,我们选择java来处理word表格的生成,使用的开源组件就是Itext组件。它主要处理PDF的但是对于rtf格式也兼容。由于word内部使用的是RTF格式,这种格式是许多软件都能够识别的文件格式。所以我们根据老师的需求可以定制一个软件专门生成一个word表格来计算教学工作量(根据老师输入的信息,来自动计算其所需要的课时,并生产一个word表格文件)跟三个考核表(即外文翻译考核表,文献综述考核表,毕业论文考核表,根据老师输入的分数,自动生成教师评语)。 

        2.2解决方案 

        要开发一个简单的word表格文档生成工具,并根据需要的信息自动计算出数据填充到表格里面。我们可以分以下几步进行: 

        第一、UI设计: 基于需求用java swing工具包来绘制出所需要的界面原型。需要一个用户输入基本信息的基本信息面板和一个输入信息的主面板。基本信息面板主要有教师信息,文件路径,学生学号等,主面板主要有课堂与实验教学的考核,以及三大考核表。 

        第二、实体类设计:根据需求抽象出来Course、CourseTyp、Teacher 等实体类来更形象的面像对象设计。通过实体类和他们直接的关联关系把业务逻辑封装起来,实现系统的松耦合和高内聚。 

        第三、请求的封装和应答的处理:为了实现软件设计的基本原则,一个软件实体应当对扩展开发,对修改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在保持系统一定稳定性的基础上,对系统进行扩展。这是面向对象设计(OOD)的基石,也是最重要的原则。主要应用command模式来实现请求和应答的处理。 

        第四、后台服务设计:对于每一个封装的请求,统一的有一个service处理请求,调用生产word表格的模块。 

        第五、word文件生成: word表格的处理对于整个软件设计来说占了很大的部分,我们主要是调用itext组件来实现word文档的生成,iText是一个开放源码的Java类库,可以用来方便地生成PDF文件,也可以生成rtf格式的文档,对于word的处理我们可以使用其生成。根据用户输入的信息,计算并填充输入的表格,生成一个doc格式的文档。 

        2.3开发工具和平台 

        我们的软件是基于Eclipse 开发的,Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 

        目前大多数用户都将 Eclipse 当作 Java IDE 来使用,其开源和松耦合的特性一直很受追捧,基于Eclipse封装的工具也很多。但是Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,所以的用户都可以更加自己的需求,用Eclipse提供的API开发自己的插件集常见的ANT MAVEN。 

        Eclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。 

        Eclipse的插件机制是轻型软件组件化架构。在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语 言。 已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到 现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。 

        Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本内核包括:图形API (SWT/Jface), Java开发环境插件(JDT ),插件开发环境(PDE)等。 

        另外,在Eclipse平台上封装的工具也很多,比如Myeclipse,Portlet Factory 但是由于项目本身比较简单,只是用到一些java基础的特性,我们选择使用Eclipse。  

        2.3.1 面向对象程序概述 

        面向对象其实是现实世界模型的自然延伸。现实世界中的任何实体都可以看作是对象。对象里面有可以包含对象,通过这种关系实现内部的协作,对象之间也可以通过消息相互作用。另外,现实世界中任何实体都可以归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心已消息为驱动的。过程式编程语言为: 程序=算法+数据;面向对象编程语言为: 程序=对象+消息[2]。 

        面向对象程序设计把不常变的逻辑和常变的数据耦合起来,可以被视作一种在程序中包含各种独立而又互相调用的单位和对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的―机器‖。可以通过几个直接协作来完成系统的调度和分工合作。 

        目前面向对象程序设计使程序的灵活性和可维护性大大的增加了,并且在大型项目设计中广为应用。此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得业务逻辑更加便于分析、设计、理解。 

        面向对象的四个特征是:抽象,封装,继承,和 多态 。 

        1、抽象 

        抽象是人们认识事物的常用方法,比如房屋的模型的绘制。我们天生下来便形成了对于世界上事物的概括和认识。也是一个抽象的过程。抽象就是如何简化、概括所观察到的现实世界,并为人们所用的过程。抽象是软件开发的基础。软件开发离不开现实环境,但需要对信息细节进行提炼、抽象,找到事物的本质和重要属性。 

        抽象包括两个方面:过程抽象和数据抽象。过程抽象把一个系统按功能划分成若干个子系统,进行"自顶向下逐步求精"的程序设计。数据抽象以数据为中心,把数据类型和施加在该类型对象上的操作作为一个整体(对象)来进行描述,形成抽象数据类型ADT(abstract date type)。 

        我们解决问题也是先把问题抽象到我们可以描述的语言上,所有编程语言的最终目的都是提供一种"抽象"方法。解决问题的复杂程度直接取决于抽象的种类及质量。其中,"种类"是指准备对什么进行"抽象"。汇编语言是对基础机器的少量抽象。后来的许多"命令式"语言(如FORTRAN、BASIC和C)是对汇编语言的一种抽象。与汇编语言相比,这些语言已有了较大的进步,但它们的抽象原理依然要求程序设计者着重考虑计算机的结构,而非考虑问题本身的结构。在机器模型(位于"方案空间")与实际解决的问题模型(位于"问题空间")之间,程序员必须建立起一种联系。这个过程要求人们付出较大的精力,而且由于它脱离了编程语言本身的范围,造成程序代码很难编写,而且要花较大的代价进行维护。由此造成的副作用便是一门完善的"编程方法"学科。面向对象的程序设计在此基础上则跨出了一大步,程序员可利用一些工具来表达问题空间内的元素。由于这种表达非常普遍,所以不必受限于特定类型的问题。人们将问题空间中的元素以及它们在方案空间的表示物称作"对象"。当然,还有一些在问题空间没有对应体的其他对象。通过添加新的对象类型,程序可进行灵活的调整,以便与特定的问题配合。所以在阅读方案的描述代码时,会读到对问题进行表达的话语。与以前的方法相比,这无疑是一种更加灵活、更加强大的语言抽象方法。 

        总之,OOP允许人们根据问题,而不是根据方案来描述问题。然而,仍有一个联系途径回到计算机。每个对象都类似一台小计算机;它们有自己的状态,而且可要求它们进行特定的操作。与现实世界的"对象"或者"物体"相比,编程"对象"与它们也存在共通的地方:它们都有自己的特征和行为。 

        2、封装 

        封装也是面向对象编程的主要特征,也是类和对象的主要特征。封装联系了数据以及加在这些数据上的操作,封装使数据变成相对于逻辑有意义的代表形式,成为有独立意义的构件。外部无法直接访问这些封装了的数据,从而保证了这些数据的正确性。如果这些数据发生了差错,也很容易定位错误是由哪个操作引起的。 

        如果外部需要访问类里面的数据,就必须通过接口或方法进行访问。接口规定了可对一个特定的对象发出哪些请求。当然,必须在某个地方存在着一些代码,以便满足这些请求。这些代码与那些隐藏起来的数据叫做"隐藏的实现"。站在过程化程序编写的角度,整个问题并不显得复杂。一种类型含有与每种可能的请求关联起来的函数。一旦向对象发出一个特定的请求,就会调用那个函数。通常将这个过程总结为向对象"发送一条消息"。对象的职责就是决定如何对这条消息做出反应。 

        通常来说我们会遇到以下两个问题来促使类的开发者控制数据的访问。第一个原因是防止程序员接触他们不该接触的东西--通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,无需明白这些信息。类向用户提供的实际是一种服务。第二个原因是允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响。例如,编制者最开始可能设计了一个形式简单的类,以便简化开发。以后又决定进行改写,使其更快地运行。若接口与实现方法早已隔离开,并分别受到保护,就可放心做到这一点,只要求用户重新实现一下接口就可以。封装考虑的是内部实现,抽象考虑的是外部行为。  

        3、继承 

        继承是一种联结类的层次模型,并且允许和鼓励类的重用,继承实现了比较常变的逻辑和一些容易改变的逻辑得向下兼容。子类可以复用父类的不便逻辑,但是又要表明它与父类有哪些不同。子类可以从它的父类那里继承方法和实例变量,并且子类可以修改或增加新的方法使之更适合特殊的需求。这也体现了大自然中一般与特殊的关系。继承性很好地解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。 

        4、多态性 

        多态性允许不同类的对象对同一消息作出响应。比如,同样的选择"编辑"、"粘贴"操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和运行时多态性。多态性语言具有灵活、抽象、行为共享、代码共享的特点,以下为对象的特征: 

        (1)所有东西都是对象。对象可以看成一种新型变量,对象实现了不常变的逻辑和常变的数据的紧耦合,使其粒度更细。可从要解决的问题上,提出所有概念性的组件,然后在程序中将其表达为一个对象。 

        (2)程序是一大堆对象的组合。目前软件开发从面向过程到面向对象到面向服最终到了面向资源,实现了更广意义上的复用和抽象。通过消息传递,各对象知道自己该做些什么。为了向对象发出请求,需向那个对象"发送一条消息"。更具体地讲,可将消息想象为一个调用请求,它调用的是从属于目标对象的一个子例程或函数。 

        (3)对象方便的包装了行为和状态,前者被暴露给外部世界,后者则为前者提供支持。对象的好处之一便是将程序中的所有的状态分割成小块,每一块都有属于自己的计算环境。 每个对象都有自己的存储空间,可容纳其他对象。通过封装现有对象,可制作出新型对象。所以,尽管对象的概念非常简单,但在程序中却可达到任意高的复杂程度。相当于现实中的房屋是一个对象,房屋里的桌子和床也是对象,他们之间是包含关系。 

        2.3.2 利用java生成word文档的优势 

        Java是一种跨平台,适合于分布式计算环境的面向对象的编程语言。具体来说,它具有如下特性:简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。与C++等语言相比较,语法上Java是比较简单的。 

        Java提供了垃圾回收机制,以往C++的开发中,最容易出错误的地方便是内存管理,申请的内存用完以后必须释放,否则可使用的内存资源越来越少,直至耗尽系统资源而造成死机。而Java系统中,你可以任意申请内存,Java系统会在适当的时候自动释放无用的内存资源。这个神奇的机制叫做“垃圾回收”。节约了很多调试错误的时间,虽然这样做极大的简化了编程的难度,但是我们还是对于引用的变量用完之后把它指向空引用,为了性能考虑。 

        一次编写,随处运行,java标榜的题最大的特点,Java系统可以运行在不同的操作系统和硬件上。随着Linux的持续增长以及Mac OSX完全支持Java技术,跨平台的特性变得越来越有分量。由于Java跨平台,Java API自然也是平台统一的。对程序员而言,没有比统一的API函数能够让他们更欣慰的了,已经有了圆形的轮子,何必再从头发明轮子呢,我们拿Java API与C++的类库相比便可以知道它的可贵之处。有Windows编程经验的C++程序员肯定经历过被MFC(Microsoft Foundation Classes,微软基类库)折磨的日子,学习曲线陡峭,没有若干个月根本无法开始生产,一段时间不接触遗忘率又高。据说,即使在微软公司内部,除了 MFC开发小组,谁都不乐意用它。即便你熟悉了MFC,能够顺利开发Windows应用程序,如果你要编写一个Linux应用程序,MFC又派不上用场了,你必须学习Linux下C++开发的一套库函数。还有UNIX、FreeBSD、Mac OS……你学得过来吗,反观Java API,操作系统,忽略其底层实现,只要编写一次便可随处运行~ 

        开源组织是无政府主义的梦想?没有政体,没有所属权,言论与行动自由,仅仅依靠渴望共享与交流的信仰及无私奉献来维系。Java世界中,开源组织与非盈利机构发挥到了极致,许多出色的工具都出自它们之手。比如JUnit、Tomcat、Struts、JBoss、Eclipse、 ANT、 AJAX、 Hibernate、 JSF等等,许多工具还会出现在我们的咖啡馆中,扮演重要的角色。 

        2.3.3 RTF格式简介 

        富文本格式(Rich Text Format)即RTF格式,又称多文本格式,是由微软公司开发的跨平台文档格式。大多数的文字处理软件都能读取和保存RTF文档。  

        RTF格式是很多软件都能够识别的文件格式。比如Word、WPS Office、Excel等都可以打开RTF格式的文件,这说明这种格式是比较通用的[2]。对于普通用户而言,RTF格式是一个很好的文件格式转换工具,用于在不同应用程序之间进行格式化文本文档的传送。因此我们也选用RTF格式作为word自己的替换格式。  

        3、系统分析 

        3.1系统可行性 

        本系统的最终目的是实现一个简单的word表格生成软件。根据用户提供的有关课时的信息及评分,来生成相应的表格与考核表。我们主要调用Itext组件的相应内容,主要是com.lowagie.text来生成word表格 。对于面向用户的界面设计,我们主要使用Swing来绘制。Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级(light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。Swing采用了一种MVC的设计范式,即"模型-视图-控制"(Model-View-Controller),其中模型用来保存内容,视图用来显示内容,控制器用来控制用户输入。非常容易绘制,对于table的事件处理我们也可以很好的编写。 

        Itext中生成的rtf的类库RtfWriter2 Document Table等都是对于现实例子的抽象,我们可以很好的利用这些封装好的类库来构建自己的工具。对于整个的软件实现来说我们还是可以实现的。 

        3.2 系统应达到的标准 

        1、可操作性:简单,快捷的操作,使用户能够在极短的时间内上手操作。 

        2、可靠性:能准确无误的处理界面发送的命令,发送和接收数据。 

        3、可理解性:底层的控制面板和table面板使用户更方便的使用该软件,适当的提示更有易于用户操作。 

        4、可维护性和适应性:系统应易于修改、易于扩充、易于维护,能够适应各种协议不断变化的需要,而方便的做出更改。 

        5、时间经济性:优化逻辑设计与物理设计,使系统运行效率更高,反映速度更快。 

        3.3软件工作原理 

        我们开发的是基于Java Swing 的桌面应用程序,Swing中几乎所有组件都是从JComponent衍生而来,也就是说这些组件都是lightweight Component,均由纯java code所编写面成 、Swing中以下几个组件不是由JComponent继承面来:JFrame(JRoot Pane)JDialog(JRoot Pane)我们不能在JRootPane上加入任何的组件,因为它只是一个虚拟的容器,若要在最上层组件上加入组件,必须加在Layered Pane或是 Layered Pane里的Content Pane上。以JFrame为例,一般我们要在JFrame上加入其他组件(如JButton、JLabel等)必须先取得JFrame 的Content Pane,然后将要加入的组件放在此Content Pane中,而不是直接就加到JFrame上。因此若要在JFrame中加入一个按钮,不 能像以前AWT时一样写成frame.add(button)的形式,而必须先取得JFrame的Content Pane,然后将按钮加入Content Pane中.组件必须加在容器中,而容器本身具有层次性的关系,就如同珠宝盒一般,大盒子里面可以放小盒子,小盒子里面还可以放更小的盒子,而珠宝就可以放 在某一个盒子中,这里的珠宝就代表组件,盒子就代表容器。因此若您想在JFrame加入任何组件时,必须 先取得JFrame的容器来放置这些组件,而由于JFrame、JDialog、JWindow与JApplet是显示Swing组件的源头,我们可以称它们为根组件,也就是所谓的最上层组件。 

        Swing大量的应用了一些常用的模式,我们的软件也是MVC的,Model View Control明确分工,基于swing的事件驱动机制,当界面一些按钮和其他组件接受用户的输入信号时,它会产生一个事件,向下传递,我们编写事件处理的代码,把整个的事件集中起来,封装成一个请求,这样可以不暴露一些细节,更好的去维护[3],实体类直接的包装。相互直接的协作。 

        服务主要是调用一些组件来处理业务逻辑,比如标准时间的计算,全部时间的计算,根据课程的不同类型,找到其对应的课程系数,教学班级规模系数等,然后根据输入的数据得到结果,我们在调用Itext组件的相关的接口和类,来绘制word表格,把所需要的信息填充到表格内,按照需求得到一个完整的solution。最终生成word文档。其中涉及到设计模式的使用,请求的封装和处理软件的流程图  

        4、系统模块设计 

        4.1 模块组织图 

        本系统包含以下几个模块: 

        1. 用户操作界面模块 

        2. 用户信息输入模块 

        3. 服务模块(请求封装和处理) 

        4. word表格绘制模块 

        4.2模块功能介绍 

        用户信息输入模块: 

        1、教师信息输入 

        2、文件存放路径 

        3、学生学号信息的输入 

        4、用户生成word文档的触发按钮其中,教师信息输入中又包括姓名,出生年月,职称,所在学院的输入 

        用户操作界面模块: 

        1、课堂教学 

        2、实验教学 

        3、外文翻译考核表 

        4、文献综述考核表 

        5、毕业论文考核表 

        服务模块: 

        1、请求的封装 

        2、应答的封装 

        3、接受服务的请求 

        4、根据信息调用word生成模块  

        5、封装应答返回 

        word表格绘制模块: 

        1、绘制word表格 

        2、填充数据 

        3、生成word文档 

        5、详细设计 

        5.1需求分析 

        办公word在老师的日常生活中也是基础的应用,像每年一次的教学工作量的学时计算和表格的绘制跟每年的毕业论文考核表等, 如果老师亲自计算学时并且向word输入文字跟数据,而且有些操作都是繁杂的,这无疑很浪费时间。 

        有些老师因为经常出差或者年终时比较忙碌,而要从网上查找并下载外文翻译,文献综述,毕业论文三个考核表,这也会耗费老师们一些精力。为了使老师的工作变得轻松些,我设计了这个软件来自动的生成三大考核表并且设计了三大考核表评语模版。老师只需要点击软件便可以生成三大考核表,并且还可以通过评语模版生成评语,再针对每个同学进行修改就可以了,大大方便了老师们的工作。 

        功能需求分析: 

        1、教学工作量的计算及word的生成 

        2、外文考核表的生成 

        3、文献综述考核表的生成 

        4、毕业论文考核表的生成 

        5.2实体类设计 

        我们根据需求设计了三个实体类: 

        老师的实体有四个属性 

        类图如下:  

        toArray()方法返回一个Teacher类的数组形式 

        Course类代表一个课程的信息,包括 

        课程名称,计划学时数, 学生人数,课程类别系数,教学班级规模系数,标准课时数 等属性 UML类图如下所示: 

        课程类别实体类: 包含课程类别名, 课程类别系数,规模系数,人数规模系数上限,其中的信息存放在一个properties文件中用于读出是可配的 

        5.3请求和应答的封装 

        我们对应的请求和应答分别有DocRequest,TFBean,CheckBean和DocResponse类其中 

        6、调试与测试 

        1.主界面上table当点击计算标准课时数时如果前面的信息没有填写完全,由于JTable的事件传递机制,tablemodel的setValueAt()属性对于每一个表格单元会报异常, 另外,当计算标准课时数项点击取消时(即由true到false时) ,课程类别系数、教学班规模系数、标准课时数会重新计算,幸好这点也不 影响软件操作。 

        2.在老师个人信息时,当点击老师信息时,每点一下会弹出来一个对话框来说让用户填写, 而这点已经解决。 

        3.itext组件每一个cell的边框问题,给出的api里面对每一个Cell,没有设置上下边距,只能通过添加的Element,设置Element接口的上下边距来实现,并且cell的边框只能先setBorderWidth(0),随后在设置四边的宽度。 

        4.生成的word文档的格式因为Itext组件API的调用不规范、不到位,导致word表格的格式跟原word格式有差距,如宽度,字体等方面,这点我实在无法做到一模一样,幸好这点影响不大。 

        结论 

        本次的设计课题是基于java Swing的GUI界面设计及word表格生成的实现,通过本次的软件设计,对于java编程有了更深刻的了解。本软件通过调用iText组件来实现了word生成的功能,对于java开源软件及其开源社区的重要影响有了深刻的认识,对开源思想非常赞同。这次毕业涉及,我根据业务的需求,设计出了符合要求的软件,锻炼了自己编程的能力,并且提高了将客户的需求转化为实际软件的能力。 

        本软件主要解决了教师的教学工作量课时的计算和自动生成word文档,并且自动生成三大考核表,大大简化了老师的办公的复杂性,使老师可以不必再为课时的计算和考核表中评语的输入在浪费时间。由于word的广泛使用性,我们可以开发一些针对word使用的一些小工具来简化人们生活中对word操作的复杂性。  

        在本次论文设计过程中,感谢我的学校,给了我学习的机会。在学习中,蔡本晓和尤素萍老师从选题指导、论文框架到细节修改,都给予了细致的指导,提出了很多宝贵的意见与建议,老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风和大胆创新的进取精神对我产生重要影响。在此,我向两位老师表示诚挚的感谢和崇高的敬意~在学习和完成论文的期间,我也得到了理学院各位领导和老师的关怀和帮助,在此表示衷心的感谢

        


IT治理助国药重塑IT领导力
吉林汽车产业集群中小企业信息化调查
对保险行业信息化建设的几点思考
木制品清色油漆的施工
浅析酒店的软装设计
装饰施工企业成本与质量管理
厨房家具标准主要技术要求
国内电动工具产业加速向外“扩张”步伐
信息发布:名易软件http://www.myidp.net