青岛理工大学琴岛学院设计报告课题名称:简单计算器的应用学院:青岛理工大学琴岛学院专业班级:计算机应用技术092班学号:20090311023学生:刘书腾指导教师:代学卿、马金霞青岛理工大学琴岛学院教务处2011年7月7日第1页学生刘书腾指导教师代学卿、马金霞课题名称简单计算器的应用设计时间设计地点图书馆506设计目的一、课题介绍1、课题要求(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;(2)完成整数、实数的四则运算(加、减、乘、除);(3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。2、课题设计思想对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算;还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按Clear撤销后重新输入新数据。二、详细设计过程1、界面设计界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用awt中的BorderLayout和GridLayout布局管理方式,窗体名称jisuan继承JFrameActionListener接口,并实现publicvoidactionPerformed(ActionEvente){}方法。定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。定义变量doublememoryd;//使用内存中存储的数字;DecimalFormatdf;//保留小数位数。使用privateJButtongetJButton()方法添加按钮并给按钮命名,使用setFont(newFont(楷体,Font.BOLD,30));setForeground(newColor(250,0,0));方法设置按钮的字体和字体颜色。第2页设置数字按钮1到9并添加监控,使其在发生鼠标事件时改变按钮颜色,其图形界面如下图1-1所示:图1-12、详细设计根据课题设计的具体要求画出如下图所示的流程图:图1-2(1)这段代码主要是对程序的主框架进行相应的设置Framef=newFrame(计算器);f.setBackground(Color.lightGray);f.setForeground(Color.blue);f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.SOUTH);第3页计算器Result计算器显示结果的窗体Number_Key数字按钮面板Jisuanqi算法程序f.setSize(350,300);//设置大小f.setVisible(true);//设置为可视(2)设置数字按钮1到9并添加监控,使其在发生鼠标事件时改变按钮颜色addMouseListener(newMouseListener(){publicvoidactionPerformed(MouseEvente){jButton.setForeground(newColor(0,100,0));}publicvoidmouseClicked(MouseEvente){jButton.setForeground(newColor(0,150,100));}publicvoidmouseEntered(MouseEvente){jButton.setForeground(newColor(0,0,250));}publicvoidmouseExited(MouseEvente){jButton.setForeground(newColor(250,0,0));}publicvoidmousePressed(MouseEvente){jButton.setForeground(newColor(0,250,0));}publicvoidmouseReleased(MouseEvente){jButton.setForeground(newColor(250,250,0));}});(3)在基本的运算中重点介绍一下除法运算jButton3=newJButton(x/y);定义double变量c用来存放从除数文本框中读出的数据,设置if……else语句来判断当c==0时在文本框中输出“除数不能等于0”,否则就输出结果jButton3.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){doublec=Double.parseDouble(jTextField.getText());doubled=Double.parseDouble(jTextField.getText());doublea;if(c==0){jTextField.setText(除数不能等于0);}else{a=d/c;jTextField.setText(Double.toString(d));}}});(4)这段代码主要为窗口关闭按钮编写程序classcloseWinextendsWindowAdapter//为关闭按钮编写程序{publicvoidwindowClosing(WindowEvente){System.exit(0);}3、类的种类如图1-2显示图1-3第4页三、程序的调试与运行结果说明,下面列举几种特殊情况下的具体操作事例1:当除数为0时,程序运行结果如图1-3:图1-4事例2:4561+8715预计结果13276实际结果如图1-4:图1-5四、存在问题因为第一次设计JAVA程序,有很多地方没有想到,这次设计计算器,也有很多没有完善的地方,比如:计算器除数不能为0,但我们这次设计的计算器没考虑到这个方面,使得计算器在这种情况下不能正常计算,后经过老师的知道和查阅参考书,解决了这个问题,只需一行代码即可:if(d3==0)tf.setText(除数不能为零)。五、主要收获这次的程序设计,从一个简单的计算器就可以看出JAVA的程序设计不是那么简单,仅仅是一个小小的计算器,就已经有很多需要注意的问题,一不小心就会出错,还会有很多地方没怎么明白,而计算器的设计是最简单的几个设计其中之一,可见,平时的知识积累是很重要的。没有知识的积累,再简单的东西也不可能设计出来。课程设计还让我们练习了动手能力,使我们平时学习的知识得以在实际中应用,不会学死书,活学活用,很大程度上提高了我们的能力,对以后的学习、工作、生活也会有一定的帮助。通过此次的程序设计,让我了解了JAVA的更多知识,使平时的知识可以运用,更好的理解了JAVA这门课程。第5页课程设计要求各专业学生应根据课程任教老师的要求,做出选题计划,并按下列要求完成课程设计任务。一、学生应按照老师的要求完成规定的课程设计任务量。二、课程设计报告书要求格式统一,字迹工整,语言简练,文字通顺,按课程设计格式要求书写。程序清单不够填写时统一用A4纸补充并粘贴。对不按格式要求书写或打印的报告书一律不收,也不得进行答辩和评分。三、必须独立完成课程设计,不得相互抄袭。在答辩和批阅过程中发现源程序相同或有大面积抄袭现象,课程任教老师有权通知学生重做,不得给予评分,并通知相关系部做出处理。四、学生课程设计结束后应提交的材料:(1)课程设计说明书(3000字以上);(2)包含完整的、正确的源程序代码(含电子文档);(3)答辨材料(介绍课程设计要点)。第6页课程设计说明书第7页参考文献情况序号名称编著者出版社1Java语言程序设计郑莉清华大学出版社2Java程序设计实训教程张小波冶金工业出版社3Java程序设计魏衍君中国商业出版社4Java应用与开发案例教程徐谡清华大学出版社课程设计说明书第8页课程设计考核情况教师评价情况指导老师评语:指导老师:_____________(签名)日期:年月日学生答辩情况答辩(组)评语:主答辩老师:____________(签名)答辩日期:年月日综合成绩评定情况综合评价等级:__________________注:共分五个等级(1.优秀2、良好3、中等4、及格5、不合格)课程设计说明书第9页课程设计报告书目录一、设计课题…………………………………………………5二、设计目的…………………………………………………5三、操作环境…………………………………………………5四、设计场所(机房号、机器号或自己机器)……………5五、设计过程(设计内容及主要程序模块)………………6六、本次设计中用到的课程知识点(列出主要知识点)…16七、设计过程中遇到的问题及解决办法……………………16八、程序清单…………………………………………………18课程设计说明书第10页一、设计课题及内容课题:计算器内容:该程序是一个图形界面的计算器,可以在标准计算器和科学计算器之间切换,标准计算器的基本功能有:加、减、乘、除基本算术运算;科学计算器的基本功能有:三角函数、进制转换、对数、阶乘;一元二次方程界面可以求一元二次方程的解;勾股定理界面可以求直角三角形边长。二、设计目的进一步掌握和理解java程序编程;进一步掌握java语言的基本数据类型,熟悉定义变量和使用变量;理解java图形用户界面的基本工作原理和界面设计;巩固窗体的布局设计;掌握窗体按钮控件和文本控件对事件的响应;理解函数和方法的使用。三、操作环境操作系统:MicrosoftWindowsXPProfessionalCPU:IntelPentium43.06GHz内存:512M四、设计场所4306教室自己笔记本课程设计说明书第11页五、设计过程(设计内容及主要模块,不少于3000字)1.设计要求1)标准计算器:加、减、乘、除、求平方根;2)科学计算器:进制转换、求解三角函数、对数运算、阶乘;3)一元二次方程:求一元二次方程的解;4)勾股定理:求直角三角边长。2.总体设计1)功能模块图,如图1。计算器标题栏菜单栏文本框按键标题:计算器编辑查看帮助复制粘贴标准型科学型解一元二次方程勾股定理帮助主题关于计算器文本框1—9、BackspaceCE、C、1/X、sqrt%、-/+、+、-、*、/、.、=MC、MRMS、M+实现加减乘除四则运算百分比开根号进制转换三角函数对数运算指数运算阶乘解一元二次方程求直角三角形边长进制弧度SinCosTanLog10LnX^2X^3X^Y图1功能模块图2)一元二次方程界面图科学计算器界面,如图2。图2一元二次方程界面图课程设计说明书第12页3)标准计算器界面,如图3。图3标准计算器界面图4)勾股定理科学计算器界面图,如图4。图4勾股定理界面图课程设计说明书第13页5)科学计算器界面图,如图5。图4科学计算器界面图课程设计说明书第14页3.详细设计1)流程图,如图6。图6流程图2)设置窗体窗体名称biaozhun继承JFrame类和ActionListener接口,并实现publicvoidactionPerformed(ActionEvente){}方法。3)定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。4)定义变量doublememoryd;//使用内存中存储的数字;DecimalFormatdf;//保留小数位