计算器java程序设计._第1页
计算器java程序设计._第2页
计算器java程序设计._第3页
计算器java程序设计._第4页
计算器java程序设计._第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录1. 课程设计目的 22. 设计题目分析 22. 1题目简介 22. 2设计要求及需求分析 23. 课程设计内容 33. 1总体设计 33.2计算器功能模块设计 43.3计算器算法流程设计 43.4类的设计 53. 5代码实现: 63. 5设计结果与分析 84. 设计心得与总结 10参考文献: 10附录: 1131.课程设计目的通过课程设计把知识形成系统,把自己所学的知识在实际问题中加以运用。如果自己编写的程序能够给更多的人带来方便,并且得到人们的好评,那么自己编写的程序就可以实现商品化,形成产品给更多的人利用,并实现一定的商 品价值。因此本次课程设计有目的有以下几点:(1)复习巩固jav

2、a语言的基础知识,进一步加深对java语言的理解和掌控。(2)提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际 有机结合起来,锻炼我们的分析解决实际问题的能力。 提高我们适应实际,实践 编程的能力。(3)培养我们在项目开发中创新意识及能力, 通过亲身实践,利用所学编写 简单的面向对象程序,提高对面向对象及 JAVA语言的理解。2设计题目分析2 . 1题目简介设计一个图形界面(GU)的计算器应用程序,完成简单的算术运算、 设计的计算器应用程序可以完成家法、减法、乘法、除法。2 . 2设计要求及需求分析设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实

3、现计算器,并采用Swing组件,AWT事件处理等实现具体功能。背景需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍 小数的计算都需要计算器的帮助, 而在学习一些科目时,也常常要处理数字。虽 然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多 的价格较贵,不仅操作不便,很多功能也根本用不到。所以我们想用自己所学设 计开发一个属于自己的简单计算器来完成日常学习生活的需求。3.课程设计内容3. 1总体设计本应用程序继承自框架类(Frame),此程序 使用Frame布局管理器 BorderLayout,将单行文本框加入到“ North ”区域,包含各种按钮的面板 Pa

4、nel p加入到” Center”区域。包含各种按钮的面板Panel p采用4行4列的网格布 局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如:Button b=new Button();b.addActionListener(事件监听器);事件监听器中的事件处理方法 void actio nPeformed(Actio nEve nt evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件 (” 0”,” 1”,” 2” ” 8”,” 9”)、运算符按钮事件(”+”,”一“,”* ”,”/”,” )、正负号按钮事件(” +/- “)、小数点按

5、钮事件(”.”)、 等号按钮事件(”=”)、求倒按钮事件(” 1/x ”)、退格按钮事件(”退格”)、 清楚按钮事件(“ C”)。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。计算器完成的是一个数学表达式,如:3+ 2,所以可以采用一个链表(LinkedList类)来存储数字或字符,如3,+, 2分别存储在链 表中,最后运算时,可以取出来进行运算。计算器设计外形及结构如下:系统总体设计框架Pan el2Pan ellPanel: 4*4的数字及运算键Panel2 :输入及运行结果显示及倒退清空键3.2计算器功能模块设计以下为标准计算器的基本功能:(1)

6、加法两个数据进行加操作,可以为小数。(2)减法两个数据进行减操作,可以为负数相减(3)乘法两个数相乘操作。(4)除法两个数相除操作。5)清零 清除显示框的数据。具体的计算器功能模块图如下:3.3计算器算法流程设计计算器的程序设计,必然有数据的输入,当中就包含运算符和数字,都要通 过计算器上的butt on按钮选项按键输入进去,里面录入的为字符型的数据,若 要进行运算,要将输入的字符转换成 double型,以防运算出错。实现计算器算法功能的流程图如下所示:3.4类的设计class jisua n exte nds JFrame impleme nts Actio nListe ner /jisu

7、an是初始化界面,以及响应用户的操作。jisuan是个内部类,功能是进行进制的转换。import java.awt.*;import java.awt.event.*;import javax.swi ng.*;这三项是系统初始时需要引入的主类以达到完成界面的目的。3 . 5代码实现:1、引入主类:import java.awt.*;import java.awt.event.*;import javax.swi ng.*;public class jisuanextends JFrame implements ActionListener 2、实现计算器界面的关闭与扩展private sta

8、tic final long serialVersio nUID = -169068472193786457L; private class WindowCloser extends WindowAdapter public void windowClosing(WindowEvent we) System.exit (0);3、建立按键并为每个按键赋予相应的字符"1IIint i ;private finalStringstr = "7" , "8" , "9" , "/""2"&q

9、uot;3II IIII II"0"I!I!"+ ""4""5""6"16JButtonbuttons = new JButtonstr . length ;JButton reset = new JButton( "CE");JTextField display4、设计计算器界面new JTextField( "0");public jisua n() super ("jisuan"JPa nel pan el1 =);new JPa

