当前位置:文档之家› matlab计算器设计

matlab计算器设计

matlab计算器设计
matlab计算器设计

题目数学计算器的开发

课程名称软件设计

院部名称机电工程学院

专业自动化

班级

学生姓名

学号

课程设计地点

课程设计学时

指导教师

金陵科技学院教务处制

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

本课程是为自动化专业本科生开设的专业课程设计课。通过本课程的课程设计实践帮助学生巩固关于数据结构、算法、程序设计的基础知识。通过本课程设计,学生可以初步掌握开发一个小型实用系统的基本方法,提高运用编程软件实现GUI程序设计的能力。

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

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

A. 具有友好的用户图形界面。实现十进制数的加、减、乘、除、乘方、取模等简单计算。(必做)

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

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

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

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

清除独立存储器中的内容。(选做)

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

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

三、课题设计内容与步骤

各功能界面设计

GUI设计界面:

各功能模块实现

算法设计:

A. 数字键设计:0—9以及小数点函数都一样,只是参数不同:

textString = get,'String');

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

set,'String','1') ;

else

textString =strcat(textString,'1');

set,'String',textString)

end

B. 四则运算函数:

textString = get,'String');

ss=char(textString);

l=length(textString);

if(ss(l)=='+'||ss(l)=='-'||ss(l)=='*'||ss(l)=='/'||ss(l)=='.')

textString=ss(1:l-1);

end

textString =strcat(textString,'+');

set,'String',textString)

C. 科学计算函数:

textString = get,'String');

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

a=sin(a);

set,'String',a)

D. 退格键:通过取屏幕值,计算出其字符长度,然后取其前N-1项的值来实现退格:textString = get,'String');

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

set,'String','0') ;

else

ss=char(textString);

l=length(textString);

textString=ss(1:l-1);

set,'String',textString)

E. 清屏键函数:

set,'String','0') ;

F. +/-的实现

textString = get,'String');

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

set,'String','0') ;

else

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

a=0-a;

set,'String',a)

end

各模块实现结果

A.数字键:

B. 四则运算函数:

C. 科学计算函数:

Sin1的计算结果=

、结果分析

计算(1+9)/5

计算结果=2

计算3*4

计算结果=12

arcsin1计算结果

log

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

进行报错,结果如下:

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

四、课程设计源代码

A.数字键设计:

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

textString = get,'String');

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

set,'String','0') ;

else

textString =strcat(textString,'0');

set,'String',textString)

end

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

textString = get,'String');

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

set,'String','1') ;

else

textString =strcat(textString,'1');

set,'String',textString)

end

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

textString = get,'String');

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

set,'String','2') ;

else

textString =strcat(textString,'2');

set,'String',textString)

End

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

textString = get,'String');

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

set,'String','3') ;

else

textString =strcat(textString,'3');

set,'String',textString)

end

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

textString = get,'String');

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

set,'String','4') ;

else

textString =strcat(textString,'4');

set,'String',textString)

end

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

textString = get,'String');

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

set,'String','5') ;

else

textString =strcat(textString,'5');

set,'String',textString)

end

按键“6”:通过get函数获得输入的字符,函数strcat获得字符'6',并用set函数进

行显示输出

textString = get,'String');

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

set,'String','6') ;

else

textString =strcat(textString,'6');

set,'String',textString)

end

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

textString = get,'String');

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

set,'String','7') ;

else

textString =strcat(textString,'7');

set,'String',textString)

end

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

textString = get,'String');

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

set,'String','8') ;

else

textString =strcat(textString,'8');

set,'String',textString)

end

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

textString = get,'String');

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

set,'String','9') ;

else

textString =strcat(textString,'9');

set,'String',textString)

end

B.四则运算函数:

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

textString = get,'String');

ss=char(textString);

l=length(textString);

if(ss(l)=='+'||ss(l)=='-'||ss(l)=='*'||ss(l)=='/'||ss(l)=='.')

textString=ss(1:l-1);

end

textString =strcat(textString,'+');

set,'String',textString)

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

textString = get,'String');

ss=char(textString);

l=length(textString);

if(ss(l)=='+'||ss(l)=='-'||ss(l)=='*'||ss(l)=='/'||ss(l)=='.')

textString=ss(1:l-1);

end

textString =strcat(textString,'-');

set,'String',textString)

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

textString = get,'String');

ss=char(textString);

l=length(textString);

if(ss(l)=='+'||ss(l)=='-'||ss(l)=='*'||ss(l)=='/'||ss(l)=='.')

textString=ss(1:l-1);

end

textString =strcat(textString,'*');

set,'String',textString)

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

textString = get,'String');

ss=char(textString);

l=length(textString);

if(ss(l)=='+'||ss(l)=='-'||ss(l)=='*'||ss(l)=='/'||ss(l)=='.')

textString=ss(1:l-1);

end

textString =strcat(textString,'/');

set,'String',textString)

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

textString = get,'String');

ss=char(textString);

l=length(textString);

if(ss(l)=='+'||ss(l)=='-'||ss(l)=='*'||ss(l)=='/'||ss(l)=='.')

textString=ss(1:l-1);

end

textString =strcat(textString,'.');

set,'String',textString)

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

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

set,'String','0') ;

else

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

a=0-a;

set,'String',a)

end

C.科学计算函数:

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

textString = get,'String');

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

a=sin(a);

set,'String',a)

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

textString = get,'String');

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

a=cos(a);

set,'String',a)

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

textString = get,'String');

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

set,'String','inf');

else

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

a=tan(a);

set,'String',a)

end

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

textString = get,'String');

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

||(strcmp(textString,'')==1));

set,'String','inf');

else

a=cot(a);

set,'String',a)

end

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

textString = get,'String');

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

a=arcsin(a);

set,'String',a)

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

textString = get,'String');

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

a=arccos(a);

set,'String',a)

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

textString = get,'String');

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

a=arctan(a);

set,'String',a)

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

textString = get,'String');

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

a=arccot(a);

set,'String',a)

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

textString = get,'String');

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

set,'String','error') ;

else

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

a=log2(a);

set,'String',a)

end

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

textString = get,'String');

set,'String','error') ;

else

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

a=sin(a);

set,'String',a)

end

按键“x^2”:通过get函数获得输入的字符,函数strread获得输入字符,并用语句a=a*a计算结果,set函数进行显示输出

textString = get,'String');

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

a=a*a;

set,'String',a)

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

textString = get,'String');

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

set,'String','0') ;

else

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

a=sqrt(a);

set,'String',a)

end

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

textString = get,'String');

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

set,'String','0') ;

else

ss=char(textString);

l=length(textString);

textString=ss(1:l-1);

set,'String',textString)

E. 清屏“C”键函数:将所有的字符置为'0'

set,'String','0') ;

F.“=”的实现:通过get函数获得输入的字符,并用eval函数计算结果,set函数

进行显示输出

a=get,'string')

b=eval(a)

set,'string',num2str(b))

四、问题和解决方法

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

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

set,'String','1') ;

那么问题就解决了.

五、心得体会

本次课程设计相对比较简单,主要是对一些数字,例如1-9的代码程序的了解以及一些简单运算比如‘+’‘-’‘*’‘/’sin ,cos ,tan等等的代码程序的了解,在设计的过程中也遇到不少的问题,当遇到这些问题时,经过及时的与同学以及老师的交流,最终都能顺利地解决。这次课程设计,使我进一步加深了对课本知识的了解和掌握,巩固了所学的基本知识,让我在学习的过程中不断地提高自己,锻炼自己。

相关主题
文本预览
相关文档 最新文档