安工大软件工程实验指报告Word格式文档下载.docx
《安工大软件工程实验指报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《安工大软件工程实验指报告Word格式文档下载.docx(11页珍藏版)》请在冰点文库上搜索。
1.软件需求分析
1、功能需求分析
输入一个年份(1-3000),然后显示12个月的月历
·
能解决闰年和平年问题
能输出显示结果
2、运行环境需求分析:
操作系统:
Windows7
3、数据流程图:
4、程序函数结构
2.软件设计与编码
#include<
stdio.h>
#include<
math.h>
ctype.h>
stdlib.h>
voidoutput(structwanNianLi);
voidprinthead(structwanNianLi);
voidprintmonth(structwanNianLi);
//定义月份结构体,
structwanNianLi{
intmonth;
//月份
intweekdayOfmonth;
//某月第一天是星期几
inttians;
//一月的天数
intleap;
//闰年为1,平年为0
}months;
//初始化结构体,根据年份初始化一月
structwanNianLisetMonth(intyear)
{
structwanNianLimonths;
months.month=1;
months.weekdayOfmonth=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+1)%7;
if(months.weekdayOfmonth==0)
months.weekdayOfmonth=7;
months.tians=31;
months.leap=isRun(year);
returnmonths;
}
//根据前一个月计算下一个月的结构体
structwanNianLisetNextMonth(structwanNianLimonths)
months.weekdayOfmonth=(months.weekdayOfmonth+months.tians-1)%7+1;
months.month=months.month+1;
months.tians=30;
if(months.month==1||months.month==3||months.month==5||months.month==7||
months.month==8||months.month==10||months.month==12)
months.tians=31;
if(months.month==2)
{
if(months.leap)
months.tians=29;
else
months.tians=28;
}
voidmain(){
intyear;
//定义结构体
year=checkYear();
//输入并检查年份
months=setMonth(year);
output(months);
//根据年份判断是否是闰年
intisRun(intyear)
return((year%4==0&
&
year%100!
=0)||year%400==0);
//输入年份
intintYear(void)
intyear;
printf("
请输入一个年份(>
1)"
);
scanf("
%d"
&
year);
returnyear;
//判断年份是否输入正确
intcheckYear(void)
inty;
do{
y=intYear();
if(y<
1||y>
3000)
\n输入错误!
。
\n\n"
y=0;
}while(y<
1);
returny;
//接受结构体,输出全年日历
voidoutput(structwanNianLimonths)
charch;
printhead(months);
//输出月头
printmonth(months);
//输出每月日期情况
按任意键显视下一月,按Esc键退出.\n"
ch=getchar();
if(ch==27)
exit(0);
months=setNextMonth(months);
}while(months.month<
13);
//打印表头
voidprinthead(structwanNianLimonths)
char*ss;
**********************************"
switch(months.month)
case1:
ss="
一月"
;
break;
case2:
二月"
case3:
三月"
case4:
四月"
case5:
五月"
case6:
六月"
case7:
七月"
case8:
八月"
case9:
九月"
case10:
十月"
case11:
十一月"
case12:
十二月"
%s*****************************\n\n"
ss);
voidprintmonth(structwanNianLimonths)
inti,j,k;
"
周日周一周二周三周四周五周六\n\n"
if(months.weekdayOfmonth==7)
{
months.weekdayOfmonth=0;
k=months.weekdayOfmonth;
for(j=1;
j<
=months.tians;
j=j+1)
{
if(k>
6)
{
k=k-7;
printf("
\n\n"
};
k=k+1;
%2d"
j);
}
}
else{
printf("
for(i=1;
i<
months.weekdayOfmonth;
i=i+1)
printf("
for(j=1;
}
3.单元测试
4.集成测试
2015年
2014年
三.总结
1.实验内容总结
实验时参照实验步骤,从此语言入手,运用结构体编写每个月的信息,循环输出。
此实验重点考察了对c语言的理解,以及C语言面向过程的编程思想。
加深了对C语言的了解。
2.心得体会与建议
通过这次试验,让我对这门课又有了全新的认识。
作为一门计算机科学的双语教学科目,初学时感到很多的困惑,感到好高深。
然而通过实验了解到其仅仅是换了一种语言来表述同一们学科,只不过讲的更加标准化国际化。
在实验中采用面向过程的编程思想,开发出一个万年历的小程序,并严格按照软件开发思想与路线,培养了良好的软件开发习惯,并同时了解了一点企业中软件开发的习惯,感到很有利于将来更迅速的适应到该行业的工作环境。
同时这门课也提高了我的英语阅读能力。
1.