您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 科学计算器--Java课程设计
0《面向对象程序设计》课程设计报告题目:科学计算器软件设计与实现院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:程伟学号:20121183011指导教师:吴奕2014年12月29日至2015年1月9日华中科技大学武昌分校制1面向对象程序设计课程设计任务书一、设计(调查报告/论文)题目科学计算器软件设计与实现二、设计(调查报告/论文)主要内容内容:完成一个图形界面的计算器,可以在标准计算器和科学计算器之间切换,标准计算器的基本功能有:加、减、乘、除基本算术运算;科学计算器的基本功能有:三角函数、进制转换、对数、阶乘;一元二次方程界面可以求一元二次方程的解;勾股定理界面可以求直角三角形边长。基本功能与要求:1.标准计算器:加、减、乘、除、求平方根;2.科学计算器:进制转换、求解三角函数、对数运算、阶乘;3.一元二次方程:求一元二次方程的解;4.勾股定理:求直角三角边长。三、原始资料1.《面向对象程序设计课程设计》指导书2.耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件2五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料[1]张广彬.Java课程设计案例精编(第二版).北京:清华大学出版社,2011.[2]耿祥义.Java课程设计(第二版).北京:清华大学出版社,2008.[3]耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.[4]邹林达.陈国君Java2程序设计基础.北京:清华大学出版社,2010.[5]邹林达.Java2程序设计基础实验指导.北京:清华大学,2010.指导教师(签名):20年月日3目录1需求与总体设计..........................................................11.1需求分析..............................................................11.2总体设计思路..........................................................11.3功能图................................................................21.4类图..................................................................22详细设计................................................................32.1详细设计思路..........................................................32.2类图设计说明和细化...................................................103编码实现................................................错误!未定义书签。3.1java编码实现..........................................错误!未定义书签。4系统测试...............................................................59总结....................................................错误!未定义书签。1需求与总体设计1.1需求分析1.刚启动计算器时的状态:开始计算按键开始键ON清零:计算刚启动时,或者任何时候键入了清零键,计算器所处的状态。2.一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”、“8”后的状态,此时操作数为“38”。3.运算结果:键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。在此状态如果输入数字,输入的数字将作为第一个操作数,开始一次新的计算。4.一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器的状态,如依次输入“2+”或“31×5=÷”之后计算器的状态。5.操作数两元符操作数:输入了一个操作数、一个加减乘除符号和另一个操作数后计算器所处的状态,如依次键入“30÷4”或“3+5=÷5”后计算器的状态。6.操作数两元符运算结果:输入了一个操作数、一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。7.错误:执行非法计算后所处的状态,如执行÷0计算或者对负数的开方计算后的状态。比如6/0后计算的结果是“0不能做除数”。41.2总体设计思路对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算。1.3功能图计算器标题栏菜单栏文本框按键标题:计算器编辑查看帮助复制粘贴标准型科学型解一元二次方程勾股定理帮助主题关于计算器文本框1—9、BackspaceCE、C、1/X、sqrt%、-/+、+、-、*、/、.、=MC、MRMS、M+实现加减乘除四则运算百分比开根号进制转换三角函数对数运算指数运算阶乘解一元二次方程求直角三角形边长进制弧度SinCosTanLog10LnX^2X^3X^Y51.4类图62详细设计2.1详细设计思路1)流程图,如图6。图6流程图2)设置窗体窗体名称biaozhun继承JFrame类和ActionListener接口,并实现publicvoidactionPerformed(ActionEvente){}方法。3)定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。4)定义变量doublememoryd;//使用内存中存储的数字;DecimalFormatdf;//保留小数位数。5)使用privateJButtongetJButton()方法添加按钮并给按钮命名,使用setFont(newFont(楷体,Font.BOLD,30));setForeground(newColor(250,0,0));方法设置按钮的字体和字体颜色。6)设置数字按钮1到9并添加监控,使其在发生鼠标事件时改变按钮颜色7addMouseListener(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));}});7)开根号运算,定义jButton2=newJButton(sqrt);对其设置监控,调用Math.sqrt()方法来实现开根号运算,并在文本框中输出结果,jButton2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){doublea=Double.parseDouble(jTextField.getText());doubleb;if(a0){jTextField.setText(负数不能开平方);}else{b=Math.sqrt(a);jTextField.setText(Double.toString(b));}}});8)设置百分比按钮,jButton7=newJButton(%);使用变量i1来存放从文本框中读出的数据并转换成double类型,定义double类型变量z1,z1=i1/100实现求百分比运算,在使用jTextField.setText(Double.toString(z1))使其在文本框中输出结果jButton7.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){doublei1=Double.parseDouble(jTextField.getText());doublez1=i1/100;jTextField.setText(Double.toString(z1));}});9)设置求倒数运算,jButton14=newJButton(1/x);定义double变量c用来存放从文本框中读出的数据,设置if……else语句来判断当c==0时在文本框中输出“除数不能等于0”,否则就输出结果jButton14.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){8doublec=Double.parseDouble(jTextField.getText());doubled;if(c==0){jTextField.setText(除数不能等于0);}else{d=1/c;jTextField.setText(Double.toString(d));}}});10)定义相反数按钮,jButton16=newJButton(+/-);通过使用0-Double.parseDouble(jTextField.getText().trim());使文本框中的数据变成其相反数jButton16.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){doublei2=0-Double.parseDouble(jTextField.getText().trim());jTextField.setText(Double.toString(i2));}});11)等于号按钮,jButton19.setText(=);通过使用switch……case语句来控制,Operator变量在定义+、-、*、/按钮时对其赋值jButton19.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){d
本文标题:科学计算器--Java课程设计
链接地址:https://www.777doc.com/doc-6105318 .html