应用软件毕业课程设计报告13504228汪龙.docx
- 文档编号:28606926
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:31
- 大小:1.45MB
应用软件毕业课程设计报告13504228汪龙.docx
《应用软件毕业课程设计报告13504228汪龙.docx》由会员分享,可在线阅读,更多相关《应用软件毕业课程设计报告13504228汪龙.docx(31页珍藏版)》请在冰豆网上搜索。
应用软件毕业课程设计报告13504228汪龙
(此文档为word格式,下载后您可任意编辑修改!
)
应用软件课程设计报告
设计题目:
Matlab计算器
班级:
软件1011
姓名:
雷军
学号:
4
目录
1.设计目标……………………………………………………………
2.设计内容……………………………………………………………
3.设计思想……………………………………………………………
4.设计说明……………………………………………………………
5.设计步骤……………………………………………………………
6.程序主要代码………………………………………………………
7.难点分析……………………………………………………………
8.使用说明……………………………………………………………
9.总结…………………………………………………………………
计算器(Matlab)
1.设计目标
因为matlab具有强大的科学计算功能,相比较vb而言的它界面友好性不如vb,但他的计算功能优于vb,而且自己没学vb,但对matlab很感兴趣所以我选择了利用matlab做了一个简易的计算器,
2.设计内容
以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除,正弦,余弦等运算,以学习应用Matlab编写程序原理,加深对Matlab的学习及应用。
3.设计思想
基于Matlab中GUI界面的设计,通过运用文本框和按钮命令,编辑文本框和按钮的callback,OutputFcn,CreateFcn,ButtonDownFcn等属性去连接和调用matalb自带的函数去实现各种运算,而且又结合matlab语音合成理论对每个按钮赋予了不同的声音,最后应用matlab和vc混合编程基本理论去生成可执行文件进而可以独立于matlab环境独立运行。
4.设计说明
(1)包含的功能有:
加、减、乘、除运算,开方、三角函数等功能。
(2)计算器上数字0—9为一个控件数组使用相同的句式结构,加、减、乘、三角函数为一个控件数组使用相同的句式结构,小数点和括号‘(’使用了相同的语法结构。
其余的控件退格(DEL)、退出、归零(C)各使用了不同的语句
(3)其中包含了输入显示和结果显示
(4)计算功能基本上是用系统内部函数。
(5)“C”按钮可以清除所有已输入的数据从头计算,‘DEL’按钮可以清除上一次输入的数据,‘退出’按钮可以退出该计算器
(6)该计算器不仅能实现连加、连乘、连除,还可以实现混合运算
(7)值得自己高兴的是自己给计算器的每个按键加上了声音
5.设计步骤
(1)打开GUI界面如
(2)在生成的设计界面中加入控件,得到登陆应用界面和计算器界面。
如图:
(3)为控件编辑框编辑Tag(只是附带上了计算器的控件),如图:
按钮名称
Tag
用途
0
pushbutton10
按键0
1
Pushbutton1
按键1
2
Pushbutton2
按键2
3
Pushbutton3
按键3
4
Pushbutton4
按键4
5
Pushbutton5
按键5
6
Pushbutton6
按键6
7
Pushbutton7
按键7
8
pushbutton8
按键8
9
pushbutton9
按键9
.
xiao
按键.
+
add
加
-
plus
减或负号
×
chen
乘
/
chu
除
C
guining
清零
DEL
dele
删除
退出
tuichu
退出
=
result
等于
sin
sin
Sin三角函数
cos
cos
Cos三角函数
tan
tan
tan三角函数
sqrt
sqrt
开方
(
kuohu
)
kuojhu1
edit1
edit1
显示输入的数据
edit2
edit2
显示结果
π
pi
圆周率π
角度°
jiaoduhuanhudu
Matalb只认弧度,因此这功能是将输入的角度转化成弧度进行运算
(4)对每个控件和文本框进行程序编辑见6主要程序代码
(5)调试修改程序在此期间对程序和界面进行了多次修改调试才完成最终的计算器界面
(6)生成可执行文件:
下面以win7系统进行说明
1.要求:
电脑必须安装matalb和相兼容的vc
2.我安装的是matlab2011a和vs2011express这两者是相互兼容的
3.具体步骤:
(1)打开matlab在命令窗口输入mbuild-setup
(2)在输入mcc–m文件名.m就可生成可执行文件
生成了可执行文件a1.exe计算器
6.程序主要代码
登陆界面的程序
functionvarargout=a1(varargin)
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@a1_OpeningFcn,...
'gui_OutputFcn',@a1_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
以上是matalb自带的初始化
functiona1_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
set(handles.a1_code,'String','');
set(handles.a1_user,'String','');
handles.xinghao='';
handles.user='汪龙';
handles.code='0942';
guidata(hObject,handles);
以上是对figure1的初始定义:
用户名和密码
functionvarargout=a1_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
functiona1_user_Callback(hObject,eventdata,handles)
functiona1_user_CreateFcn(hObject,eventdata,handles)
ifispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
这是对用户名的初始化
functiona1_code_Callback(hObject,eventdata,handles)
functiona1_code_CreateFcn(hObject,eventdata,handles)
set(hObject,'UserData','');
set(hObject,'String','');
ifispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
这是对密码的初始化
functiona1_cancer_Callback(hObject,eventdata,handles)
set(handles.a1_code,'UserData','','string','');
close(gcf);
clear
clc
functiona1_ok_Callback(hObject,eventdata,handles)
passChar=get(handles.a1_code,'UserData');
userChar=get(handles.a1_user,'String');
ifstrcmp(passChar,handles.code)&strcmp(userChar,handles.user)
msgbox('登陆成功!
');
close(gcf);
close(a1);
figure(calculator);
set(gcf,'name','我的计算器汪龙--光电0942汪龙');
else
set(handles.a1_code,'string','','UserData','');
msgbox('用户名或密码错误!
');
end
functionfigure1_ResizeFcn(hObject,eventdata,handles)
functiona1_code_KeyPressFcn(hObject,eventdata,handles)
currChar=get(gcf,'CurrentCharacter');
oldChar=get(hObject,'UserData');
xinghao=get(hObject,'string');
userChar=get(handles.a1_user,'string');
if(currChar>='0'&currChar<='9')|(currChar>='a'&currChar<='z')...
|(currChar>='A'&currChar<='Z')
oldChar=[oldCharcurrChar];
xinghao=[handles.xinghao'*'];
set(hObject,'UserData',oldChar,'string',xinghao);
handles.xinghao=xinghao;
guidata(hObject,handles);
elseifdouble(currChar)==26|double(currChar)==8
oldChar='';
handles.xinghao='';
set(hObject,'UserData',oldChar,'string',handles.xinghao);
guidata(hObject,handles);
elseifdouble(currChar)==13
set(hObject,'string',xinghao);
ifstrcmp(oldChar,handles.code)&strcmp(userChar,handles.user)
msgbox('登陆成功!
');
close(gcf);
close(a1);
figure(lianxi02);
set(gcf,'name','我的计算器汪龙--光电0942汪龙');
else
set(hObject,'string','','UserData','');
handles.xinghao='';
guidata(hObject,handles);
msgbox('用户名或密码错误!
');
end
else
set(hObject,'UserData',oldChar);
set(hObject,'string',handles.xinghao);
end
functionfigure1_CreateFcn(hObject,eventdata,handles)
ha=axes('units','normalized','position',[0011]);
uistack(ha,'down')
II=imread('denglubeijing.jpg');
image(II)
colormapgray
set(ha,'handlevisibility','off','visible','off');
这是给figure1背景进行设计
计算器界面的程序
functionvarargout=calculator(varargin)
%我的计算器,重要运用了文本框和按钮。
__
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@calculator_OpeningFcn,...
'gui_OutputFcn',@calculator_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
functioncalculator_OpeningFcn(hObject,eventdata,handles,varargin)
handles.current_str='';%此为存储当前的字符串。
%Choosedefaultcommandlineoutputforcalculator
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakescalculatorwaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=calculator_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
%---Executesonbuttonpressinpushbutton1.
functionpushbutton1_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('1');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'1');
%在输出当前的字符串
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
%---Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('2');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'2');
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
%---Executesonbuttonpressinpushbutton3.
functionpushbutton3_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('3');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'3');
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
%---Executesonbuttonpressinpushbutton4.
functionpushbutton4_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('4');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'4');
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
%---Executesonbuttonpressinpushbutton5.
functionpushbutton5_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('5');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'5');
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
%---Executesonbuttonpressinpushbutton6.
functionpushbutton6_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('6');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'6');
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
%---Executesonbuttonpressinpushbutton7.
functionpushbutton7_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('7');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'7');
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
%---Executesonbuttonpressinpushbutton8.
functionpushbutton8_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('8');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'8');
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
%---Executesonbuttonpressinpushbutton9.
functionpushbutton9_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('9');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'9');
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
%---Executesonbuttonpressinpushbutton10.
functionpushbutton10_Callback(hObject,eventdata,handles)
[x1,fs,nbits]=wavread('0');
sound(x1,fs,nbits);
handles.current_str=strcat(handles.current_str,'0');
set(handles.edit1,'String',handles.current_str);
guidata(hObject,handles);
functionedit1_Callback(hObject,eventdata,handles)
%hObjecthandletoedit1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Hints:
get(hObject,'String')returnscontentsofedit1astext
%str2double(get(hObject,'String'))returnscontentsofedit1asadouble
%---Executesduringobjectcreation,aftersettingallproperties
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用软件 毕业 课程设计 报告 13504228 汪龙