1、Java计算器课程设计 密 级 公 开 计算机科学系课程设计报告课 程 名 称: Java 2 程序设计基础 课 题 名 称: 计算器模拟程序 指 导 教 师: 李xxx 姓 名: xxxx 学 号: xxxxx 班 级: 08级应用(2)班 专 业 名 称: 计算机科学与技术 学位授予单位: 黔南民族师范学院 制作日期: 2010年12月31日 目 录一、课程设计封面 1二、目 录 3三、设计任务书 3四、设计课题及本人任务 4五、程序功能简介: 4六、主体内容: 41设计分析 42程序结构(画流程图) 53各模块的功能及程序说明 64. 源程序 65操作方法(流程) 106试验结果(包括输
2、入数据和输出结果) 107设计体会 11(1)对实验原理有更深的理解 12(2)对该理论在实践中的应用有深刻的理解 12(3)激发了学习的积极性 12(4)理解了该知识点以及学科之间的融合渗透 12(5)程序所要求的功能 13(6)程序设计过程中的不足 13七、总 结 13一、课程设计封面二、目 录三、设计任务书 黔南民族师范学院计算机科学系 课程设计任务书 题 目 计算器模拟程序 专 业 计算机科学与计技术 学 号 2008081205 姓 名 唐益龙主要内容、基本要求、主要参考资料等:主要内容: 了解Java语言的使用,Java语言的开发环境,熟练掌握JDK的环境变量的设置,JDK_API
3、_1_6_zh_CN的使用和查找,使用JDK来查找和使用各项接口、类、对象,继承类等的功能。和使用方法;使用继承、类、抽象等方法实现该程序。使用 import java.awt.*; 创建用户界面和绘制图形图像的所有类; import java.awt.event.*; 提供处理由 AWT 组件所激发的各类事件的接口和类等方法。 最后使该程序显示GUI用户界面,能实现整数的加、减、乘、除四则运算。 基本要求:1、 对系统进行功能模块分析、控制模块分析正确,符合课题要求,实相应功能;可以加以其他功能或修饰,使程序更加完善、合理;2、 系统设计要实用,编程简练,可用,功能全面3、 说明书、流程图要
4、清楚4、 记录设计情况5、 要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式6、 设计上交内容:设计报告一份(按格式书写);源程序文件(刻录) 主要参考资料: Java 2程序设计基础实用教程.北京: 叶核亚等,电子工业出版社,2003. Java 2程序设计.北京: 蔡翠平等,北方交通大学出版社,2003. Java 2面向对象程序设计教程.北京: 印雯等 高等教育出版社,1999. 精彩Java程序设计.北京: 吴逸贤等 科学出版社,2003. Java 2程序设计教程.北京:肖雯等 中国电力出版社,2003. Java 2面向对象程序设计.北京:洪维恩等 中
5、国铁道出版社,2005.完成期限:第十八周指导教师:李老师责 任 人:唐益龙日 期:2010年12月15日四、设计课题及本人任务设计课题: Java 2程序设计基础 计算器模拟程序本人任务: 认真完成各项任务,完成所有项目的制作开发,从设计构想到流程图的完成,完成各项功能的实现。完成课程设计的源代码设计,编译、调试、成功运行等事项。整个系统结束后对程序进行总结,编写小结。撰写实验报告。五、程序功能简介: 程序功能简介:随着人们物质生活水平的日益提高,人民对高质量的计算提出了更高的要求,当今,是云计算的生活和物联网发展和使用阶段,计算性能的高低和计算的效率直接影响到人们生活与各大高校人才的培养质
6、量。基于此,采用面向对象的程序设计方法,UML为建模语言,JAVA为前台开发工具,ORACLE为后台数据库,开发了一个为人们生活带来便利的计算器,主要完成对数据的高效计算。有助于实现计算的信息化、规范化和科学化,使需要计算的人员能够及时、准确地计算所要计算的结果。该系统的主要功能是实现正负数加、减、乘、除法的四则运算。各程序模块均不同程度低显示了其主要功能。六、主体内容:1设计分析 计算器是一种很常用的计算工具,它在计算方面、日常生活中给我们提供很大的方便,在编辑此程序时,除了包括常用的加法运算算法、减法运算算法、乘法运算算法、除法运算算法等四大模块之外。还特意添加了正负数的四则混合运算,给本
7、系统增加了一个亮点。其次本程序对其它算法也有很高的要求,对编程过程中所用到的接口、抽象、对象、类等方法和过程提出较高的要求,同时对编程过程中所编写的实验代码也不同程度的提出了很高的要求,所以在编程的过程中难免遇到了一些困难,所以在完成本次系统的过程中过程中充满了挑战与机遇。2程序结构(画流程图) 计算器模拟程序流程图 输入数字否是否否 3各模块的功能及程序说明用于创建用户界面和绘制图形图像的所有类的模块。使用和定义import java.awt.*;来调用创建用户界面和绘制图像的函数。import java.awt.event.*;该语句提供处理由 AWT 组件所激发的各类事件的接口和类。(c
8、lass Calculator extends Frame /Calculator类继承Frame类)设置窗口类的模块,包括窗口的长、宽尺寸、打开、关闭等功能。class CalculatorPanel extends Panel 函数模块/CalculatorPanel类继承Panel类,实现计算器的加、减、乘、除等的运算功能,implements函数程序模块的引用和使用。程序启动判断模块,start,启动监视器。最后一个模块,以public void calculator(double x)等语句完成的函数模块的返回运算结果。4. 源程序 /CalculatorFrame.java/软件包
9、 java.awt 包含用于创建用户界面和绘制图形图像的所有类。import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;/对自身进行指派的事件的接口。import java.awt.event.ActionListener;/监听器import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;import javax.
10、swing.UIManager;/类 javax.中的静态变量 一个 Swing 组件,/import sun.util.calendar.JulianCalendar;public class CalculatorFrame extends JFrame/Calculator类继承Frame类 /创建相关的对象并定义私有变量 private JTextField text = new JTextField(); private JButton btnEq = new JButton(=); private JButton btns = new JButton16; private JPane
11、l btnsPanel = new JPanel(); private GridLayout glayout = new GridLayout(4,4,2,2); private String input=0; private double saveFirstInput = 0; private boolean lockpoint = false; private int firstNum = 0; private char c; public CalculatorFrame() init(); /定义+、-、*、的字符串数组 private void init() String arr =
12、7,8,9,/, 4,5,6,*, 1,2,3,-, 0,+/-,.,+; btnsPanel.setLayout(glayout); text.setHorizontalAlignment(JTextField.RIGHT); / 调整文字使文字居右 for (int i = 0; i arr.length; i+) JButton btn = new JButton(arri); btnsi = btn; btnsPanel.add(btn); intindex=0,1,2,4,5,6,8,9,10,12; /异常变量数组 for(int i=0;iindex.length;i+) btn
13、sindexi.addActionListener(new NumbtnListener(); btns14.addActionListener(new PointbtnListener(); btns13.addActionListener(new changeSybtnListener(); intindex2=3,7,11,15; for(int i=0;iindex2.length;i+) btnsindex2i.addActionListener(new calcbtnListener(); btnEq.addActionListener(new btnEqListener(); t
14、his.getContentPane().add(btnsPanel); this.getContentPane().add(text,BorderLayout.NORTH); this.getContentPane().add(btnEq,BorderLayout.SOUTH); this.setLocation(300,250); this.setSize(240,250); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle(计算器); this.setVisible(true); /调整计算器的窗口和输入
15、输出界面窗口。并调用this.setVisible(true)语句 class NumbtnListener implements ActionListener /创建ActionListener类,模拟计算器监听输入的窗口 public void actionPerformed(ActionEvent e) if(firstNum+=0) input=e.getActionCommand(); else input+=e.getActionCommand(); text.setText(input); class PointbtnListener implements ActionListe
16、ner /创建ActionListener类,模拟输出计算的窗口 public void actionPerformed(ActionEvent e) if(lockpoint=false) input+=e.getActionCommand(); lockpoint=true; text.setText(input); class changeSybtnListener implements ActionListener /创建ActionListener类,模拟计算器改变输入的窗口 public void actionPerformed(ActionEvent e) double d=Do
17、uble.valueOf(input); d=-1*d; input=Double.toString(d); text.setText(input); class calcbtnListener implements ActionListener /创建ActionListener类,模拟计算器改变输出的窗口 public void actionPerformed(ActionEvent e) c=e.getActionCommand().charAt(0); double d=Double.valueOf(input); saveFirstInput = d; firstNum=0; inp
18、ut=0; class btnEqListener implements ActionListener /创建ActionListener类,执行计算器运算的算法 public void actionPerformed(ActionEvent e) double d=Double.valueOf(input); switch(c) case +: d += saveFirstInput; break; case -: d = saveFirstInput-d; break; case *: d *= saveFirstInput; break; case /: d = saveFirstInp
19、ut / d; break; input=Double.toString(d); text.setText(input); public static void main(String args) throws Exception /主函数抛出异常 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); new CalculatorFrame(); 5操作方法(流程) 首先检验按键是否是数字与数字(09的数字、小数点组成):1、若是,检验下一次以前是否有运算符“+、-、*、”。是(给第一次输入数字)赋值a;不是(给
20、第二次以后输入数字)赋值b 返回输入2、不是 检验是否是加减乘除号:(1)是检验是否以前运算符是否为空 是 赋值运算符 不是 分别加减乘除运算 返回输入(2)不是 检验是否是等于 是 ,进行运算赋值 返回输入 不是 那只能是清空毽子 清空6试验结果(包括输入数据和输出结果) 计算:10244=? 程序运行的结果如下: 点击或从键盘输入:1024 * 点击或从键盘输入:4 点击或从键盘输入“=”显示如下: 计算结果:4136.0。与预期的相吻合。其它计算类似7设计体会作为一名计算机科学系计算机科学与技术专业大三的学生,我觉得做这样的课程设计是十分有意义。在已度过的两年半大学生活里我们大多数接触的
21、是专业基础课。我们在课堂上掌握的仅仅是专业基础课的理论面,如何去面对现实中的计算机方面所遇到的各种问题?如何把我们所学到的专业基础理论知识用到实践中去呢?我想做类似的大作业就为我们提供了良好的实践平台。在做本次课程设计的过程中,我感触最深的当属查阅了很多次设计书和指导书。为了让自己的设计更加完善,更加符合李老师的要求,一次次翻阅Java 2 程序设计基础教材与Java 2 程序设计基础实验指导书,一次次查阅一些资料。这是十分必要的,同时也是必不可少的。我做的是课程设计,而不是艺术家的设计。艺术家可以抛开实际,尽情在幻想的世界里翱翔,一切都要有据可依.有理可寻,不切实际的构想永远只能是构想,永远
22、无法升级为设计。 作为一名计算机专业学生掌握一门或几门计算机软件语言是必不可少的,虽然本次课程设计没有要求尽可能多的用到Java 2 程序设计基础教材中所学的全部知识,在整个设计过程中我都竭尽所能地都用到了它。编程过程中先后涉及Java语言的使用,Java语言的开发环境,熟练掌握JDK的环境变量的设置,JDK_API_1_6_zh_CN的使用和查找,使用JDK来查找和使用各项接口、类、对象,继承类等的功能。和使用方法;使用继承、类、抽象等方法实现该程序。使用 import java.awt.*; 创建用户界面和绘制图形图像的所有类; import java.awt.event.*; 提供处理由
23、 AWT 组件所激发的各类事件的接口和类等方法。 最后使该程序显示GUI用户界面,能实现整数的加、减、乘、除四则运算。JDK方便简洁,速度快,我的设计,大部分不懂的Java语句都是在JDK上查找出来的,然后按程序要求写转换成源代码。这样,有了JDK就可以更好的使程序更加完善。另外,课堂上也有部分知识不太清楚,于是我又不得不边学边用,时刻巩固所学知识,这也是我作本次课程设计的另一大收获。通过本次课程设计可以得出以下一些体会:(1)对实验原理有更深的理解通过Java 2 程序设计基础课程设计,掌握了什么是Java程序设计基础的几大要点,Java 2 程序程序工作的基本过程及其各阶段的基本任务,熟悉
24、了编译程序总流程框图,了解了程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识是机械的,表面的。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。(2)对该理论在实践中的应用有深刻的理解通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了计算器程序从理论到现实在计算机中是怎样执行的, 对java理论在实践中的应用有深刻的理解 。(3)激发了学习的积极性通过该课程设计,全面系统的理解了Java程序构造的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计Java
25、语言的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。以前对与计算机操作系统的认识是模糊的,概念上的,现在通过自己动手做实验,从实践上认识了Java语言,在这次课程设计中,我就是按照实验指导的思想来完成。加深了理解文件系统的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。(4)理解了该知识点以及学科之间的融合渗透本次课程设计程序部分是用Java语言编写的,把计算机操作系统 、 编译原理 、C+语言等学科联系起来,把各个学科之间的知识融合起来 ,把各门课程的知识联系起来,对计算机整体的认识更加深刻。使我加深了对计算机操作系统 、编译原理 、C+语言课程
26、的认识。(5)程序所要求的功能本程序是计算器模拟程序,目标是完成加、减、乘、除四则运算,先后使用了调用Java软件包中的部分函数和方法,Java中的各种类。创建对象、for循环、switch、case循环、函数的抛出异常、继承、接口等各种函数。尽可能的使用了各种方法嵌入到函数之中。完成程序的最终目的;完善该课程设计。(6)程序设计过程中的不足 首先,从我自身而言:在程序的书写及执行过程中存在着一些问题,自身的原因是对Java各种函数及其方法使用不够熟练,影响了程序设计的总体的进度。自身在程序设计过程中体现出不够细心,Java是严格区分大小写一门计算机语言,在大小写这个问题上调试程序的时候提示“
27、找不到符号”等错误,但是经慢慢的寻找,多次调试终于把该程序调试运行成功。相信在以后的学习过程中会更加的完善和改进。在今后的学习中叶需要加强这方面的知识。其次,从程序本身而言:该程序虽然使用方便,但是该程序在使用过程中不具备自动清零的功能,无论是手动操作还所显示的窗口都不具有此项功能;该程序无法对复杂的运算进行计算功能,也不具备四则混合运算的功能。七、总 结通过对本次客车设计的学习,使我更进一步加深了对Java语言程序设计基础的掌握,从中学习到做事要持之以恒,无论是对学习还是生活我都要有一颗细心的心,真正的领悟到细节决定成败的道理!总体来说整个设计我基本上还满意,也都是严格按照课程设计的要求来做。但基于水平有限,难免会有错误,还望老师批评指正。希望在今后的学习之中,老师多指教,由此我可用更好地了解到自己的不足,以便课后加以弥补。在此,感谢不已!谢谢!