资源描述:
《软件测试大作业.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《软件质量保证与软件测试》大作业基于蔡勒公式星期计算程序测试报告专业班级姓名学号2011年春季学期1.问题的提出1.1问题的来源这次实验一开始打算测试PreDate或者计算器,老师在课上告诉我们什么是好程序,要编写好程序,要有好的编程习惯。回想一下我以前上机也是直接打#include就盲目地开始了。在电脑上翻开了以前C++课上编的一个根据日期计算星期的作业,编的实在太烂了。程序如下:#includevoidmain(){inty,m,d,x,i,sum=0;intaa[13]={0,0,31,60,91,121,152,182,213,244,274,30
2、5,335};intbb[13]={0,0,31,59,90,120,151,181,212,243,273,304,334};cout<<"pleaseinputyear:";cin>>y;cout<<"pleaseinputmonth:";cin>>m;cout<<"pleaseinputday:";cin>>d;if(y<1
3、
4、m<1
5、
6、m>12){cout<<"输入了非法的日期;";return;}//对非法日期的判断if((m==1
7、
8、m==3
9、
10、m==5
11、
12、m==7
13、
14、m==8
15、
16、m==10
17、
18、m==12)&&(d<1
19、
20、d>31))return;if((m==4
21、
22、
23、m==6
24、
25、m==9
26、
27、m==11)&&(d<1
28、
29、d>30))return;if((y%4==0&&y%100!=0
30、
31、y%400==0)&&m==2&&(d<1
32、
33、d>29))return;if((m==2)&&!(y%4==0&&y%100!=0
34、
35、y%400==0)&&(d<1
36、
37、d>28))return;for(i=1;i38、
39、i%400==0)sum+=366;elsesum+=365;}if(y%4==0&&y%100!=0
40、
41、y%400==0){sum+=aa[m];sum
42、+=d;}//计算一年到本日的总天数else{sum+=bb[m];sum+=d;}x=sum%7;if(x!=0)cout<<"输入的日期是星期:"<43、但是由于罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。因此,蔡勒公式只适合于1582年10月15日之后的情形。w=[c/4]–2c+y+[y/4]+[13*(m+1)/5]+d-1OR:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1若要计算的日期是在1582年10月4日或之前,公式则为w=y+[y/4]+[c/4]-2c+[13(m+1)/5]+d+3符号意义 w:星期;w对7取模得:0-星期日,1-星期一,2-星
44、期二,3-星期三,4-星期四,5-星期五,6-星期六 c:世纪-1(前两位数) y:年(后两位数) m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算) d:日 []代表取整,即只要整数部分。 后来人们将这一新的历法称为“格里高利历”,简称格里历或公历。1.3软件的功能概述根据日期计算星期就是用户想知道某一个日期所对应的是星期几,比如用户想知道自己的生日那天是星期几,好安排自己的生日Party。该软件可以实现用户的需求。如果用户输入一个日期,把输入的日期所对应的星
45、期快速输出出来。2.星期计算程序的细节2.1星期计算程序的整体描述及函数之间的关系软件在一个C++控制台工程文件里面,如图2-1所示。图2-1Visualstudio2010中SoftWareTest工程星期计算程序的总体结构分析软件是由包含main函数在内的三个函数实现的其中boolcheckDay(intyear,intmonth,intday)专门用于检测所输入的数字日期字符是不是符合逻辑;intdayToWeek(intyear,intmonth,intday)专门用于计