打字测试软件课程设计报告书

上传人:沈*** 文档编号:104647799 上传时间:2022-06-10 格式:DOC 页数:19 大小:717KB
返回 下载 相关 举报
打字测试软件课程设计报告书_第1页
第1页 / 共19页
打字测试软件课程设计报告书_第2页
第2页 / 共19页
打字测试软件课程设计报告书_第3页
第3页 / 共19页
点击查看更多>>
资源描述
-软 件 学 院课程设计报告书课程名称 面向对象课程设计设计题目 打字训练测试软件专业班级 学 号 姓 名 指导教师 2021 年 6 月目录1 设计时间12 设计目的13 设计题目14设计任务15设计内容15.1需求分析15.2根本要求16 功能模块实现16.1包的描述16.2类的描述16.3页面设计26.4测试文字的参加46.5测试时间设计56.6程序源代码58总结与展望12参考文献13. z.-1 设计时间2021年6月16日-2021年6月20日2 设计目的1.熟练掌握Java面向对象程序设计的根底知识2.熟练掌握Java中常用的Awt组件的使用方法3.通过实训,培养学生分析和解决实际问题的能力,提高调试和分析应用程序的能力,并为后续的Java高级编程等专业课程的学习奠定良好的根底。3 设计题目打字测试软件4设计任务打字测试软件。要求如下:(1)使用图形用户界面实现;(2)从文件中调入英文录入材料;(3)打字完毕后给出错误率,录入时间。5设计内容5.1需求分析设计一个英文打在测试软件5.2根本要求1.文件中调入英文录入材料2.最后给出错误率3.最后给出平均录入速度6 功能模块实现6.1包的描述 由于本次实验使用的类较少,所有的类都建在同一个包下,本次实验也只用到一个包。6.2类的描述 Typing类:主要的构造都在这个类中。 My key类:是该程序的一个内部类。6.2.1类之间的关系 Typing类作为主函数的入口,调用actionPerformed类的方法实现事件监听器。当发生点击事件时就会弹出输入框,开场英文打字功能;从而到达打字训练测试的目的。 6.2.2类图如图6-1所示图6-1 类图6.3页面设计final String TITLE = 光速打字系统;private Frame f;private Button btStart,btContinue;private Panel pnEast,pnCenter,pnNorth;Font fontTitle=new Font(黑体,Font.BOLD,30);Font fontButton=new Font(宋体,Font.BOLD,24);private Label lbMessage,lbTitle;/tfSource用于显示要练习的文字,tfInput 用户输入框private Te*tArea taSource,taInput;/总字数和错误的字数private long wordCount,inputWordCount,rightWordCount;/开场,完毕时间,用户练习所用的时间private long startTime,overTime,userTime;/* 初始化控件 */private void start() f = new Frame(TITLE+ by 牛帅); /窗体标题f.setSize(600,430);f.setResizable(false);/制止调整窗体的大小pnEast = new Panel();pnCenter = new Panel();btStart =new Button(开场);btStart.setFont(fontButton);btContinue = new Button(完成);btContinue.setFont(fontButton);taSource = new Te*tArea(10,60);/taSource.lbTitle = new Label(TITLE);lbTitle.setFont(fontTitle);/taSource.setEnabled(false);taSource.setEditable(false);pnNorth = new Panel();lbMessage = new Label(想练习打字的话,请先点击开场按钮哦!);taSource.setTe*t(想练习打字的话,请先点击开场按钮哦!);taInput = new Te*tArea(10,60);taInput.setTe*t(欢迎使用+TITLE);btContinue.setEnabled(false);/窗体布局/窗体使用默认的GridLayout布局f.add(pnNorth,North);pnNorth.add(lbTitle);/pnEast.add(lbMessage,South);f.add(lbMessage,South);f.add(pnEast,East);pnEast.add(btStart);pnEast.add(btContinue);f.add(pnCenter,Center);pnCenter.add(taSource);pnCenter.add(taInput);/添加监听器f.addWindowListener(new ClosingWindow();/启用窗体的功能按钮btStart.addMouseListener(new ButtonHandler();btContinue.addMouseListener(new ButtonHandler();f.setVisible(true);如图6-2所示图6-2 打字测试软件界面图6.4测试文字的参加程序中,通过随机读取当前工程下的t*t文件,随机方式是用Random()生0-3之间的数,添加.t*t后缀,文件位置如图6-3所示。图6-3 文件位置图代码实现局部:if (e.getSource() = btStart) /获取练习用的文字file = rd.ne*tInt(3)+.t*t;/System.out.println(翻开的文件是:+file);taSource.setTe*t(fileToString(te*t/+file);taInput.setTe*t();lbMessage.setTe*t(亲,您现在可以练习了!加油!);startTime = System.currentTimeMillis();btStart.setEnabled(false);btContinue.setEnabled(true); 6.5测试时间设计 为了能够更方便地设置时间,在程序中用startTime,overTime,userTime三个变量来保存时间。startTime是用来保存用户开场测试的系统时间,overTime是用来保存用户完毕测试时的系统时间,相减得到用户测试所用的总时间userTime。通过startTime = System.currentTimeMillis() 获得当前系统的时间。6.6程序源代码package buttonAction02;/* * 已经实现了按钮的单击事件了 * 练习资料是以t*t文件形式放在工程目录下te*t目录里 * */import java.awt.*;import java.awt.event.*;import java.util.Random;import java.io.*;public class Typingfinal String TITLE = 光速打字系统;private Frame f;private Button btStart,btContinue;private Panel pnEast,pnCenter,pnNorth;Font fontTitle=new Font(黑体,Font.BOLD,30);Font fontButton=new Font(宋体,Font.BOLD,24);private Label lbMessage,lbTitle;/tfSource用于显示要练习的文字,tfInput 用户输入框private Te*tArea taSource,taInput;/总字数和错误的字数private long wordCount,inputWordCount,rightWordCount;/开场,完毕时间,用户练习所用的时间private long startTime,overTime,userTime;/* 初始化控件 */private void start() f = new Frame(TITLE+ by 曹世龙); /窗体标题f.setSize(600,430);f.setResizable(false);/制止调整窗体的大小pnEast = new Panel();pnCenter = new Panel();btStart =new Button(开场);btStart.setFont(fontButton);btContinue = new Button(完成);btContinue.setFont(fontButton);taSource = new Te*tArea(10,60);lbTitle = new Label(TITLE);lbTitle.setFont(fontTitle);/taSource.setEnabled(false);taSource.setEditable(false);pnNorth = new Panel();lbMessage = new Label(想练习打字的话,请先点击开场按钮哦!);taSource.setTe*t(想练习打字的话,请先点击开场按钮哦!);taInput = new Te*tArea(10,60);taInput.setTe*t(欢迎使用+TITLE);btContinue.setEnabled(false);/窗体布局/窗体使用默认的BorderLayout布局f.add(pnNorth,North);pnNorth.add(lbTitle);/pnEast.add(lbMessage,South);f.add(lbMessage,South);f.add(pnEast,East);pnEast.add(btStart);pnEast.add(btContinue);f.add(pnCenter,Center);pnCenter.add(taSource);pnCenter.add(taInput);/添加监听器f.addWindowListener(new ClosingWindow();/启用窗体的功能按钮btStart.addMouseListener(new ButtonHandler();btContinue.addMouseListener(new ButtonHandler();f.setVisible(true);/* 接收按钮的事件 */class ButtonHandler e*tends MouseAdapter public void mouseClicked(MouseEvent e)String file;Random rd = new Random();if (e.getSource() = btStart) /获取练习用的文字file = rd.ne*tInt(3)+.t*t;/*所有的测试文字,都以t*t文件形式保存在当前目录下的te*t目录里 * 通过随机读取当前工程下的t*t文件获取内容 */taSource.setTe*t(fileToString(te*t/+file);taInput.setTe*t();lbMessage.setTe*t(亲,您现在可以练习了!加油!);/用currentTimeMillis方法来获得当前系统的时间startTime = System.currentTimeMillis();btStart.setEnabled(false);btContinue.setEnabled(true); else if(e.getSource()=btContinue) overTime = System.currentTimeMillis(); wordCount=taSource.getTe*t().length(); inputWordCount=taInput.getTe*t().length(); /用于判断用户是否输入了文字 if(inputWordCount = 0) lbMessage.setTe*t(貌似你什么也没输入呀!); else /计算用户所用的时间,并转换成以秒为单位 userTime = (overTime-startTime)/1000; /统计错误的文字数 rightWordCount=rightWordCount(taSource.getTe*t(),taInput.getTe*t(); lbMessage.setTe*t(亲 ,打字练习完毕了哦!您共用了+userTime+秒,总字数为:+wordCount+您正确输入了+rightWordCount+正确率为+(rightWordCount*1.0)/(wordCount*1.0); btStart.setEnabled(true); btContinue.setEnabled(false); private int rightWordCount(String str,String strSub) int count = 0;/由于思维不严谨,语句中本应该是&符,我错用了|符,/所以测试时一直有问题,for(int i=0;istr.length()&istrSub.length();i+)/统计的是正确的总数!if(str.charAt(i)=strSub.charAt(i)count+;return count;/* 给窗体上的控制按钮启用监听器 */class ClosingWindow e*tends WindowAdapter public void windowClosing(WindowEvent e) System.e*it(0); public static void main(String args)Typing fm = new Typing();fm.start();/* 传入一个文件名,方法以字符串形式返回文件的内容 */public String fileToString(String filePath)int n = 0,i = 0;byte data = new byte1024;FileInputStream f = null;try f = new FileInputStream(filePath); catch (FileNotFoundE*ception e) / TODO Auto-generated catch blocke.printStackTrace();try n = f.read(); catch (IOE*ception e) / TODO Auto-generated catch blocke.printStackTrace();while(n!=-1)datai = (byte)n;i+;try n = f.read(); catch (IOE*ception e) / TODO Auto-generated catch blocke.printStackTrace();String str = new String(data,0,i);/close filetry f.close(); catch (IOE*ception e) / TODO Auto-generated catch blocke.printStackTrace();return str;7 运行与测试 7.1当用户没有输入文字时界面图,如图7-1所示图7-17.2当用户输入一局部文字后,点击完成,程序会给出结果,如图7-2所示图7-28总结与展望 在课程设计的过程中,我用到了java中awt的各种控件和布局方法,又通过查阅资料和向同学、教师求教,学会了一些没接触过的东西,如设置字体,和调用系统时间等。遇到问题时总和同学讨论,学到了很多经历和方法,同时还增加了学习的兴趣。在主动查阅资料和求教的过程中,不但提高了学习能力,还促进了同学之间团结互助的关系。 目前,系统中还存在以下问题: 1.用户完成测试后所得的正确率小数位太长。 2.界面不够美化,也不够人性化,比方在输出结果时,可以将用户的成绩以信息框的形式显示。 3.程序功能过于简单,只能读取固定的几个文件,可以再增加用户自选文章的内容。参考文献1*万军,*少京,王松波.Java6程序设计实践教程M.:清华大学,2021.52BruceEckel.Java编程思想M.第二版,高等教育,2005.43CayS.Horstmann,Java核心技术J,第八版,电子工业,2004.64数据库原理及应用教程.陈志泊主编.人民邮电5数据库实验指导.杨海霞等编著.人民邮电成绩评定成绩 教师签字. z.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!