应用软件毕业课程设计报告13504228汪龙Word下载.docx
《应用软件毕业课程设计报告13504228汪龙Word下载.docx》由会员分享,可在线阅读,更多相关《应用软件毕业课程设计报告13504228汪龙Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
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
用途
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三角函数
cos
Cos三角函数
tan
tan三角函数
sqrt
开方
(
kuohu
kuojhu1
edit1
显示输入的数据
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{:
以上是matalb自带的初始化
functiona1_OpeningFcn()
varargout=a1_OutputFcn(a1_user_Callback(a1_user_CreateFcn(a1_code_Callback(a1_code_CreateFcn(a1_cancer_Callback(a1_ok_Callback(figure1_ResizeFcn(a1_code_KeyPressFcn(figure1_CreateFcn(varargout=calculator(varargin)
%我的计算器,重要运用了文本框和按钮。
__
@calculator_OpeningFcn,...
@calculator_OutputFcn,...
functioncalculator_OpeningFcn()
arereturnedtothecommandline.
functionvarargout=calculator_OutputFcn(buttonpressinpushbutton1.
functionpushbutton1_Callback(buttonpressinpushbutton2.
functionpushbutton2_Callback(buttonpressinpushbutton3.
functionpushbutton3_Callback(buttonpressinpushbutton4.
functionpushbutton4_Callback(buttonpressinpushbutton5.
functionpushbutton5_Callback(buttonpressinpushbutton6.
functionpushbutton6_Callback(buttonpressinpushbutton7.
functionpushbutton7_Callback(buttonpressinpushbutton8.
functionpushbutton8_Callback(buttonpressinpushbutton9.
functionpushbutton9_Callback(buttonpressinpushbutton10.
functionpushbutton10_Callback(edit1_Callback(afutureversionofMATLAB
%,aftersettingallproperties.
functionedit1_CreateFcn(afutureversionofMATLAB
%Windows.
%SeeISPCandCOMPUTER.
ifispc
set(edit2_Callback(afutureversionofMATLAB
functionedit2_CreateFcn(afutureversionofMATLAB
set(add_Callback(buttonpressinplus.
functionplus_Callback(buttonpressinchen.
functionchen_Callback(buttonpressinchu.
functionchu_Callback(buttonpressintuichu.
functiontuichu_Callback(guining_Callback(xiao_Callback(=[1:
1000];
%每个数字1000个采样点表示
d0=1+sin(17*n);
%对应行频列频叠加
wavplay(d0,8192);
%产生拨号音
%连接当前的字符串和1,如果按了1键的话。
result_Callback(buttonpressindele.
functiondele_Callback(afutureversionofMATLAB
%menu1_Callback(afutureversionofMATLAB
functionfigure1_CreateFcn(afutureversionofMATLAB
functionuipanel2_CreateFcn(afutureversionofMATLAB
%buttonpressinsin.
functionsin_Callback((seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%buttonpressincos.
functioncos_Callback(afutureversionofMATLAB
%buttonpressintan.
functiontan_Callback((seeGCBO)
%buttonpressinsqrt.
functionsqrt_Callback(afutureversionofMATLAB
%buttonpressinkuohu.
functionkuohu_Callback(afutureversionofMATLAB
%buttonpressinkuohu1.
functionkuohu1_Callback(afutureversionofMATLAB
%buttonpressinpi.
functionpi_Callback(afutureversionofMATLAB
%buttonpressinjiaoduhuachenghudu.
functionjiaoduhuachenghudu_Callback(afutureversionofMATLAB
%(96)的时候没改语句之前,当输入‘)’出现了‘sin)’将前面的字符覆盖后来经过尝试将‘(’的callback改为handles.current_str=strcat(handles.current_str,'
('
);
guidata(hObject,handles);
解决了这个问题。
(4)兼容性问题:
1.在64位机上运行出来的程序在32位机上运行不了不兼容,然后我在自己电脑上做的64位机器的,又去计算机中心做的xp32位机的2.win7生成的文件xp机器不能运行,自己做了两份一份是win764位的,一份是xp32位,win732位的没有做,因为没有找到合适的电脑:
生成可执行文件必须安装matalb和相兼容的vc,而且很多人安装的vc都是精简版的没有comomn这个文件,不能生成可执行文件,因此没有win732位的
8.使用说明
调试运行:
在没有安装matlab的机器上安装必须将生成的exe文件以及原文件还有相对应的“MCRinstaller.exe“文件拷到相同的文件夹进行运行例如:
以xp系统为例:
首先将xp32位拷到某一位置,先点击运行MCRinstaller.exe,完成以后在运行a1.exe即可使用我所做的计算器
第一步:
点击运行MCRinstaller.exe出现以下界面
点击next,让安装程序运行完
第二步点击运行a1.exe文件出现以下界面
大概十多秒钟出现登陆界面
用户名:
汪龙
密码:
0942
之后进入计算器界面进行一些运算如下图:
计算器计算说明:
1.三角函数.开方函数使用时必须加括号
2.由于matalb在计算三角函数时只认弧度制所以计算时要将角度换成弧度在计算器中我加了‘角度°
’这个按钮进行实现
9.总结
应用软件课程设计到此已告一段落,经过自己的努力,在将近一个多月的时间里自己慢慢摸索一天天积累终于完成了课程设计。
从中学到很多有用的知识,也积累了不少宝贵的经验。
从一开始的陌生,在不断的翻阅书籍学习中开始渐渐的有所了解,虽然在此次应用课程设计只是设计了一个计算器,但也体会到了matalbGUI的博大精深。
想精通GUI,今后还需多下功夫。
本次课程设计我完成了一个简易计算器应用软件,在此期间,遇上了不少的技术难题,但是经过努力,通过查找资料,难题还是一个个被解决了,自己很庆幸的是结合matlab语音合成的理论用matalb采集了自己声音的频谱,给每个按键结合自己声音的频谱赋予了声音,从中学到了许多课堂上没学到的东西,这是很值得高兴的。
经过设计的各个环节,从中学到了很多,锻炼了matlab编程能力,培养了自己的耐心。
这样对我以后在学习中得到很好的锻炼,
在本次应用软件设计期间对简易计算器的设计虽然大体实现各个控件的功能,但仍存在许多的不足与漏洞,例如当输入出错时不能报错等还待以后的不断学习进一步完善。