基于JAVA模拟背单词系统(含源文件)

问题描述:

1 【摘要】

随着信息时代科技的飞速发展,计算机等技术的发展,不仅提高了工作效率,而且大大的提高了其安全性。对于一些复杂的信息,就能够充分的发挥它们的优越性。背单词系统就是技术发展的产物,随着我们与外国人的接触越来越多,英语成为了我们必不可少的一门外语,而学习外语也就成为了我们必不可少的。本系统就是为了更方便人们的更好的学习外语而设计的。

背单词系统作为一款数据传输的技术,用户信息和词库的管理的繁杂,包含很多的数据的管理,以前的都是人们用最简单的辞典,在众多的资料中翻阅、查找,费时、费力,而且应用性非常差。

针对这一系列问题,我们设计了这么一个系统,使得用户可以便捷,快速的进行操作,同时也达到了稳定,准确的目的。

关键词: ATM 、C/S架构、JAVA 、Access

2 【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 people's 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 】

3 目 录

引 言 ................................................................................................................................................ 1

第一章 概 述 . .................................................................................................................................. 2

1.1 课题来源 . ........................................................................................................................... 2

1.2 设计目的及内容 . ............................................................................................................... 2

1.2.1 设计目的 . .............................................................................................................. 2

1.2.2 相关内容 . .............................................................................................................. 3

1.3.1 JAVA语言简介 . ..................................................................................................... 3

1.3.2 JAVA语言的网络运用 . ......................................................................................... 4

1.3.3 C/S架构 . ............................................................................................................... 4

1.3.4 Access数据库 . ..................................................................................................... 5

1.3.5 Access的特性 . ..................................................................................................... 6

第二章 系统调研及可行性分析 . .................................................................................................... 8

2.1 系统调研 . ........................................................................................................................... 8

2.2 可行性分析概述 . ............................................................................................................... 8

2.3 技术可行性分析 . ............................................................................................................... 9

第三章 需求及总体设计 . .............................................................................................................. 10

3.1系统需求分析 . ................................................................................................................. 10

3.1.1系统的功能需求 . ................................................................................................. 10

3.1.2 系统的开发环境 . ................................................................................................ 10

3.1.3 数据库设计 . ........................................................................................................ 10

第四章 系统主要功能实现 . .......................................................................................................... 15

4.1 用户系统模块的实现 . .................................................................................................... 15

第五章 系统测试 . .......................................................................................................................... 27

5.1软件测试的目的及意义 . .................................................................................................. 27

5.2测试的方法 . ...................................................................................................................... 27

1. 白盒测试 . ..................................................................................................................... 27

2. 黑盒测试 . ..................................................................................................................... 27

3. 回归测试 . ..................................................................................................................... 27

5.3测试用例 . .......................................................................................................................... 28

结 论 ............................................................................................................................................ 30

谢 辞 ............................................................................................................................................ 31

参考文献........................................................................................................................................... 1

1

引 言

背单词系统的目的就是建立一个客户平台,用户使用此平台进行单词翻译、单词查询、加入生词库等。相对于手工辞典操作一样的,不过背单词系统可以更简便的直接的体现给用户,而且使用方便,操作简单。

背单词系统的针对的用户群是使用此软件系统并在系统里开户,用户做为系统的服务群体,按照自己的需求进行单词的查询,翻译。按照用户自己的方式选择所需背记单词的数量,难度。遇到有生僻的单词可以加入生词库方便以后的二次查找,节省时间,方便阅览。

2

第一章 概 述

1.1 课题来源

信息是人类社会发展的三大资源之一,随着人类进入信息时代,在一个国家里管理信息系统的建立,运行和发展水平,标志着这个国家的管理现代化水平和信息化水平。

随着现代信息技术的飞速发展,国际信息化浪潮是一浪高过一浪。自1993年美国率先提出国家信息基础设施NII (National Information Infrastructure,常被称为信息高速公路)计划之后,日、法、英、德等国家也纷纷提出各自的类似计划,达国家之间展开了激烈竞争。发展中国家如韩国、新加坡也都制定了本国信息化计划。1995年2月,以美国为首的西方七国集团首脑聚会鲁塞尔,讨论建设全球信息基础设施GII 的计划[7]。从而兴起于美、日等少数发达国家的信息化建设浪潮,已波及到全世界各个角落。

