《课程设计--简易计算器.docx》由会员分享,可在线阅读,更多相关《课程设计--简易计算器.docx(16页珍藏版)》请在优知文库上搜索。
1、第1章课题概述11.1 课题的目的11.2 课题的要求1第2章概要设计22.1整个程序的模块结构及流程2第3章计算器详细设计33.1计算器界面33.1.1CAL主类的显示布局33.1.2计算器显示界面实现代码33.2监听各个按钮的类53.2.1编写监听类目的53.2.2监听类实现代码53.3按键响应类63.3.1响应类编写的目的63.3.2响应类实现代码63.4运算处理类93.4.1处理方式93.4.2处理类实现代码9第4章调试及发现问题的解决10第5章程序测试及分析11第6章总结14参考文献15第1章课题概述本次课程设计的题目是设计并实现仿照Window系统中的“计算器”,利用Java的GU
2、I实现一个简单的计算器。1.1 课题的目的日常生活中我们经常会遇到一些小型数据计算的问题,计算器在我们的生活中常常会使用到,本课程设计就是以此为出发点,设计了这样一个简单的计算器,用以实现基本的数学运算。在java语言当中通过定义类,类中的各种方法实现对计算器相关功能的实现,并通过与用户自己手动输入并选择运算功能实现计算功能,是一个完全由用户控制的简易计算器。本次课程设计,通过界面以及其中的逻辑处理,完成了四则运算的处理。通过awt包或者SWing包中的界面设计部分对界面设计的细节可以有更多的了解。利用面向对象的思想,将各个组件的事件响应分别用不同的类表达出来。面向对象的思想从很大程度上可以让
3、程序的思路更加清晰,而且可重用性很高。对于具有相同事件响;应的组件则可以调用相同的类来处理事件。除此之外,利用栈的知识来解决运算符优先的问题也让我们对java中的栈有了更多的了解。1.2 课题的要求仿照Window系统中的“计算器”,利用JaVa的GUI实现一个简单的计算器。程序的基本功能:1 .单击“计算器”上的数字按钮(0-9)可以设置参与计算的运算数。2 .单击“计算器”上的运算符按钮(+、-、*、/)可以选择运算符号。3 .单击“计算器”上的“二”按钮显示计算结果。4 .应用自己所学课程知识完成对计算器的基本任务。5 .查阅相关资料,学习和掌握项目中涉及的新知识,提高自学能力。6 .通
4、过应用java程序编写计算器来提升自己对简单的图形界面有一定的掌握和了解。第2草概要设计2.1整个程序的模块结构及流程在设计程序的时候,考虑到计算器的功能,首先编写一个CAL类,在该类中按照其功能分别写了一个方法实现,在程序开始后,可以看到一个控制面板形式的计算器界面展现在用户面前,用户自己输入数据和选择要运算的功能进行计算。具体方法有:加减乘除运算、乘方开方运算、正余弦正切运算、删除阶乘运算等具体的关系结构如图27所示i2U运算输出运算结果图2-1整个程序各功能模块间的流程第3章计算器详细设计3.1 计算器界面3 .1.1CAL主类的显示布局为了方便用户的使用,创建了一个带按钮的控制面板。将
5、所有的运算键、数字键等都放在该面板中方便用户选择与使用o所有的运算选择都完全由用户掌控。4 .1.2计算器显示界面实现代码publicvoiddisp()(frame=newJFrame();frame.SetTitIe(陈路尧的个人计算器”);frame.setSize(360,230);frame.SetLocation(380,260);frame.SetBackground(Color.LIGHTGRAY);frame.SetLayout(newFlowLayout(FlowLayout.CENTER);frame.SetResizable(false);计算器disTop模块,包括数
6、字显示文本框、back,ce,c,about按钮show=newJTextFicld(Bl);show.SetTeXt(0);show.SetHorizontalAlignment(SwingConstants.RIGHT);show.SetEditable(false);frame,add(show);PaneldispTop=newPanel();frame.add(dispTop);dispTop.SetLayout(newGridLayout(1,4,3,3);be=newJButton(/zBack);be.SetForeground(Color.BLUE);dispTop.add(
7、be);ce=newJButton(/zCE);ce.SetForeground(Color.BLUE);dispTop.add(ce);c=newJButton(,C);c.SetForeground(Color.BLUE);dispTop.add(c);广告按钮,显示计算器制作者ab=newJButton(/zAbout);ab.SetForeground(Color.BLUE);dispTop.add(ab);about=newJDialog(frame,“关于计算器“,true);Labelct=newLabCI(”本计算器由陈路尧制作“,1);ct.SetForeground(Col
8、or.RED);about,add(ct,Center);about.setSize(200,100);about.SetLocation(500,300);主要按钮显示面板包括disLeft和disRightPaneldispMain=newPanel();frame,add(dispMain);dispMain.SetLayout(newGridLayout(1,2,10,10);disLeft面板,包括0-9、+/-、。这十二个按钮PaneldispLeft=newPanel();dispMain.add(dispLeft);dispLeft.SetLayout(newGridLayou
9、t(4,3,3,3);PaneldispRight=newPanel();disRight面板,包括+、-、*、/、Sqrt、1/x、=这个人几个按钮dispMain.add(dispRight);dispRight.SetLayout(newGridLayout(4,2,3,3);新建0-9这是个按钮,并将其添加到disLeft中for(1=9;1=0;1-)bl=newJButton(String,valuef(1);dispLeft.add(bl);bl.addActionListener(this);)新建其余按钮,并分别将其添加到各自的面板中jia=newJBUtton(+);jia
10、.SetForeground(Color.RED);jian=newJBUttOn(一);jian.SetForeground(Color.RED);cheng=newJBUtton(*);cheng.SetForeground(Color.RED);chu=newJBUtton(/);chu.SetForeground(Color.RED);equ=newJBUtton(=);equ.SetForeground(Color.RED);point=newJBUttOn;zf=newJButton(/+/-);sqrt=newJBUttOn(sqrt);bfh=newJButton(Y);ds=
11、newJButton(,zlzz);dispRight.add(chu);dispRight.add(sqrt);dispRight.add(cheng);dispRight.add(bfh);dispRight.add(jian);dispRight.add(ds);dispRight.add(jia);dispRight.add(equ);dispLeft.add(zf);dispLeft.add(point);3.2监听各个按钮的类3.2.1编写监听类目的编写监听类的目的主要监听用户所按下的数字键和运算键,为了计算机后续的取得数据并进行运算做预备工作。给后续计算工作提供保障。3.2.2监
12、听类实现代码算法的代码实现如下:为各个按钮绑定监听器about.addWindowListener(this);be.addActionListener(this);ce.addActionListener(this);c.addctionListener(this);ab.addActionListener(this);jia.addActionListener(this);jian.addActionListener(this);cheng.addctionListener(this);chu.addActionListener(this);equ.addActionListener(th
13、is);point.addctionListener(this);zf.addActionListener(this);sqrt.addActionListener(this);bfh.addActionListener(this);ds.addActionListener(this);frame.addWindowListener(this);frame.setVisible(true);3.3按键响应类3.3.1响应类编写的目的通过监听类的监听,采集用户所按下的按键信息进行分析,并将分析结果保存为不同的方法和标记,通过不同的标记在运算过程中调用处理类中的不同方法实现计算功能。3.3.2响应
14、类实现代码算法的主体代码实现如下:publicvoidactionPerformcd(ActionEvente)getValue=Double,valuef(show.getText().doubIeVaIue();if(e.getSource()=jia)/加运算,可连加if(j=0)sum=getValue;elseif(action=1)sum+=getValue;)setSum();j+;P=O;i=0;action=1;elseif(e.getSource()=jian)/减运算,可连减if(j=0)sum=getValue;elseif(action=2)sum-=getValue;)setSum();j+;P=0;i=0;action=2;elseif(e.getSource()=cheng)(/乘运算,可连乘if(j=0)sum=getValue;elseif(action=3)sum*=getValue;)setSum();j+;P=0;i=0;action=3;elseif(e.getSource()=chu)/除运算,可连除if(j=0)sum=getValue;elseif(action=4)sum/=getValue;)setSum();j+;P=0;i=0;action=4;elseif(e.getSource()=equ)