%{
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Copyright (C) [2023] [HPC2H2]
%}
function Calculator
%% 全局变量
global GUI
% 计算器待运算的字符串
global strPendingEvaluation
% 上一次运算的结果
global previousCalculationResult
% 模式转换三状态
% displayPrecision 输出结果的时候用
% complexFormat 在输出值为复数的时候用
% angularUnit 极直互换的时候用
global displayPrecision complexFormat angularUnit
% 控制工程存储的用户输入
global upperG lowerG upperH lowerH parameterPID
% 画图类型选择
global plotLineOrFunctionChosed
%画折线图 数据与x的个数
global xDataLine yDataLine xCountLine
% 画函数图 表达式与坐标轴范围
global funcGraphExpression xLimFunc yLimFunc
% 积分
global intUpperLimit intLowerLimit intKindChosed
% 求导
global derivativedExpression
% 定位多状态过程运行节点
% 模式转换进行到哪步了 max:(3)
global modeChoosingState
% 控制工程进行到哪一步了 max:(7)
global controlSystemsimulatingState
% 画图到哪一步了 max:(4/3)
global plottingState
% 求根到哪一步了 max:(2)
global findRootState
% 积分和求导进行到哪一步了 max:(4/3,4)
global intState diffState
% 极坐标和直角坐标的互换进行到哪一步了 max:(2)
global polState recState
% 初始化全局变量
strPendingEvaluation = '0'; previousCalculationResult = '0';
modeChoosingState = 0;
displayPrecision = 1; complexFormat = 1; angularUnit = 1;
controlSystemsimulatingState = 0;
upperG = 1;lowerG = [1 10];upperH = 1;lowerH = 1;
parameterPID = [1 0 0];
plottingState = 0;
plotLineOrFunctionChosed = 2;% 画折线图
xDataLine = []; yDataLine = []; xCountLine = 0;
xLimFunc = []; yLimFunc = [];
findRootState = 0;
intState = 0;
intUpperLimit = inf; intLowerLimit = -inf;
intKindChosed = 1;% 定积分
diffState = 0;
derivativedExpression = '';
polState = 0; recState = 0;
%% 计算器figure界面参数
fhHeight = 1100;
fhWidth = 600;
fhLeft = 1200;
fhBottom = 90;
GUI.fh = figure('units','pixels',...
'position',[fhLeft fhBottom fhWidth fhHeight],...
'menubar','none',...
'name','Calculator','NumberTitle','off');
% 计算器布局: 按钮9行5列,显示屏占3行5列的距离
% 大多数(最小)按钮大小 宽*高 = 108*88
% 各相对距离
btnWidth = 0.18; % 按钮宽度
btnHeight = 0.08; % 按钮高度
btnHorDis = (1 - 5*btnWidth)/6; % 两个按钮之间的水平距离
btnVerDis = (1 - 12*btnHeight)/11; % 两个按钮之间的竖直距离
btnInitLeft = btnHorDis;% 按钮离左边框的基准距离
btnInitBottom = btnVerDis;% 按钮离底边框的基准距离
%% 按钮布局
% Position 按钮位置 [left bottom width height]
% 数字按键 digit组
GUI.button0 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft btnInitBottom btnWidth btnHeight], ...
'Style','pushbutton',...
'String','0', ...
'FontUnits','normalized', ...% 字体大小随窗口变化
'FontSize',0.5,...
'callback',{@processDigit,'0'},...
'UserData', 'digit');
GUI.button1 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft btnInitBottom ...
+ (btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','1', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'1'},...
'UserData', 'digit');
GUI.button2 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + (btnWidth + btnHorDis) btnInitBottom ...
+ (btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','2', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'2'},...
'UserData', 'digit');
GUI.button3 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + 2*(btnWidth + btnHorDis) btnInitBottom ...
+ (btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','3', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'3'},...
'UserData', 'digit');
GUI.button4 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft btnInitBottom ...
+ 2*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','4', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'4'},...
'UserData', 'digit');
GUI.button5 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + (btnWidth + btnHorDis) btnInitBottom ...
+ 2*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','5', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'5'},...
'UserData', 'digit');
GUI.button6 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + 2*(btnWidth + btnHorDis) btnInitBottom ...
+ 2*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','6', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'6'},...
'UserData', 'digit');
GUI.button7 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft btnInitBottom ...
+ 3*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','7', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'7'},...
'UserData', 'digit');
GUI.button8 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + (btnWidth + btnHorDis) btnInitBottom ...
+ 3*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','8', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'8'},...
'UserData', 'digit');
GUI.button9 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + 2*(btnWidth + btnHorDis) btnInitBottom ...
+ 3*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','9', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'9'},...
'UserData', 'digit');
% 小数点、倒数运算、等于号、加减乘除按键
% Equal 在求导与积分、画图、模式转换、求根、控制工程复用为"下一步"
% 除了选择模式情况之外都能用,属于 basic1 组
% 除了选择模式和输入数据的情况之外都能用,属于 basic2 组
% Equal(下一步)在任何情况下都能用,属于 essential 组
GUI.buttonDot = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + (btnWidth + btnHorDis) btnInitBottom ...
btnWidth btnHeight], ...
'Style','pushbutton',...
'String','.', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@executeBasicOperation,'.'},...
'UserData', 'basic1');
GUI.buttonReciprocal = uicontrol('Parent',GUI.fh, ...
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源概览】 课程设计 基于MATLAB控制系统仿真等功能的计算器源码+GUI界面+项目资料齐全+说明文档.zip课程设计 基于MATLAB控制系统仿真等功能的计算器源码+GUI界面+项目资料齐全+说明文档.zip课程设计 基于MATLAB控制系统仿真等功能的计算器源码+GUI界面+项目资料齐全+说明文档.zip 【资源说明】 高分项目源码:此资源是在校高分项目的完整源代码,经过导师的悉心指导与认可,答辩评审得分高达95分,项目的质量与深度有保障。 测试运行成功:所有的项目代码在上传前都经过了严格的测试,确保在功能上完全符合预期,您可以放心下载并使用。 适用人群广泛:该项目不仅适合计算机相关专业(如软件工程、计科、区块链、人工智能、电子信息、物联网、通信工程、自动化等)的在校学生和老师,还可以作为毕业设计、课程设计、作业或项目初期立项的演示材料。对于希望进阶学习的小白来说,同样是一个极佳的学习资源。 代码灵活性高:如果您具备一定的编程基础,可以在此代码基础上进行个性化的修改,以实现更多功能。当然,直接用于毕业设计、课程设计或作业也是完全可行的。 欢迎下载,与我一起交流学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
课程设计 基于MATLAB控制系统仿真等功能的计算器源码+GUI界面+项目资料齐全+说明文档.zip (4个子文件)
部署说明文档.md 13KB
171265889347208773632.zip 416B
MathBuddyGUI-main
Calculator_AdvancedFunctionality.m 75KB
LICENSE 34KB
共 4 条
- 1
资源评论
- 2301_784999682024-07-01感谢大佬,让我及时解决了当下的问题,解燃眉之急,必须支持!
IT狂飙
- 粉丝: 4823
- 资源: 2654
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功