随着信息时代科技的飞速发展,计算机等技术的发展,不仅提高了工作效率,而且大大的提高了其安全性。对于一些复杂的信息,就能够充分的发挥它们的优越性。背单词系统就是技术发展的产物,随着我们与外国人的接触越来越多,英语成为了我们必不可少的一门外语,而学习外语也就成为了我们必不可少的。本系统就是为了更方便人们的更好的学习外语而设计的。

背单词系统作为一款数据传输的技术,用户信息和词库的管理的繁杂,包含很多的数据的管理,以前的都是人们用最简单的辞典,在众多的资料中翻阅、查找,费时、费力,而且应用性非常差。

针对这一系列问题,我们设计了这么一个系统,使得用户可以便捷,快速的进行操作,同时也达到了稳定,准确的目的。

1.2 设计目的及内容

1.2.1 设计目的

本课题背单词系统的目的就是建立一个客户平台,用户使用此平台进行单词翻译、单词查询、加入生词库等。相对于手工辞典操作一样的,不过背单词系统可以更简便的直接的体现给用户,而且使用方便,操作简单。

背单词系统的针对的用户群是使用此软件系统并在系统里开户,用户做为系统的服

3

务群体,按照自己的需求进行单词的查询,翻译。按照用户自己的方式选择所需背记单词的数量,难度。遇到有生僻的单词可以加入生词库方便以后的二次查找,节省时间,方便阅览。

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 ++语言中容易引起错误

4

的指针(以引用取代)、运算符重载(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结构的软件需要针对不

5

同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。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 )技术,但是未能成为一种完整的面向对象开发工具。

6

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 文档,还可以建立动态的数据

7

库报表和窗体等。Access 还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成HTML 文件,轻松构建Internet/Intranet的应用。

7) 支持广泛,易于扩展,弹性较大

能够将通过链接表的方式来打开EXCEL 文件、格式化文本文件等,这样

就可以利用数据库的高效率对其中的数据进行查询、处理。还可以通过以Access 作为前台客户端,以SQL Server 作为后台数据库的方式(如ADP )开发大型数据库应用系统。

总之,Access 是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发;即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。

8

第二章 系统调研及可行性分析

2.1 系统调研

首先,背单词系统是面向特定对象群是在此软件系统有使用需求的用户,所以用户登陆系统后,应该能根据自己的需要进行各项操作。鉴于软件系统使用环境一般在网络上或单机使用,为了考虑到软件的安全性,对于每个用户来说,系统的安全性直接影响着自身的利益。特别是网络环境,到处伴随着危险,背单词系统针对这一用户群,采取一些有效的措施,登陆后用户信息反馈到客户端数据库里,做好防止信息被拦截工作。

2.2 可行性分析概述

可行性分析是在用户的要求和系统调研的基础上进行的,对新系统的开发从社会、技术、经济、管理等方面进行分析,并得出新系统的开发工作可行、不可行、需要修改、追加投资、暂缓开发、分步实施等方案和结论,最后完成可行性分析。

可行性分析一般可定义为:可行性分析是在建设的前期对工程项目的一种考察和鉴定,对拟议中的项目进行全面与综合的技术、经济能力的调查,判断它是否可行。

(1)可行性分析阶段的主要工作包括以下几个方面:

①新系统目标可行性分析:

分析新系统的目标是否符合企业的现状和发展的需要。

②社会可行性分析:

社会可行性分析主要是指管理信息系统的开发是否符合国家法律、下策,是否能够与社会大系统实现良好的对接。

③技术可行性分析:

技术可行性分析是根据新系统的目标来衡量是否具备所需要的技术,包括系统开发人员数量和水平,硬件方面,软件方面及其它应用技术。

④经济可行性分析

经济可行性分析主要是对开发新系统所投入的资金与系统投入使用后所带来的经济效益进行比较,确认新系统是否会给企业带来一定的经济效益。

⑤管理可行性分析:

9

管理可行性分析主要是分析企业现行的管理体制和企业领导是否具有现代化的管理意识和管理水平。

2.3 技术可行性分析

技术可行性分析主要包括四个方面:目前有关的技术能否支持所开发的新系统;新系统开发人员的数量和水平,即人力资源;硬件和软件资源。

(1)技术支持:

首先根据新系统的目标,考虑目前有关的技术能否支持所开发的新系统。这里讨论的技术必须是已经普遍使用的,而不是待研究的或正在研究的。

(2)硬件资源:

