资源描述
【摘要】随着信息时代科技的飞速发展,计算机等技术的发展,不仅提高了工作效率,而且大大的提高了其安全性。对于一些复杂的信息,就能够充分的发挥它们的优越性。背单词系统就是技术发展的产物,随着我们与外国人的接触越来越多,英语成为了我们必不可少的一门外语,而学习外语也就成为了我们必不可少的。本系统就是为了更方便人们的更好的学习外语而设计的。背单词系统作为一款数据传输的技术,用户信息和词库的管理的繁杂,包含很多的数据的管理,以前的都是人们用最简单的辞典,在众多的资料中翻阅、查找,费时、费力,而且应用性非常差。针对这一系列问题,我们设计了这么一个系统,使得用户可以便捷,快速的进行操作,同时也达到了稳定,准确的目的。关键词: ATM、C/S架构、JAVA、Access【Abstract】 Along with the information age the rapid development of science and technology, such as the development of computer technology, not only improve work efficiency, and greatly improve the safety. For some complex information, can fully exert their superiority. Back words system is the product of development of technology, as we contact with foreigners, more and more English become our essential a foreign language, and learning foreign languages also become our essential. This system is more convenient for peoples better learning foreign languages and of the design.Back words system as a data transmission technology, user information and word of the library management, which contains a lot of data management, previous is people with the most simple dictionary, in many of the data paging through, search, time consuming, arduous, and applied very poor.Aiming at this a series of problems, we design such a system, and the user can be convenient, fast operation, also reached the stable and accurate purpose.【Keywords】 目 录引 言1第一章 概 述21.1 课题来源21.2 设计目的及内容21.2.1 设计目的21.2.2 相关内容31.3.1 JAVA语言简介31.3.2 JAVA语言的网络运用41.3.3 C/S架构41.3.4 Access数据库51.3.5 Access的特性6第二章 系统调研及可行性分析82.1 系统调研82.2 可行性分析概述82.3 技术可行性分析9第三章 需求及总体设计103.1系统需求分析10系统的功能需求103.1.2 系统的开发环境103.1.3 数据库设计10第四章 系统主要功能实现154.1 用户系统模块的实现15第五章 系统测试265.1软件测试的目的及意义265.2测试的方法271.白盒测试272.黑盒测试273.回归测试275.3测试用例27结 论29谢 辞30参考文献1 引 言背单词系统的目的就是建立一个客户平台,用户使用此平台进行单词翻译、单词查询、加入生词库等。相对于手工辞典操作一样的,不过背单词系统可以更简便的直接的体现给用户,而且使用方便,操作简单。背单词系统的针对的用户群是使用此软件系统并在系统里开户,用户做为系统的服务群体,按照自己的需求进行单词的查询,翻译。按照用户自己的方式选择所需背记单词的数量,难度。遇到有生僻的单词可以加入生词库方便以后的二次查找,节省时间,方便阅览。第一章 概 述1.1 课题来源信息是人类社会发展的三大资源之一,随着人类进入信息时代,在一个国家里管理信息系统的建立,运行和发展水平,标志着这个国家的管理现代化水平和信息化水平。随着现代信息技术的飞速发展,国际信息化浪潮是一浪高过一浪。自1993年美国率先提出国家信息基础设施NII(National Information Infrastructure,常被称为信息高速公路)计划之后,日、法、英、德等国家也纷纷提出各自的类似计划,达国家之间展开了激烈竞争。发展中国家如韩国、新加坡也都制定了本国信息化计划。1995年2月,以美国为首的西方七国集团首脑聚会鲁塞尔,讨论建设全球信息基础设施GII的计划7。从而兴起于美、日等少数发达国家的信息化建设浪潮,已波及到全世界各个角落。随着信息时代科技的飞速发展,计算机等技术的发展,不仅提高了工作效率,而且大大的提高了其安全性。对于一些复杂的信息,就能够充分的发挥它们的优越性。背单词系统就是技术发展的产物,随着我们与外国人的接触越来越多,英语成为了我们必不可少的一门外语,而学习外语也就成为了我们必不可少的。本系统就是为了更方便人们的更好的学习外语而设计的。背单词系统作为一款数据传输的技术,用户信息和词库的管理的繁杂,包含很多的数据的管理,以前的都是人们用最简单的辞典,在众多的资料中翻阅、查找,费时、费力,而且应用性非常差。针对这一系列问题,我们设计了这么一个系统,使得用户可以便捷,快速的进行操作,同时也达到了稳定,准确的目的。1.2 设计目的及内容 设计目的本课题背单词系统的目的就是建立一个客户平台,用户使用此平台进行单词翻译、单词查询、加入生词库等。相对于手工辞典操作一样的,不过背单词系统可以更简便的直接的体现给用户,而且使用方便,操作简单。背单词系统的针对的用户群是使用此软件系统并在系统里开户,用户做为系统的服务群体,按照自己的需求进行单词的查询,翻译。按照用户自己的方式选择所需背记单词的数量,难度。遇到有生僻的单词可以加入生词库方便以后的二次查找,节省时间,方便阅览。1.2.2 相关内容本系统要求主要实现以下功能模块:1) 用户能够导入导出词库;2) 用户可以选择是否显示单词的音标、中文解释等;3) 用户可以选择屏幕前端显示的单词的更新速度、背景和前景等;4) 用户可以拖动显示的单词条到屏幕的任何位置;5) 提供生词本功能,用户可以随时添加生词,并选择生词库作为当前词库。1.3 技术概述1.3.1 JAVA语言简介Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。自从1995年正式问世以来,Java的快速发展已经让整个Web世界发生了翻天覆地的变化。在早期,Java比较多的用在浏览器上,插入到网页中(即是Java Applet程序),成为最灵活、最强大的网页多媒体的载体,但由于Java虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet逐渐的被后起之秀Flash所替代,但随着Java Servlet的推出,Java在电子商务方面开始崭露头角,最新的JSP(Java Server Page)技术的推出,更是让Java成为基于Web的应用程序的首选开发工具,目前的Java技术已成为所有大型电子商务项目的必然选择。它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java”的名称正式发布。 Java 编程语言的风格十分接近C、C+语言。Java是一个纯的面向对象的程序设计语言,它继承了 C+ 语言面向对象技术的核心,Java舍弃了C +语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。1.3.2 JAVA语言的网络运用Java程序可以获取网络上结点的图象、声音、HTML文档及文本等资源,并可以对获得的资源进行处理。例如Java程序可以每隔一定时间读取某结点提供的最新数据,并以图表的形式显示出来。在编程处理上,一般先生成一个URL类型的对象,然后用 Java中相应的方法(method)获取该对象所代表的资源, Java Applet可以直接从网络上结点获取图象并显示出来。目前,Java更广泛的应用是在服务器端,这是本文研究的主要话题,下文提及的Servlet、JSP等技术都是Java在服务器端应用的具体形式。1.3.3 C/S架构C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个: 1、只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。 2、客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。 3、 对客户端的操作系统一般也会有限制。1.3.4 Access数据库Access 是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS,即Relational Database Management System),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。 Access能够存取 Access/Jet、Microsoft SQL Server、Oracle(甲骨文软件公司),或者任何 ODBC 兼容数据库内的资料。熟练的软件设计师和资料分析师利用它来开发应用软件,而一些不熟练的程序员和非程序员的进阶用户则能使用它来开发简单的应用软件。虽然它支援部分面向对象(OOP)技术,但是未能成为一种完整的面向对象开发工具。1.3.5 Access的特性1) 存储方式简单,易于维护管理 2) Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb或.accdb)的数据库文件中,便于用户的操作和管理。 3) 2面向对象 Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。 4) 界面友好、易操作 Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。 5) 集成环境、处理多种数据信息 Access基于Windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。 6) Access支持ODBC(开发数据库互连,Open Data Base Connectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。Access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。 7) 支持广泛,易于扩展,弹性较大 能够将通过链接表的方式来打开EXCEL文件、格式化文本文件等,这样就可以利用数据库的高效率对其中的数据进行查询、处理。还可以通过以Access作为前台客户端,以SQL Server作为后台数据库的方式(如ADP)开发大型数据库应用系统。 总之,Access是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发;即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。 第二章 系统调研及可行性分析2.1 系统调研首先,背单词系统是面向特定对象群是在此软件系统有使用需求的用户,所以用户登陆系统后,应该能根据自己的需要进行各项操作。鉴于软件系统使用环境一般在网络上或单机使用,为了考虑到软件的安全性,对于每个用户来说,系统的安全性直接影响着自身的利益。特别是网络环境,到处伴随着危险,背单词系统针对这一用户群,采取一些有效的措施,登陆后用户信息反馈到客户端数据库里,做好防止信息被拦截工作。2.2 可行性分析概述可行性分析是在用户的要求和系统调研的基础上进行的,对新系统的开发从社会、技术、经济、管理等方面进行分析,并得出新系统的开发工作可行、不可行、需要修改、追加投资、暂缓开发、分步实施等方案和结论,最后完成可行性分析。可行性分析一般可定义为:可行性分析是在建设的前期对工程项目的一种考察和鉴定,对拟议中的项目进行全面与综合的技术、经济能力的调查,判断它是否可行。(1)可行性分析阶段的主要工作包括以下几个方面:新系统目标可行性分析:分析新系统的目标是否符合企业的现状和发展的需要。社会可行性分析:社会可行性分析主要是指管理信息系统的开发是否符合国家法律、下策,是否能够与社会大系统实现良好的对接。技术可行性分析:技术可行性分析是根据新系统的目标来衡量是否具备所需要的技术,包括系统开发人员数量和水平,硬件方面,软件方面及其它应用技术。经济可行性分析经济可行性分析主要是对开发新系统所投入的资金与系统投入使用后所带来的经济效益进行比较,确认新系统是否会给企业带来一定的经济效益。管理可行性分析:管理可行性分析主要是分析企业现行的管理体制和企业领导是否具有现代化的管理意识和管理水平。2.3 技术可行性分析技术可行性分析主要包括四个方面:目前有关的技术能否支持所开发的新系统;新系统开发人员的数量和水平,即人力资源;硬件和软件资源。(1)技术支持:首先根据新系统的目标,考虑目前有关的技术能否支持所开发的新系统。这里讨论的技术必须是已经普遍使用的,而不是待研究的或正在研究的。(2)硬件资源:开发管理信息系统所需的硬件资源包含以下两个方面:系统开发人员在管理信息系统的开发过程中所需要的计算机设备及其有关的外部设备;管理信息系统开发成功投入使用后,使用单位所应具备的计算机设备及其有关的外围设备。对硬件资源进行可行性分析时主要考虑计算机的主机内存、类型、功能、联网能力、安全保护措施以及输入/输出设备,外存储器和联网数据通信设备的配置、功能、效率等指标是否符合系统方案设计要求,同时还要考虑计算机的性能/价格比。(3)软件资源软件资源的可行性分析主要考虑以下几点是否满足用户的要求:操作系统的选择;编译系统的选择;数据库管理系统的选择;高级编程语言的选择;汉字处理系统的选择;应用软件包的选择。本系统在开发前,与中心的领导和有关的操作人员密切沟通,认真听取他们的意见,并吸收他们的积极观点,使本系统的开发在相当大的程度上具有一定的先进性和合理性。第三章 需求及总体设计3.1系统需求分析系统的功能需求用户登录:用户可以申请办理一个学号和密码,然后登录。单词查询:用户可以查找单词库中的单词。修改密码:用户可以更改自己学号的密码。加入生词库:用户可以自由的将生僻单词加入到生词库中3.1.2 系统的开发环境选择一个好的编程语言十分的重要,当前,面对众多的编程语言,很多人无从选择,而本人在本系统中选择了java语言。之所以选择java语言是因为在它强大的面向对象功能,使用它能够轻松的将界面显示和业务逻辑分开。由于java语言的平台无关性,所以我选取在windows操作系统上做的开发,而且数据库也用的比较小型的access2003,不过要移植到其他的操作系统上也很容易,只需要修改DBConnectionManager.java中连接数据库的相关信息就行了。整个ATM模拟系统的开发环境如下:操作系统:Microsoft Windows 7 旗舰版数据库: Microsoft Access 2003JAVA开发包:JDK1.6开发语言:JAVA开发平台:MyEclipse6.0 数据库设计本系统使用的access数据库保存在网站目录下的data/bank.mdb中,该数据库中有4张表,下面分别加以描述。数据库的逻辑设计由于概念设计的结果是ER图,DBMS一般采用关系型(本系统所使用的MS ACCESS就是关系型的DBMS),因此数据库的逻辑设计过程就是把ER图转化为关系模式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义。数据字典:英汉表汉英表班级表学生表生词本3.2系统总体功能结构设计背单词系统需要满足来两方面的需求,这两个方面分别是用户、单词管理。用户的需求是进行各项功能的操作;管理系统对用户的信息进行操作处理,同时保存在数据库中以便用户查询;管理系统的功能最为复杂,他包括对数据库的维护、用户信息维护及分数发布情况进行维护。 用户可以根据开户申请到的学号和密码登录到系统,登录成功后可进行四种操作,一是查询,二是查看,三是修改密码,四是生词库。其总体功能如图3-1所示:功能模块一般可分为:查询,查找,加入生词库,使用生词库。图3-1 模拟背单词系统功能结构图在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。3.3 系统E-R图用户查询管理加入生词库删除查看所属卡号密码系统E-R图第四章 系统主要功能实现4.1 用户系统模块的实现. 功能查找查看加入生词库 (1)登录界面此模块所要完成的就是用户的登录,因此对于界面而言,只要用户可以很方便地输入用户名和密码,并且可以很方便地登录就可以了。界面如图设计的用户登陆由用户卡号和密码构成,首先要选择好登陆的模式,然后在用户输入卡号和密码后,就会调用数据库查看此用户名是否存在或密码是否正确。代码如下: 代码如下:public void actionPerformed(ActionEvent e) if (e.getSource() = enroll) new EnrollWindow(); else if (e.getSource() = login) String log_sno = tsno.getText(); String log_spwd = ppwd.getText(); DataBase db = new DataBase(); if (log_sno=null | log_spwd=null) JOptionPane.showMessageDialog(rootPane, 登陆信息不全,请补充); else if (db.isValidUser(log_sno, log_spwd) isLogin = true; JOptionPane.showMessageDialog(rootPane, 欢迎回来, + db.getSname(log_sno) + 。您可以使用您的生词本等个性化功能了!); dic.writeToWordbok.setEnabled(true); dic.wordbook.setEnabled(true); currentSname = db.getSname(log_sno); currentSno = log_sno; p5.removeAll(); p5.revalidate(); p5.add(new JLabel(欢迎回来,); p5.add(new JLabel(db.getSname(log_sno); p5.add(new JLabel(上次学习:); p5.add(new JLabel(2012-03-10); p5.add(new JLabel(总共学习:); p5.add(new JLabel(5 次); else JOptionPane.showMessageDialog(rootPane, 信息错误,登陆失败); (2).用户登陆成功后的界面 代码如下:public void actionPerformed(ActionEvent e) if (e.getSource() = enroll) new EnrollWindow(); else if (e.getSource() = login) String log_sno = tsno.getText(); String log_spwd = ppwd.getText(); DataBase db = new DataBase(); if (log_sno=null | log_spwd=null) JOptionPane.showMessageDialog(rootPane, 登陆信息不全,请补充); else if (db.isValidUser(log_sno, log_spwd) isLogin = true; JOptionPane.showMessageDialog(rootPane, 欢迎回来, + db.getSname(log_sno) + 。您可以使用您的生词本等个性化功能了!); dic.writeToWordbok.setEnabled(true); dic.wordbook.setEnabled(true); currentSname = db.getSname(log_sno); currentSno = log_sno; p5.removeAll(); p5.revalidate(); p5.add(new JLabel(欢迎回来,); p5.add(new JLabel(db.getSname(log_sno); p5.add(new JLabel(上次学习:); p5.add(new JLabel(2012-03-10); p5.add(new JLabel(总共学习:); p5.add(new JLabel(5 次); else JOptionPane.showMessageDialog(rootPane, 信息错误,登陆失败); 代码: public MainFrame() super(背单词系统); Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation(screen.width - 300) / 2), (screen.height - 220) / 2); mainBar = new JMenuBar(); m1 = new JMenu(开始); m2 = new JMenu(系统); m3 = new JMenu(设置); m4 = new JMenu(工具); item1 = new JMenuItem(生词本); item2 = new JMenuItem(测验); item3 = new JMenuItem(更改词库); item4 = new JMenuItem(退出); m1.add(m3); m1.add(m4); m4.add(item1); m4.add(item2); m2.add(item3); m2.add(item4); mainBar.add(m1); mainBar.add(m2); clock = new Clock(1); p1 = new JPanel(); p2 = new JPanel(); p3 = new JPanel(); p4 = new JPanel(); p5 = new JPanel(); p6 = new JPanel(); p7 = new JPanel(); dic = new Dic(this); p1.add(dic); p7.setLayout(null); p7.add(new JTextField(); JSplitPane sp1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, p7, dic); sp1.setEnabled(false); sp1.setDividerLocation(300); p2.add(new JTextField(); JSplitPane sp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, p3, sp1); sp2.setEnabled(false); sp2.setDividerLocation(100); this.getContentPane().add(sp2); p3.setLayout(null); JLabel welcome1 = new JLabel(); welcome1.setFont(new Font(宋体, Font.BOLD, 15); welcome1.setText( 本系统由辽宁师范大学XXX开发); JLabel welcome2 = new JLabel(); welcome2.setFont(new Font(宋体, Font.BOLD, 15); welcome2.setText( 当前日期: + StrDate(); p4.setLayout(new GridLayout(2, 1); p4.add(welcome1); p4.add(welcome2); p4.setBorder(new TitledBorder(null, 欢迎使用, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font(宋体, Font.LAYOUT_LEFT_TO_RIGHT, 16), Color.BLUE); p3.add(p4).setBounds(220, 0, 300, 95); p3.add(clock).setBounds(530, 0, 100, 100); package 背单词系统;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;public class Dic extends JPanel implements ActionListener, ListSelectionListener, KeyListener, MouseListener /输入输出的文本域作为数据域 private JTextField inputMessage = new JTextField(); private JButton jbt = new JButton(搜索); private JTextArea outputMessage = new JTextArea(); private JScrollPane scrollPane1 = new JScrollPane(outputMessage); private JList list = new JList(); private JScrollPane scrollPane2 = new JScrollPane(list); private JButton antiSeach = new JButton(反查); JButton writeToWordbok = new JButton(加入生词本); JButton wordbook = new JButton(查看生词本); JTable jTable; DefaultTableModel jTableModel; private DataBase db; private WordData wdb; private MainFrame m; private JLabel wb_jlb = new JLabel(); private String currentWord = ; private JButton deleteFromWordbook, test; /输出面板的构造函数 public Dic(MainFrame m) this.m = m; db = new DataBase(); wdb = new WordData(); createWordbookTable(); /对本面板的设置 this.setLayout(null); setPreferredSize(new Dimension(500, 350); javax.swing.border.LineBorder lineBorder = new javax.swing.border.LineBorder(Color.black, 1); add(new JLabel(请输入单词).setBounds(0, 0, 100, 25); /输入主窗口JTextfield 的设置 inputMessage.setHorizontalAlignment(JTextField.LEFT); inputMessage.setFont(new Font(宋体, Font.BOLD, 15); inputMessage.setBorder(lineBorder); inputMessage.selectAll(); add(inputMessage).setBounds(100, 0, 300, 25); /按钮设置 add(jbt).setBounds(400, 0, 100, 25); outputMessage.setFont(new Font(Times, Font.BOLD, 15); outputMessage.setBorder(lineBorder); outputMessage.setEditable(false); outputMessage.setLineWrap(true); outputMessage.setWrapStyleWord(true); outputMessage.setBackground(new Color(Color.HSBtoRGB(11, 11, 66); /对衍生词输出面板的设置,是一个JList list.setBackground(new Color(Color.HSBtoRGB(21, 99, 66); JScrollPane scrollPane2 = new JScrollPane(list); add(scrollPane2).setBounds(0, 25, 100, 300); add(outputMessage).setBounds(100, 25, 400, 270); add(antiSeach).setBounds(100, 295, 133, 28); add(writeToWordbok).setBounds(233, 295, 133, 28); add(wordbook).setBounds(366, 295, 134, 28); writeToWordbok.setEnabled(false); wordbook.setEnabled(false); inputMessage.addActionListener(this); jbt.addActionListener(this); list.addListSelectionListener(this); inputMessage.addKeyListener(this); antiSeach.addActionListener(this); wordbook.addActionListener(this); writeToWordbok.addActionListener(this); public void actionPerformed(ActionEvent e) if (e.getSource() = inputMessage) try String tmp = inputMessage.getText(); /判断输入是中文还是英文,选择相对应的搜索方法 if (Search.isChiString(tmp) String answer = Search.c2esearch(tmp, wdb); outputMessage.setText(answer); else String answer = Search.e2csearch(tmp, wdb); outputMessage.setText(tmp + nn + answer); currentWord = tmp; catch (Exception ex) else if (e.getSource() = jbt) try String tmp = inputMessage.getText(); /判断输入是中文还是英文,选择相对应的搜索方法 if (Search.isChiString(tmp) String answer = Search.c2esearch(tmp, wdb); outputMessage.setText(answer); else String answer = Search.e2csearch(tmp, wdb); outputMessage.setText(tmp + nn + answer); if (!Search.getIsSimSearch() currentWord = tmp; else currentWord = ; catch (Exception ex) else if (e.getSource() = antiSeach) String tmp = outputMessage.getSelectedText(); try inputMessage.setText(tmp); /判断输入是中文还是英文,选择相对应的搜索方法 if (Search.isChiString(tmp) String answer = Search.c2esearch(tmp, wdb); outputMessage.setText(answer); else String answer = Search.e2csearch(tmp, wdb); outputMessage.setText(tmp + nn + answer); catch (Exception ex) else if (e.getSource() = wordbook) m.p7.removeAll(); m.p7.revalidate(); wb_jlb.setText(生词本 ); wb_jlb.setFont(new Font(宋体, Font.BOLD, 15); wb_jlb.setHorizontalAlignment(JLabel.CENTER); wb_jlb.setOpaque(true); wb_jlb.setBackground(new Color(Color.HSBtoRGB(
展开阅读全文