matlab计算器设计.docx

上传人:b****7 文档编号:26128278 上传时间:2023-06-17 格式:DOCX 页数:23 大小:326.02KB
下载 相关 举报
matlab计算器设计.docx_第1页
第1页 / 共23页
matlab计算器设计.docx_第2页
第2页 / 共23页
matlab计算器设计.docx_第3页
第3页 / 共23页
matlab计算器设计.docx_第4页
第4页 / 共23页
matlab计算器设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

matlab计算器设计.docx

《matlab计算器设计.docx》由会员分享,可在线阅读,更多相关《matlab计算器设计.docx(23页珍藏版)》请在冰豆网上搜索。

matlab计算器设计.docx

matlab计算器设计

 

一、课程设计应达到的目的

本课程是为自动化专业本科生开设的专业课程设计课。

通过本课程的课程设计实践帮助学生巩固关于数据结构、算法、程序设计的基础知识。

通过本课程设计,学生可以初步掌握开发一个小型实用系统的基本方法,提高运用编程软件实现GUI程序设计的能力。

二、课程设计的基本要求:

要求利用MATLABGUI设计实现一个图形用户界面的计算器程序,要求实现:

A.具有友好的用户图形界面。

实现十进制数的加、减、乘、除、乘方、取模等简单计算。

(必做)

B.科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行。

(必做)

C.能够保存上次历史计算的答案,先是答案存储器中得内容。

(必做)

D.有清除键,能清除操作,并对不正确的表达式能指出其错误原因。

(必做)

E.独立存储器功能,使之可以直接输入存储器,可与存储器中的数值相加减。

能够清除独立存储器中的内容。

(选做)

利用MATLABGUI功能,在绘制一个静态文本框和一个文本编辑框,以及命令按钮,调整好各控件大小、颜色,整体布局如图所示:

然后通过双击个按钮来改写其属性,在m文件中编写其回调函数,最后在运行调试。

 

三、课题设计内容与步骤

3.1各功能界面设计

GUI设计界面:

 

3.2各功能模块实现

算法设计:

A.数字键设计:

0—9以及小数点函数都一样,只是参数不同:

globaljj

textString=get(handles.text1,'String');

if(strcmp(textString,'0.')==1)&(jj==0)

set(handles.edit1,'String','1');

else

textString=strcat(textString,'1');

set(handles.edit1,'String',textString)

end

jj=0;

B.四则运算函数:

textString=get(handles.edit1,'String');

textString=strcat(textString,'+');

set(handles.edit1,'String',textString)

C.科学计算函数:

textString=get(handles.edit1,'String');

if(strcmp(textString,'0.')==1)

set(handles.edit1,'String','0.');

else

a=strread(textString,'%f');

a=sin(a);

set(handles.edit1,'String',a)

end

 

D.退格键:

通过取屏幕值,计算出其字符长度,然后取其前N-1项的值来实现退格:

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0.')==1)&(jj==0)

set(handles.edit1,'String','0.');

else

ss=char(textString);

l=length(textString);

textString=ss(1:

l-1);

set(handles.edit1,'String',textString)

end

jj=0;

E.清屏键函数:

set(handles.edit1,'String','0.');

 

F.+/-的实现

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=0-a;

set(handles.edit1,'String',a)

end

3.3各模块实现结果

A.数字键:

 

B.四则运算函数:

 

C.科学计算函数:

Sin1的计算结果=

3.4、结果分析

计算(2+8)/5

计算结果=2

计算4*4

 

计算结果=16

arcsin1计算结果

的报错:

通过输入的数据与‘0’字符比较,若两者相等,则显示“error”

进行报错,结果如下:

 

√4计算结果:

经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。

四、课程设计源代码

A.数字键设计:

按键“0”:

通过get函数获得输入的字符,函数strcat获得字符'0',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','0');

else

textString=strcat(textString,'0');

set(handles.edit1,'String',textString)

end

jj=0;

按键“1”:

通过get函数获得输入的字符,函数strcat获得字符'1',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','1');

else

textString=strcat(textString,'1');

set(handles.edit1,'String',textString)

end

jj=0;

按键“2”:

通过get函数获得输入的字符,函数strcat获得字符'2',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','2');

else

textString=strcat(textString,'2');

set(handles.edit1,'String',textString)

end

jj=0;

按键“3”:

通过get函数获得输入的字符,函数strcat获得字符'3',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','3');

else

textString=strcat(textString,'3');

set(handles.edit1,'String',textString)

end

jj=0;

按键“4”:

通过get函数获得输入的字符,函数strcat获得字符'4',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','4');

else

textString=strcat(textString,'4');

set(handles.edit1,'String',textString)

end

jj=0;

按键“5”:

通过get函数获得输入的字符,函数strcat获得字符'5',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','5');

else

textString=strcat(textString,'5');

set(handles.edit1,'String',textString)

end

jj=0;

按键“6”:

通过get函数获得输入的字符,函数strcat获得字符'6',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','6');

else

textString=strcat(textString,'6');

set(handles.edit1,'String',textString)

end

jj=0;

按键“7”:

通过get函数获得输入的字符,函数strcat获得字符'7',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','7');