开发管理信息系统所需的硬件资源包含以下两个方面:

系统开发人员在管理信息系统的开发过程中所需要的计算机设备及其有关的外部设备;管理信息系统开发成功投入使用后,使用单位所应具备的计算机设备及其有关的外围设备。对硬件资源进行可行性分析时主要考虑计算机的主机内存、类型、功能、联网能力、安全保护措施以及输入/输出设备,外存储器和联网数据通信设备的配置、功能、效率等指标是否符合系统方案设计要求,同时还要考虑计算机的性能/价格比。

(3)软件资源

软件资源的可行性分析主要考虑以下几点是否满足用户的要求:

①操作系统的选择;

②编译系统的选择;

③数据库管理系统的选择;

④高级编程语言的选择;

⑤汉字处理系统的选择;

⑥应用软件包的选择。

本系统在开发前,与中心的领导和有关的操作人员密切沟通,认真听取他们的意见,并吸收他们的积极观点,使本系统的开发在相当大的程度上具有一定的先进性和合理性。

10

第三章 需求及总体设计

3.1系统需求分析

3.1.1系统的功能需求

用户登录:用户可以申请办理一个学号和密码,然后登录。

单词查询:用户可以查找单词库中的单词。

修改密码:用户可以更改自己学号的密码。

加入生词库:用户可以自由的将生僻单词加入到生词库中

3.1.2 系统的开发环境

选择一个好的编程语言十分的重要,当前,面对众多的编程语言,很多人无从选择,而本人在本系统中选择了java 语言。之所以选择java 语言是因为在它强大的面向对象功能,使用它能够轻松的将界面显示和业务逻辑分开。

由于java 语言的平台无关性,所以我选取在windows 操作系统上做的开发,而且数据库也用的比较小型的access2003,不过要移植到其他的操作系统上也很容易,只需要修改DBConnectionManager.java 中连接数据库的相关信息就行了。整个ATM 模拟系统的开发环境如下:

操作系统:Microsoft Windows 7 旗舰版

数据库: Microsoft Access 2003

JA V A 开发包:JDK1.6

开发语言:JA V A

开发平台:MyEclipse6.0

3.1.3 数据库设计

本系统使用的access 数据库保存在网站目录下的data/bank.mdb中,该数据库中有4张表,下面分别加以描述。

数据库的逻辑设计

11

由于概念设计的结果是ER 图,DBMS 一般采用关系型(本系统所使用的MS ACCESS就是关系型的DBMS ),因此数据库的逻辑设计过程就是把ER 图转化为关系模式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义。数据字典

:

英汉表

汉英表

班级表

12

学生表

生词本

3.2系统总体功能结构设计

背单词系统需要满足来两方面的需求,这两个方面分别是用户、单词管理。用户的需求是进行各项功能的操作;管理系统对用户的信息进行操作处理,同时保存在数据库中以便用户查询;管理系统的功能最为复杂,他包括对数据库的维护、用户信息维护及分数发布情况进行维护。

用户可以根据开户申请到的学号和密码登录到系统,登录成功后可进行四种操作,一是查询,二是查看,三是修改密码,四是生词库。其总体功能如图3-1所示: 功能模块一般可分为:

查询,查找,加入生词库,使用生词库。

13

图3-1 模拟背单词系统功能结构图

在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS 的限制。

14

3.3 系统E-R 图

系统E-R 图

15

第四章 系统主要功能实现

4.1 用户系统模块的实现

<a>. 功能

○查找

○查看

○加入生词库

(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 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(" 欢迎回来," ));

16

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 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(" 总共学习:" ));

17

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);

18

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);

19

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;

20

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)));

23

wb_jlb.setBackground(new Color(Color.HSBtoRGB(11, 11, 66))); m.p7.add(wb_jlb).setBounds(0, 0, 300, 23);

m.currentSno = m.getCurrentSno();

createWordbookTable();

setWordbookTableVisable();

deleteFromWordbook = new JButton("删除生词");

test = new JButton("生词测试");

deleteFromWordbook.addActionListener(this);

m.p7.add(deleteFromWordbook).setBounds(0, 300, 149, 25);

