Java打字训练测试软件课程设计Word文档格式.docx
《Java打字训练测试软件课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java打字训练测试软件课程设计Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
课程设计成绩评定16
1设计时间
第16周(2013年6月8日-2011年6月14日)
2设计目的
随着科学技术的不断提高,计算机科学目渐成熟,计算机怩深入到工作和生活的各个角落,文字录入是学习计算机非常重要的一部分。
在手写录入技术和语音识别技术还不完善的同时大部分人还在使用键盘作为文字录入的工具。
所以我编了这样一个小程序,同时也是我的面向对象程序设计的课程设计。
希望能对电脑初学都和想提高打字速度的朋友们有所帮助。
本系统构建学生打字练习系统,基于所开发的打字程序界面友好,图形复杂。
打字练习程序中应用到eclipse最新版本,java1.6以上版本的jdk。
对于打字测试进入整体的部署。
完成打字练习程序开发,培养程序设计和开发能力。
3设计任务
设计一个英文打字测试软件。
从文件中调入英文录入材料,最后可以给出错误率,平均录入速度。
4设计内容
4.1需求分析
4.1.1问题描述
4.1.2基本要求
1.文件中调入英文录入材料
2.最后给出错误率
3.最后给出平均录入速度
4.2总体设计
4.2.1包的描述
由于本次实验使用的类较少,所有的类都建在同一个包下,本次试验也只用到了一个包。
4.2.2类的描述
EnglishGame类:
主要构造都在这里完成。
MyKey类:
是该程序的一个内部类。
4.2.3类之间的关系
EnglishGame作为主函数的入口。
调用actionPerformed类的方法实现事件监听器。
当发生点击事件时就会弹出输入框,开始英文打字功能。
从而达到打字训练测试的目的。
4.3详细设计
4.3.1类图
图1EnglishGame类图
图2MyKey类图
4.3.2页面设计
页面设计分为一个选择框可以选择“退出”,“简单”,“困难”,“普通”四个部分,然后分上下两个框是输入内容与原内容相比,最后显示测试结果框。
4.4测试与分析
图3测试图界面
图4测试图简单
图5测试图普通
图6测试图困难
4.5程序源码
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.Dimension;
importjava.awt.Font;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyAdapter;
importjava.awt.event.KeyEvent;
importjava.io.File;
importjava.io.FileReader;
importjava.util.Date;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JTextPane;
importjavax.swing.SwingUtilities;
publicclassEnglishGameimplementsActionListener{
privatestaticJFramef=newJFrame("
英文打字游戏"
);
privatestaticContainercon=f.getContentPane();
JPanelmainPanel,panel0,panel1,panel2,panel3,panel4,panel5;
JButtonbutton1,button2,button3,button4,button;
JTextPanetp1,tp2;
FileReaderfr;
Filefrr;
Datedate1,date2;
intnum,len1,len2,count;
longtime;
doublerightrate;
char[]ch;
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
Stringcmd=e.getActionCommand();
date1=newDate();
if(cmd.equals("
4.退出"
))
{
System.exit(0);
}
elseif(cmd.equals("
返回"
))
else
JFramef1=newJFrame("
f1.setSize(350,750);
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containercon1=f1.getContentPane();
panel0=newJPanel();
panel1=newJPanel();
panel2=newJPanel();
panel3=newJPanel();
panel4=newJPanel();
tp1=newJTextPane();
tp1.setBackground(Color.green);
Fontsize=newFont("
ad"
Font.BOLD,20);
tp1.setFont(size);
tp1.setPreferredSize(newDimension(300,300));
tp1.setForeground(Color.white);
tp2=newJTextPane();
tp2.setBackground(Color.yellow);
tp2.setFont(size);
tp2.setPreferredSize(newDimension(300,300));
try
{
if(cmd.equals("
1.简单"
fr=newFileReader("
D:
\\简单.txt"
frr=newFile("
num=(int)frr.length();
ch=newchar[num];
while(fr.read(ch)!
=-1)
{
Stringstr=newString(ch);
tp1.setText(str);
}
}
elseif(cmd.equals("
2.普通"
\\普通.txt"
}
elseif(cmd.equals("
3.困难"
\\困难.txt"
catch(Exceptionarg)
System.out.println(arg);
button=newJButton("
button.addActionListener(this);
panel1.add(newJLabel("
参考练习:
"
));
panel1.add(button);
panel2.add(tp1);
panel3.add(newJLabel("
练习状况:
panel4.add(tp2);
panel0.add(panel1);
panel0.add(panel2);
panel0.add(panel3);
panel0.add(panel4);
con1.add(panel0);
f1.setVisible(true);
tp2.requestFocus(true);
date1=newDate();
tp2.addKeyListener(newMyKey());
}
privateclassMyKeyextendsKeyAdapter{
@Override
publicvoidkeyReleased(KeyEventarg0){
//TODOAuto-generatedmethodstub
len1=tp1.getText().length();
len2=tp2.getText().length();
if(len2==len1)
JFramef2=newJFrame("
f2.setSize(250,150);
f2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containercon2=f2.getContentPane();
date2=newDate();
time=(date2.getTime()-date1.getTime())/1000;
count=0;
for(inti=0;
i<
len1;
i++)
if(tp2.getText().toString().charAt(i)==tp1.getText().toString().charAt(i))
count++;
rightrate=(double)count/len1*100;
panel0=newJPanel();
panel1=newJPanel();
panel2=newJPanel();
panel3=newJPanel();
panel1.add(newJLabel("
恭喜完成本次游戏测试!
panel2.add(newJLabel("
游戏总共耗时:
+time+"
秒"
panel3.add(newJLabel("
您的正确率为:
+rightrate+"
%"
panel0.add(panel1);
panel0.add(panel2);
panel0.add(panel3);
con2.add(panel0);
f2.setVisible(true);
elseif(len2>
len1){
publicstaticvoidmain(String[]args){
f.setSize(200,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
con.add(newEnglishGame().creatMenu());
f.setVisible(true);
publicJPanelcreatMenu(){
mainPanel=newJPanel();
panel0=newJPanel();
panel1=newJPanel();
panel2=newJPanel();
panel3=newJPanel();
panel4=newJPanel();
panel5=newJPanel();
button1=newJButton("
button2=newJButton("
button3=newJButton("
button4=newJButton("
panel0.add(newJLabel("
欢迎使用英文打字测试系统"
panel1.add(newJLabel("
请选择游戏难度:
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
panel2.add(button1);
panel3.add(button2);
panel4.add(button3);
panel5.add(button4);
mainPanel.add(panel0);
mainPanel.add(panel1);
mainPanel.add(panel2);
mainPanel.add(panel3);
mainPanel.add(panel4);
mainPanel.add(panel5);
mainPanel.setVisible(true);
returnmainPanel;
}
5设计总结
本次课程设计提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼了我分析解决实际问题的能力。
提高我的适应实际,实践编程的能力。
本课程设计旨在培养了我的动手能力和学习能力。
通过对动手编写本程序,我可以学习更多的实用内容和方法,而这些资料多以英文方式给出,不但锻炼了我的学习能力,而且还锻炼我的阅读和理解能力。
此外本程序还存在一些问题待完善,测试过程中录入错字后要没有标记,不能很好的显示出错的字。
另外在一些低版本的jdk1.6中,录入时会出现无法录入英文和数字,只能输入中文,也无法退格(backspace)的现象。
建议使用较高版本的jdk1.6,或者使用jdk1.7以上版本。
随着科学技术的不断提高,计算机科学目渐成熟,计算机怩深入到工作和生活的各个角落,文字录入是学习计算机非常重要的一部分。
参考文献
[1]刘万军,郑少京,王松波.Java6程序设计实践教程[M].北京:
清华大学出版社,2009.5
[2]BruceEckel.Java编程思想[M].第二版,北京,高等教育出版社,2005.4
[3]CayS.Horstmann,Java核心技术[J],第八版,电子工业出版社,2004.6
[4]《数据库原理及应用教程》.陈志泊主编.人民邮电出版社。
[5]《数据库实验指导》.杨海霞等编著.人民邮电出版社。
课程设计成绩评定
出勤
情况
缺勤次数:
课程
设计
评估
设计成绩
教师签字