MATLAB软件设计及应用.docx
《MATLAB软件设计及应用.docx》由会员分享,可在线阅读,更多相关《MATLAB软件设计及应用.docx(7页珍藏版)》请在冰豆网上搜索。
MATLAB软件设计及应用
MATLAB软件
软件开发及应用设计文档
题目:
MATLAB课程设计
学院:
理学院
专业:
信息及计算科学
班级:
信计一、二班
学号:
姓名:
目录.....................................................2
一、输入日期是此年的第几天的设计方案....................3
1、算法的实现步骤.......................................3
二、对输入的数排序的设计方案............................3
1、算法的实现步骤.......................................3
三、设计工具............................................4
1、MATLAB数学软件......................................4
四、程序流程图..........................................4
1、输入日期是此年第几天流程图...........................4
2、对输入的数排序的流程图...............................4
五、程序主要部分以及函数说明............................5
1、输入日期是此年的第几天算法以及关键代码说明...........5
2、对输入的数排序的算法以及关键代码说明.................6
六、测试及结果..........................................7
1、输入日期是此年的第几天主要用例及结果.................7
2、对输入的数排序的主要用例及结果.......................8
3、开发过程中遇到的问题及解决办法.......................10
七、总结及心得..........................................11
1、收获、总结...........................................11
一、‘输入日期是此年的第几天’设计方案
1、算法的实现步骤
(1)陈述要解决的问题:
编写一个程序——输入日期,输出是这一年的第几天。
(2)考虑用户输入数据:
没有完全输入年月日或输入年月日超出范围。
(3)算法实现的基本方法:
if条件语句,for循环语句,switch分支语句。
(4)设计算法。
(5)编写程序。
二、‘对输入的数排序’设计方案
1、算法的是实现步骤
(1)陈述要解决的问题:
对输入的数排序(升序或降序)。
(2)如何让用户决定排序:
输入‘up’和其他字符串来决定升序排序,输入‘down’来决定降序排序,如果输入空格或者没有输入决定排序的字符,则跳出输入错误的提示。
(3)实现的基本方法:
if条件语句,for循环语句。
(4)设计算法。
(5)编写程序。
三、设计工具
1、MATLAB数学软件
四、程序流程
1、‘输入日期是此年的第几天’流程图
2、‘对输入的数排序’流程图
五、程序主要部分以及函数说明
1、输入日期是此年的第几天
(1)算法:
先判断参数是否超出了规定的范围
判断年份为平年还是闰年,若为平年,leapday=0,若为闰年,leapday=1.
若(year,4)==0&&(year,100)~=0||(year,400)==0
Leapday=1
否则leapday=0
根据输入月份,
若month=1,3,5,7,8,10,12
Out=out+31
若month=4,6,9,11
Out=out+30
若month=2
Out=out+28+leapday
输出所求结果
(2)function输出参数列表、dday输入参数列表,Month、theday、year是年月日的参数。
(3)关键代码:
if(isempty(month)||isempty(the_day)||isempty(year))disp('entererror');如果用户输入的年月日有空格或者没有输入,则提示输入错误。
elseif((month>=1&&month<=12)&&(the_day>=0&&the_day<=31)&&(year>=0&&year<=10000));判断输入的年月日是否在范围内,不是则输出disp('enterthescopeofdateerror');则提示说输入的年月日超出范围,否则往下执行。
2、对输入的数排序
(1)算法:
升序通过比较,把最小值及第一个数进行交换,以此类推把数从小到大排列。
Forii=1:
nvals-1
x<-ii
forjj=ii+1tonvals
若a(jj)X<-jj
若i~=x
交换a(i)及a(x)
降序通过比较,把最大值及第一个数进行比较,以此类推把数从大到小排列。
Forii=1:
nvals-1
x<-ii
forjj=ii+1tonvals
若a(jj)>a(x)
X<-jj
若i~=x
交换a(i)及a(x)
(2)function输出参数列表、ssort输入参数列表,a、str是输入参数。
(3)关键代码:
if((isempty(str)))disp('enterblankspaceornoenter');判断用户输入决定排序的字符串,如果是空或者没有输入,则提示输入空格或没有输入,不执行下面程序。
if((nargin==2&&(strcmp(str,'up')==1))||(nargin==2&&((strcmp(str,'up')==0&&strcmp(str,'down')==0))))这个是判断输入参数列表是否是两个,并且判断输入的字符是否是down,不是则执行升序排序。
六、测试及问题
1、输入日期是此年的第几天的主要测试用例及结果
(1)输入月份超出范围:
Entermonth(1-12):
13
Enterday(1-31):
1
Enteryear(yyyy):
1999
enterthescopeofdateerror
(2)年、月、份输入有空格:
Entermonth(1-12):
Enterday(1-31):
2
Enteryear(yyyy):
2001
entererror
(3)没有输入:
Entermonth(1-12):
Enterday(1-31):
Enteryear(yyyy):
entererror
(4)正常输入:
Entermonth(1-12):
3
Enterday(1-31):
1
Enteryear(yyyy):
2001
thedate3/1/2001isdayofyear60.
2、对输入的数排序的主要测试用例及结果
(1)输入字符串up:
enternumberofvaluestosort:
4
enterastring:
up
entervalue1:
2
entervalue2:
3
entervalue3:
7
entervalue4:
9
sorteddata:
2.00003.00007.00009.0000
(2)输入其他字符串:
enternumberofvaluestosort:
4
enterastring:
sedr
entervalue1:
6
entervalue2:
5
entervalue3:
2
entervalue4:
1
sorteddata:
1.00002.00005.00006.0000
(3)输入字符串down:
enternumberofvaluestosort:
3
enterastring:
down
entervalue1:
4
entervalue2:
7
entervalue3:
2
sorteddata:
7.00004.00002.0000
(4)没有输入字符串:
enternumberofvaluestosort:
3
enterastring:
enterblankspaceornoenter
3、开发过程中遇到的问题及解决办法
在编写程序过程中,原本想用error、nargchk结合来判断输入的参数的个数以及如输入的参数不在范围内,停止程序的执行,所以就用多个if条件语句多次判断。
简单的用书上的例子,如果用户输入空格或者不输入,输入不符合范围,程序就会报错,所以用if条件语句进行筛选,用isempty函数判断输入的空格或者没有输入。
七、总结及心得
1、收获
通过这次小组的合作,从中意识到了大家各方面都存在明显的不足,但是值得高兴的是大家都在齐心协力的做一件事,相互帮助,相互给予安慰、体谅,懂得了团体合作的重要性。
而且这次的软件设计,让大家都再次复习了一遍课本的内容,并且开动了脑筋做了第一次有挑战性的尝试。
由本来对MATLAB课程的模糊理解迈进了一个阶梯,当然更意识到动手的重要性,凡事真的不能纸上谈兵,光读懂课本的内容没有用,要自己真正动手操作才行,就像这次大家一起付出就会有收获。
2、总结
从这次设计课中,看出我们对MATLAB的基础知识还不太熟悉,还需要平时多加练习。
任务分配
程序编写:
孔芳霞
算法设计:
范盈盈
调试:
徐翰
方案设计:
吴丹
测试:
曾冬英
文档编写:
刘芬
上面是主要的分工,在过程中有困难,大家都会讨论过程都是相互参及的。
学号:
(130710301)26、27、29、30、31、
姓名:
范盈盈、孔芳霞、刘芬、吴丹、曾冬英、徐翰