打字训练软件《Java语言程序设计》课程设计课设题目:打字训练测试软件院系:计算机科学与技术学院专业:物联网学生姓名:宋杰学号:123921041学生姓名:王鹏学号:123921042学生姓名:于渊学号:123921043指导教师:段善荣2014年12月1打字训练测试软件1、打字训练测试软件的概述1.1背景与意义计算机在20世纪后半期取得了飞速发展,随着网络的发展,已经成为人们日常生活中不可或缺的一部分,如何快速的掌握计算机操作技能显得非常重要,其中打字速度更是衡量一个人操作熟练与否的重要标志,因此开发一种高效的打字程序显得迫在眉睫。目前大多数打字程序都是只能在Windows下运行,跨平台运行能力不是很强。为了适应当下的需求,格外需要一款新的打字程序。我们小组开发的这个用JAVA设计的打字训练测试软件,它的主要功能是从文件中录入一段英文或中文文档,并能给出错误率和平均录入速度。在该文档设计中,为了方便,文档格式设置为txt格式。该软件能实现从磁盘上寻找打开一个文件、实时显示打字速度和剩余时间等功能,应用到GUI,多线程,文件的输入输出等知识。需要从磁盘打开要录入文件的样本,录入时需要实时显示录入速度和剩余时间,录入结束后,显示录入速度和错误率。录入结束方式可以通过点击“结束测试”按钮结束测试,文章录入完成也自动结束录入,到达设置时间也自动结束录入。最后要求图形界面,界面2良好美观,主要是为了锻炼一下打字技能,提高打字速度,并能给出错误分析。2、打字训练测试软件的设计思路2.1系统主要功能本程序必需主要实现的功能如下:1)添加文件。从磁盘添加现有的文本文件显示在程序界面上方。2)设置测试时间。在打字开始前,可以设置测试时间,方便快捷地结束测试。3)显示测试结果。结果主要包括:打字速度和错误率。4)在录入过程中,显示当前速度和剩余时间。为了实时提醒用户打字速度和打字时间可以实时提示打字速度和剩余时间(剩余时间是设置的测试时间减掉已使用的时间).5)使用菜单栏。要求菜单栏可以从“文件——>打开”添加文件,可以从“文件——>退出”退出程序,可以从“帮助——>关于”了解程序信息。6)多情况结束测试。1.当测试结束时,结束测试。2.当点击“结束测试”按钮结束测试。3.当文章录入完成结束测试。32.2系统主要流程图打字训练功能模块文件功能测试功能打开文件退出系统取消操作时间设置速度测试显示错误率3、打字训练测试软件的功能模块3.1主窗口界面设计窗口为一个添加菜单栏的JFrame,菜单栏包括主要有文件和帮助两个部分,整体的JFrame用BorderLayout进行布局分成北中南三个块。其中北边是一个用GridLayout布局的JPanel分成0行2列,两列分别是一个JTextField(当前的速度,剩余时间);中间是一个GridLayout布局的JPanel分成2行1列,每行分别为一个CardLayout布局的JPanel,其中第一行里放了一个带按钮的JPanel(添加文件)和一个JTextArea,第4二行为JTextArea;南边是一个FlowLayout布局的JPanel,里面放两个居中的按钮(开始测试,结束测试),相关代码如下,该界面如图3.1所示publicvoidsetWindow(){JFramejf=newJFrame("英文打字测试");Containercont=jf.getContentPane();cont.setLayout(newBorderLayout());Fontft=newFont("新新字体",Font.PLAIN,20);JMenuBarjmb=newJMenuBar();JMenujm,jmHelp;jm=newJMenu("文件");jmHelp=newJMenu("帮助");jmi=newJMenuItem("打开");jmi.setActionCommand("打开");jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));jmiExit=newJMenuItem("退出");jmiExit.setActionCommand("退出");jmiAbout=newJMenuItem("关于");jmiAbout.setActionCommand("关于");jm.add(jmi);jm.addSeparator();jm.add(jmiExit);jmHelp.add(jmiAbout);jmb.add(jm);jmb.add(jmHelp);jtf1=newJTextField();jtf1.setFont(ft);jtf1.setEditable(false);jtf2=newJTextField();jtf2.setFont(ft);jtf2.setEditable(false);JPaneljptf=newJPanel(newGridLayout(0,2));5jptf.add(jtf1);jptf.add(jtf2);cont.add(BorderLayout.NORTH,jptf);JPaneljpg,jpf,jpb;jpg=newJPanel();jpg.setLayo...