《数学软件》课程设计
set(handles.sec,'string',S) guidata(hObject, handles);
3.3 以下是3个调节时间增加的按钮的编码:(用途:可以鼠标控
制时间小幅度的减少,若大幅度减少可以键盘敲进!)
小时:
function hour_down_Callback(hObject, eventdata, handles) % hObject handle to hour_down (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
H=str2num(get(handles.hour,'string')); %小时按键控制,若上调小于0,侧变回23H=H-1; if H<=-1 H=23; end
set(handles.hour,'string',H) guidata(hObject, handles);
分钟:
function min_dowm_Callback(hObject, eventdata, handles) % hObject handle to min_dowm (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) M=str2num(get(handles.min,'string')); H=str2num(get(handles.hour,'string')); M=M-1;
if M<=-1 %分钟按键控制,若上调小于0,侧变回59,并且小时减1 M=59; H=H-1;
if H<=-1 %小时减1时,若小时小于0,则小时变回23 H=23; end
set(handles.hour,'string',H) end
set(handles.min,'string',M) guidata(hObject, handles); 秒钟:
% --- Executes on button press in sec_dowm.
function sec_dowm_Callback(hObject, eventdata, handles) % hObject handle to sec_dowm (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) S=str2num(get(handles.sec,'string')); M=str2num(get(handles.min,'string')); H=str2num(get(handles.hour,'string')); S=S-1;
5
《数学软件》课程设计
if S<=-1 %秒的按键控制,若秒小于0时,则分钟减1 S=59; M=M-1;
if M<=-1 %分钟减1时,若分钟小于0,则小时减1 M=59; H=H-1;
if H>=-1 %若小时减1时,小时小于0,则,小时变回23 H=23; end
set(handles.hour,'string',H) end
set(handles.min,'string',M) end
set(handles.sec,'string',S) guidata(hObject, handles);
3.4 以下是确认修改按钮的编码:(用途:控制时钟的启动和显示,
并且显示同步时钟的走动。)
function queren_time_Callback(hObject, eventdata, handles) % hObject handle to queren_time (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) a3=str2num(get(handles.hour,'string')); a2=str2num(get(handles.min,'string')); a1=str2num(get(handles.sec,'string'));
if a3>=25|a3<=-1|a2>=61|a2<=-1|a1>=61|a1<=-1 %若输入的数字不符合时钟格式则提示
errordlg('时间输入错误,请输入正确时间!','警告') elseif mod(a2,1)~=0|mod(a3,1)~=0|mod(a1,1)~=0 errordlg('请输入整数!', '警告') else
n3=str2num(get(handles.hour,'string')); %控制时针 n2=str2num(get(handles.min,'string')); %控制分针 n1=str2num(get(handles.sec,'string')); %控制秒针
a=1; %a用来判定时间是否为0~12点或者12~24点,若为0~12则为1,否则为0 if n3>12 %若时刻为12~24,则要转换
a=0; %a用来判定时间是否为0~12点或者12~24点,若为0~12则为1,否则为0 n3=n3-12; end n3=n3*5;
a0=floor(n2/12); %用于分针每走12分钟,时针移动1/5小时 n3=n3+a0;
M=moviein(61); %形成一个大小为61的动画矩阵
6
《数学软件》课程设计
while n3<=60 %时针的移动循环 while n2<60 %分针的移动循环 while n1<=59 %秒针的移动循环
switch a %判定输入的时刻是否为0~12,否则为12~24
case 0 set(handles.hour,'string',floor(n3/5+12)) case 1
set(handles.hour,'string',floor(n3/5)) end
set(handles.min,'string',n2) set(handles.sec,'string',n1)
nzH=get(handles.hour_naozhong,'string'); %获得闹钟时刻 nzM=get(handles.min_naozhong,'string'); %获得闹钟分钟 nzS=get(handles.sec_naozhong,'string'); %获得闹钟秒钟 if nzH~=' '&nzM~=' '&nzS~=' ' %若都不为空则有闹钟设置 switch a %判定输入的时刻是否为0~12,否则为12~24 case 0 if
str2num(nzH)==floor(n3/5+12)&str2num(nzM)==n2&str2num(nzS)==n1 warndlg('闹钟时间已到!','闹钟') end case 1 if
str2num(nzH)==floor(n3/5)&str2num(nzM)==n2&str2num(nzS)==n1 warndlg('闹钟时间已到!', '闹钟') end end end
syms t; x=sin(t); y=cos(t);
ezplot(x,y); %钟的框架 hold on axis equal
for i=1:60 %钟的框架 y=0.93*sin(pi/30*(15-i))+0.03; x=0.93*cos(pi/30*(15-i))-0.02; if mod(i,5)==0 if i==60
text(x,y,'12') else
text(x,y,'I') end else
text(x,y,'.')
7
《数学软件》课程设计
end hold on end
quiver(0,0,0.6*sin(n2*pi/30),0.6*cos(n2*pi/30)); %分针的图形 quiver(0,0,0.3*sin(n3*pi/30),0.3*cos(n3*pi/30)); %时针的图形 quiver(0,0,0.8*sin(n1*pi/30),0.8*cos(n1*pi/30)); %秒针的图形 M(:,n1+1)=getframe; %将图形转换到M矩阵里面 hold off pause(0.75) n1=n1+1; end
if n1==60 %秒针循环 n1=0; n2=n2+1; end end
if n2==60 %分钟循环 n2=0; n3=n3+1; end
if n3==60 %小时的循环 n3=0; end end end
guidata(hObject, handles);
3.5 以下是3个闹钟可编辑文本框的编码:(用途:输入闹钟,
并且若按了关闭按钮,则先是文本框为空白!)
function hour_naozhong_Callback(hObject, eventdata, handles) % hObject handle to hour_naozhong (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of hour_naozhong as text % str2double(get(hObject,'String')) returns contents of hour_naozhong as a double
input=str2num(get(hObject,'string')); %若没设置闹钟,则显示空 if isempty(input)
set(hObject,'string',' ') end
guidata(hObject, handles);
8
《数学软件》课程设计
function min_naozhong_Callback(hObject, eventdata, handles) % hObject handle to min_naozhong (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of min_naozhong as text % str2double(get(hObject,'String')) returns contents of min_naozhong as a double
input=str2num(get(hObject,'string')); %若没设置闹钟,则显示空 if isempty(input)
set(hObject,'string',' ') end
guidata(hObject, handles);
function sec_naozhong_Callback(hObject, eventdata, handles) % hObject handle to sec_naozhong (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of sec_naozhong as text % str2double(get(hObject,'String')) returns contents of sec_naozhong as a double
input=str2num(get(hObject,'string')); %若没设置闹钟,则显示空 if isempty(input)
set(hObject,'string',' ') end
guidata(hObject, handles);
3.6 以下是2个闹钟打开与关闭按钮的编码:(用途:打开设
定的闹钟,和关闭之前设定的闹钟,若关闭,则显示文本框为空白!并且打开(关闭),则弹出文字显示打开(关闭)闹钟!此处用到主调函数handles.h)
function open_naozhong_Callback(hObject, eventdata, handles) % hObject handle to open_naozhong (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of open_naozhong
9