10、 nel( new GridLayout(4, 4);for ( i = 0;i < str . length ; i +) buttons i =new JButt on(str i );panel1.add(buttons i );JPa nel pan el2 =new JPa nel( new BorderLayout();pan el2.add("Ce nter" , display );panel2.add( "East" , reset );getC onten tPa ne().setLayout(new BorderLayout(

11、);getCo nten tPa ne().add("North" , pan el2);getCo nten tPa ne().add("Cen ter" , pan el1);5、为各个按键及显示框添加事件监听for ( i = 0; i < str . length ; i +)buttons i .addActionListener(this );/ Add liste ner for "reset" butt on.reset .addActionListener(this );/ Add liste ner for

12、"display" butt on.display .addActionListener(this );/ The "close" button "X".addWi ndowListe ner(new Win dowCloser();/In itialize the win dow size.setSize(800, 800);/ Show the wi ndow./ show(); Usi ng show() while JDK vers ion is below 1.5. setVisible( true );/ Fit the

13、certa in size.pack();6实现各个功能函数的调度public void action Performed(Act ion Eve nt e) Object target = e.getSource();Stri ng label = e.getAct ion Comma nd();if (target = reset )han dleReset();else if ("0123456789.".indexOf(label) > 0)han dleNumber(label);elsehan dleOperator(label);boolea nisFi

14、rstDigit=truepublic void handleNumber(String key) if ( isFirstDigit )display .setText(key);&& (display .getText().i ndexOf(".")<else if (key.equals(".")0)display .setText(display.getText() +".");else if (!key.equals(".")display .setText(display.getT

15、ext() + key);isFirstDigit = false ;7、重置功能的实现public void handleReset() display .setText( "0"); isFirstDigit = true ; operator ="="double nu mber = 0.0;String operator ="="8、运算功能的实现public void handleOperator(String key) if ( operator .equals( "+")nu mber += Doub

16、levalueOf(display.getText();elseif ( operator .equals("-")nu mber -= Double.valueOf(display.getText();elseif ( operator .equals( "*")nu mber *= Double.valueOf(display.getText();elseif ( operator .equals( "/")number /= Double.valueOf(display.getText();elseif ( operator .

17、equals("=")number = Double. valueOf ( display .getText(); display .setText(String. valueOf (number); operator = key;isFirstDigit = true ;public static void main( Stri ng args) new jisua n();3 . 5设计结果与分析1、运行的初始界面2、数字计算演示以计算(789+45) *23=19182为例,计算过程如下:输入789与45相加所得结果输入23并相乘得到最终结果点击CE清零最后得到的结果

18、为19182,结果正确,计算器的各个功能均得以实现4.设计心得与总结通过此次的课程设计实践,我们不但进一步理解掌握了课上老师教授的知 识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义, 发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。在实践中我们遇到了很多问题,但我们都努力克服,并最终成功的 完成了这次课程设计。通过编写这个相对复杂的程序,我们认识解决实际问题前应先建立模型, 再 通过建立的模型使问题简单化,从而解决问题。并且这次编写的程序大部分是通 过调用各包中的方法来实现的,这也让我们充分理解了包和类的调用关系。由于 这次编写的程序比

19、较复杂,所以不能一次性编写、调试,也由此让我们学会把程 序分块,逐个编写、调试。参考文献:2叶乃文,王丹.面向对象程序设计M.清华大学出版社,2009.2 邱桃荣,陈轶,冯缨.JAVA语言程序设计教程M.机械工业出版社,2009.2於东军,杨静宇,李千目,王国全.JAVA程序设计与应用开发M.清华大学出版社,2006.附录:计算器的完整实现代码:import java.awt.*;import java.awt.event.*;import javax.swi ng.*;public class jisuanextends JFrame implements ActionListener pr

20、ivate static final long serialVersio nUID= -169068472193786457L;private class WindowCloserextends WindowAdapter public void windowClosing(WindowEvent we) System. exit (0);int i ;/ Strings for Digit & Operator butt ons."1IIprivatefinal Stri ngstr = "7" , "8" , "9&quo

21、t; , "/""4""5""6""2II"3"II IIII II"0"I!I!"+" ;/ Build butto ns.=new JButt onstr . length ;JButto nbutt ons/ For can cel or reset.JButton reset = new JButton( "CE");/ Build the text field to show the result.JTextFiel

22、d display = new JTextField( "0");public jisua n() super ("jisuan" );/ Add a pan el.JPa nel pan el1 =new JPa nel( new GridLayout(4, 4);/ pan el1.setLayout( new GridLayout(4,4);for ( i = 0; i < str . length ; i +) buttons i =new JButton(str i );panel1.add(buttons i );JPa nel pan

23、 el2 =new JPa nel( new BorderLayout();/ pan el2.setLayout (new BorderLayout();pan el2.add("Ce nter" , display );panel2.add("East" , reset );/ JPa nel pan el3 = new Pan el();getC onten tPa ne().setLayout(new BorderLayout();getCo nten tPa ne().add("North" , pan el2);getCo

24、 nten tPa ne().add("Cen ter", pan el1);/ Add action liste ner for each digit & operator butt on.for ( i = 0; i < str . length ; i +)buttons i .addActionListener(this );/ Add liste ner for "reset" butt on.reset .addActionListener(this );/ Add liste ner for "display&quo

25、t; butt on.display .addActionListener(this );/ The "close" button "X".addWi ndowListe ner(new Win dowCloser();/In itialize the win dow size.setSize(800, 800);/ Show the wi ndow./ show(); Usi ng show() while JDK vers ion is below 1.5. setVisible( true );/ Fit the certa in size.pac

26、k();public void action Performed(Act ion Eve nt e) Object target = e.getSource();Stri ng label = e.getAct ion Comma nd();if (target = reset ) han dleReset();else if ("0123456789." .indexOf(label) > 0) han dleNumber(label);elsehan dleOperator(label);/ Is the first digit pressed?boolea n isFirstDigit = truepublic void handleNumber(String key) if ( isFirstDigit )display .setText(key);else if (key.equals(".")&& (display .getText().i ndexOf(".")<0)displa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论