?? mcaculor.m
字號:
%-----------------------------------------------------------------%
% 這個函數是用來模擬windows計算器的
% 這是為薜定宇老師<<科學運算語言MATLAB5.3程序設計與應用>>的習題而做
% 版本:1.0
% 設計者:快樂逍遙俠 ( real_ghost )
% QQ:14564470
% E-mail:slqinyi@163.net OR real_ghost@tom.com
% 日期:2003年6月3日
%-------------------------------------------------------------------%
%-------------------------------------------------------------------%
% MC MR MS M+ C等幾個鍵的功能還沒有設計
% 有空了再說吧
%-------------------------------------------------------------------%
function mcaculor(action)
if nargin==0
action='initialization';
end
switch action
case 'initialization' %初始化界面
main_win=figure('position',[100,200,300,350],'name','旋風計算器','numbertitle','off','menubar','none',...
'resize','off');
main_edit=uicontrol('style','edit','position',[10,300,280,25],'backgroundcolor',[1,1,1],'string','0',...
'tag','MAIN_EDIT','horizontalalignment','right','fontsize',12);
main_back=uicontrol('style','pushbutton','position',[60,250,75,25],'string','BackSpace',...
'callback','mcaculor backspace','tag','MAIN_BACK');
main_CE=uicontrol('style','pushbutton','position',[138,250,75,25],'string','CE',...
'tag','MAIN_CE','callback','mcaculor ce');
main_C=uicontrol('style','pushbutton','position',[216,250,75,25],'string','C');
main_but7=uicontrol('style','pushbutton','position',[60,220,45,25],'string','7',...
'tag','MAIN_BUT7','callback','mcaculor num7');
main_but8=uicontrol('style','pushbutton','position',[107,220,45,25],'string','8',...
'tag','MAIN_BUT8','callback','mcaculor num8');
main_but9=uicontrol('style','pushbutton','position',[154,220,45,25],'string','9',...
'tag','MAIN_BUT9','callback','mcaculor num9');
main_divd=uicontrol('style','pushbutton','position',[201,220,45,25],'string','/',...
'tag','MAIN_DIVD','callback','mcaculor divd');
main_sqrt=uicontrol('style','pushbutton','position',[248,220,45,25],'string','sqrt',...
'tag','MAIN_SQRT','callback','mcaculor msqrt');
main_but4=uicontrol('style','pushbutton','position',[60,193,45,25],'string','4',...
'tag','MAIN_BUT4','callback','mcaculor num4');
main_but5=uicontrol('style','pushbutton','position',[107,193,45,25],'string','5',...
'tag','MAIN_BUT5','callback','mcaculor num5');
main_but6=uicontrol('style','pushbutton','position',[154,193,45,25],'string','6',...
'tag','MAIN_BUT6','callback','mcaculor num6');
main_time=uicontrol('style','pushbutton','position',[201,193,45,25],'string','*',...
'tag','MAIN_TIME','callback','mcaculor time');
main_pert=uicontrol('style','pushbutton','position',[248,193,45,25],'string','%',...
'tag','MAIN_PERT','callback','mcaculor pert');
main_but1=uicontrol('style','pushbutton','position',[60,166,45,25],'string','1',...
'tag','MAIN_BUT1','callback','mcaculor num1');
main_but2=uicontrol('style','pushbutton','position',[107,166,45,25],'string','2',...
'tag','MAIN_BUT2','callback','mcaculor num2');
main_but3=uicontrol('style','pushbutton','position',[154,166,45,25],'string','3',...
'tag','MAIN_BUT3','callback','mcaculor num3');
main_minu=uicontrol('style','pushbutton','position',[201,166,45,25],'string','-',...
'tag','MAIN_MINU','callback','mcaculor minu');
main_cnse=uicontrol('style','pushbutton','position',[248,166,45,25],'string','1/x',...
'tag','MAIN_CNSE','callback','mcaculor cnse');
main_but0=uicontrol('style','pushbutton','position',[60,139,45,25],'string','0',...
'tag','MAIN_BUT0','callback','mcaculor num0');
main_porm=uicontrol('style','pushbutton','position',[107,139,45,25],'string','+/-');
main_dots=uicontrol('style','pushbutton','position',[154,139,45,25],'string','.',...
'tag','MAIN_DOTS','callback','mcaculor dots');
main_plus=uicontrol('style','pushbutton','position',[201,139,45,25],'string','+','tag',...
'MAIN_PLUS','callback','mcaculor plus');
main_equl=uicontrol('style','pushbutton','position',[248,139,45,25],'string','=',...
'tag','MAIN_EQUL','callback','mcaculor equl');
main_MC=uicontrol('style','pushbutton','position',[6,220,45,25],'string','MC');
main_MR=uicontrol('style','pushbutton','position',[6,193,45,25],'string','MR');
main_MS=uicontrol('style','pushbutton','position',[6,166,45,25],'string','MS');
main_Mplus=uicontrol('style','pushbutton','position',[6,139,45,25],'string','M+');
operation_state=uicontrol('style','text','visible','off','string','0','tag',...
'OPERATION_STATE');%用來記錄當前的運算符,0表示還沒有選中任何運算符...
%1為加,2為減,3為乘,4為除
operation_sequence=uicontrol('style','text','visible','off','string','0','tag',...
'OPERATION_SEQUENCE');%用來記錄
operator_one=uicontrol('style','text','visible','off','string',' ','tag','OPERATOR_ONE');%用來記錄第一個被操作數
main_manu_edit=uimenu(main_win,'label','編輯(E)');
main_manu_view=uimenu(main_win,'label','查看(V)');
main_manu_help=uimenu(main_win,'label','幫助(H)');
uimenu(main_manu_edit,'label','退出');
uimenu(main_manu_help,'label','幫助主題');
uimenu(main_manu_help,'label','關于旋風計算器','separator','on','call','mcaculor mhelp');
case 'mhelp'
helpdlg({'版權歸快樂逍遙俠所有'...
'E-mail:real_ghost@tom.com'...
'QQ:14564470'},'關于旋風計算器');
case 'backspace' %退格鍵
h_edit=findobj(0,'tag','MAIN_EDIT');
h_back=findobj(0,'tag','MAIN_BACK');
main_win_str=get(h_edit,'string');%取得當有所顯示的數字
main_win_str(length(main_win_str))=[];
if length(main_win_str)==0
set(h_edit,'string','0');
else
set(h_edit,'string',main_win_str);
end
case 'ce'
h_edit=findobj(0,'tag','MAIN_EDIT');
h_state=findobj(0,'tag','OPERATION_STATE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
operator_one=findobj(0,'tag','OPERATOR_ONE');
h_ce=findobj(0,'tag','MAIN_CE');
set(h_sequence,'string','0');
set(operator_one,'string','0');
set(h_edit,'string','0');
set(h_state,'string','0');
case 'pert'
h_edit=findobj(0,'tag','MAIN_EDIT');
h_pert=findobj(0,'tag','MAIN_PERT');
set(h_edit,'string','0');
case 'num9'
h_edit=findobj(0,'tag','MAIN_EDIT');
h_num9=findobj(0,'tag','MAIN_BUT9');
h_state=findobj(0,'tag','OPERATION_STATE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
h_opert=findobj(0,'tag','OPERATOR_ONE');
h_sequence_num=round(str2num(get(h_sequence,'string')));
h_opert_num=round(str2num(get(h_state,'string')));
main_win_num_str=get(h_edit,'string');
if h_opert_num==1 | h_opert_num==2 | h_opert_num==3 | h_opert_num==4 %按此鍵之前按了運算符
if h_sequence_num==0
set(h_edit,'string','9');
set(h_sequence,'string','1');
else
main_win_num_str=[main_win_num_str,'9'];
set(h_edit,'string',main_win_num_str);
end
else
if main_win_num_str=='0'%如果當前的數為0,則先清空
main_win_num_str='';
end
if length(main_win_num_str)>=14 %最大的操作數超過1e+14會出錯
errordlg({'友情提示: 操作數不能大于1e+14'},'error');
end
main_win_num_str=[main_win_num_str,'9'];
set(h_edit,'string',main_win_num_str);
end
case 'num8'
h_edit=findobj(0,'tag','MAIN_EDIT');
h_num9=findobj(0,'tag','MAIN_BUT9');
h_state=findobj(0,'tag','OPERATION_STATE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
h_opert=findobj(0,'tag','OPERATOR_ONE');
h_sequence_num=round(str2num(get(h_sequence,'string')));
h_opert_num=round(str2num(get(h_state,'string')));
main_win_num_str=get(h_edit,'string');
if h_opert_num==1 | h_opert_num==2 | h_opert_num==3 | h_opert_num==4 %按此鍵之前按了運算符
if h_sequence_num==0
set(h_edit,'string','8');
set(h_sequence,'string','1');
else
main_win_num_str=[main_win_num_str,'8'];
set(h_edit,'string',main_win_num_str);
end
else
if main_win_num_str=='0'%如果當前的數為0,則先清空
main_win_num_str='';
end
if length(main_win_num_str)>=14 %最大的操作數超過1e+14會出錯
errordlg({'友情提示: 操作數不能大于1e+14'},'error');
end
main_win_num_str=[main_win_num_str,'8'];
set(h_edit,'string',main_win_num_str);
end
case 'num7' %當按7時的反應
h_edit=findobj(0,'tag','MAIN_EDIT');
h_num9=findobj(0,'tag','MAIN_BUT9');
h_state=findobj(0,'tag','OPERATION_STATE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
h_opert=findobj(0,'tag','OPERATOR_ONE');
h_sequence_num=round(str2num(get(h_sequence,'string')));
h_opert_num=round(str2num(get(h_state,'string')));
main_win_num_str=get(h_edit,'string');
if h_opert_num==1 | h_opert_num==2 | h_opert_num==3 | h_opert_num==4 %按此鍵之前按了運算符
if h_sequence_num==0
set(h_edit,'string','7');
set(h_sequence,'string','1');
else
main_win_num_str=[main_win_num_str,'7'];
set(h_edit,'string',main_win_num_str);
end
else
if main_win_num_str=='0'%如果當前的數為0,則先清空
main_win_num_str='';
end
if length(main_win_num_str)>=14 %最大的操作數超過1e+14會出錯
errordlg({'友情提示: 操作數不能大于1e+14'},'error');
end
main_win_num_str=[main_win_num_str,'7'];
set(h_edit,'string',main_win_num_str);
end
case 'num6'
h_edit=findobj(0,'tag','MAIN_EDIT');
h_num9=findobj(0,'tag','MAIN_BUT9');
h_state=findobj(0,'tag','OPERATION_STATE');
h_sequence=findobj(0,'tag','OPERATION_SEQUENCE');
h_opert=findobj(0,'tag','OPERATOR_ONE');
h_sequence_num=round(str2num(get(h_sequence,'string')));
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -