课程设计(大作业)报告课程名称:面向对象程序设计课程设计设计题目:计算器的设计院系:信息技术学院班级:2015级计算机科学与技术(2)班设计者:学号:指导教师:设计时间:2016.12.26-2016.12.30信息技术学院课程设计(大作业)任务书姓名:院(系):信息技术学院专业:计算机科学与技术(2)班学号:任务起止日期:2016-12-26-2016-12-30课程设计题目:计算器功能设计课程设计要求:设计一个计算器,具有加减乘除的计算器,可扩展功能。1)界面设计首先按设计要求实现其基本功能,其次设计布局,按照GridLayout的布局,将空间划分为由行和列组成的网格单元,每个单元放一个组件,网格单元大小可不同,尽量将相同属性的按钮放在一个区域,方便操作。2)计算器的基本功能:(1)加法:两个数据进行加操作,可以为小数。(2)减法:两个数据进行减操作,可以为负数相减。(3)乘法:两个数相乘操作。(4)除法:两个数相除操作。(5)开平方:对任意一个数进行开方运算,可以是小数。(6)求余:对任意一个数进行求余运算。(7)倒数:对任意一个数进行倒数运算。功能可自行增加。提示:添加相关组件并进行按钮事件处理。工作计划及安排:本次课程设计是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回顾和实践。1.开始设计前学生一定要先回顾以前所学的内容,明确本课程设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。2.通过编写一个基于JAVA的应用系统综合实例,要求学生熟练掌握Java语言设计一个完整的应用程序的设计方法和步骤(软件的分析、设计、调试和总结)。3.要求每个学生应在规定时间内,在相关软、硬件的环境下,由指导老师指导独立完成各阶段设计任务。时间(天)完成内容说明1明确选题,查阅相关资料2016.12.262题目分析、总体设计、编写代码2016.12.27-2016.12.281调试测试、总结,撰写课程设计报告2016.12.291修改、完善课程设计报告2016.12.30指导教师签字年月日课程设计(大作业)报告一、总体设计1.系统需求分析程序中传递的有信息有:界面设计、各运算的实现○1界面设计采用边框布局和网格布局。先用边框布局画一个整体的画板,再用网格布局放三个小的面板。在这三个中,首先将pane1中北部放一个按钮,中部放一个按钮;然后是整体布局,将top的结果画板放在北部,pane1放在中部,其余一个放在西部。○2各运算的实现:⑴、加法elseif(operator.equals(+)){//加法运算resultNum+=getNumberFromText();}⑵、减法elseif(operator.equals(-)){//减法运算resultNum-=getNumberFromText();}⑶、乘法elseif(operator.equals(*)){//乘法运算resultNum*=getNumberFromText();}⑷、除法if(operator.equals(/)){//除法运算//如果当前结果文本框中的值等于0if(getNumberFromText()==0.0){//操作不合法operateValidFlag=false;resultText.setText(除数不能为0);}else{resultNum/=getNumberFromText();}}}⑸、开平方elseif(operator.equals(sqrt)){//平方根运算resultNum=Math.sqrt(resultNum);}⑹、求余elseif(operator.equals(%)){//百分号运算,除以100resultNum=resultNum/100;}⑺、倒数elseif(operator.equals(1/x)){//倒数运算if(resultNum==0.0){//操作不合法operateValidFlag=false;resultText.setText(0没有倒数);}else{resultNum=1/resultNum;}}⑻、求三角函数elseif(operator.equals(cos)){//如果按钮事件为cos键resultNum=Math.cos(resultNum);}elseif(operator.equals(arcsin)){//如果按钮事件为arcsin键resultNum=Math.asin(resultNum);}elseif(operator.equals(arccos)){//如果按钮事件为arccos键resultNum=Math.acos(resultNum);}elseif(operator.equals(tan)){//如果按钮事件为tan键resultNum=Math.tan(resultNum);}elseif(operator.equals(sin)){//如果按钮事件为sin键resultNum=Math.sin(resultNum);}⑼、求相反数elseif(operator.equals(+/-)){//正数负数运算resultNum=resultNum*(-1);}⑿、幂运算elseif(operator.equals(exp)){//如果按钮事件为exp键resultNum=Math.exp(resultNum);}elseif(operator.equals(=)){//赋值运算resultNum=getNumberFromText();}2.总体设计结构⑴、加法据进行加操作,可以为小数。⑵、减法据进行加减操作,可以为负数相减。⑶、乘法个数进行相乘操作。⑷、除法多个数进行相除操作。⑸、开平方任意一个数进行开方运算,可以是小数。⑹、求余一个数进行求余运算。⑺、倒数意一个数进行倒数运算。⑻、求三角函数一个弧度值求三角函数。⑼、求相反数对任意一个数求相反数。⑽、清空任意数或计算的任意结果进行清空。⑾、后退对输入的任意数进行一次后退。(12)幂运算对e的n次方计算计算器加法运算求余运算开平方运算减法运算倒数运算三角函数运算除法运算乘法运算相反数运算清空操作后退操作幂运算二.各模块分析与实现JFrameCalculatorCalculatorcalculator1=newCalculator();publicCalculator()privatevoidinit()PublicvoidactionPerformed(ActionEvente)privatedoublegetNumberFromText()privatevoidcreateMenuBar()privatefinalString[]KEYSprivatefinalString[]COMMANDprivatefinalString[]MprivatefinalString[]KprivateJButtonkeys[]privateJButtoncommands[]privateJButtonm[]privateJButtonk[]privateJTextFieldresultTextprivatebooleanfirstDigitprivatedoubleresultNum=0.0;privatedoublea=0.0;privatedoubleb=0.0;privateStringoperator==;JFrameCalculatorCalculatorcalculator1=newCalculator();publicCalculator()privatevoidinit()PublicvoidactionPerformed(ActionEvente)privatedoublegetNumberFromText()privatevoidcreateMenuBar()privatefinalString[]KEYSprivatefinalString[]COMMANDprivatefinalString[]MprivatefinalString[]KprivateJButtonkeys[]privateJButtoncommands[]privateJButtonm[]privateJButtonk[]privateJTextFieldresultTextprivatebooleanfirstDigitprivatedoubleresultNum=0.0;privatedoublea=0.0;privatedoubleb=0.0;privateStringoperator==;JFrameCalculatorCalculatorcalculator1=newCalculator();publicCalculator()privatevoidinit()PublicvoidactionPerformed(ActionEvente)privatedoublegetNumberFromText()privatevoidcreateMenuBar()privatefinalString[]KEYSprivatefinalString[]COMMANDprivatefinalString[]MprivatefinalString[]KprivateJButtonkeys[]privateJButtoncommands[]privateJButtonm[]privateJButtonk[]privateJTextFieldresultTextprivatebooleanfirstDigitprivatedoubleresultNum=0.0;privatedoublea=0.0;privatedoubleb=0.0;privateStringoperator==;privatebooleanoperateValidFlag=true;一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。但还不支持键盘操作。建立一个JAVAproject○1程序中使用到的类、包packagejisuanqi;importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.JPanel;importjavax.swing.JTextField;○2main函数publicstaticvoidmain(Stringargs[]){Calculatorcalculator1=newCalculator();calculator1.setVisible(true);calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}○3构造函数:初始化计算器、设置计算器的背景颜色、在屏幕(400,300)坐标处显示计算器。publicCalculator(){super();init();this.setBackground(Color.LIGHT_GRAY);this.setTitle(简易计算器);this.setLocation(400,300);this.setSize(500,500);createMenuBar();}○4调用init()函数:初始化计算器privatevoidinit(){文本框中的内容采用右对齐方式、不允许修改结果文本框、设置文本框背景颜色为白色resultText.setHorizontalAl