基于Java的智能背单词自测系统
摘 要
随着信息时代科技的飞速发展,计算机技术大大地提高了工作效率,在辅助教学中的应用也越来越广泛。智能背单词自测系统是一种高效、便捷的学习方式,具有直观性和趣味性,能够提高用户的学习积极性和主动性,从而提高学习效率。用户可以选择多种方式进行背单词自测,测试后系统能够立即批改,准确判断对错,并进行统计测试情况,最后显示正确答案。管理员可以增加、删除和修改习题,查看每个用户每次的使用情况并对其管理。
本系统采用目前流行的Java软件Eclipse 3.7设置界面,后台数据库使用MySQL Server 5.0设计,利用JDBC技术连接数据库,从而实现系统的基本功能。设计系统的过程中,首先建立了系统的结构框架,然后在此基础上进行数据库的设计,接着经过详细设计时的不断修改和完善,测试阶段的反复调试和验证,最终形成达到设计要求的可行性系统。
目 录
1 引言
2 需求分析
2.1 功能需求分析
2.2 性能需求分析
2.3 数据需求分析
2.3.1 数据字典
2.3.2 绘制流程图
3 概要设计
3.1 系统开发环境
3.2 系统运行环境
3.2.1 环境变量的配置
3.3 关键技术
3.4 数据库设计
3.5 功能模块描述
3.5.1 需求功能描述
3.5.2 总体框架
3.5.3 各模块功能描述
4 详细设计
4.1 登录界面
4.2 用户注册界面
4.3 “每日一句”界面
4.4 用户主界面
4.4.1 单词浏览界面
4.4.2 背单词界面
4.4.3 查看生词库界面
4.4.4 修改密码界面
4.5 管理员主界面
4.5.1 查看题目界面
4.5.2 查看用户界面
5 系统调试与测试
5.1 系统调试
5.2 系统测试
5.2.1 测试的重要性及目的
5.2.2 测试的步骤
5.2.3 测试的主要内容
5.2.4 测试的结果
结束语
参考文献
致谢
引言
1 引言
计算机技术的普及和飞速发展,其应用涉及人们生活的方方面面。英语作为最重要的信息载体之一,已成为人们生活的各个领域中使用最广泛的语言。英语学习中最让人感到枯燥乏味的也许就是背单词了。单词是语言的基础,没有相当的词汇量,则阅读、听力、口语各个方面都必然处处受制。传统的背单词和测试的方法是死记硬背,效率不高,遗忘率高且枯燥乏味。本系统就是为了提高用户记忆单词的效率而设计的,最重要的是不再采用背字典这种让人感到痛苦的方法,而是用户使用系统进行自我测试的方法。
智能背单词自测系统具有数据传输和管理的功能,做完题目后计算机立即批改,即时反馈,而且测试方法灵活、测试内容多样,使得测试更加有效可信。用户可以便捷,快速的进行操作,同时也达到了稳定,准确的目的。本系统针对的用户群是在用户(新用户需要注册)和管理员,是一个客户与管理员互动的平台。用户使用此平台进行单词查询、加入生词库、背单词等操作。这和手工辞典操作是有区别的,它可以更简便的、直接的体现给用户,而且简单易用。管理员也可以使用此平台对题目和用户进行有效地管理。
(1)用户登录界面
(2)新用户注册界面
(3)“每日一句”界面
显示一个英文句子及其含义,3秒后该界面自动消失。
(4)用户主界面
用户可以进行单词查询、单词浏览、背单词、查看生词库、修改密码操作。
2.管理员模块
(1)管理员登录界面
(2)管理员主界面
管理员登录成功后,可以进行题目管理和用户管理操作。
3.系统测试和维护
测试该系统各种功能,以及对其相关功能进行必要的维护。
2.2 性能需求分析(1)正确性:根据定义本智能背单词系统的开发过程,在实际的开发操作过程中,逐步地实现,保证其程序正确。
(2)灵活性:该系统应该具有比较灵活的修改操作,对于系统的功能、用户、题目等部分具有灵活的更改功能,避免麻烦的重新开发。管理员对数据库定期进行更新题库的操作,使得用户不会重复的做题。
(3)稳定性:本系统应该具有持久的工作能力,使得在允许的数据库操作时,不会产生破坏性的现象。
(4)安全性:具有良好的身份认证机制,和方便的用户的密码修改策略。
2.3 数据需求分析2.3.1 数据字典(1)用户登录表(编号,用户名,密码)
(2)管理员登录表(编号,姓名,密码)
(3)每日一句表(编号,句子,句子含义)
(4)用户信息表(编号,用户名,题目类型号,总词数,正确数,错误数)
(5)单词表(单词编号,单词,单词含义,例句,例句含义)
(6)生词表(生词编号,生词,生词含义,例句,例句含义)
(7)试题表(类型号,题目号,题目,答案,选项A,选项B,选项C,选项D)
(8)四级词汇表(单词编号,单词,单词含义,例句,例句含义)
(9)六级词汇表(单词编号,单词,单词含义,例句,例句含义)
2.3.2 绘制流程图软件系统的概要设计就是根据之前得出的需求分析,总结使用者对该系统具体的需求,对进行总体的规划,从而确定系统的总体框架,以及程序的各个部件之间的关系。
3.1 系统开发环境
选择一个好的编程语言是开发一个系统的一个十分的重要前提。当前,面对众多的编程语言,让人感觉到无从选择,而本系统中用的是Java语言。之所以选择Java语言是因为在它强大的面向对象功能,使用它能够轻松的将界面显示和业务逻辑分开。
由于java语言的平台无关性,所以我选取在windows操作系统上进行开发,而且数据库设计用的是MySQL Server 5.0。
操作系统:Microsoft Windows 7 旗舰版
数据库: MySQL Server 5.0
JAVA开发包:JDK1.6
开发语言:Java
开发平台:Eclipse 3.7
3.2 系统运行环境
3.2.1 环境变量的配置想要配置Java的环境变量,首先就要安装JDK,安装后记下JDK的安装路径,然后按以下几个步骤配置环境变量:
(1)右击【我的电脑】---【属性】-----【高级】---【环境变量】
(2)选择【新建系统变量】--弹出“新建系统变量”对话框,在“变量名”文本框输入“JAVA_HOME”,在“变量值”文本框输入JDK的安装路径,单击“确定”按钮,如图3.1:
图3.1 配置JAVA_HOME
(3)在“系统变量”选项区域中查看PATH变量,如果不存在,则新建变量 PATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”或者是“%JAVA_HOME%\bin;”,单击“确定”按钮,如图3.2:
图3.2 配置Path
(4)在“系统变量”选项区域中查看CLASSPATH 变量,如果不存在,则新建变量CLASSPATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”。如图3.3:
图3.3 配置CLASSPATH
3.3 关键技术
3.3.1 Java语言
Java是由Sun公司于1995年推出的一种程序设计语言,它和C++语言有着千丝万缕的联系,而C++语言又是从C语言派生而来的,因此Java语言具备这两种程序设计语言的大部分特性。由于Java语言具有使用简便、完全面向对象、跨平台性、可移植性、健壮动态、安全可靠等特点,使得其在众多高级语言中脱颖而出。自从Java语言推出之后,其独树一帜的非凡品质使其受到广大程序员的欢迎。Java语言具有以下几个的特点:
(1)简单性
Java是一种简单的程序设计语言,可以通过最基本的方法来完成指定的任务。Java取消了许多程序设计语言中十分烦琐和难以理解的内容,并且具备垃圾自动回收的功能,大大简化了程序员的内存管理工作。
(2)面向对象
Java是一种完全面向对象的程序设计语言[12]。它的程序设计集中于对象及其接口,可以实现模块化和信息封装。并且通过继承机制,实现代码的重用功能。
(3)跨平台
Java的编译器可以生成一种与计算机体系结构无关的字节指令(Byte Code),Java能够在JVM(Java Virtual Machine)上执行[12]。
(4)健壮性
Java编写的程序在编译和运行时都要对可能出现的问题进行检查,从而能够在多种情况下稳定执行。同时,Java还能排除内存中的数据被覆盖和毁损的可能行以及可以在编译的时候提示可能出现却未被处理的异常。
(5)安全性
Java是一种安全的编程语言,可以防止他人访问对象的私有成员[12],也能够避免在指针操作红产生的错误。此外,其安全性也体现在编译层、解释层等多个层次上。
(6)可移植性
Java由于具有与平台无关的特性,从而具有良好的移植性。同时,Java的编译器主要由Java本身实现的,并且Java的解释器由C语言实现,这使得Java系统都具有很好的移植性。
3.3.2 C/S结构
C/S(Client/Server)结构被称为客户/服务器结构。其服务器一般采用高性能的PC、工作站或小型机,并且采用大型的数据库系统,比如Oracle、Sybase、或 SQL Server,客户端则需要安装专门的客户端软件。它是软件系统体系结构,它能够很好地利用两端硬件环境的优势,通过把任务合理地分配到服务器和客户端来实现C/S结构,从而使得系统的通讯开销得到降低。C/S结构具备能充分发挥客户端PC机的处理能力的特性,许多工作能够在客户端处理后再传交给服务器。
其对应的优点就是客户端响应速度快,具体表现主要有以下两点:
(1)应用服务器运行的数据负荷比较轻。
(2)对数据的储存管理比较透明。
其缺点主要有以下几点:
(1)高昂的投资且维护成本较大。
(2)只对局域网适用。
(3)客户端要安装专门的软件。
3.3.3 MySQL Server 5.0
MySQL Server 5.0是一个关系型数据库管理系统,开发者是瑞典MySQL AB公司,在2008年1月16日被SUN公司收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,这样就增加了速度并提高了灵活性,而不是将所有数据放在一个大仓库内。MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,很多中小型网站的开发都选择MySQL作为网站数据库库。
3.4 数据库设计
本系统使用的数据库是MySQL Server 5.0建立的数据库recite,根据实现智能背单词自测系统所涉及的数据,该数据库共建立了9张表,设计的表的结构如下(表的定义相同的用一个表显示):
表3.1用户、管理员登录表
表3.2每日一句表
表3.3单词、生词表
表3.4试题表
表3.5四、六级词汇表
3.5 功能模块描述
3.5.1 需求功能描述(1)用户登录:登录成功后才能使用该系统,根据自己的需要进行各种操作。
(2)用户注册:新用户在注册后,在系统启动界面输入账号和密码登录系统。
(3)“每日一句” 界面:用户登录成功后,弹出该界面,3秒后自动消失。
(4)用户操作:用户可以进行单词查询、单词浏览(浏览四、六级词汇)、背单词(可选择不同的题目类型)、查看生词库、修改密码操作。
(5)管理员登录: 登录成功后才能使用该系统,根据自己的需要进行各种操作。
(6)管理员操作:可以进行题目管理(查看,添加,删除,修改)和用户管理(查看,删除)操作。
3.5.2 总体框架本系统设计的目的就是方便使用者(用户和管理员)的操作,从而对用户的功能主要分为用户登录、单词查询、单词浏览、背单词、查看生词库、修改密码等几部分;对管理员的功能主要分为题目和用户管理两部分。
3.5.3 各模块功能描述本系统共分为用户模块和管理员模块(均含有主界面及各子界面),这两个主模块又分为若干个小模块。用户模块包括用户登录模块、用户注册模块、每日一句模块、单词查询模块、单词浏览模块、背单词模块、查看生词库模块、修改密码模块;管理员模块包括题目管理、用户管理。接下来就详细地介绍各个小模块的具体功能。
1.用户模块
(1)用户登录模块
该模块的功能是对用户的账号、密码进行验证。验证方法是将输入的账号、密码和数据库中的login2表的数据进行比较,验证正确后,就会弹出“每日一句”界面。同时,账号会被写进新建的一个文本文档中(文件名为“save.txt”),在背单词界面调用将其显示在JTable上。
(2)用户注册模块
该模块的功能是实现新用户注册。输入用户名和密码后,验证该用户名是否存在后,如果不存在,则注册成功。
(3)每日一句模块
该模块的功能是在一个对话框显示一句英文及其含义。用户登录成功后,从数据库中的每日一句表随机选择一个数据,显示在对话框中,持续3秒后自动消失。
(4)单词查询模块
该模块的功能是实现单词的查询。输入要查找的单词,将所输入的单词与数据库中words表的单词比较。如果words表存在该单词,则将表中该单词的含义、例句及例句含义显示出来。
(5)单词浏览模块
该模块的功能是实现浏览四、六级词汇。用户主可以选择浏览四级或六级词汇。弹出的对话框显示相应的词汇表的第一个单词,及其含义、例句、例句含义。对话框有四个按钮:“上一个”、“下一个”、“加入生词库”、“退出”,它们分别实现以下功能:浏览当前单词的上一个单词,下一个单词,将其加入到生词库中(包括含义、例句、例句含义),关闭对话框返回用户主界面。
(6)背单词模块
该模块的功能是实现背单词,也是本系统最重要的功能。用户可以选择试题1或试题2两种题目类型。弹出对话框,显示的是相应的题目表的第一道题目,用JLabel显示登录该系统的用户的用户名(通过读取在用户登录模块时新建的“save.txt”文件实现)。用textarea显示题目的内容(设置为只读),用四个JRadioButton分别显示四个选项(其中有一个是正确答案)。对话框有三个按钮:“上一题”、“下一题”、“结束”。它们的功能是:做上一题、做下一题、统计信息。系统在每次用户做上一题或下一题时,都会将用户所选的选项的内容记下,并与数据库的题目表中的答案比较。如果相同,则将数组a(i为题号)赋值为1;如果不同,则赋值为0。结束时,系统会统计a中为1的个数(赋值给rights)和0的个数(赋值给wrongs),且在一个消息对话框中显示用户使用情况:“总词数”(值为i),“正确数”(值为rights),“错误数”(值为wrongs)。同时,系统会将当前用户此次背单词的情况记录下来,将其写入数据库的用户表中,以便在管理员模块显示。
(7)查看生词库模块
该模块的功能是实现查看生词库。将数据库中的生词表显示在“查看生词库”对话框的表格中,表格包含两列:生词、含义。对话框有四个按钮:“添加”、“删除”、“查找”、“查看例句”。
A)添加生词:输入生词后,可以点击“搜索”按钮将其含义、例句显示出来(查询数据库的单词表),再点击 “保存”按钮就能加入到生词库中。
B)删除生词:首先要选中要删除的生词所在的那一行,再点击“删除”按钮就可以删除选中的生词,之后系统会重新显示所有的生词库中的生词。
C)查找生词:输入生词后就可以查找生词库中的生词,用户可以点击“删除”按钮来删除该生词。
D)查看例句:首先要选中要查看例句的生词所在的那一行,点击“查看例句”按钮后,系统会显示选中生词的例句及例句含义。
(8)修改密码模块
该模块的功能是实现修改用户密码。输入用户名、原始密码和新密码,验证正确后,密码修改成功。
2. 管理员模块
(1)题目管理
该模块的功能是实现题目的管理。管理员可以查看、删除和修改所有的题目,并添加新题目,及以退出该模块。
(2)用户管理
该模块的功能是实现用户的管理。管理员可以查看每个用户每次背单词的情况(包括题目类型、总词数、正确数、错误数),点击“删除”按钮可以删除选中的用户。
使用者可以选择登录系统的身份(用户和管理员),输入账号和密码,验证成功后,弹出相应的主界面。若验证失败则通过提示登录失败,使用者需要重新登录或是注册,如图4.1:
图4.1 用户登录界面
新用户输入用户名和密码后进行注册,用户名不能与数据库中已存在用户名相同的,如图4.2:
图4.2 新用户注册界面
在用户登录成功后,弹出该界面,在3秒后自动消失(用线程延迟函数实现),如图4.3:
如图4.3 每日一句界面
用户可以对本界面的各项功能模块进行操作,如图4.4:
如图4.4 用户主界面
4.4.1 单词浏览界面选择浏览四级或六级词汇后,弹出相应的单词浏览界面,用户可以浏览词汇表中的所有词汇,同时可以根据需要将其加入到生词库,如图4.5:
如图4.5 单词浏览界面
4.4.2 背单词界面用户可以在该界面进行背单词操作,四个选项中选择最符合题意的一个选项作为答案,如图4.6:
图4.6 背单词界面
(1)点击“结束”按钮后,系统统计用户的背诵情况,如图4.7:
图4.7 用户使用情况界面
4.4.3 查看生词库界面该界面用一个Jtable显示生词库中的所有生词及其含义,如图4.8:
图4.8 查看生词库界面
(1)点击“添加”按钮可以添加生词,点击“搜索”按钮,查找该生词是否在数据的单词表中,只有单词表中存在该生词,才能将其加入生词库,如图4.9:
图4.9 添加生词界面
(2)选中要删除的生词所在那一行,点击“删除”按钮,确认后,弹出新的生词库对话框(删除的生词已不在Jtable中),如图4.10(删除burst):
图4.10 删除单词界面
(3)选中要查看例句的生词那一行,点击“查看例句”按钮,显示其例句和例句含义,如图4.11(查看about的例句):
图4.11 查看例句界面
4.4.4 修改密码界面用户输入用户名、原始密码、新密码,点击“确定”,系统会自动验证原始密码是否正确,如图4.12:
图4.12 修改密码界面
验证正确后,提示“修改密码成功!”,如图4.13:
图4.13 修改密码成功界面
4.5 管理员主界面管理员可以对本界面的各项功能模块进行操作,如图4.14:
图4.14 管理员主界面
4.5.1 查看题目界面管理员可以在本界面查看所有的题目,如图4.15:
图4.15 查看题目界面
(1)点击“添加”按钮,在弹出的添加题目界面,输入相应的数据,点击“保存”按钮后,添加题目成功,如图4.16:
图4.16 添加题目界面
(2)选中要删除题目的那一行,点击“删除”按钮,确认后,删除被选中的题目,如图4.17(删除类型号为1,题目号为3的题目):
图4.17 删除题目界面
(3)选中一行,点击“修改”按钮,如图4.18:
图4.18 修改题目界面
修改选项A为:prep.关于,大约,结果如图4.19:
图4.19 修改题目后界面
4.5.2 查看用户界面该界面用Jtable显示每个用户每次背单词的情况,如图4.20:
图4.20 查看用户界面
选中要删除用户的那一行,点击“删除”按钮后,删除选中的用户,成功后弹出新的查看用户界面(删除的用户已不在Jtable中),如图4.21(删除用户a):
图4.21 删除用户后界面
测试的主要步骤如图5.1:
图5.1 测试工作流程
5.2.3 测试的主要内容系统按照以上流程进行测试,测试结果如下:实现了基本功能,可以正常使用。但系统的功能还不够完善,在系统投入使用后,可能会有一些隐藏的错误被暴露出来。
通过最近一段时间准备论文,我对计算机专业的基本的知识、原理有了更进一步的认识了解,使得以前的知识有个一个连接,更好的为实现应用而服务。
在设计的过程中,加深了对JAVA的了解,对其有了更深入的认识,设计的过程也是学习的过程,而且实践的过程中,学习的效果更深刻,遇到问题,就去解决,自己解决不了的就上网去查,或者请教别人,同学或者老师,很大程度上提高了自学的能力,以往只是注重理论的学习,刚开始实践,可能很陌生,好多东西不懂,不会,但慢慢的熟悉后,再次做类似的设计心里有底,有种熟悉,轻车熟路的感觉,这对软件的设计有很大的帮助,同时,这些工作为以后做项目奠定了基础,加强了对知识的掌握。做完这些,还需努力,为以后更多的项目做准备。
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |