版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号软件工程与计算(1)课程设计题目英文打字测试系统二级学院专业班级学生姓名学号指导教师评阅教师时间2012/9/20重庆理工大学 英文打字测试系统PAGE26目录摘要 21. 绪论 32. 项目背景 42.1. 发展史 42.2. 现状 43. 系统概述 53.1. 系统基本要求和功能描述 53.2. 系统实现的内容 53.3. 系统的编写目的 54. 系统分析 54.1. 数据分析 54.2. 功能分析 64.3. 人员分析 65. 系统设计 65.1. 主界面设计 65.2. 功能按扭设计 85.3. 菜单栏设计 85.4. 系统流程图 86. 系统主要代码实现 96.1. 窗体的代码实现 96.2. 各个功能键的实现 106.2.1 New功能 106.2.2 Stop功能 116.2.3 Help功能 136.2.4 Exit功能 137. 总结 14参考文献 15摘要二十世纪后半期,计算机取得了飞速的发展。现在,随着网络技术的发展,计算机已经成为人们生活中不可或缺的一部分。但是很多人对于计算机的操作能力及认知极为匮乏,因此提高人们对计算机的了解以及操作能力已经非常重要。而打字速度是用来衡量一个人操作熟练程度的一个重要方面。当前打字软件的市场已经达到了一定的高度,本软件设计开发的方式是仅仅是简单的使用户能够测试自己的打字速度与正确率。本软件使用的开发工具是JAVA,它是当前比较流行的开发工具。在构造图形及其处理方面具有很强的优势,能够为用户构造一个比较美观的打字测试界面,并且能够很好的测试您的打字速度以及正确率,请用户放心使用。关键词:打字速度正确率熟练度JAVA绪论随着科学技术的不断提高,计算机科学技术日渐成熟,计算机已经深入到人们工作和生活的每个个角落,对计算机操作的熟练已经不可缺少。由于现在语音录入技术的不成熟,绝大多数的计算机用户依旧使用键盘来作为录入工具,所以我编了这样一个程序,希望能对计算机初学者和想提高打字速度的朋友们有所帮助。计算机是人类社会20世纪的重大科技成果之一。自1946年世界第一台电子数字计算机诞生至今,在短短几十年的时间里,计算机技术得到了飞速发展。目前计算机已广泛应用在工业,农业,科技,国防,文教,卫生,家庭生活等各个领域中,已成为现代人类生活不可缺少的工具之一。本系统构建了英文打字练习系统。打字测试系统使用了java语言来设计系统,Windows7开发平台。本系统是一个java构造的系统,充分利用java在GUI开发组件方面的优势和模块化设计思想,对打字练习系统界面进行整体部署。完成打字练习软件开发,培养学生的程序设计和开发能力。计算机科学技术的发展不仅极大的促进了整个科学技术的发展,而且明显的加快了经济信息化和社会信息化的进程。因此计算机教育在各国倍受重视,计算机知识与能力已经成为21世纪人才素质的基本要素之一。我国也非常重视计算机教育,国家已经开始在大中专学校及小学普及计算机,计算机操作技能及操作水平的提高尤为重要。而打字速度是衡量一个人计算机水平的一个重要方面。现在各大中专学校都对在校大学生的打字速度进行考核,使他们能够满足社会的需要。项目背景发展史金山打字2003
完全摆脱枯燥学习的速学打字软件,循序渐进突破盲打障碍,短时间运指如飞;
新手上路即学即会,拼音练习短期速成;
易错键常用词重点练习,纠正南方音模糊音;不背字根照学五笔,提供五笔反查工具;
配有数字键、同声录入等12项职业训练。金山打字通2006 更为合理的设计规划,它在各个模块中都有多项改进,目的让用户能在由浅入深出的练习中循序渐进地提高。在英文打字的键位练习中,用户可以选择键位练习课程,分键位进行练习;而且增加了手指图形,不但能提示每个字母在键盘的位置,更可以知道用哪个手指来敲击当前需要键入的字符。拼音打字从音节练习入手,用户通过对方言模糊音、普通话异读词的练习,可以纠正用户在拼音输入中遇到的错误金山打字2006 加个性化的设计能真正满足不同用户的需要。该版本为您提供了机械、电子、医学、经贸、计算机、法律等十个专业的中英文词汇和文章;您还可以将自己喜欢的文章或工作中经常用到的内容调入到相应的测试模块,进行专门的练习。在打字游戏中,新添太空大战游戏,增加角色扮演类的游戏——生死时速,支持网络对决,更为引人入胜。支持多用户管理,用户登录成功后,能查看个人的学习记录;系统还能提出学习建议、跟踪用户打字速度增长的整个过程。现状目前的打字系统大多数都是进行单击测试,测试时只能完全依靠自觉,有的学生投机取巧,得到不真实的结果,这样就不便于学校老师对学生打字结果的统计,从而错误的掌握学生对计算机的操作能力。另外目前市面上的打字软件的界面越来越来美观,功能日趋完善,操作也越来越方便,美中不足的是信息只能在本地存储,并且由老师来记录学生的打字成绩,但是一旦出现一些问题,比如电脑突然死机,或者突然断电,这都会导致学生或使用者打字成绩的统计变得困难,会带来很多不必要的麻烦。系统概述系统基本要求和功能描述使用Java语言编写一款打字练习软件,要求从指定文文件中显示内容,以供用户进行打字练习,并且计算打字速度与正确率。系统实现的内容用户可以选择自己想要进行打字练习的英文文章,然后进行打字练习。在软件中使用了在开始获取一次时间,结尾获取一次时间的方法,来计算用户打字速度,另外还添加帮助菜单,帮助使用者更好的了解本系统的系列功能。系统的编写目的为用户提供一个简易的打字练习平台。通过这样的打字练习达到更高效、快速的打字目的。使使用者更好地熟悉键盘以及各个英文字母,学会熟练的使用计算机键盘,进而更好的使用计算机来进行一系列操作,。系统分析数据分析系统的数据主要是从指定文件中选取文檔供使用者实现打字练习的范文。此过程中使用了ReadFileUsingJFileChooser函数和setText来选定文文件以及显示在面板上。打字练习的原文可以从系统提供的目录下选取或者用户自己选择指定文章来进行打字练习功能分析在功能方面,实现了用户自主选择文文件进行打字练习。然后进入打字阶段,对用户打字的速度以及正确率进行计评估。在界面的构造上,使用了不同的布局,使界面变得更加美观,更加贴近用户的使用习惯人员分析此系统操作简单,使用人员无需具有专业的计算机操作基础,因此对现有工作人员来说应用此系统是不成问题的。可行性分析基于JAVA语言开发本系统,使用其GUI组件来构造界面,并实现相应功能,对于现在其发展程度来说比较简单。系统设计主界面设计在该界面中,添加了多个JPanel面板,把整个layoutp面板分为左右两部分,再把左边分为bp和lp上下两部分,在bp上添加四个按钮与一个卷标,在lp上添加了两个JLabel标签;用upp与down把右边分为上下两部分,在upp与down两个面板上都添加了JTextArea文本域用以显示文文件和打字练习。同时,使用了ImageIcon与Color类对面板的颜色、背景进行了修改。还使用JMenu、JMenuBar、JMenuItem添加了菜单栏,使界面更加美观,得到主界面如图5-1:图5-1主界面具体如表5-1。内容JPanellayoutplayoutliftuppdownlpbpJTextAreajtreadtstjtinputjtHelpJMenuFileMenuHelpMenuJMenuItemnewItemstopItemexitItemhelpItem表5-1主界面设计功能按扭设计 运用Jbutton与ImageIcon、JLabel来实现按钮的制作,实现了“New”、“Stop”、“Help”3个按钮,以及一个插入图片的卷标,单击按钮将会实现相应的功能。得到了下面的界面(如图5-2):图5-2功能按钮菜单栏设计使用JMenu、JMenuBar、JMenuItem组件构造了菜单栏,并在File下添加了三个菜单按钮(New、Stop、Exit),在Help下添加了Help菜单按钮得到界面如下(图5-3,5-4): 图5-3File菜单 图5-4Help菜单系统流程图运行运行选择文本显示打字内容并输入计算并得出成绩图5-4系统流程图系统主要代码实现窗体的代码实现整体框架构造在mian函数中用构造,界面的主要布局为:实现了两个JTextArea,运用布局管理器(BorderLayout、GridLayout)对界面进行了合理的安排。对界面进行布局的主要代码如下://添加菜单栏JMenuBarbar=newJMenuBar();setJMenuBar(bar);FileMenu.add(newItem);add(FileMenu);bar.add(FileMenu);//面板操作JPanellayoutp=newJPanel(newGridLayout(2,1));*把右边面板分为上下两个面板*/JPanelupp=newJPanel();JPaneldown=newJPanel();layoutp.add(upp);layoutp.add(down);JPanellayoutlift=newJPanel(newGridLayout(2,1));//把左边的面板分为上下两部分JPanelbp=newJPanel(newGridLayout(6,1,10,5));//在把左边上面的面板分为5行1列JPanellp=newJPanel(newGridLayout());//把左边下面的面板分为2行1列add(layoutlift,BorderLayout.WEST);add(layoutp);/*显示打字内容面板*/upp.add(jtreadtst);/*输入面板*/down.add(jtinput);各个功能键的实现 New功能该按钮用以用户选择文本进行打字练习,并且开始计算用户打字所用时间,为New按钮注册一个事件监听器,然后在ButtonListener中实现了点击该按钮将会系统做出的反应,具体代码实现如下:ReadFileUsingJFileChooserrea=newReadFileUsingJFileChooser();jtreadtst.setText(rea.read());//读取指定檔的内容time1=System.currentTimeMillis();//获取开始的时间并保存以上代码实现了选取文本进行打字练习的操作,其中ReadFileUsingJFileChooser这个类的代码如下:JFileChooserfileChooser=newJFileChooser();If (fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){//Gettheselectedfilejava.io.Filefile=fileChooser.getSelectedFile();//CreateaScannerforthefileScannerinput=newScanner(file);//Readtextfromthefilewhile(input.hasNext()){s=input.nextLine();}input.close();}else{System.out.println("Nofileselected");}单击该按钮后出现的界面如下(如图6-2):图6-2选择文本Stop功能该按钮用以结束打字,检索用户输入的字符与原文字符的匹配率,并且显示结果(速度、正确率) 注册一个监听器jbtStopListener,并在类ButtonListener中对该按钮的操作进行了具体的实现,使用了setText()对文本域进行刷新操作,使用户再次使用时可以直接打开文檔进行打字练习,代码如下:practisep=newpractise(); jtinputget=jtinput.getText();//将输入的内容保存到jtinputget这个字符串中time2=System.currentTimeMillis();//获取结束时的时间p.result();jtreadtst.setText("");jtinput.setText("");}其中practise类实现了表示用户打字速度与正确率的模块,代码如下:classpractise{/*计算打字速度与正确率*/publicvoidresult(){*计算正确率*/intwrong=0;inti=0;floattheRate=0;s1=s.toCharArray();s2=jtinputget.toCharArray();if(s2.length<=s1.length){for(;i<s2.length-1;i++){if(s2[i]!=s1[i]){wrong++;//统计不相同的个数continue;}}while(i!=s1.length){wrong++;i++;}NumberFormatnumberFormat=NumberFormat.getPercentInstance(Locale.US);numberFormat.setMinimumFractionDigits(2);time3=time2-time1;time=time3/1000%60;doublewrongRate=1.0*wrong/s1.length;speed=(int)jtinputget.length()/time;JOptionPane.showMessageDialog(null,"TotalWordsare:"+s1.length+"\nYoutotalinput:"+s2.length+"\nThewrongRateis"+numberFormat.format(wrongRate)+"\nYourspeedis"+speed+"字/秒");}}}运行结果得到界面如图6-3所示:图6-3显示结果Help功能注册了jbtHelpListener这个监听器,并在类classButtonListener中对该按钮的操作进行了具体的实现,代码如下:help.showHelp();jbtHelp.setEnabled(false);其中Help类是重新构造的一个JFrame类型的框架,用以显示Help中的内容,并将其设置为不可更改,具体代码如下: JFramejf=newJFrame();JLabeljtHelpImage=newJLabel(imageHelpBackground);jf.setIconImage(imahelp);jf.add(jtHelpImage);其界面如下所示(如图6-4):图6-4Help界面Exit功能用来退出该程序,并在单价该按钮之后弹出一个确认的对话框来询问用户时候确定退出,具体代码实现如下:if(JOptionPane.showConfirmDialog(null,"是否退出?")==JOptionPane.OK_OPTION){System.exit(0);}界面如下图(如图6-5):图6-5退出窗口总结 经过了一段时间的开发和设计,打字系统基本完成,其功能基本满足本系统的需求,覆盖了对JAVA中GUI组件的一些组件操作,本系统的实现了选择文本进行打字练习、显示用户打字速度以及正确率等功能,构造了一个比较美观的界面来进行打字练习。在打字程序这个领域,经历了几十年的发展,至今已经达到了一个很高的水平,其应用也在不断的壮大和扩展。随着编程语言与计算机技术的发展,本系统将会变得更加完善。由于本人才开始涉及java图形化界面,因此只使用了一些简单的构造图形的知识来设计本软件。在创建系统时也遇到一些困难,是经过很多次调试才编写成功,因此在设计过程中可能有不足之处还有待进一步完善,请老师和同学们体谅并提出宝贵意见。通过编写本程序,使我更加熟练的掌握的JAVA中对GUI组件的一些基本操作,明白了JAVA语言博大精深,还有一段很长的学习之路要走。参考文献(美)Java语言程序设计基础篇(原书第八版).机械工业出版社.2010.朱站立.数据结构——Java语言描述.清华大学出版社.2005.
附上源代码:package英文打字测试;importjava.util.Locale;importjava.util.Scanner;importjava.util.logging.Level;importjava.util.logging.Logger;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.text.*;publicfinalclassWordsPracticeextendsJFrame{/** * */ privatestaticfinallongserialVersionUID=1L; //定义按钮 privateJButtonjbtNew=newJButton("New"); privateJButtonjbtExit=newJButton("Exit"); privateJButtonjbtStop=newJButton("Stop"); privateJButtonjbtHelp=newJButton("Help");//定义图片路径ImageIconimageLogo=newImageIcon("images/05.jpg"); privatestaticImageIconimageTitle=newImageIcon("D:/Workspaces/MyEclipse9/课程设计/src/images/03.jpg"); privatestaticImageima=imageTitle.getImage();JTextAreajtreadtst=newJTextArea(10,38);JTextAreajtinput=newJTextArea(10,38);Stringjtinputget; //定义菜单栏privateJMenuFileMenu=newJMenu("File");privateJMenuHelpMenu=newJMenu("Help");privateJMenuItemnewItem=newJMenuItem("New");privateJMenuItemstopItem=newJMenuItem("Stop");privateJMenuItemexitItem=newJMenuItem("Exit");privateJMenuItemhelpItem=newJMenuItem("Help");ReadFileUsingJFileChooserrea=newReadFileUsingJFileChooser(); practisep=newpractise(); Helphelp=newHelp();publicWordsPractice(){setFrame();//构造窗口、主界面regeditListener();//注册监听器}publicvoidsetFrame(){ //添加菜单栏JMenuBarbar=newJMenuBar();setJMenuBar(bar);//File菜单FileMenu.add(newItem);FileMenu.add(stopItem);FileMenu.add(exitItem);add(FileMenu);bar.add(FileMenu);//帮助菜单HelpMenu.add(helpItem);add(HelpMenu);bar.add(HelpMenu);JPanelpanel=newJPanel(newBorderLayout());//构造主面板//把右边面板分为两行一列JPanellayoutp=newJPanel(newGridLayout(2,1));JPanelupp=newJPanel();JPaneldown=newJPanel();layoutp.add(upp);layoutp.add(down);//设置右边两块面板的颜色upp.setBackground(Color.WHITE);down.setBackground(Color.WHITE);//把左边面板分为上下两部分JPanellayoutlift=newJPanel(newGridLayout(2,1));//把左上面板分为6行1列,水平距离为10,垂直艰间距为5JPanelbp=newJPanel(newGridLayout(6,1,10,5));JPanellp=newJPanel(newGridLayout());layoutlift.add(bp);layoutlift.add(lp);//添加一个标签,并在里面添加一张图片JLabeljl1=newJLabel(newImageIcon("D:/Workspaces/MyEclipse9/课程设计/src/images/10.jpg"));JLabeljlbimage=newJLabel(imageLogo);JLabeljl2=newJLabel("EnglishSpeedTest");bp.add(jlbimage);bp.add(jbtNew);bp.add(jbtStop);bp.add(jbtHelp);bp.add(jbtExit);jbtNew.setBackground(Color.WHITE);jbtStop.setBackground(Color.WHITE);jbtHelp.setBackground(Color.WHITE);jbtExit.setBackground(Color.WHITE);bp.add(jl2);lp.add(jl1);setVisible(true);//setSize(400,300);//设置右边上面显示文档的文本域jtreadtst.setLineWrap(true);jtreadtst.setWrapStyleWord(true);jtreadtst.setEditable(false);jtreadtst.setSize(625,250);jtreadtst.setForeground(Color.RED);jtreadtst.setFont(newFont("Courier",Font.BOLD,20));jtreadtst.setBackground(Color.WHITE);upp.add(jtreadtst);//设置右边下面出入文档的文本域down.add(jtinput);jtinput.setLineWrap(true);jtinput.setWrapStyleWord(true);jtinput.setSize(300,250);jtinput.setForeground(Color.WHITE);jtinput.setFont(newFont("Courier",Font.BOLD,20));jtinput.setBackground(Color.darkGray);jbtStop.setEnabled(false);//添加左右两块面板到主界面panel.add(layoutlift,BorderLayout.WEST);panel.add(layoutp);add(panel);}//注册监听器publicvoidregeditListener(){ButtonListenerlistener=newButtonListener();jbtNew.addActionListener(listener);jbtStop.addActionListener(listener);jbtHelp.addActionListener(listener);jbtExit.addActionListener(listener);newItem.addActionListener(listener);stopItem.addActionListener(listener);exitItem.addActionListener(listener);helpItem.addActionListener(listener);}//实现监听器类classButtonListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){if(e.getSource()==jbtNew||e.getSource()==newItem){try{jtreadtst.setText(rea.read());p.time1=System.currentTimeMillis();jbtStop.setEnabled(true);}catch(Exceptionex){Logger.getLogger(WordsPractice.class.getName()).log(Level.SEVERE,null,ex);}}elseif(e.getSource()==jbtStop||e.getSource()==stopItem){jtinputget=jtinput.getText();p.time2=System.currentTimeMillis();p.result();jtreadtst.setText("");jtinput.setText("");jbtHelp.setEnabled(true);}elseif(e.getSource()==jbtHelp||e.getSource()==helpItem){help.showHelp();jbtHelp.setEnabled(false);}elseif(e.getSource()==jbtExit||e.getSource()==exitItem){if(JOptionPane.showConfirmDialog(null,"是否退出?")==JOptionPane.OK_OPTION){System.exit(0);}}}}//从指定中选取文档classReadFileUsingJFileChooser{Strings; publicStringread()throwsException{JFileChooserfileChooser=newJFileChooser();if(fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){//Gettheselectedfilejava.io.Filefile=fileChooser.getSelectedFile();//CreateaScannerforthefileScannerinput=newScanner(file);//Readtextfromthefilewhile(input.hasNext()){s=input.nextLine();}input.close();}else{System.out.println("Nofileselected");}returns;}}//计算结果classpractise{doublespeed;longtime=0;longtime1=0;longtime2=0;longtime3=0;char[]s1; char[]s2;publicvoidresult(){intwrong=0;inti=0;doubletheRate=0;s1=rea.s.toCharArray();s2=jtinputget.toCharArray();if(s2.length<=s1.length){for(;i<s2.length-1;i++){if(s2[i]!=s1[i]){wrong++;continue;}}while(i!=s1.length){wrong++;i++;}time3=time2-time1;time=time3/1000%60;theRate=1.0*wrong/s1.length;NumberFormatnumberFormat=NumberFormat.getPercentInstance(Locale.US);numberFormat.setMinimumFractionDigits(2);Numbe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夏季高温中暑急救处置预案
- 家庭玻璃门窗清洁作业操作标准
- 健康餐盘配置标准
- 有限空间事故应急救援规程
- 复合肥质量验收标准与技术规范
- 间歇性断食营养管理操作规范
- AIoT 2.0重塑智能硬件行业分析报告:让设备真正“听懂、看懂、思考”
- 西药药理学试卷及解析
- MLIS图书情报信息检索试卷及答案
- 药品库存管理规范标准流程
- 爱情片《百万英镑》台词-中英文对照
- 商品七大异常状态及处理
- 金属矿床开采新技术技术
- FBCDZ系列通风机为对旋式防爆主要通风机
- GB/T 37669-2019自动导引车(AGV)在危险生产环境应用的安全规范
- 第四章 AP1000反应堆结构设计(杜圣华)
- 几起重大工程质量安全事故原因
- 设备供货安装方案(通用版)
- 中考物理题型二《开放、推理类题》
- 第二节 金属的腐蚀和防护PPT课件
- 2011年天津市高考物理试卷
评论
0/150
提交评论