1、课程设计报告书课 程 名 称 JAVA课程设计 课程设计总评成绩 学生姓名、学 号 学 生 专 业 班级 指 导 教 师 姓名 课程设计起止日期 2014-6-142014-6-20 Java语言课程设计课程任务书Java语言课程设计是“面向对象程序设计(Java)”课程之后的一个教学实践环节,是信管专业的重要实践性课程。其基本任务是综合利用课程中学到的编程知识和编程技巧,完成具有一定难度、一定编程量的课程设计题目,使学生掌握高级编程语言的知识和编程技术,掌握程序设计的思想和方法,具备利用计算机求解实际问题的能力。同时也是对软件开发过程的综合训练。通过Java语言课程设计,应该达到以下基本目标
2、:(1) 进一步巩固和复习Java程序设计的基础知识,提高编程技术。(2) 进一步掌握Java面向对象的编程思想。(3) 进行利用Java语言开发项目的训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。(4) 提高学生程序调试的技巧和程序设计的能力。(5) 提高学生分析问题、解决问题以及实际运用的能力。二、课程设计内容及基本要求本课程设计包含如下两个题目:1. 计算器基本要求:编写程序实现类似下图所示的图形用户界面,实现windows计算器功能2. 数字秒表基本要求:设计一个图所示的数字秒表,实现计时启动、暂停、继续、停止和重置等功能,要求多个按钮之间的状态是相互关联的。三、
3、学时分配进度要求本课程设计将安排在第18周, 通信实验室223机房。具体安排如下:本课程设计的时间为一周,学时分配如下表:序号内容时间1教师讲解第一题;学生查阅资料、准备程序周一上午2上机调试、测试第一题程序周二全天3教师讲解第二题;学生查阅资料、准备程序周三上午4上机调试、测试第二题程序周四全天5分组答辩、提交课程设计报告及相关文档,教师验收评分周五 签名: 日期:1. 设计题目与要求:1.1. 题目:JAVA程序课程设计1.2. 要求:1.2.1. 计算器基本要求:编写程序实现类似下图所示的图形用户界面,实现windows计算器功能1.2.2. 数字秒表基本要求:设计一个图所示的数字秒表,
4、实现计时启动、暂停、继续、停止和重置等功能,要求多个按钮之间的状态是相互关联的。2. 需求分析:2.1. 在日常生活中计算器的使用频率非常的高,比如科学计算器、数值计算。会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很便捷的进行数据运算,可增加页面的实用性。2.2. 同时也让用户的操作更加的方便与快捷。本次课程设计要求实现一个具有四则运算的计算器,拥有加减乘除功能,并且还要求具备清零等功能。3. 设计思路与思想:3.1. 思路:本应用程序继承自框架类cFrame。此程序使用Frame布局管理器FlowLayout,将单行文本框加入到最上方,含有各种按
5、钮的两个面板Panel加入到下方区域,包含各种按钮的面板采用1-3和4-6的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如:button=new CButton(M+);add(bMC);button.add;ActionListener(new Pressbbutton();事件监听器中事件处理方法class PressbDENGYU implements ActionListener本应用程序中的数字按钮和运算符按钮可以分别定义以下两个类的对象组件 数字按钮Button类如下: import java.awt.*; import java.awt.
6、event.*; import javax.swing.*; 3.2. 思想:设计这个计算器主要是参考Windows操作系统中自带的计算器,由于余水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型。4. 课程设计安排4.1. 本课程设计将安排在第17周, 教育技术中心。具体安排如下:4.2. 第一天,下发任务书,学生查阅资料4.3. 第二天,系统设计和原型开发4.4. 第三,四天 系统功能实现4.5. 第五天,系统调试 测试 打包和验收5. 程序说明:5.1. 数据分析 5.1.1. 计算器:计算器的程序设计,必然有数据的输入,当中就包含运算符和数字,都要通过计算器上的button按
7、钮选项按键输入进去,里面录入的为double型的数据,进行运算时比较方便,不用进行多次类型转换。5.1.2. 计时器:计时器的程序设计,所有功能都要通过计时器上的button按钮来实现,计时开始后通过一个boolean isRun来确定计时器运行的状态,在不同的状态可以按下不同的按键,还是较为方便的。6. 类的设计6.1.1. 计算器: class CFrame extends Frame 是初始化界面,以及响应用户的操作。CFrame是个内部类,功能是进行进制的转换。6.1.2. 计时器:class Timer extends Frame implements Runnable,Action
8、Listener 是初始化界面,以及响应用户的操作。public void run()是个内部类,功能是进行时间进制的转换。6.2. 功能设计6.2.1. 计算器:数字键按钮,选中所需要进行计算的数字。(”09”)。运算符按钮,选中所需要进行的四则运算。(”+”、”-“、”*”、”/”)。点击”=”按钮,输出运算的结果。点击”CE”按钮,实现数字的清零。点击”C”按钮,实现显示框的重置6.2.2. 计时器:开始按钮,让计时开始;暂停按钮,让计时暂停;继续按钮,让计时重新开始;停止按钮,让计时停止;重置按钮,让计时回到初始状态;6.3. 程序分析6.3.1. 计算器本程序是一个使用Frame容器
9、作为Java Application程序图形用户界面。本程序有两个类组成,一个是主类,该类中main()方法创建了一个了框架类,在框架里设计了计算器的布局,以及对各个按键按下之后的对应的事件产生。6.3.2. 计时器:本程序也是使用Frame容器作为Java Application程序图形用户界面。本程序有两个类组成,一个是主类,该类中main()方法创建了一个了框架类,在框架里设计了计时器的布局,以及对各个按键按下之后的对应的事件产生。开始6.4. 流程图主类中定义主方法容器中增加按键和对个按键的监听写各个按键的方法主方法中定义主框架主框架中添加显示框和两个容器计算器流程图7. 运行结果和结
10、果分析: 7.1. 运行结果:7.1.1. 计算器:7.1.2. 计时器:7.2. 结果分析:7.2.1. 计算器:计算器正常工作以及显示出来,界面分为三个部分,上方的显示区域,中间的文字控制区域,和下方的输入区域,以三个方面来组成整个计算器,计算器上的每个功能都是仿造WIN上的计算器制作的,计算器非常的好用,除了不支持键盘直接输入,其计算功能还是可以打败许多大街上卖的计算器的。7.2.2. 计时器:计时器可以正常工作以及显示,按下开始后可以按下暂停、停止两个按键,按下停止后可以按下重置按钮,计时器时间精确达到毫秒级。8. 自我评价与总结:作为一名物联网工程专业的学生,我觉得能做类似的课程设计
11、是十分有意义,而且是十分必要的。经过一周的努力,计算器课程设计终于结束了,虽然很忙碌、很疲劳,但是收获很大当然在本次课程设计的过程中,我碰到了很多问题,比如写好的程序无法运行,最先是缺少没有权限调用什么什么的,百度之后解决了。还有就是实现退格功能时不知道怎样处理,最后上网百度了一下才找到了方法,果然网络的时代是学习的时代。还有取反按钮的一个bug,后来发现是没有把取反键设计进去。还遇到了其他的困难,这些花费了很多时间,使我失败了很多次,但是通过我不解的努力还是一一克服了这些问题,最终还是成功了。课程设计中,我的JAVA能力理所当然的提高了,对JAVA不像刚开始学习的时候那样模棱两可的感觉,Ja
12、va这种面相对象的编程方法,是非常好学习的。附录:程序清单,计算器:package jisuanqi;import java.awt.*; import java.awt.event.*;public class Calculator public static void main(String args) CFrame f = new CFrame(); class CFrame extends Framedouble one,two,m;TextField tf;int op=-1;CPanelU p1;CPanelD p2;CFrame() super(Calculator); setL
13、ayout(new FlowLayout(FlowLayout.CENTER); setBackground(new Color(100,150,150); setForeground(Color.white); setResizable(false); setSize(300,250); tf = new TextField(22); tf.setEditable(false); tf.setBackground(new Color(108,118,103); tf.setForeground(Color.white); tf.setFont(new Font(Arial,Font.BOLD
14、,16); add(tf); p1= new CPanelU(); p2 = new CPanelD(); add(p1); add(p2); setVisible(true); addWindowListener(new Wclose(); class CButton extends ButtonCButton(String s)super(s);setBackground(Color.blue);class CPanelU extends PanelCButton bBS,bCE,bC;CPanelU()setLayout(new GridLayout(1,3);bBS=new CButt
15、on(BackSpace); bCE=new CButton(CE); bC=new CButton(C);add(bBS);bBS.addActionListener(new PressbBS();add(bCE);bCE.addActionListener(new PressbCE();add(bC);bC.addActionListener(new PressbC();class CPanelD extends PanelCButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bPoint,bP,bM,bCHENG,bCHU,bDENGYU,bDAOSHU,bQIUY
16、U,bSQRT,bMS,bMR,bMC,bMP,bQUFAN;CPanelD() setLayout(new GridLayout(4,6);b1=new CButton(1);b2=new CButton(2);b3=new CButton(3);b4=new CButton(4);b5=new CButton(5);b6=new CButton(6);b7=new CButton(7);b8=new CButton(8);b9=new CButton(9);b0=new CButton(0);bPoint=new CButton(.);bP=new CButton(+);bM=new CB
17、utton(-);bCHENG=new CButton(*);bCHU=new CButton(/);bDENGYU=new CButton(=);bDAOSHU=new CButton(1/x);bQIUYU=new CButton(%);bQUFAN=new CButton(+/-);bSQRT=new CButton(sqrt);bMS=new CButton(MS);bMR=new CButton(MR);bMC=new CButton(MC);bMP=new CButton(M+);add(bMC);bMC.addActionListener(new PressbMC();add(b
18、7);b7.addActionListener(new Pressb7();add(b8);b8.addActionListener(new Pressb8();add(b9);b9.addActionListener(new Pressb9();add(bCHU);bCHU.addActionListener(new PressbCHU();add(bSQRT);bSQRT.addActionListener(new Pressbsqrt();add(bMR);bMR.addActionListener(new PressbMR();add(b4);b4.addActionListener(
19、new Pressb4();add(b5);b5.addActionListener(new Pressb5();add(b6);b6.addActionListener(new Pressb6();add(bCHENG);bCHENG.addActionListener(new PressbCHENG();add(bQIUYU);bQIUYU.addActionListener(new PressbQIUYU();add(bMS);bMS.addActionListener(new PressbMS();add(b1);b1.addActionListener(new Pressb1();a
20、dd(b2);b2.addActionListener(new Pressb2();add(b3);b3.addActionListener(new Pressb3();add(bM);bM.addActionListener(new PressbM();add(bDAOSHU);bDAOSHU.addActionListener(new PressbDAOSHU();add(bMP);bMP.addActionListener(new PressbMP();add(b0);b0.addActionListener(new Pressb0();add(bQUFAN);bQUFAN.addAct
21、ionListener(new PressbQUFAN();add(bPoint);bPoint.addActionListener(new PressbPoint();add(bP);bP.addActionListener(new PressbP();add(bDENGYU);bDENGYU.addActionListener(new PressbDENGYU();class Wclose extends WindowAdapter public void windowClosing(WindowEvent e) System.exit(0); class PressbP implemen
22、ts ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(tf.getText(); op = 0; tf.setText(); catch(Exception ee) class PressbM implements ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(tf.getText(); op = 1; tf.setText(); catch(
23、Exception ee) class PressbCHENG implements ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(tf.getText(); op = 2; tf.setText(); catch(Exception ee) class PressbCHU implements ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(
24、tf.getText(); op = 3; tf.setText(); catch(Exception ee) class PressbQIUYU implements ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(tf.getText(); op = 4; tf.setText(); catch(Exception ee) class PressbDENGYU implements ActionListener public void actionPerformed
25、(ActionEvent e) try double result =0; two = Double.parseDouble(tf.getText(); switch(op) case 0: result=one+two; break; case 1: result=one-two; break; case 2: result=one*two; break; case 3: result=one/two; break; case 4: result=one%two; break; tf.setText(String.valueOf(result); catch(Exception ee) cl
26、ass PressbC implements ActionListener public void actionPerformed(ActionEvent e) try one=0;two=0; tf.setText(); catch(Exception ee) class Pressbsqrt implements ActionListener public void actionPerformed(ActionEvent e) try double x=Double.parseDouble(tf.getText(); double y; y=Math.sqrt(x); tf.setText
27、(y+); catch(Exception ee) class PressbBS implements ActionListener public void actionPerformed(ActionEvent e) try String text = tf.getText(); text = text.substring(0,text.length()-1); tf.setText(text); catch(Exception ee) class PressbCE implements ActionListener public void actionPerformed(ActionEve
28、nt e) try tf.setText(); catch(Exception ee) class PressbQUFAN implements ActionListener public void actionPerformed(ActionEvent e) try String text = tf.getText(); if (text != ) if(text.charAt(0) = -) tf.setText(text.substring(1); else if(text.charAt(0) = 0 & text.charAt(0) = 9) tf.setText(-+text.sub
29、string(0); else if(text.charAt(0) = .) tf.setText(-0+text.substring(0); catch(Exception ee) class PressbPoint implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); if(text.lastIndexOf(.) = -1) tf.setText(text+.); class Pressb0 implements ActionListener publ
30、ic void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+0); class Pressb1 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+1); class Pressb2 implements ActionListener public void actionPerformed(ActionEvent e)
31、 String text = tf.getText(); tf.setText(text+2); class Pressb3 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+3); class Pressb4 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setTex
32、t(text+4); class Pressb5 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+5); class Pressb6 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+6); class Pressb7 implements Ac
33、tionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+7); class Pressb8 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+8); class Pressb9 implements ActionListener public void actionPerform
34、ed(ActionEvent e) String text = tf.getText(); tf.setText(text+9); class PressbMR implements ActionListener public void actionPerformed(ActionEvent e) try tf.setText(); tf.setText(+m); catch(Exception ee) class PressbMS implements ActionListener public void actionPerformed(ActionEvent e) try m=Double
35、.parseDouble(tf.getText(); catch(Exception ee) class PressbMC implements ActionListener public void actionPerformed(ActionEvent e) try m=0; catch(Exception ee) class PressbMP implements ActionListener public void actionPerformed(ActionEvent e) try double result2; result2=one+m; tf.setText(+result2);
36、 catch(Exception ee) class PressbDAOSHU implements ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(tf.getText(); one =1/one; tf.setText(String.valueOf(one); catch(Exception ee) 计时器:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swin
37、g.event.*;public class Timer extends JFrame implements Runnable,ActionListenerprivate int minutes;private static double seconds;private Thread mb;private boolean isRun;private Button start,tstop,continus,stop,reset;private Label display;Timer()super(Timer);start=new Button(开始);tstop=new Button(暂停);c
38、ontinus=new Button(继续);stop=new Button(停止);reset=new Button(重置);display=new Label();display.setFont(new Font(Arial,Font.PLAIN,30);start.setFont(new Font(Arial,Font.BOLD,32);tstop.setFont(new Font(Arial,Font.BOLD,32);continus.setFont(new Font(Arial,Font.BOLD,32);stop.setFont(new Font(Arial,Font.BOLD,
39、32);reset.setFont(new Font(Arial,Font.BOLD,32);display.setBackground(Color.white);this.setLayout(null);display.setBounds(0,0,400,30);start.setBounds(0,30,80,66);tstop.setBounds(80,30,80,66);continus.setBounds(160,30,80,66);stop.setBounds(240,30,80,66);reset.setBounds(320,30,80,66);refresh();add(display);add(start);start.addActionListener(this);tstop.addActionListener(this);reset.addActionListener(this);continus.addActionListener(this);stop.addActionListener(this);ad