您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 用-MATLAB设计一个万年历
课程论文用MATLAB设计一个万年历课程数学软件学生姓名学号手机号码所在学院理学院所在班级信计1134任课教师提交时间2015年06月07日1目录万年历的效果图………………………………………………………………………………………………………………………2第一章设计目的与要求...........................................................................................................31.1设计目的……………………………….………………………………………………………………………………………….31.2设计要求…………………………………………………………………………………………………………………………..3第二章GUI界面设计……………………………………………………………………………………………………………32.1打开GUI…………………………………………………………………………………………………………………………..32.2添加按钮控件…………………………………………………………………………………………………………………...42.3根据控件的属性及视觉效果做一定的修改……………………………………………………………………..52.4保存、添加功能函数………………………………………………………………………………………………………..52.4.1在“nian_edit1_Callback”中编写代码………………………………………………………………….52.4.2在“yue_edit2_Callback”中编写代码…………………………………………………………………..62.4.3在“zhou_pushbutton1_Callback”中编写代码…………………………………………………….62.4.4在“rili_pushbutton2_Callback”中编写代码………………………………………………………..6第三章万年历的使用…………………………………………………………………………………………………………..73.1运行…………………………………………………………………………………………………………………………………..83.2输入…………………………………………………………………………………………………………………………………..83.3错误警告…………………………………………………………………………………………………………………………..9第四章改写界面………………….………………………………………………………………………………………………10第五章结论、问题解决及改进...............................................................................................105.1结论与讨论………………………………………………………………………………………………………………………..105.2问题解决……………………………………………………………………………………………………………………………105.3可以加以改进的地方…………………………………………………………………………………………………………10第六章心得体会…………………………………………………………………………………………………………………..11参考文献…………………………………………………………………………………………………………………………………..11附录:源程序代码……………………………………………………………………………………………………………………112万年历效果图3第一章设计目的与要求:1.1设计目的:通过万年历程序的设计,培养学生综合利用MATLAB进行程序设计的能力,加强函数的运用,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计,开发应用软件。通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《数学软件》课程学习的内容,掌握GUI界面设计的基本方法,更加了解了MATLAB的好处和其可用性!1.2设计要求:设计一个万年历GUI界面,其界面布局如上图,包括“输入年份”、“输入月份”、“显示星期”、“显示日历”等控件。在界面上任意输入某个具体年份和月份,单击按钮即可显示本月的日历及其对应的星期(0表示没有数字日期)。第二章GUI界面设计:2.1打开GUI输入Guide回车或者在工具栏上点击图标打开Guide窗口:42.2添加按钮控件1、选取5个静态文本控件,用来定义“输入年份”、“输入月份”、“星期”、“当月日历显示区”,以及显示每周的“日”、“一”、“二”、“三”、“四”、“五”、“六”;2、选取两个pushbutton按钮空间用来定义“显示星期”、“显示日历”;3、添加两个编辑文本框控件用来输入具体的数字年份和月份;4、添加42个编辑文本框控件,用来显示具体的日期。(具体摆放如下图)52.3根据控件的属性及视觉效果做一定的修改1、双击“输入年份”、“输入月份”、“星期”和“当月日历显示区”这4个静态文本框,在“String”文本框中输入相应的中文,将字体大小“FontSize”设置为20,其他默认即可。2、对于“星期”下方的静态文本框,“String”文本框中不输入任何内容,将字体大小“FontSize”设置为25,在“Tag”文本框中输入“xingqi_text4”。3、对于输入年份和月份的编辑文本框,在“String”文本框中输入0,将字体大小“FontSize”设置为18,在“Tag”文本框中分别输入“nian_edit1”和“yue_edit2”。4、对于两个pushbutton按钮,在“String”文本框中分别输入“显示星期”和“显示日期”,将字体大小“FontSize”都设置为20,在“Tag”文本框中分别输入“zhou_pushbutton1”和“rili_pushbutton2”。5、对于42个编辑文本框,首先将“Enable”属性中的“on”设置为“inactive”,使其转为静态文本框,并且保持控件的高亮状态;其次,在“String”文本框中都不输入任何内容;最后在“Tag”文本框中从左到右、按列依次输入“r1_edit”、“r2_edit”、···、“r42_edit”。2.4保存、添加功能函数把做好的按钮及静态文本框保存为“wannianli.fig”后自动弹出Editor的M文本,然后对相应的控件添加功能函数。以下是相应控件的功能函数的代码。(单击工具栏中的按钮可快速跳转到各个控件的回调函数)2.4.1在“nian_edit1_Callback”中编写代码functionnian_edit1_Callback(hObject,eventdata,handles)%添加如下程序:6input=str2num(get(hObject,'String'));%输入年份if(isempty(input))set(hObject,'String','0')endguidata(hObject,handles);2.4.2在“yue_edit2_Callback”中编写代码functionyue_edit2_Callback(hObject,eventdata,handles)input=str2num(get(hObject,'String'));%输入月份if(isempty(input))set(hObject,'String','0')endifinput=13errordlg('月份不能超过12','警告')%显示警告信息库endguidata(hObject,handles);2.4.3在“zhou_pushbutton1_Callback”中编写代码functionzhou_pushbutton1_Callback(hObject,eventdata,handles)%添加如下程序:h={'日';'一';'二';'三';'四';'五';'六'};%显示结果set(handles.xingqi_text4,'String',h);%更新结构体guidata(hObject,handles);2.4.4在“rili_pushbutton2_Callback”中编写代码functionrili_pushbutton2_Callback(hObject,eventdata,handles)%添加如下程序:nian=get(handles.nian_edit1,'String');yue=get(handles.yue_edit2,'String');year=str2num(nian);month=str2num(yue);%找出各年12个月的天数form=1:12ifmod(year,4)==0&mod(year,100)~=0|mod(year,400)==0D=[312931303130313130313031];elseD=[312831303130313130313031];endY=D(1:m);end%定义初始值7run=0;%闰年初始值ping=0;%平年初始值%计算从第一年到前一年的闰年和平年的个数forq=1:year-1if(mod(q,4)==0&mod(q,100)~=0)|mod(q,400)==0run=run+1;elseping=ping+1;endend%计算从第一年到当年前一个月的天数S=366*run+365*ping;forp=1:month-1S=S+Y(p);end%获得这个月的天数n=Y(month);A=zeros(n,1);S=S+1;%计算这个月的第一天是星期几w=mod(S,7);fork=1:nA(w+k)=k;endT=[A(1:end);zeros(42-length(A),1)];%没有日期用0代替set(handles.r1_edit,'String',num2str(T(1)));%显示结果set(handles.r2_edit,'String',num2str(T(2)));set(handles.r3_edit,'String',num2str(T(3)));%以下类推,直到r40_edit(在此省略,但在M文件上必须全部写上)%_________________________________________________set(handles.r41_edit,'String',num2str(T(4)));set(handles.r42_edit,'String',num2str(T(5)));guidata(hObject,handles);第三章万年历的使用3.1运行单击本M文件编辑窗口中工具栏中的“运行”按钮,或单击GUIDE的输出编辑器中的工具栏中的按钮,创建功能GUI界面,如下图83.2输入在图中输入年份为“2015”,输入月份为“2”,单击“显示星期”按钮和“显示日历”按钮,显示结果如下图93.3错误警告若在“输入月份”文本框中输入的数字超过12,则会弹出警告对话框提示错误。例如输入月份“13”,则弹出如下图所示警告窗口。10第四章改写界面注意到上图左上角名称为“万年历”而不是“wannianli”,其实修改很简单,只需在输出编辑器界面中,单击鼠标右键,从弹出的快捷菜单中选择“PropertyInspector”命令,打开界面属性窗口。将窗口的标题(Name属性)设置为“万年历”,关闭该窗口,并运行界面,显示结果就是创建的“万年历”窗口。在图中输入年份为“2015”,输入月份为“6”,单击“显示星期”按钮和“显示日历”按钮,显示结果就是所要创建的GUI界面。第五章结论、问题解决与改进5.1结论与讨论:经过多次实验,本程序进行本月日历的显示及对应的星期的结
本文标题:用-MATLAB设计一个万年历
链接地址:https://www.777doc.com/doc-5273510 .html