版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上课 程 论 文论文题目: 基于GUI的科学计算器设计 学 院: 学生姓名: 张00 学 号: 专业年级: 0 课程名称: 工具软件 完成时间: 成 绩: 教师签字: 专心-专注-专业基于GUI的科学计算器设计摘要:随着信息技术的发展,数据变得越来越繁杂,所以计算器在我们日常生活学习中扮演越来越重要角色。本文基于MATLAB设计的GUI科学计算器,改进了以前功能较少的计算器,添加了平方求和、方差、均值、反三角函数、等常用数学运算。此科学计算器具有实用性强、功能强大、易操作、移植性好、占用资源少、执行效率高等优点。关键字:MTALAB; GUI; 科学计算器1.引言随着计
2、算机科学和技术的发展,“计算的可视化”已成为科学计算的重要组成部分。与此同时数值计算软件的发展与成熟, 在强调数值计算方法的原理、思想和基本理论的同时, 适当淡化了算法的细节和繁杂的理论证明,并在一个通用的软件平台上开展。MATLAB 以强大的科学计算与可视化功能、简单易用、开放式可扩展环境,成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。MATLAB 的附带功能图形用户界面(GUI)更具有友好性、直观性、易懂性的优点而被广泛应用。本文根据人们需要方便快捷,通俗易懂的原则,设计了一个科学计算器的图像用户界面,在GUI上实现了加减乘除、三角函数、反三角函数、进制转化、逻辑与或非
3、运算、求和运算、求解方差和均值等常见基本数学运算功能。2.设计过程Matlab的程序设计较为简便,首先建立一个GUI工程,然后用可视化界面,设计出科学计算器的大致外观,为每一个按键设置预计的功能,然后就是将对应的函数写到框架生成的程序中,然后每个按键就可以实现对应的功能。GUI设计的概括流程图:建立边框和显示文本输入的编辑框(设定默认值)建立输出窗口建立响应按钮建立退出按钮建立GUI窗口(用句柄语言控制) 设计的GUI界面如下图所示:.总结及心得体会本文是借助Matlab设计的GUI来实现科学计算器的众多功能,实现过程较为简单。首先建立一个GUI工程,然后用可视化界面,设计出计算器的大致外观,
4、为每一个按键设置预计的功能,然后就是将对应的函数写到框架生成的程序中,然后每个按键就可以实现对应的功能。在设计的过程中还是遇到很多的困难的,首先就是程序的问题,搭建出计算器的外观以后,生成的框架程序是一个看似非常杂乱的程序,每个按键对应什么功能根本看不出来,于是我在原来的工程中修改了每一个按键的名称。编程的过程中,主要就是对全局变量和句柄的控制,对相应的值赋值以后,要返回给主程序,然后就可以在static text中显示出来的。句柄是一个很重要的概念,基本所有的操作都是通过句柄实现的,MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。句柄是图形
5、对象的唯一标识符,不同对象的句柄不可能重复和混淆。例如:set(句柄,属性名1,属性值1,属性名2,属性值2,),基本所有关联到图形操作的函数语句都是这样的格式:函数名(句柄,进行的操作),因此句柄是一个图形的名称,是对图形进行操作的媒介。本文设计的科学计算器具有实用性强、功能强大、易操作、移植性好、占用资源少、执行效率高等优点。但是,也存在不足的方面;(1)可视化界面没有达到最佳效果;(2)对于方差的求解只能求解数组类,不具连续性。以后还需要进一步完善和改进。通过这次Matlab的GUI实验设计,使我对matlab的操作与GUI界面设计有了更深一步的理解和认识,学习到了以前未曾了解的知识,使
6、我受益良多,收获颇丰。最后,感谢冯老师这学期的授课,在此说声:谢谢!.参考文献【1】 常巍,谢光军,黄朝峰.MATLABR2007基础与提高.北京:电子工业出版社 2007.9【2】 刘卫国.MATLAB程序设计与应用第2版.北京:高等教育出版社,2006.7【3】 张德喜等.MATLAB程序设计与教程.北京:中国铁道出版社,2006.6【4】 韩旭里,万中,刘金山.数值分析与实验.北京:科学出版社,2006【5】 董氏虹,高志,余啸海. Matlab,工具箱原理与应用.北京:国防工业出版社,2004.【6】 秦襄培.matlab图像处理与界而编程宝典M.北京:电子工业出版社,2009.【7】
7、 郑斌祥,席裕庚,杜秀花.Matlab曲线绘制J.自动化学报,2004, 41(1):41-43.【8】 范明,孟小峰.Matlabd的GUI设计M.北京:机械工业出版社,2001.【9】 史东辉,蔡庆牛,倪志伟等.基于GUI的图像绘制方法J.计算机研究与发展,2000,37(9) : 1094-1100.附 录科学计算器GUI设计的源代码:function varargout = jisuanqi4(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton
8、', gui_Singleton, . 'gui_OpeningFcn', jisuanqi4_OpeningFcn, . 'gui_OutputFcn', jisuanqi4_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_
9、mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before jisuanqi4 is made visible.function jisuanqi4_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;javaFrame = get(hObject,'JavaFrame');
10、javaFrame.setFigureIcon(javax.swing.ImageIcon('icon1.jpg');global opop=zeros(1,7);handles.exp=' 'guidata(hObject, handles);function varargout = jisuanqi4_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;% - Executes on button press in num7.function num7_Callback(hOb
11、ject, eventdata, handles)global opm='7'n=m '.'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 if (a(1)&&(a(2) set(handles.xianshi,'string',n) else set(handles.xianshi,'string',m) endelseif (a(1)&&(a(2) %计算状态%十进制 if length(str)<20 %数的长度小于
12、20 if a(6) %小数 set(handles.xianshi,'string',str m) else %整数 set(handles.xianshi,'string',str(1:end-1) n) end endelseif length(str)<20 set(handles.xianshi,'string',str m)enda(3 5)=0 1;op=a;function num8_Callback(hObject, eventdata, handles)global opm='8'n=m '.
13、39;a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 if (a(1)&&(a(2) set(handles.xianshi,'string',n) else set(handles.xianshi,'string',m) endelseif (a(1)&&(a(2) %计算状态%十进制 if length(str)<20 %数的长度小于20 if a(6) %小数 set(handles.xianshi,'string',str m)
14、else %整数 set(handles.xianshi,'string',str(1:end-1) n) end endelseif length(str)<20 %计算状态、其他进制、长度小于20 set(handles.xianshi,'string',str m)enda(3 5)=0 1;op=a;function num9_Callback(hObject, eventdata, handles)global opm='9'n=m '.'a=op;str=get(handles.xianshi,'stri
15、ng');if a(5)%初始状态 if (a(1)&&(a(2) set(handles.xianshi,'string',n) else set(handles.xianshi,'string',m) endelseif (a(1)&&(a(2) %计算状态%十进制 if length(str)<20 %数的长度小于20 if a(6) %小数 set(handles.xianshi,'string',str m) else %整数 set(handles.xianshi,'string&
16、#39;,str(1:end-1) n) end endelseif length(str)<20 %计算状态、其他进制、长度小于20 set(handles.xianshi,'string',str m)enda(3 5)=0 1;op=a;function num4_Callback(hObject, eventdata, handles)global opm='4'n=m '.'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 if (a(1)&&(
17、a(2) set(handles.xianshi,'string',n) else set(handles.xianshi,'string',m) endelseif (a(1)&&(a(2) %计算状态%十进制 if length(str)<20 %数的长度小于20 if a(6) %小数 set(handles.xianshi,'string',str m) else %整数 set(handles.xianshi,'string',str(1:end-1) n) end endelseif length
18、(str)<20 set(handles.xianshi,'string',str m)enda(3 5)=0 1;op=a;function num5_Callback(hObject, eventdata, handles)global opm='5'n=m '.'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 if (a(1)&&(a(2) set(handles.xianshi,'string',n) else set(handl
19、es.xianshi,'string',m) endelseif (a(1)&&(a(2) %计算状态%十进制 if length(str)<20 %数的长度小于20 if a(6) %小数 set(handles.xianshi,'string',str m) else %整数 set(handles.xianshi,'string',str(1:end-1) n) end endelseif length(str)<20 set(handles.xianshi,'string',str m)enda
20、(3 5)=0 1;op=a;function num6_Callback(hObject, eventdata, handles)global opm='6'n=m '.'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 if (a(1)&&(a(2) set(handles.xianshi,'string',n) else set(handles.xianshi,'string',m) endelseif (a(1)&&(a(
21、2) %计算状态%十进制 if length(str)<20 %数的长度小于20 if a(6) %小数 set(handles.xianshi,'string',str m) else %整数 set(handles.xianshi,'string',str(1:end-1) n) end endelseif length(str)<20 set(handles.xianshi,'string',str m)enda(3 5)=0 1;op=a;function num2_Callback(hObject, eventdata, h
22、andles)global opm='2'n=m '.'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 if (a(1)&&(a(2) set(handles.xianshi,'string',n) else set(handles.xianshi,'string',m) endelseif (a(1)&&(a(2) %计算状态%十进制 if length(str)<20 %数的长度小于20 if a(6) %小数 set
23、(handles.xianshi,'string',str m) else %整数 set(handles.xianshi,'string',str(1:end-1) n) end endelseif length(str)<20 set(handles.xianshi,'string',str m)enda(3 5)=0 1;op=a;function num3_Callback(hObject, eventdata, handles)global opm='3'n=m '.'a=op;str=get(ha
24、ndles.xianshi,'string');if a(5)%初始状态 if (a(1)&&(a(2) set(handles.xianshi,'string',n) else set(handles.xianshi,'string',m) endelseif (a(1)&&(a(2) %计算状态%十进制 if length(str)<20 %数的长度小于20 if a(6) %小数 set(handles.xianshi,'string',str m) else %整数 set(handl
25、es.xianshi,'string',str(1:end-1) n) end endelseif length(str)<20 set(handles.xianshi,'string',str m)enda(3 5)=0 1;op=a;function num0_Callback(hObject, eventdata, handles)global opm='0'n=m '.'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 if (a(1)&&
26、amp;(a(2) set(handles.xianshi,'string',n) else set(handles.xianshi,'string',m) endelseif (a(1)&&(a(2) %计算状态%十进制 if length(str)<20 %数的长度小于20 if a(6) %小数 set(handles.xianshi,'string',str m) else %整数 set(handles.xianshi,'string',str(1:end-1) n) end endelseif l
27、ength(str)<20 set(handles.xianshi,'string',str m)enda(3 5)=0 1;op=a;function num1_Callback(hObject, eventdata, handles)global opm='1'n=m '.'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 if (a(1)&&(a(2) set(handles.xianshi,'string',n) else set(
28、handles.xianshi,'string',m) endelseif (a(1)&&(a(2) %计算状态%十进制 if length(str)<20 %数的长度小于20 if a(6) %小数 set(handles.xianshi,'string',str m) else %整数 set(handles.xianshi,'string',str(1:end-1) n) end endelseif length(str)<20 set(handles.xianshi,'string',str m
29、)enda(3 5)=0 1;op=a;function num_fuhao_Callback(hObject, eventdata, handles)global opstr=get(handles.xianshi,'string');if strcmp(str(1),'-') set(handles.xianshi,'string',str(2:end)elseif (op(1)&&(op(2) set(handles.xianshi,'string','-' str)endop(3)=0;fu
30、nction dot_Callback(hObject, eventdata, handles)global opif isequal(op(1 2 6),0 0 0) %十进制整数 op(6)=1;endop(5)=1;function numb_Callback(hObject, eventdata, handles)global opm='B'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 set(handles.xianshi,'string',m) a(5)=1;elseif le
31、ngth(str)<20 set(handles.xianshi,'string',str m)enda(3,6)=0 0;op=a;function add_Callback(hObject, eventdata, handles)global opa=op;b=get(handles.xianshi,'string');num=str2val(b,a);exp=handles.exp;if a(3) exp(end)='+'else exp=exp num2str(num) '+'enda(3 5 7)=1 0 0;op
32、=a;handles.exp=exp;guidata(hObject,handles);function equal_Callback(hObject, eventdata, handles)global opa=op;b=get(handles.xianshi,'string');num=str2val(b,a);exp=handles.exp;if a(7) if a(3) exp(end)='' else exp=exp sprintf('(%g)',num); endelse exp=exp sprintf('%g)',f
33、loor(num); a(7)=0;endtry res=eval(exp);catch if isequal(a(1 2),0 0) set(handles.xianshi,'string','0.') else set(handles.xianshi,'string','0') end a(5)=0; handles.exp=' ' guidata(hObject,handles) returnendc=val2str(res,a);a(5)=0;op=a;handles.exp=' 'set(
34、handles.xianshi,'string',c)guidata(hObject,handles) function num=str2val(b,a)if isequal(a(1 2),0 1) num=bin2dec(b);elseif isequal(a(1 2),1 1) num=hex2dec(b);elseif isequal(a(1 2),1 0) num=oct2dec(eval(b);else num=str2num(b);endfunction c=val2str(b,a)if isequal(a(1 2),0 0) c=sprintf('%g
35、39;,b); if isempty(find(c='.') c=c '.' endelseif isequal(a(1 2),0 1) c=dec2bin(abs(b);elseif isequal(a(1 2),1 1) c=dec2hex(abs(b);else i=1; while res>7 d(i)=rem(abs(b),8); i=i+1; res=floor(abs(b)/8); end d(i)=res; c=sprintf('%d',fliplr(d);endfunction xy_Callback(hObject, e
36、ventdata, handles)global opa=op;if isequal(a(1 2),0 0) returnenda(5 6)=0 1;b=get(handles.xianshi,'string');num=str2val(b,a);exp=handles.exp;if a(4) if a(3) exp(end)='' else a(3)=1; exp=exp num2str(num) '' endelse a(4)=0; set(handles.secndf,'visible','off') set
37、(handles.radiobutton1,'enable','on') set(handles.radiobutton2,'enable','on') set(handles.radiobutton3,'enable','on') if a(3) exp(end)='(-1)' else a(3)=1; exp=exp num2str(num) '(-1)' endenda(5)=0;op=a;handles.exp=exp;guidata(hObject,hand
38、les) function minus_Callback(hObject, eventdata, handles)global opa=op;b=get(handles.xianshi,'string');num=str2val(b,a);exp=handles.exp;if a(3) exp(end)='-'else a(3)=1; exp=exp num2str(num) '-'enda(3 5 7)=1 0 0;op=a;handles.exp=exp;guidata(hObject,handles);function multiply_C
39、allback(hObject, eventdata, handles)global opa=op;b=get(handles.xianshi,'string');num=str2val(b,a);exp=handles.exp;if a(3) exp(end)='*'else exp=exp num2str(num) '*'enda(3 5 7)=1 0 0;op=a;handles.exp=exp;guidata(hObject,handles);function divide_Callback(hObject, eventdata, han
40、dles)global opa=op;b=get(handles.xianshi,'string');num=str2val(b,a);exp=handles.exp;if a(3) exp(end)='/'else exp=exp num2str(num) '/'enda(3 5 7)=1 0 0;op=a;handles.exp=exp;guidata(hObject,handles);function numa_Callback(hObject, eventdata, handles)global opm='A'a=op;s
41、tr=get(handles.xianshi,'string');if a(5)%初始状态 set(handles.xianshi,'string',m) a(5)=1;elseif length(str)<20 set(handles.xianshi,'string',str m)enda(3,6)=0 0;op=a;function numc_Callback(hObject, eventdata, handles)global opm='C'a=op;str=get(handles.xianshi,'strin
42、g');if a(5)%初始状态 set(handles.xianshi,'string',m) a(5)=1;elseif length(str)<20 set(handles.xianshi,'string',str m)enda(3,6)=0 0;op=a;function numd_Callback(hObject, eventdata, handles)global opm='D'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 set(handles.
43、xianshi,'string',m) a(5)=1;elseif length(str)<20 set(handles.xianshi,'string',str m)enda(3,6)=0 0;op=a;function nume_Callback(hObject, eventdata, handles)global opm='E'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 set(handles.xianshi,'string',m) a(5)=
44、1;elseif length(str)<20 set(handles.xianshi,'string',str m)enda(3,6)=0 0;op=a;function numf_Callback(hObject, eventdata, handles)global opm='F'a=op;str=get(handles.xianshi,'string');if a(5)%初始状态 set(handles.xianshi,'string',m) a(5)=1;elseif length(str)<20 set(ha
45、ndles.xianshi,'string',str m)enda(3,6)=0 0;op=a;function pi_val_Callback(hObject, eventdata, handles)set(handles.xianshi,'string','3.')% - Executes on button press in lgx.function lgx_Callback(hObject, eventdata, handles)global opa=op;if isequal(a(1 2),0 0) returnenda(5 6)=0
46、1;handles.exp=' 'str=get(handles.xianshi,'string');if a(4) try format short res=eval(sprintf('log10(%s)',str); set(handles.xianshi,'string',num2str(res,'%7.3f') catch a(5)=0; set(handles.xianshi,'string','运算错误!') endelse a(4)=0; set(handles.sec
47、ndf,'visible','off') set(handles.radiobutton1,'enable','on') set(handles.radiobutton2,'enable','on') set(handles.radiobutton3,'enable','on') try format short res=eval(sprintf('10(%s)',str); set(handles.xianshi,'string',n
48、um2str(res,'%7.3f') catch a(5)=0; set(handles.xianshi,'string','运算错误!') endendop=a;guidata(hObject,handles) function lnx_Callback(hObject, eventdata, handles)global opa=op;if isequal(a(1 2),0 0) returnenda(5 6)=0 1;handles.exp=' 'str=get(handles.xianshi,'string
49、9;);if a(4) try format short res=eval(sprintf('log(%s)',str); set(handles.xianshi,'string',num2str(res,'%7.3f') catch a(5)=0; set(handles.xianshi,'string','运算错误!') endelse a(4)=0; set(handles.secndf,'visible','off') set(handles.radiobutton1,
50、9;enable','on') set(handles.radiobutton2,'enable','on') set(handles.radiobutton3,'enable','on') try format short res=eval(sprintf('exp(%s)',str); set(handles.xianshi,'string',num2str(res,'%7.3f') catch a(5)=0; set(handles.xianshi,
51、39;string','运算错误!') endendop=a;guidata(hObject,handles) function log2x_Callback(hObject, eventdata, handles)global opa=op;if isequal(a(1 2),0 0) returnenda(5 6)=0 1;handles.exp=' 'str=get(handles.xianshi,'string');if a(4) try format short res=eval(sprintf('log2(%s)
52、9;,str); set(handles.xianshi,'string',num2str(res,'%7.3f') catch a(5)=0; set(handles.xianshi,'string','运算错误!') endelse a(4)=0; set(handles.secndf,'visible','off') set(handles.radiobutton1,'enable','on') set(handles.radiobutton2,'ena
53、ble','on') set(handles.radiobutton3,'enable','on') try format short res=eval(sprintf('2(%s)(%s)',str); set(handles.xianshi,'string',num2str(res,'%7.3f') catch a(5)=0; set(handles.xianshi,'string','运算错误!') endendop=a;guidata(hObject,
54、handles) function onc_Callback(hObject, eventdata, handles)global op set(handles.secndf,'visible','off','string','2ndF')set(handles.radiobutton1,'enable','on')set(handles.radiobutton2,'enable','on')set(handles.radiobutton3,'enable','on')if isequal(op(1 2),0 0) set(handles.xianshi,'string','0.')else set(handles.xianshi,'string','0')endop(3:7)=0;set(handles.secndf,'visible','off','st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉首大学《PLC原理与应用》2021-2022学年期末试卷
- 《机床电气控制与PLC》期末试卷-A卷及答案
- 吉林艺术学院《戏曲采风》2021-2022学年第一学期期末试卷
- 吉林艺术学院《流行音乐史Ⅰ》2021-2022学年第一学期期末试卷
- 2024年供应商招商协议书模板
- 农村木地板转让协议书范文范本
- 吉林师范大学《影视特效合成艺术》2021-2022学年第一学期期末试卷
- 2022年黑龙江省公务员录用考试《行测》真题及答案解析
- 吉林艺术学院《建筑速写》2021-2022学年第一学期期末试卷
- 2024年大白涂料购买合同范本
- 《小巴掌童话》整本书阅读指导杨老师
- 破产管理人工作履职报告
- 第一次工地会议内容与议程
- 《低压断路器》PPT课件.ppt
- 苹果和牛顿的故事.ppt
- 肠套叠实用教案
- 收益法酒店评估(共51页).doc
- 胜利油田钻完井液技术现状及发展趋势钻井院
- 【实用版】一年级上册一年级语文期中复习ppt课件
- 非物质文化遗产对经济发展的影响
- 属鼠的人住几楼最吉利_属猪的人适合住几楼
评论
0/150
提交评论