else

textString=strcat(textString,'7');

set(handles.edit1,'String',textString)

end

jj=0;

按键“8”:

通过get函数获得输入的字符,函数strcat获得字符'8',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','8');

else

textString=strcat(textString,'8');

set(handles.edit1,'String',textString)

end

jj=0;

按键“9”:

通过get函数获得输入的字符,函数strcat获得字符'9',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','9');

else

textString=strcat(textString,'9');

set(handles.edit1,'String',textString)

end

jj=0;

B.四则运算函数:

按键“+”:

通过get函数获得输入的字符,函数strcat获得字符'+',并用set函数进行显示输出

textString=get(handles.edit1,'String');

textString=strcat(textString,'+');

set(handles.edit1,'String',textString)

按键“-”:

通过get函数获得输入的字符,函数strcat获得字符'-',并用set函数进行显示输出

textString=get(handles.edit1,'String');

textString=strcat(textString,'-');

set(handles.edit1,'String',textString)

按键“*”:

通过get函数获得输入的字符,函数strcat获得字符'*',并用set函数进行显示输出

textString=get(handles.edit1,'String');

textString=strcat(textString,'*');

set(handles.edit1,'String',textString)

按键“/”:

通过get函数获得输入的字符,函数strcat获得字符'/',并用set函数进行显示输出

textString=get(handles.edit1,'String');

textString=strcat(textString,'/');

set(handles.edit1,'String',textString)

按键“.”:

通过get函数获得输入的字符,函数strcat获得字符'.',并用set函数进行显示输出

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0.');

jj=1;

else

textString=strcat(textString,'.');

set(handles.edit1,'String',textString)

end

按键“+/-”:

通过get函数获得输入的字符,函数strcat获得字符'+/-',并用set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=0-a;

set(handles.edit1,'String',a)

end

C.科学计算函数:

按键“sin”:

通过get函数获得输入的字符,函数strread获得输入字符,并用sin函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=sin(a);

set(handles.edit1,'String',a)

end

按键“cos”通过get函数获得输入的字符,函数strread获得输入字符,并用cos函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=cos(a);

set(handles.edit1,'String',a)

end

按键“tan”:

通过get函数获得输入的字符,函数strread获得输入字符,并用tan函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=tan(a);

set(handles.edit1,'String',a)

end

按键“cot”:

通过get函数获得输入的字符,函数strread获得输入字符,并用cot函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=cot(a);

set(handles.edit1,'String',a)

end

按键“arcsin”:

通过get函数获得输入的字符,函数strread获得输入字符,并用arcsin函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=asin(a);

set(handles.edit1,'String',a)

end

按键“arccos”:

通过get函数获得输入的字符,函数strread获得输入字符,并用arccos函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=acos(a);

set(handles.edit1,'String',a)

end

按键“arctan”:

通过get函数获得输入的字符,函数strread获得输入字符,并用arctan函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=atan(a);

set(handles.edit1,'String',a)

end

按键“arccot”:

通过get函数获得输入的字符,函数strread获得输入字符,并用arccot函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=acot(a);

set(handles.edit1,'String',a)

end

按键“log2”:

通过get函数获得输入的字符,函数strread获得输入字符,并用log2函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','error');

else

a=strread(textString,'%f');

a=log2(a);

set(handles.edit1,'String',a)

end

按键“log10”:

通过get函数获得输入的字符,函数strread获得输入字符,并用log10函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','error');

else

a=strread(textString,'%f');

a=log10(a);

set(handles.edit1,'String',a)

end

按键“x^2”:

通过get函数获得输入的字符,函数strread获得输入字符,并用语句a=a*a计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=a*a;

set(handles.edit1,'String',a)

end

按键“√”:

通过get函数获得输入的字符,函数strread获得输入字符,并用sqrt函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','0');

else

a=strread(textString,'%f');

a=sqrt(a);

set(handles.edit1,'String',a)

end

D.退格键:

通过取屏幕值,计算出其字符长度,然后取其前N-1项的值来实现退格:

globaljj

textString=get(handles.edit1,'String');

if(strcmp(textString,'0')==1)&(jj==0)

set(handles.edit1,'String','');

else

ss=char(textString);

l=length(textString);

textString=ss(1:

l-1);

set(handles.edit1,'String',textString)

end

jj=0;

E.清屏“C”键函数:

将所有的字符置为'0'

set(handles.edit1,'String','');

F.“=”的实现:

通过get函数获得输入的字符,并用eval函数计算结果,set函数进行显示输出

textString=get(handles.edit1,'string')

b=eval(textString)

set(handles.edit1,'string',num2str(b))

四、问题和解决方法

本次课程设计中遇到的最大问题是数据进行清零后,再输入其他的数据,清零后的字符‘0’仍会保留,会影响其他数据,解决办法是在要输入的数字比如‘1’的程序中加入判断程序:

if(strcmp(textString,'0')==1)

set(handles.edit1,'String','1');

那么问题就解决了.

原先程序细节有点问题,后来在调试的过程中,不断的去修改,在按清零的时候总是会出现“0.”,后来在在清

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1