java 秒表.doc
学生课程设计报告课 程 名 称:JAVA程序设计课程设计题目:秒表专 业 名 称:软件工程一、课程设计内容秒表的设计应包括以下几个要点:(1) 能够显示的图形用户界面。(2) 能够准确的计时。(3) 可以对秒表进行操作。(4) 可以开始,暂停,复位,计次。(5) 计次的结果加以输出并显示。(6) 完成后使用javadoc写出帮助文档。二、 技术路线首先要制作出来一个图形用户界面,所以需要awt类;其中计次,开始,复位等功能需要用按钮对其进行操作,所系需要添加事件监听者,所以需要awt.event类。具体实现:1.因为java是纯面向对象编程,故要先创建类,首先创建miaobiao类并让他继承WindowAdapter类以实现ActionListener接口,这样才可以添加事件监听者。在秒表类中创建框架。2.创建TimeRun类继承Thread类,实现了ActionListener接口,在这个类中,向前一个类中建立的框架中田间文本框,按钮,并添加对应的事件监听者。在这个类中,要声明一个方法,用来进行计时,计时的思路是:使用进程睡眠的,线程每睡眠100毫秒,变量自加1,然后对这个变量进行除法运算赖在屏幕上显示时间。这样样做的好处是可以做到计时精准,防止到后期计时的时候远远慢于真正的时间。3.在TimeRun类中对每个按钮加上功能,在按下的时候实现。三、 设计与实现import java.awt.*;import java.awt.event.*;/* * 这是一个简单的Java Application<br><br> * 实现了秒表的基本功能:计时,开始,暂停,继续,记次<br> * author 杨策 201524060209 * version 1.8 */public class miaobiao extends WindowAdapter/* * 继承WindowAdapter类,实现了ActionListener接口 */ static Frame f=new Frame(); /创建一个框架并设置 static TimeRun t; public miaobiao() f.setSize(800,800); f.setTitle("秒表"); f.setVisible(true); f.setLocation(450,200); f.addWindowListener(this); public static void main(String args) miaobiao w=new miaobiao(); TimeRun t=new TimeRun(); t.run(); public void windowClosing(WindowEvent e) /关闭窗口 System.exit(0); class TimeRun extends Thread implements ActionListener/* * 继承Thread类,实现了ActionListener接口 */ Label t=new Label("时间"); /添加组件 TextArea ta=new TextArea(); TextField w=new TextField("00:00:00.0"); Button start=new Button("开始"); Button stop=new Button("暂停"); Button clear=new Button("清零"); Button set=new Button("计次"); Panel p1=new Panel(); Panel p2=new Panel(); Panel p3=new Panel(); int i=1; /后面的计次功能的赋值 public TimeRun() w.setFont(new java.awt.Font("宋体", 0, 24); / 设置时间显示的字体大小,位置 t.setFont(new java.awt.Font("宋体", 0, 24); ta.setColumns(30); ta.setFont(new java.awt.Font(" ",0, 25); ta.setRows(20); w.setColumns(15); start.setFont(new java.awt.Font("华文行楷", 1, 25); /设置按钮字体大小 stop.setFont(new java.awt.Font("华文行楷", 1, 25); clear.setFont(new java.awt.Font("华文行楷", 1, 25); set.setFont(new java.awt.Font("华文行楷", 1, 25); start.setPreferredSize(new Dimension(100,100); stop.setPreferredSize(new Dimension(100,100); clear.setPreferredSize(new Dimension(100,100); set.setPreferredSize(new Dimension(100,100); /第一个面板放时间显示 p1.add(w,BorderLayout.CENTER); p2.add(start); /第二个面板放按钮 p2.add(stop); p2.add(clear); p2.add(set); p3.add(ta,BorderLayout.EAST); /第三个面板放文本框 miaobiao.f.add(p1,BorderLayout.WEST); /设置三个面板在框架里的位置 miaobiao.f.add(p2,BorderLayout.SOUTH); miaobiao.f.add(p3,BorderLayout.EAST); miaobiao.f.setVisible(true); /使窗口可见 start.addActionListener(this); stop.addActionListener(this); clear.addActionListener(this); set.addActionListener(this); /为组件添加监听者 private float time=0; private boolean Run=false; /设置时间计算函数 int h = (int)t/36000; int m = (int)t-h*36000)/600; double s = (t%600)/10.00; return String.format("%02d : %02d : %04.1f", h,m,s); public void run() w.setText(count(time); while (!this.isAlive() && !this.isInterrupted() if (Run) w.setText(count(time); try Thread.sleep(100); /线程每100毫秒加一次 catch (InterruptedException e1) time += 1; public void actionPerformed(ActionEvent e) /给每个按钮实现功能 String event=e.getActionCommand(); if(event="开始") Run=true; start.setEnabled(false); stop.setEnabled(true); clear.setEnabled(false); set.setEnabled(true); /开始按钮 else if(event="暂停") Run=false; stop.setEnabled(false); start.setEnabled(true); clear.setEnabled(true); set.setEnabled(true); /暂停按钮 / set.setEnabled(false); else if(event="清零") i=1; time=0; Run=false; w.setText("00:00:00.0"); ta.setText(""); start.setEnabled(true); stop.setEnabled(false); / clear.setEnabled(false); else if(event="计次") String j=w.getText(); String a=" " a="计时"+i+": "+j; / if(Run=true) ta.append(a+"rn"); i+; /计次按钮 四、 测试结果五、 系统使用说明1.点击开始即可开始计时,按暂停的可以暂停计时。2.在计时的时候,点击计次即可对那一瞬间的时间进行计次,支持多次计次,计次的表有滚动条可以查看历史计次。3.在暂停的时候计次,会记录下当前时间。4.按下清零即可清空计次表和时间条。