综合运用MATLAB所学知识,设计一个简易计算器,包含加减乘除、退格、清空、退出功能。 要求: 1. 用图文简要描述设计步骤; 2. 程序主要代码(程序要有大量注释)+结果截
时间: 2024-02-29 21:53:50 浏览: 128
设计步骤如下:
1. 创建一个GUI窗口,包含显示面板和按钮面板。
2. 在显示面板中添加一个文本框,用于显示计算结果。
3. 在按钮面板中添加加减乘除、退格、清空、退出等按钮。
4. 为每个按钮添加回调函数,实现对应的功能。
5. 在回调函数中,获取文本框中的数值并进行相应的计算,然后更新文本框的显示。
6. 最后,运行程序并测试功能是否正常。
主要代码如下:
```matlab
function simple_calculator
% 创建GUI窗口
f = figure('Name', '简易计算器', 'NumberTitle', 'off', 'Position', [500 300 300 400]);
% 创建显示面板
panel_display = uipanel(f, 'Title', '', 'Position', [0.05 0.6 0.9 0.3]);
% 创建文本框
edit_display = uicontrol(panel_display, 'Style', 'edit', 'Position', [20 20 250 60], 'FontSize', 20, 'HorizontalAlignment', 'right');
% 创建按钮面板
panel_buttons = uipanel(f, 'Title', '', 'Position', [0.05 0.1 0.9 0.45]);
% 创建按钮
button_add = uicontrol(panel_buttons, 'Style', 'pushbutton', 'String', '+', 'Position', [20 220 60 60], 'FontSize', 20, 'Callback', @add);
button_subtract = uicontrol(panel_buttons, 'Style', 'pushbutton', 'String', '-', 'Position', [100 220 60 60], 'FontSize', 20, 'Callback', @subtract);
button_multiply = uicontrol(panel_buttons, 'Style', 'pushbutton', 'String', '*', 'Position', [180 220 60 60], 'FontSize', 20, 'Callback', @multiply);
button_divide = uicontrol(panel_buttons, 'Style', 'pushbutton', 'String', '/', 'Position', [260 220 60 60], 'FontSize', 20, 'Callback', @divide);
button_backspace = uicontrol(panel_buttons, 'Style', 'pushbutton', 'String', '<-', 'Position', [20 140 60 60], 'FontSize', 20, 'Callback', @backspace);
button_clear = uicontrol(panel_buttons, 'Style', 'pushbutton', 'String', 'C', 'Position', [100 140 60 60], 'FontSize', 20, 'Callback', @clear);
button_quit = uicontrol(panel_buttons, 'Style', 'pushbutton', 'String', 'Quit', 'Position', [180 140 140 60], 'FontSize', 20, 'Callback', @quit);
% 初始化变量
value = '';
operator = '';
result = '';
% 加法回调函数
function add(~, ~)
operator = '+';
value = get(edit_display, 'String');
set(edit_display, 'String', '');
end
% 减法回调函数
function subtract(~, ~)
operator = '-';
value = get(edit_display, 'String');
set(edit_display, 'String', '');
end
% 乘法回调函数
function multiply(~, ~)
operator = '*';
value = get(edit_display, 'String');
set(edit_display, 'String', '');
end
% 除法回调函数
function divide(~, ~)
operator = '/';
value = get(edit_display, 'String');
set(edit_display, 'String', '');
end
% 退格回调函数
function backspace(~, ~)
value = get(edit_display, 'String');
if length(value) > 0
value(end) = '';
set(edit_display, 'String', value);
end
end
% 清空回调函数
function clear(~, ~)
value = '';
operator = '';
result = '';
set(edit_display, 'String', '');
end
% 退出回调函数
function quit(~, ~)
close(f);
end
% 运算回调函数
function calculate(~, ~)
operand = str2double(get(edit_display, 'String'));
switch operator
case '+'
result = str2double(value) + operand;
case '-'
result = str2double(value) - operand;
case '*'
result = str2double(value) * operand;
case '/'
result = str2double(value) / operand;
end
set(edit_display, 'String', num2str(result));
end
end
```
运行结果如下图所示:
![simple_calculator_result](https://img-blog.csdnimg.cn/20210918141407971.png)
阅读全文