m.p7.add(test).setBounds(150, 300, 149, 25);

} else if (e.getSource() == writeToWordbok) {

if (currentWord==null) {

JOptionPane.showMessageDialog(this, "您没有选择一个合法的单词"); } else {

m.currentSno = m.getCurrentSno();

db.writeToWorkbook(currentWord, m.currentSno);

refreshWordbookTable(jTable);

JOptionPane.showMessageDialog(this, "添加成功!");

}

} else if (e.getSource() == deleteFromWordbook) {

String tempword = null;

if (jTable.getSelectedRow() < 0) {

JOptionPane.showMessageDialog(this, "您没有选中一个词"); }

tempword = jTable.getValueAt(jTable.getSelectedRow(), 0).toString(); m.currentSno = m.getCurrentSno();

db.deleteFromWordBook(tempword, m.currentSno);

refreshWordbookTable(jTable);

JOptionPane.showMessageDialog(this, "删除成功!");

}

}

public void valueChanged(ListSelectionEvent e) {

if (e.getSource() == list) {

//当选中相应的单词,显示其意思

25

}

public void keyTyped(KeyEvent e) {

}

public void keyPressed(KeyEvent e) {

}

public void mousePressed(MouseEvent e) {

throw new UnsupportedOperationException("Not supported yet.");

}

public void mouseReleased(MouseEvent e) {

throw new UnsupportedOperationException("Not supported yet.");

}

public void mouseEntered(MouseEvent e) {

throw new UnsupportedOperationException("Not supported yet.");

}

public void mouseExited(MouseEvent e) {

throw new UnsupportedOperationException("Not supported yet.");

}

public void createWordbookTable() {

String[][] testValue = new DataBase().getTestValue(m.currentSno);

String[] testTitle = {"单词", "用户"};

jTableModel = new DefaultTableModel(testValue, testTitle);

jTable = new JTable(jTableModel);

jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//将表的重新设置大小功能去掉 jTable.setRowHeight(20);

TableColumn firsetColumn = jTable.getColumnModel().getColumn(0);

TableColumn secondColumn = jTable.getColumnModel().getColumn(1);

firsetColumn.setPreferredWidth(130);

secondColumn.setPreferredWidth(130);

}

26

public void setWordbookTableVisable() {

JScrollPane jScrollPane = new JScrollPane(jTable);

m.p7.add(jScrollPane).setBounds(20, 24, 280, 275);

}

public void refreshWordbookTable(JTable t) {

String[][] testValue = new DataBase().getTestValue(m.currentSno); String[] testTitle = {"单词", "用户"};

jTableModel.setDataVector(testValue, testTitle);

jTableModel.fireTableStructureChanged();

jTable.setModel(jTableModel);

TableColumn firsetColumn = jTable.getColumnModel().getColumn(0); TableColumn secondColumn = jTable.getColumnModel().getColumn(1); firsetColumn.setPreferredWidth(130);

secondColumn.setPreferredWidth(130);

jTable.repaint();

jTable.revalidate();

jTable.updateUI();

}

}

27

第五章 系统测试

5.1软件测试的目的及意义

由于人们对于软件质量的重视程度越来越高,就导致了测试在软件开发中的地位越来越重要。软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成软件开发项目。不足的测试势必使软件带着一些未揭露的隐藏错误投入运行,这将意味着更大的危险让用户承担。软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。它是软件生命周期中一项非常重要且非常复杂的工作,对软件可靠性保证具有极其重要的意义。

5.2测试的方法

1. 白盒测试

白盒测试是对软件产品的内部工作过程,通过测试证明每种内部操作是否符合设计规格要求,全面了解程序内部逻辑结构、对所有逻辑路径进行测试。主要立足于对软件的过程性细节做到细致的检查,对程序的所有逻辑路径进行测试,通过在不同的点检查程序的状态,确定实际的状态是否与预期的状态一致。

2. 黑盒测试

黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

3. 回归测试

在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来问题。软件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段

28

加入了新的模块。当软件中所含错误被发现时,如果错误跟踪与管理系统不够完善,就可能会遗漏对这些错误的修改;而开发者对错误理解的不够透彻,也可能导致所做的修改只修正了错误的外在表现,而没有修复错误本身,从而造成修改失败;修改还有可能产生副作用从而导致软件未被修改的部分产生新的问题,使本来工作正常的功能产生错误。同样,在有新代码加入软件的时候,除了新加入的代码中有可能含有错误外,新代码还有可能对原有的代码带来影响。因此,每当软件发生变化时,我们就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。同时,还需要补充新的测试用例来测试新的或被修改了的功能。为了验证修改的正确性及其影响就需要进行回归测试。

