基于MATLAB的数学计算器.docx
《基于MATLAB的数学计算器.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的数学计算器.docx(18页珍藏版)》请在冰豆网上搜索。
基于MATLAB的数学计算器
成绩
课程设计报告
题目数学计算器的开发
课程名称软件设计
院部名称机电工程学院
专业自动化
班级09自动化
学生姓名
学号
课程设计地点C208
课程设计学时2周
指导教师
金陵科技学院教务处制
1.课程设计目的
本课程是为自动化专业本科生开设的专业课程设计课。
通过本课程的课程设计实践帮助学生巩固关于数据结构、算法、程序设计的基础知识。
通过本课程设计,学生可以初步掌握开发一个小型实用系统的基本方法,提高运用编程软件实现GUI程序设计的能力。
2.课程设计题目及要求
设计题目:
数学计算器的开发。
2.1课程设计的基本要求:
A.熟悉和掌握MATLAB程序设计方法。
B.掌握MATLABGUI程序设计。
2.2课程设计的内容
要求利用MATLABGUI设计实现一个图形用户界面的计算器程序,要求实现:
A.具有友好的用户图形界面。
实现十进制数的加、减、乘、除、乘方、取模等简单计算。
B.科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行。
C.能够保存上次历史计算的答案,先是答案存储器中得内容。
D.有清除键,能清除操作,并对不正确的表达式能指出其错误原因。
2.3题目分析
本题目通过MATLAB的gui程序设计较为简单,在gui设计中主要用到三种控件,显示框用到文本编辑框(edittext),说明框用到静态文本框(Statictext),数字以及运算等按钮用到命令按钮(pushbutton)。
然后在通过各个按钮的回调函数,实现简单的计算功能。
2.4掌握书写程序设计开发文档的能力
3.课程设计方法与步骤
首先用MATLABGUI功能,在绘制一个静态文本框和一个文本编辑框,以及33个命令按钮,调整好各控件大小、颜色,整体布局如图所示:
然后通过双击个按钮来改写其属性,在m文件中编写其回调函数,最后在运行调试。
4、具体设计
4.1各功能界面设计
GUI设计界面:
4.2各功能模块实现
算法设计:
A.数字键设计:
0—9以及小数点函数都一样,只是参数不同:
0:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','0');
else
textString=strcat(textString,'0');
set(handles.edit1,'String',textString)
end
jj=0;
1:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','1');
else
textString=strcat(textString,'1');
set(handles.edit1,'String',textString)
end
jj=0;
2:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','2');
else
textString=strcat(textString,'2');
set(handles.edit1,'String',textString)
end
jj=0;
3:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','3');
else
textString=strcat(textString,'3');
set(handles.edit1,'String',textString)
end
jj=0;
4:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','4');
else
textString=strcat(textString,'4');
set(handles.edit1,'String',textString)
end
jj=0;
5:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','5');
else
textString=strcat(textString,'5');
set(handles.edit1,'String',textString)
end
jj=0;
6:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','6');
else
textString=strcat(textString,'6');
set(handles.edit1,'String',textString)
end
jj=0;
7:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','7');
else
textString=strcat(textString,'7');
set(handles.edit1,'String',textString)
end
jj=0;
8:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','8');
else
textString=strcat(textString,'8');
set(handles.edit1,'String',textString)
end
jj=0;
9:
globaljj
textString=get(handles.edit1,'String');
if(strcmp(textString,'0')==1)&(jj==0)|(jj==1)
set(handles.edit1,'String','9');
else
textString=strcat(textString,'9');
set(handles.edit1,'String',textString)
end
jj=0;
B.四则运算函数:
+:
globaljj
a=get(handles.edit1,'String')
if(jj==2)
s1=a
else
s1=strcat(a,'+')
set(handles.edit1,'String',s1)
end
jj=2
-:
globaljj
a=get(handles.edit1,'String')
if(jj==2)
s1=a
else
s1=strcat(a,'-')
set(handles.edit1,'String',s1)
end
jj=2
*:
globaljj
a=get(handles.edit1,'String')
if(jj==2)
s1=a
else
s1=strcat(a,'*')
set(handles.edit1,'String',s1)
end
jj=2
/:
globaljj
a=get(handles.edit1,'String')
if(jj==2)
s1=a
else
s1=strcat(a,'/')
set(handles.edit1,'String',s1)
end
jj=2
=:
globaljj
globalx
a=get(handles.edit1,'String')
b=eval(a)
if(x==1)&(b==inf)
set(handles.edit1,'String','NaN')
else
set(handles.edit1,'String',num2str(b))
end
jj=1
x=0
C.科学计算函数:
Sin函数
globaljj
a=get(handles.edit1,'String')
b=eval(a)/180*pi
c=sin(b)
set(handles.edit1,'String',num2str(c))
jj=1
Cos函数
globaljj
a=get(handles.edit1,'String')
b=eval(a)/180*pi
c=cos(b)
set(handles.edit1,'String',num2str(c))
jj=1
Tan函数
globaljj
a=get(handles.edit1,'String')
d=eval(a)
if(d==90)
set(handles.edit1,'String','error')
else
b=d/180*pi;
c=tan(b);
set(handles.edit1,'String',num2str(c));
end
jj=1
Cot函数
globaljj
a=get(handles.edit1,'String')
b=eval(a)/180*pi
c=cot(b)
set(handles.edit1,'String',num2str(c))
jj=1
Arcsin函数
globaljj
a=get(handles.edit1,'String')
b=eval(a)
c=asin(b)*180/pi
set(handles.edit1,'String',num2str(c))
jj=1
Arccos函数
globaljj
a=get(handles.edit1,'String')
b=eval(a)
c=acos(b)*180/pi
set(handles.edit1,'String',num2str(c))
jj=1
Arctan函数
globaljj
a=get(handles.edit1,'String')
b=eval(a)
c=atan(b)*180/pi
se