打字测试软件报告
课程设计
课程设计名称: Java课程设计
专业班级:计科卓1101 学生姓名:侯心想
学号: 0415
指导教师:王社伟
课程设计时间:
打字测试软件
一、需求分析
设计一个英文打字测试软件,要求:
1. 文件中调入英文录入材料;
2. 显示错误率;
3.显示平均录入速度。
二、概要设计
模块图
主程序窗口
容易简
单
困
难
退
出
系统流程图
三、运行环境、开发语言
运行环境:
开发语言:Java
四、详细设计
1 程序清单
表1程序清单
表2 函数清单
2 主要代码
程序主窗口的设计
图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(""));
;
FileNameExtensionFilter filter=new FileNameExtensionFilter("text file","txt");
(filter);
(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
;
file=();
if(file==null)
{
("没有选择文件");
return;
}
(" ");
try{String content=getFileContent(file);
(content);
}
catch(IOException ex){("读文件失败、原因\n"+ex);}
}
});
(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(coun==0){
startTime=();
coun=1;}
}
});
(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
jisuan();
}
}
);
}
public String getFileContent(File file) throws IOException{ BufferedReader reader=new BufferedReader(new FileReader(file));
String line="";
String content="";
while((line=())!=null){
content+=line+"\n";
}
();
return content;
}
结束练习功能
此界面可以向练习文本框内输入文字,点击结束练习系统自动弹出练习结果。
图5练习结果界面
public void jisuan()
{
double rate=0,j=0;
str1=();
str2=();
char[] s1=();
char[] s2=();
if<=
{
for(int i=0;i<;i++)
{
if(s2[i]!=s1[i])
j++;
}
rate=(j/*100;
}
else
for(int i=0;i<;i++)
{
if(s2[i]!=s1[i])
j++;
rate=(((j+ }
endTime=();
double
rate1=*(endTime-startTime))*60000;
int rate2=(int)rate1;
,"错误率:"+rate+"%"+" 平均输入率:"+rate2+"/分钟");
}
五、调试与分析
在实现各个功能的过程中我遇到了,各种各样的错误,我试着这慢慢的将这些错误逐个分析,并解决。如:
(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(coun==0){
startTime=();
coun=1;}}});
这是添加的一个键盘事件,是用来记录开始测试的时间的,当是编程时忽略了键盘事件,只要没点击一下键盘就会执行一次,即开始时间就会重新被记录,这样就会导致开始时间与结束时间相同,导致计算平均输入率错误。
调试方法:经过认真分析我在键盘事件中加了一个控制变量coun=0,当键盘事件执行过一次后令coun=1,这样当你在第二次敲击键盘时键盘事件就不会在执行了,并准确的记录了开始时间。
六、功能测试
打字测试前
测试完成后
七、结论与心得
本次课程设计中我遇到了许多意想不到错误,有很多都是粗心大意造成的,所以我现在感觉编程是要保持冷静心态,遇到错误不能心浮气躁,要认真分析错误结果和错误提示,并且试着调试。这样来编程会使你的调试程序的能力又很快的提升,同时也在不知不觉中提高了你的编程能力。经过这两年的课程设计,和编程的学习,我深深了解到编程能力的提升不是从课本上学来的,而是在实战中锻炼出来的。在设计某个程序时不仅要求你有熟练的编程能力,同时也要有发散的思维和很好的逻辑思维能力。做好一个设计的前提就是又一个完美的思维框架,然后才是考验你的编程能力的时候。如果你不能在编程前合理的安排实现的先后顺序,那你将面临的已不再是编程能力好坏的困难。因为不管你的编程能力是多么的强,你都不能轻易的解决这些因为逻辑安排不合理而产生的本不是错误的错误。
八、参考资料
[1]Cay S. Horstmann, Gary Cornell. Core Java Volume I: Fundamentals. 8th
Edition. Prentice Hall, 2008.
[2]Cay S. Horstmann, Gary Cornell. Core Java Volume II: Advanced Features.
8th Edition. Prentice Hall, 2008.
[3]Maydene Fisher, Jon Ellis, Jonathan Bruce. JDBC API Tutorial and
Reference. 3rd Edition. Addison Wesley, 2003.