科学计算器软件设计与实现大学论文.docx
- 文档编号:396492
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:72
- 大小:334.82KB
科学计算器软件设计与实现大学论文.docx
《科学计算器软件设计与实现大学论文.docx》由会员分享,可在线阅读,更多相关《科学计算器软件设计与实现大学论文.docx(72页珍藏版)》请在冰豆网上搜索。
科学计算器软件设计与实现大学论文
《面向对象程序设计》
课程设计报告
题目:
科学计算器软件设计与实现
院(系):
信息科学与工程学院
专业班级:
计算机科学与技术1201班
学生姓名:
程伟
学号:
20121183011
指导教师:
吴奕
2014年12月29日至2015年1月9日
华中科技大学武昌分校制
面向对象程序设计课程设计任务书
一、设计(调查报告/论文)题目
科学计算器软件设计与实现
二、设计(调查报告/论文)主要内容
内容:
完成一个图形界面的计算器,可以在标准计算器和科学计算器之间切换,标准计算器的基本功能有:
加、减、乘、除基本算术运算;科学计算器的基本功能有:
三角函数、进制转换、对数、阶乘;一元二次方程界面可以求一元二次方程的解;勾股定理界面可以求直角三角形边长。
基本功能与要求:
1.标准计算器:
加、减、乘、除、求平方根;
2.科学计算器:
进制转换、求解三角函数、对数运算、阶乘;
3.一元二次方程:
求一元二次方程的解;
4.勾股定理:
求直角三角边长。
三、原始资料
1.《面向对象程序设计课程设计》指导书
2.耿祥义.JAVA大学实用教程.北京:
清华大学出版社,2009.
四、要求的设计(调查/论文)成果
1.课程设计报告
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年月日
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不能做除数”。
1.2总体设计思路
对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。
文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
这是计算器中的一种:
简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:
点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算。
1.3功能图
1.4类图
2详细设计
2.1详细设计思路
1)流程图,如图6。
图6流程图
2)设置窗体
窗体名称biaozhun继承JFrame类和ActionListener接口,并实现publicvoid
actionPerformed(ActionEvente){}方法。
3)定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。
4)定义变量doublememoryd;//使用内存中存储的数字;DecimalFormatdf;//保留小数位数。
5)使用privateJButtongetJButton()方法添加按钮并给按钮命名,使用
setFont(newFont("楷体",Font.BOLD,30));setForeground(newColor
(250,0,0));方法设置按钮的字体和字体颜色。
6)设置数字按钮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));}});
7)开根号运算,定义jButton2=newJButton("sqrt");对其设置监控,调用Math.sqrt()方法来实现开根号运算,并在文本框中输出结果,
jButton2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
doublea=Double.parseDouble(jTextField.getText());
doubleb;
if(a<0){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){
doublec=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){
doubledatatwo;
datatwo=Double.parseDouble(str);
switch(Operator){
case'+':
dataone+=datatwo;break;
case'-':
dataone-=datatwo;break;
case'*':
dataone*=datatwo;break;
case'/':
dataone/=datatwo;break;
default:
break;}
str=Double.toString(dataone);
jTextField.setText(str);}});
12)定义文本框textMemory,用来显示进行MS、M+操作时显示M用,使用
textMemory.setEditable(false);方法使textMemory文本框变成不可编辑。
13)定义文本框jTextField,用来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 科学 计算器 软件设计 实现 大学 论文