打字测试软件课程设计报告书
- 格式:doc
- 大小:768.50 KB
- 文档页数:16
课题名:C#课程设计题目:小小打字游戏学生姓名:XXXXXX 学号: 1008060255 班级:计科101班院系:计算机科学与信息学院专业年级:计算机科学与技术2012年12月 2 日一、需求分析软件名称:小小打字游戏(1)描述:使用VS2010开发环境,用C#语言编写一个打字游戏,游戏界面随机出现下落的A到Z的26个字母,当用户按下相应的键,游戏屏幕上正在下落的字母就会被消除,游戏分数将相应增加。
(2)系统功能:①、登录功能:启动软件,出现登录界面,用户输入账号密码,正确后方可进入游戏。
②、注册功能:不存在的用户,可以注册。
③、软件互斥:通过创建互斥变量,使打字游戏软件只能单独开启一个。
④、游戏控制:按F1开启游戏,F2暂停游戏,F3继续游戏,F4使用游戏积分兑换生命值。
⑤、游戏显示:游戏窗口,随机下落颜色不定的A到Z 26个字母,并根据游戏得分实时增加字母下落的速度。
⑥、游戏操作:按下键盘上的A~Z 26个字母键,游戏窗口上正在下落的对应字母被消除,并使游戏分数增加1。
⑦、数据保存和清除:使用数据库保存用户的游戏数据,并可调用数据库数据显示在游戏界面上显示,管理员账号可以清除游戏记录数据。
⑧、游戏界面信息显示:显示相应的游戏状态信息,暂停游戏提示,结束游戏提示即游戏排名。
需要存储的数据信息:1、游戏分数2、游戏等级3、用户4、密码5、游戏开始时间6、游戏结束时间二、系统设计(图表方式,要有说明部分)(1)新建程序项目:在VS2010上建立小小打字游戏项目。
(2)设计界面:①、如图1-1、即为用户登录界面:有三个控件(2个Label控件,1个Button控件),界面背景图片由Photoshop图片处理软件设计。
图1-1、用户登录界面②、图1-2、为注册用户界面,两个Label控件、1个Button控件。
图1-2、用户注册界面③、图1-3、为游戏主界面图1-3-1、游戏主界面游戏有菜单栏控件,有操作提示信息:F1、F2、F3、F4相应功能图3-1-2、游戏主界面,暂停游戏情况图3-1-3、游戏主界面,结束游戏显示情况图4-1、版本信息(3)功能模块设计1、系统模块2、操作流程图三、数据库设计(数据库类软件)GameUser 表:属性名类型长度可空备注ID int 否主键,自增ID UserName nvarchar 50 可用户名Password nchar 10 可密码GameInfo 表:属性名类型长度可空备注IDD int 否主键,自增IDUserID int 可用户ID,即GameUser表的ID值BeginTime datetime 可存储游戏开始时间OverTime datetime 可存储游戏结束时间GameLevel int 可游戏结束时达到的等级GameScores int 可游戏结束时的分数四、系统实现(1)类图(2)核心代码:程序配置文件:用于设置数据库连接字串Login窗体:存储字段Login窗体:注册按钮事件如果查寻用户名不存在,提示用户注册新账号:Register窗体类:MySqlConn类:(需要通过配置文件,获得数据库连接字串,故需要引用命名空间:using System.Configuration;)封装的数据库连接示例:MainFrm 主游戏窗体类:存储字段:菜单事件:其他事件(时钟事件,和键盘事件)窗体键盘事件详细代码:其他功能函数:具体核心功能代码:字母飘动下落函数:创建字母函数:myRandom类获取字母函数:Program类:在static void Main()函数中创建互斥体变量,避免游戏多开五、总结经过一学期的C#学习,我对C#有了进一步的认识和掌握。
燕山大学专业综合设计报告题目打字练习软件学院(系)信息科学与工程学院年级专业07计算机软件2班学生姓名李成武指导教师陈子阳日期2010 年10 月13日目录1 概述 (1)1.1软件开发环境、工具和方法 (1)1.2软件功能简介 (1)2 软件功能设计 (2)2.1系统的总体功能描述 (2)3 编码设计 (3)3.1打字练习部分 (3)3.2数据库部分 (5)3.3F LASH部分 (7)3.4主要模块实现 (8)4 测试 (10)4.1黑盒测试 (12)4.2白盒测试 (13)5 总结 (15)参考文献 (16)1 概述1.1 软件开发环境、工具和方法打字练习软件是基于Windows操作平台,以Visual Studio 2005为开发环境,利用MFC编写的。
可在Windows XP操作系统中安全运行。
本软件界面的设计主要通过Visual C++提供的多种控件来构建的,例如,RicheEdit2.0控件用来实现显示和输入字符串;Shockwave Flash Object控件打开Flash 打字游戏;List Control控件读取并显示数据库内容等等。
本软件采用Access 2003作为数据库,用来记录软件使用者的部分信息,如姓名、字母打字得分和数字打字得分等数据。
1.2 软件功能简介本软件对打字练习方法经过合理的安排,使之形成完善的应用系统。
下面将介绍此打字练习软件的基本功能:(1) 教程功能这是打字入门的基础。
正确的打字姿势习惯关于整个打字练习的成败。
这个功能将为那些初学打字或者打字姿势不正确的人提供一个正确的指导,为形成良好的打字习惯奠定坚实的基础。
(2) 练习功能即提供给使用者进行打字练习,使其熟悉键盘上相应字母的指法并正确的打出相应的字母或者数字。
由于键盘可大致分为两个部分,一个是主键盘区,另一个是数字键盘区。
熟悉整个键盘并能熟练的进行盲打,使我们设计此软件的宗旨。
因此,练习功能必须包含字母练习功能和数字键盘区练习。
打字练习课程设计单位电气与电子工程分院(系)专业电气与电子工程学号学生姓名指导教师完成日期年月日一个好的打字员也必须经过指法练习的磨练才能成才,同样,一个好的指法练习系统对一个打字员也是必不可少的工具。
以下是用C语言编写的指法练习系统软件的设计报告。
一.系统功能本程序完成简单的指法练习全程,实现测试打字过程中返回正确错误个数的功能,并显示用户测试成绩。
部分功能通过类似window界面实现,完全符合课程设计的要求。
二.系统总框图及函数定义及说明系统总框图:三.设计分析程序主要以函数为模块,一个函数实现一个功能或一个设置项,为了阅读的方便,函数里又包含了自定义函数,最后主函数调用自定义的函数,整个过程清晰,各个函数独立性强。
算法方面主要是产生随机字符这块要研究一下,其他的大概也没什么好研究的,基本都是输入输出操作。
随机字符的产生我利用了数组的下标和random()函数,数组先给赋值了,三个数组就三种情况,达到了设计的要求。
还有就是倒计时的实现,因为C语言不能同时执行两条语句,故在打字的过程中和倒计时不能同时实现,为了解决这个问题,我用了kbhit()如果键盘没输入就退出这次输入循环,让倒计时继续执行,当有键盘的输入这次的输入循环也就结束,也是让倒计时继续执行,问题解决。
四.程序存在的问题由于本人水平有限,本程序存在一些问题,主要有以下几个方面:1.在打字过程中,当打错了字时不能删掉重新输入,只能继续打下去,因为这个过程用的是循环输入,当每入一字就结束了这个字的输入不能修改。
2.部分界面的输入没考虑用户各种输入的情况,当用户非正常输入时,系统可能会中止。
3.没有考虑当用户选择背景字体颜色都一样时的情况(这种情况导致界面没有东西显示,主要就是背景和字体用了一样的颜色),只是用提示语句提醒用户。
五.心得体会经过两周的课程设计,对C语言有了更深刻的了解,学到了很多以前没了解过的函数和算法。
一直以来就认为C语言就是学编程的基础但用不上场,现在觉得它的确也能用上场了,可以编写软件。
打字测试C软件课程设计一、课程目标知识目标:1. 让学生掌握打字测试C软件的基本功能与操作流程;2. 使学生了解打字速度、准确率与键盘布局对打字效率的影响;3. 帮助学生理解打字在日常生活和工作中的重要性。
技能目标:1. 培养学生熟练运用打字测试C软件进行自主练习的能力;2. 提高学生的打字速度和准确率,使平均速度达到每分钟30个字;3. 培养学生运用正确的指法和坐姿进行打字,降低打字过程中的错误率。
情感态度价值观目标:1. 培养学生对打字练习的兴趣,激发其主动学习的积极性;2. 培养学生养成良好的打字习惯,增强其在信息化时代的信息处理能力;3. 培养学生团队协作精神,学会在小组讨论中分享打字技巧,共同提高。
本课程针对小学高年级学生设计,结合课程性质、学生特点和教学要求,明确课程目标,旨在帮助学生掌握实用的打字技能,提高信息素养,为今后的学习和工作打下坚实基础。
通过分解课程目标为具体的学习成果,后续教学设计和评估将更具针对性,确保学生能够取得预期成果。
二、教学内容1. 打字测试C软件介绍:讲解软件的界面、功能及操作方法,使学生熟悉软件环境(对应教材第2章)。
2. 键盘布局与指法训练:介绍键盘布局,讲解正确的指法,指导学生进行指法练习(对应教材第3章)。
3. 打字速度与准确率提升:分析打字速度、准确率的影响因素,教授提高打字速度和准确率的方法(对应教材第4章)。
4. 实践练习:安排丰富的打字练习任务,包括文章、段落、诗歌等,让学生在实践过程中提高打字技能(对应教材第5章)。
5. 打字技巧与策略:分享打字技巧,如快速定位、盲打等,提高学生的打字效率(对应教材第6章)。
6. 打字习惯与坐姿:强调正确坐姿和打字习惯的重要性,指导学生养成良好的打字习惯(对应教材第7章)。
本章节教学内容分为六个部分,按照教学大纲安排和进度,系统性地组织与课程目标相关的内容。
教学内容与教材紧密关联,确保学生能够掌握打字技能,提高打字速度和准确率。
课程设计课程设计名称:Java课程设计专业班级:计科卓1101学生姓名:侯心想学号:201116910415指导教师:王社伟课程设计时间:2013.6.10-2013.6.21打字测试软件一、需求分析设计一个英文打字测试软件,要求:1. 文件中调入英文录入材料;2. 显示错误率;3.显示平均录入速度。
二、概要设计模块图主程序窗口容易简单困难退出系统流程图三、运行环境、开发语言运行环境:JDK1.6开发语言:Java四、详细设计1 程序清单表1程序清单表2 函数清单2 主要代码2.1程序主窗口的设计图1主程序窗口界面public void add()throws Exception{p1=new JPanel();p2=new JPanel();b1=new JButton("容易");b2=new JButton("普通");b3=new JButton("困难");b=new JButton("退出");l=new JLabel(new ImageIcon("1.jpg.png"));//在窗口中间插入图片con.add(p1,"North");con.add(p2,"Center");GridLayout g=new GridLayout(2,2,5,5);p1.setLayout(g);p1.add(b1);p1.add(b2);p1.add(b3);p1.add(b);p2.add(l);b.addActionListener(this); //为按钮注册监听器b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);f.setSize(400,500);f.setLocation(100,100);f.setVisible(true);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}2.2 练习打字窗口在本窗口中可以选择自己练习得文章,练习完成后点击结束练习按钮即可得到练习情况。
java打字训练测试软件课程设计一、课程目标知识目标:1. 理解Java编程语言的基本语法和结构;2. 掌握使用Java编写简单程序的能力;3. 学习编写打字训练测试软件的相关类和接口;4. 了解软件开发的流程和规范。
技能目标:1. 能够运用所学知识独立设计并编写打字训练测试软件;2. 培养良好的编程习惯,编写结构清晰、可读性强的代码;3. 提高问题分析能力和逻辑思维能力;4. 学会使用调试工具进行程序调试,找出并修复错误。
情感态度价值观目标:1. 培养对编程的兴趣和热情,激发主动学习的动力;2. 树立团队协作意识,学会与他人共同解决问题;3. 培养严谨、踏实的学术态度,勇于面对编程中的挑战;4. 增强自信心,相信自己具备解决复杂问题的能力。
本课程针对高年级学生,结合学科特点和学生实际情况,将知识目标、技能目标和情感态度价值观目标分解为具体的学习成果。
教学过程中,注重理论与实践相结合,培养学生实际编程能力,提高他们对编程的兴趣和热情。
通过本课程的学习,使学生能够独立完成打字训练测试软件的设计与开发,为后续学习奠定基础。
二、教学内容1. Java基本语法:变量、数据类型、运算符、控制语句(条件语句、循环语句);2. 面向对象编程:类与对象、构造方法、封装、继承、多态;3. 常用类和接口:String类、Scanner类、ArrayList集合;4. 异常处理:异常的概念、try-catch语句、throws关键字;5. 文件操作:文件的读取与写入、文件的随机访问;6. 图形用户界面(GUI):Swing图形用户界面编程、事件处理;7. 打字训练测试软件设计:需求分析、功能设计、界面设计、编码实现、测试与调试。
教学内容按照教学大纲安排,结合课本章节进行组织,确保科学性和系统性。
具体安排如下:1. 前四章为基础知识,为学生编写打字训练测试软件提供必要的语法支持;2. 第五、六章为进阶知识,使学生掌握异常处理和文件操作,为软件设计提供保障;3. 第七章为实际应用,通过学习GUI编程,让学生能够独立设计并实现打字训练测试软件;4. 整个教学内容以实际项目为导向,将理论知识与实际操作相结合,提高学生的编程实践能力。
打字训练测试java课程设计一、课程目标知识目标:1. 让学生掌握Java语言中基本的输入输出流概念,并能运用到实际编程中。
2. 让学生了解键盘操作的基本知识,理解打字速度和准确性在编程中的重要性。
3. 让学生掌握至少一种Java编程环境下的文本编辑和代码运行方法。
技能目标:1. 培养学生熟练使用键盘进行打字的能力,提高打字速度和准确性,达到每分钟输入XX个字符以上。
2. 培养学生运用Java语言编写简单的输入输出程序,实现对用户输入的处理和响应。
3. 培养学生通过编程解决问题,培养逻辑思维和编程实践能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性,形成主动学习的态度。
2. 培养学生团队合作意识,学会在编程过程中互相帮助、共同进步。
3. 培养学生严谨、细心的编程习惯,提高代码质量,增强对编程工作的敬业精神。
课程性质:本课程为实践性较强的Java编程入门课程,以训练学生打字速度和编程实践能力为主要目标。
学生特点:学生为初中年级,具备一定的计算机操作基础,对编程有一定兴趣,但编程实践经验不足。
教学要求:结合学生特点,注重实践操作,引导学生通过动手实践掌握编程技能,提高打字速度和准确性,培养学生编程兴趣。
在教学过程中,关注学生个体差异,提供个性化指导,确保每个学生都能达到课程目标。
将目标分解为具体学习成果,便于教学设计和评估。
二、教学内容1. Java基础输入输出流概念:- 理解输入输出流的概念和作用。
- 掌握使用Scanner类进行键盘输入。
- 学习System.out.println()等输出方法。
2. 键盘打字技能训练:- 训练学生熟悉键盘布局,提高打字速度和准确性。
- 引导学生掌握正确的打字姿势和指法。
- 练习常用的打字练习软件,巩固打字技能。
3. Java编程环境使用:- 学习至少一种Java集成开发环境(IDE),如Eclipse、IntelliJ IDEA等。
- 掌握如何创建Java项目、编写代码、编译和运行程序。
c打字游戏课程设计报告一、课程目标知识目标:1. 学生能够掌握C语言基础语法,包括变量声明、数据类型、运算符等。
2. 学生能够理解并运用循环结构、条件语句编写简单的打字游戏程序。
3. 学生了解基本的计算机编码知识,如ASCII码。
技能目标:1. 学生能够运用C语言编写简单的打字游戏程序,提高编程实践能力。
2. 学生能够通过编写代码解决问题,培养逻辑思维和问题解决能力。
3. 学生能够熟练使用计算机键盘,提高打字速度和准确性。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习C语言的热情。
2. 学生在团队协作中,培养沟通、协作能力,增强团队意识。
3. 学生通过编程实践,体会计算机科学的魅力,树立正确的科技观。
课程性质:本课程为实践性较强的编程课程,结合打字游戏的形式,让学生在轻松愉快的氛围中学习C语言编程。
学生特点:五年级学生,具备一定的计算机操作能力,对游戏有浓厚兴趣,具备初步的逻辑思维能力。
教学要求:教师应注重引导学生主动探究、实践,关注学生的个体差异,鼓励学生发挥创意,提高编程能力和团队协作能力。
通过本课程的学习,使学生达到上述具体的学习成果。
二、教学内容1. C语言基础语法:- 变量声明、数据类型(整型、字符型)- 常量和变量- 运算符(算术、关系、逻辑)- 语法结构(顺序、选择、循环)2. 编程实践:- 打字游戏程序设计思路- 设计简单循环结构,实现打字游戏基本框架- 引入随机函数,生成随机字母或单词- 使用条件语句,判断用户输入与随机字母的匹配3. 计算机编码知识:- ASCII码介绍- 键盘布局与打字技巧4. 教学内容的安排和进度:- 第一课时:C语言基础语法回顾,介绍打字游戏目标- 第二课时:设计打字游戏基本框架,学习循环结构- 第三课时:引入随机函数,学习条件语句- 第四课时:完善打字游戏功能,进行编程实践- 第五课时:总结与展示,讨论编程过程中的问题及解决方法教材关联:- 《C语言趣味编程》第三章:循环结构- 《C语言趣味编程》第四章:分支结构- 《计算机科学》第二单元:计算机编码知识教学内容注重科学性和系统性,结合教材相关章节,引导学生通过实践掌握C 语言编程知识,提高编程技能。
打字测试c语言课程设计一、课程目标知识目标:1. 学生能掌握C语言基础的输入输出语句,理解其工作原理;2. 学生能理解并运用C语言的基本数据类型及变量声明;3. 学生能通过打字测试,熟练编写具有基础逻辑结构的C语言程序。
技能目标:1. 学生能够使用C语言编写简单的计算程序,进行数值运算;2. 学生通过打字测试,提高编程速度和准确性;3. 学生能够对C语言程序进行调试和修正,培养解决问题的能力。
情感态度价值观目标:1. 培养学生对C语言编程的兴趣,激发学生的学习热情;2. 学生在合作学习过程中,培养团队精神和沟通能力;3. 学生通过编程实践,认识到编程对解决现实问题的重要性,增强社会责任感。
课程性质:本课程为实践性较强的C语言入门课程,注重基础知识的掌握和实际操作能力的培养。
学生特点:学生为初中年级,对计算机编程有一定的好奇心,动手能力强,但注意力容易分散。
教学要求:结合学生特点,课程设计应注重趣味性和实际操作,强调在实践中学习,提高学生的编程兴趣和技能。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. C语言基础知识:- 数据类型:整型、浮点型、字符型等基本数据类型的使用和声明;- 输入输出语句:printf()和scanf()函数的使用;- 变量:变量的定义、赋值和作用域。
2. 基本控制结构:- 顺序结构:程序的执行流程;- 选择结构:if语句、switch语句的使用;- 循环结构:for循环、while循环和do-while循环。
3. 打字测试:- 设计简单的打字测试程序,要求学生完成指定的代码编写任务;- 通过测试,检验学生对C语言基础知识的掌握和编程速度。
4. 编程实践:- 设计具有实际意义的编程任务,如计算器、简单的排序算法等;- 学生独立完成编程任务,培养解决问题的能力。
教学内容安排和进度:第一课时:C语言基础知识介绍,数据类型、变量和输入输出语句;第二课时:基本控制结构,顺序结构和选择结构;第三课时:循环结构,for循环、while循环和do-while循环;第四课时:打字测试,检验学生对基础知识的掌握;第五课时:编程实践,完成实际编程任务。
软件学院课程设计报告书课程名称面向对象课程设计设计题目打字训练测试软件专业班级学号姓名指导教师2014 年6 月目录1 设计时间 (1)2 设计目的 (1)3 设计题目 (1)4设计任务 (1)5设计内容 (1)5.1需求分析 (1)5.2基本要求 (1)6 功能模块实现 (1)6.1包的描述 (1)6.2类的描述 (1)6.3页面设计 (2)6.4测试文字的加入 (4)6.5测试时间设计 (5)6.6程序源代码 (6)8总结与展望 (12)参考文献 (14)1 设计时间2014年6月16日-2014年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 TextArea 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 TextArea(10,60);//taSource.lbTitle = new Label(TITLE);lbTitle.setFont(fontTitle);//taSource.setEnabled(false);taSource.setEditable(false);pnNorth = new Panel();lbMessage = new Label("想练习打字的话,请先点击[开始按钮]哦!");taSource.setText("想练习打字的话,请先点击[开始按钮]哦!");taInput = new TextArea(10,60);taInput.setText("欢迎使用"+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测试文字的加入程序中,通过随机读取当前项目下的txt文件,随机方式是用Random()生0-3之间的数,添加“.txt”后缀,文件位置如图6-3所示。
图6-3 文件位置图代码实现部分:if (e.getSource() == btStart) {//获取练习用的文字file = rd.nextInt(3)+".txt";//System.out.println("打开的文件是:"+file);taSource.setText(fileToString("text/"+file));taInput.setText("");lbMessage.setText("亲,您现在可以练习了!加油!!");startTime = System.currentTimeMillis();btStart.setEnabled(false);btContinue.setEnabled(true);}6.5测试时间设计为了能够更方便地设置时间,在程序中用startTime,overTime,userTime三个变量来保存时间。
startTime是用来保存用户开始测试的系统时间,overTime是用来保存用户结束测试时的系统时间,相减得到用户测试所用的总时间(userTime)。
通过startTime = System.currentTimeMillis() 获得当前系统的时间。
6.6程序源代码package buttonAction02;/** 已经实现了按钮的单击事件了* 练习资料是以txt文件形式放在项目目录下text目录里* */import java.awt.*;import java.awt.event.*;import java.util.Random;import java.io.*;public class Typing{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 TextArea 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 TextArea(10,60);lbTitle = new Label(TITLE);lbTitle.setFont(fontTitle);//taSource.setEnabled(false);taSource.setEditable(false);pnNorth = new Panel();lbMessage = new Label("想练习打字的话,请先点击[开始按钮]哦!"); taSource.setText("想练习打字的话,请先点击[开始按钮]哦!"); taInput = new TextArea(10,60);taInput.setText("欢迎使用"+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 extends MouseAdapter {public void mouseClicked(MouseEvent e){ String file;Random rd = new Random();if (e.getSource() == btStart) {//获取练习用的文字file = rd.nextInt(3)+".txt";/*所有的测试文字,都以txt文件形式保存在当前目录下的text目录里* 通过随机读取当前项目下的txt文件获取内容*/taSource.setText(fileToString("text/"+file));taInput.setText("");lbMessage.setText("亲,您现在可以练习了!加油!!");//用currentTimeMillis方法来获得当前系统的时间startTime = System.currentTimeMillis();btStart.setEnabled(false);btContinue.setEnabled(true);}else if(e.getSource()==btContinue){overTime = System.currentTimeMillis();wordCount=taSource.getText().length();inputWordCount=taInput.getText().length();//用于判断用户是否输入了文字if(inputWordCount == 0){lbMessage.setText("貌似你什么也没输入呀!");}else{//计算用户所用的时间,并转换成以秒为单位userTime = (overTime-startTime)/1000;//统计错误的文字数rightWordCount=rightWordCount(taSource.getText(),taInput.getText());lbMessage.setText("亲,打字练习结束了哦!您共用了"+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;i<str.length()&&i<strSub.length();i++){//统计的是正确的总数!!!if(str.charAt(i)==strSub.charAt(i))count++;}return count;}}/** 给窗体上的控制按钮启用监听器*/class ClosingWindow extends WindowAdapter {public void windowClosing(WindowEvent e) {System.exit(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 byte[1024];FileInputStream f = null;try {f = new FileInputStream(filePath);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {n = f.read();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}while(n!=-1){data[i] = (byte)n;i++;try {n = f.read();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}String str = new String(data,0,i);//close filetry {f.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return str;}7 运行与测试7.1当用户没有输入文字时界面图,如图7-1所示图7-17.2当用户输入一部分文字后,点击完成,程序会给出结果,如图7-2所示图7-28总结与展望在课程设计的过程中,我用到了java中awt的各种控件和布局方法,又通过查阅资料和向同学、老师求教,学会了一些没接触过的东西,如设置字体,和调用系统时间等。