5.3测试用例

测试的主要内容是按实际操作的数据向系统的各个功能模块输入数据,检测输出结果是否符合预期要求。

1.登入测试:在登入测试是在登入页面开始在输入用户名和密码登入时自动区分主页和用户,使主页管理员在进入主页后能使用后台功能。登入测试用例表6-1所示:

以下是登入的3种测试结果:

图5-1 输入正确的用户名的密码

29

图5-2 输入错误的用户名、密码

2.单词查找模块测试:用户用学号登入,对前台背单词软件基本模块进行测试。 测试内容:查询单词、加入生词库、查看生词库。测试各个按键功能。

测试结果:能正常查询、加入生词、查看生词。各按键功能可以实现。

测试结果:操作成功,各功能都能实现。

30

结 论

制作一款软件还真不是一朝一夕的事情,每件事情你都要认真的去做,去跟同学探讨、交流,在制作背单词系统的时候,自己在其中也能学到很多知识,运用老师所交的知识,去制作软件,没有交的可以翻阅书籍,网上找资料,同时自己也能学到一些自己不知道的,不管以后走出社会有没有用到,有没有从事这项工作,这都是一项很值得借鉴的经验。

由于时间有限,加上本人的水平有限,可能在某些地方还有些Bug ,不过对于一个模拟背单词软件系统的基本功能都做到了。通过这次毕业设计,我对Java 语言面向对象的设计方法以及通过使用MyEclipse 开发环境实现了界面与后台程序的分离的技术有了更深一步的认识。

31

谢 辞

时光匆匆流逝,四年的大学生活弹指一挥间。回首这四年的时光,我学到了很多知识,也一步一步地成熟。感谢交大的老师们,教会了我许多宝贵的知识和做人的道理,同时他们孜孜不倦、严谨细致的作风感染了我。

在此我特别要忠心地感谢我的指导教师—— 某某 老师。某某老师在我毕业设计的过程中给予了我悉心的指导,在此次设计对程序的设计要求以及论文的书写要求都对我作了详细的讲解,并实时对我设计的进度进行跟踪,正是老师的认真与负责,让我顺利完成了本次毕业设计。同时老师认真负责的工作态度、严谨的治学精神以及深厚的学术水平都使我受益匪浅,这对我以后的工作和学习都将是一种巨大的帮助。

还要感谢我的同学们,在我遇到困难的时候给予了我不少关心和帮助。

感谢各位老师耐心审阅我的论文,提出许多宝贵的意见和建议。

自己改改谢

1

参考文献

[1] 飞思科技产品研发中心 编著. 《精通 Jbuilder 9》. 电子工业出版社,2003.8.

[2] 周影 . 《网络编程语言JAVA 实例教程》. 电子工业出版社,2003.6.

[3] 陈海山. 《深入Java 编程》. 清华大学出版社,2002.2.

[4] 清宏计算机工作室 . 《JAVA 编程技巧》. 机械工业出版社,2002.1.

[5] Roger S. Pressman, 《Software Engineering Fifth Edition 》, 清华大学出版社,2002.5.

[6] Jose Annunziato. 《JAVA 速成教程》. 机械工业出版社,2002.1.

[7] Ethan Cerami and O ’Reilly. 《JAVA APPLICATION 》. 电子工业出版社, 2003.5

[8] David Chappell Tyler Jewell. 《Java 》. 电子工业出版社,2003.8.

[9] 张海藩. 软件工程导论[M].北京:清华大学出版社,2001.

[10] 陆惠恩. 软件工程实践教程[M].北京:机械工业出版社,2006.

[11] Bruce Eckel. Thinking in Java[M].Prentice Hall PTR,1998.

[12] Vivek Chopra. JSP Advanced Programming Design[M].Pearson Education,2003.

[13] 柳西玲, 许斌.Java 语言应用开发基础[M].北京:清华大学出版社,2006.

[14] 吴建, 张旭东.JAVA 网络开发入门与实践[M].北京:人民邮电出版社,2006.

[15] 刘亚滨. 精通Eclipse [M].北京:电子工业出版社,2004.

[16] 应用及实例集锦[M].北京:人民邮电出版社;2002.

[17] 叶达峰. Eclipse 编程技术与实例[M].北京:人民邮电出版社,2004.

1个回答 分类:综合 2018-01-23

问题解答:

我来补答
 
 
展开全文阅读
剩余:2000