科学计算器软件设计与实现--大学毕业设计论文.doc
《科学计算器软件设计与实现--大学毕业设计论文.doc》由会员分享,可在线阅读,更多相关《科学计算器软件设计与实现--大学毕业设计论文.doc(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 面向对象程序设计课程设计报告题 目: 科学计算器软件设计与实现 院 (系): 信息科学与工程学院 专业班级: 计算机科学与技术1201班 学生姓名: 程 伟 学 号: 20121183011 指导教师: 吴 奕 20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制 面向对象程序设计 课程设计任务书一、设计(调查报告/论文)题目科学计算器软件设计与实现二、设计(调查报告/论文)主要内容内容:完成一个图形界面的计算器,可以在标准计算器和科学计算器之间切换,标准计算器的基本功能有:加、减、乘、除基本算术运算;科学计算器的基本功能有:三角函数、进制转换、对数、阶乘
2、;一元二次方程界面可以求一元二次方程的解;勾股定理界面可以求直角三角形边长。 基本功能与要求:1标准计算器:加、减、乘、除、求平方根;2科学计算器:进制转换、求解三角函数、对数运算、阶乘;3一元二次方程:求一元二次方程的解;4勾股定理:求直角三角边长。 三、原始资料1.面向对象程序设计课程设计指导书2. 耿祥义JAVA大学实用教程北京:清华大学出版社,2009四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料1 张广彬. Java课程设计案例
3、精编(第二版).北京:清华大学出版社, 2011. 2 耿祥义. Java课程设计(第二版).北京:清华大学出版社, 2008.3 耿祥义JAVA大学实用教程北京:清华大学出版社,20094 邹林达陈国君 Java2程序设计基础北京:清华大学出版社,20105 邹林达Java2程序设计基础实验指导北京:清华大学,2010指导教师(签名): 20 年 月 日目录1需求与总体设计11.1需求分析11.2总体设计思路11.3功能图21.4类图22详细设计32.1详细设计思路32.2类图设计说明和细化103编码实现113.1java编码实现114系统测试59总 结611需求与总体设计1.1需求分析1刚
4、启动计算器时的状态:开始计算按键开始键ON清零:计算刚启动时,或者任何时候键入了清零键,计算器所处的状态。2一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”、“8”后的状态,此时操作数为“38”。 3运算结果:键入了“=”键后计算器所处的状态,如依次键入“35=”之后计算器的状态。在此状态如果输入数字,输入的数字将作为第一个操作数,开始一次新的计算。4一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器的状态,如依次输入“2”或“315=”之后计算器的状态。5操作数两元符操作数:输入了一个操作数、一个加减乘除符号和另
5、一个操作数后计算器所处的状态,如依次键入“304”或“35=5”后计算器的状态。6操作数两元符运算结果:输入了一个操作数、一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。7错误:执行非法计算后所处的状态,如执行0计算或者对负数的开方计算后的状态。比如6/0后计算的结果是“0不能做除数”。1.2总体设计思路 对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。 文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。布局设计好后再添加按钮事
6、件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算 。1.3功能图1.4类图 662详细设计2.1详细设计思路1) 流程图,如图6。图6 流程图2) 设置窗体窗体名称biaozhun继承JFrame类和Acti
7、onListener接口,并实现public void actionPerformed(ActionEvent e)方法。3) 定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。4) 定义变量double memoryd;/使用内存中存储的数字;DecimalFormat df;/保留小数位数。5) 使用private JButton getJButton()方法添加按钮并给按钮命名,使用setFont(new Font(楷体, Font.BOLD, 30); setForeground(new Color(250,0,0);方法设置按钮的字体和字体颜色。6) 设置数字按
8、钮1到9并添加监控,使其在发生鼠标事件时改变按钮颜色addMouseListener(new MouseListener()public void actionPerformed(MouseEvent e) jButton.setForeground(new Color(0,100,0);public void mouseClicked(MouseEvent e) jButton.setForeground(new Color(0,150,100);public void mouseEntered(MouseEvent e) jButton.setForeground(new Color(0,
9、0,250);public void mouseExited(MouseEvent e) jButton.setForeground(new Color(250,0,0);public void mousePressed(MouseEvent e) jButton.setForeground(new Color(0,250,0);public void mouseReleased(MouseEvent e) jButton.setForeground(new Color(250,250,0););7) 开根号运算,定义jButton2 = new JButton(sqrt);对其设置监控,调用
10、Math.sqrt()方法来实现开根号运算,并在文本框中输出结果,jButton2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) double a=Double.parseDouble(jTextField.getText();double b;if(a=0&e.getKeyChar()=9)str+=e.getKeyChar();jTextField.setText(str);else if(e.getKeyChar()=KeyEvent.VK_BACK_SPACE)str=
11、str.substring(0, str.length()-1);jTextField.setText(str);else if(e.getKeyChar()=KeyEvent.VK_ESCAPE)str=;jTextField.setText(str););14) 定义jButton20、jButton21、jButton22、jButton23分别为MC、MR、MS、M+,并且对按钮添加监听,计算器内部有一个存贮器,假设将其称为“寄数器”。MS是将当前窗口数据写入“寄数器”,M+是将当前窗口数据与“寄数器”内的数据相加后再存入“寄数器”,MR是读出“寄数器”内的数据到窗口,MC是清除“寄数
12、器”内的数据,使其为0。按钮实现方法在public void actionPerformed(ActionEvent e)中实现,public void actionPerformed(ActionEvent e) Object temp = e.getSource();if (temp = jButton20) memoryd = memoryi = 0; textMemory.setText(ZY ); textMemory.setFont(new Font(华文行楷, Font.BOLD, 30); /MS的操作,将当前文本框内容保存入内存,显示M if (temp = jButton2
13、2) /textMemory显示m的文本框 boolean isDot = false; textMemory.setText( M ); textMemory.setFont(new Font(楷体, Font.BOLD, 30); for (int i = 0; i jTextField.getText().length(); i+) if (. = jTextField.getText().charAt(i) isDot = true; break; /如果是double,则存入memoryd(double存储器) if (isDot = true) memoryd = Double.p
14、arseDouble(jTextField.getText(); memoryi = 0; /保证存储器中存放最新的值 /如果是int,则存入memoryi(int存储器) else memoryi = Integer.parseInt(jTextField.getText(); memoryd = 0; /保证存储器中存放最新的值 /MR的操作,将存储器中的信息输出 if (temp = jButton21) if (memoryd != 0) jTextField.setText(Double.toString(memoryd); if (memoryi != 0) jTextField.
15、setText(Integer.toString(memoryi); /M+的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器 if (temp = jButton23) textMemory.setText( M ); textMemory.setFont(new Font(楷体, Font.BOLD, 30); boolean isDot = false; for (int i = 0; i jTextField.getText().length(); i+) if (. = jTextField.getText().charAt(i) isDot = true; break;
16、 if (memoryi != 0) /存储中是一个int型数 if (isDot = false) /被加数是一个int型数 memoryi += Integer.parseInt(jTextField.getText(); else /被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零memoryd = memoryi + Double.parseDouble(jTextField.getText(); memoryi = 0; else memoryd += Double.parseDouble(jTextField.getText()
17、; 15) 设置退格按钮backspace,为jButton24添加监控ActionListener,通过引用全局变量str,str为string类型的变量jButton24.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if(str.length()!=0)str=str.substring(0, str.length()-1);jTextField.setText(str););16) 设置清空按钮C,添加监控,在单击C时通过改变全局变量str的值来实现功能,单击时就将st
18、r的值赋为空,文本框jTextField通过调用setText将str的值输出。jButton26.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) str=;jTextField.setText(str););17) 添加菜单条jJMenuBar,在jJMenuBar中通过add来添加获取菜单的方法getJMenu,以此将菜单添加到菜单条中。菜单分别为编辑、查看、帮助。这三个菜单分别在其对应的getJMenu()方法中定义,编辑菜单下定义了菜单项复制和黏贴,查看菜单下定义了标准型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 科学 计算器 软件设计 实现 大学 毕业设计 论文
限制150内