您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 周兵软件工程实验报告
《软件工程》实验报告一.实验目的1.能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。2.在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。3.培养良好的软件开发习惯,了解软件企业文化。4.掌握结构化数据流分析技术。5.掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格。6.掌握单元测试的一般步骤及技术。7.掌握集成测试的一般步骤和技术。二.实验内容1.软件需求分析①、功能需求分析·输入一个年份(1-3000),然后显示12个月的月历·能解决闰年和平年问题·能输出显示结果②、运行需求分析·操作系统:Windows2000,WindowsXP、win7及更高版本③、数据流图显示一月确定闰年计算1月1日是否闰年显示表头开始信息年份检查输入年份年份年份非法开始信息显示二月任意键……显示十二月任意键软件结构图2.软件设计与编码#includestdio.h#includectype.h#includestdlib.h#includemath.h#definefirstdayof11/*definethefirstdayoffirstyear.星期日=7*/#definegap/*setgapbetweennumbersofdates*/#definedent/*setrightmargin.*/structinfo{intmonth;intfirstdayofmonth;intdaysofmonth;intleap;}monthinfo;intcheckinput(void);intinputyear(void);intisleap(inty);voidoutput(structinfo);voidprinthead(structinfo);voidprintmonth(structinfo);structinfosetinit(int);structinfosetmonthinfo(structinfo);/*Thisfuctionistoacceptyear,ifitisleapyear,itreturn1,otherwisereturn0*/intisleap(inty)//判断是否为闰年{maincheckinput()inputyear()setinit()output()printhead()printmonth()setinfo()isleap()return((y%4==0&&y%100!=0)||y%400==0);//是闰年返回1,不是返回0}/*Thismoduleistoacceptinputyear()andcheckifitiscorrect.ifitiscorrectitreturnintyear,otherwiseaskuserreenter*/intcheckinput(void)//检查输入的年份是否符合要求{inty;do{y=inputyear();if(y1||y3000){printf(\n输入错误!。\n\n);y=0;}}while(y1);returny;}/*Thisfunctionistoaccepttheinputyear,ifitistheinteger,itreturnsit,otherwiseitreturn-1*/intinputyear(void){chars[80];//定义一个字符串数组存放输入的年份字符串,字符串长度为80inti,y;y=-1;printf(请输入年份(1-3000):);for(i=0;i80;++i){s[i]=getchar();if(s[i]==27)//循环接受字符,并判断字符,若此字符等于esc,退出此次接受年份,循环到下一次接受exit(0);if(s[i]==10)break;}for(i=0;i80;++i){if(s[i]==10)break;elseif(!isdigit(s[i]))//不是数字,直接返回y=1,输出输入错误returny;}y=atoi(s);returny;}/*Thismoduleistoacceptmonthinfo,andprintthewholeyearcalender.*/voidoutput(structinfomonthinfo){charch;do{printhead(monthinfo);printmonth(monthinfo);printf(按任意键显视下一月,按Esc键退出.\n);ch=getchar();if(ch==27)exit(0);monthinfo=setmonthinfo(monthinfo);}while(monthinfo.month13);}/*Thismoduleistoacceptmonthinfo,amdprintmonthlyheadlike一月*/voidprinthead(structinfomonthinfo){char*ss;printf(%s,dent);switch(monthinfo.month){case1:ss=一月;break;case2:ss=二月;break;case3:ss=三月;break;case4:ss=四月;break;case5:ss=五月;break;case6:ss=六月;break;case7:ss=七月;break;case8:ss=八月;break;case9:ss=九月;break;case10:ss=十月;break;case11:ss=十一月;break;case12:ss=十二月;}printf(%s%s%s%s\n\n,gap,gap,gap,ss);}/*Thismoduleistoacceptmonthinfo,andprintthenumbereddatesofthemonth.*/voidprintmonth(structinfomonthinfo){inti,j,k;printf(%s,dent);printf(一%s二%s三%s四%s五%s六%s日\n\n,gap,gap,gap,gap,gap,gap);printf(%s,dent);for(i=1;imonthinfo.firstdayofmonth;i=i+1){printf(%s,gap);}k=monthinfo.firstdayofmonth;for(j=1;j=monthinfo.daysofmonth;j=j+1){if(k7){k=k-7;printf(\n\n%s,dent);};k=k+1;printf(%2d%s,j,gap);}printf(\n\n);}/*Thismoduleistoacceptthemonthinfo,andsetthemonthinfoofnextmonth.*/structinfosetmonthinfo(structinfomonthinfo){intm;monthinfo.firstdayofmonth=(monthinfo.firstdayofmonth+monthinfo.daysofmonth-1)%7+1;//每月第一天周几monthinfo.month=monthinfo.month+1;monthinfo.daysofmonth=30;m=monthinfo.month;if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)monthinfo.daysofmonth=31;if(m==2){if(monthinfo.leap)monthinfo.daysofmonth=29;elsemonthinfo.daysofmonth=28;}returnmonthinfo;}/*Thismoduleistoinitializethemonthinfo.*/structinfosetinit(intyear){inti,days,total;structinfomonthinfo;monthinfo.month=1;//第一月monthinfo.firstdayofmonth=firstdayof1;//firstdayof1初始化为1for(i=1;iyear;i=i+1)//从第一年到year,monthinfo累计{if(isleap(i))days=366;elsedays=365;monthinfo.firstdayofmonth=(monthinfo.firstdayofmonth+days-1)%7+1;//元月一号}monthinfo.daysofmonth=31;monthinfo.leap=isleap(year);returnmonthinfo;}voidmain(){intyear;structinfomonthinfo;year=checkinput();monthinfo=setinit(year);output(monthinfo);}3.单元测试①.白盒测试②.黑盒测试2015年三.总结1.实验内容总结实验内容总结实验过程中遇到的最大问题就是,不知道一年中的元月一号是星期几。结果上网查了公式才知道。实验时按照每个步骤进行,自己按照数据流图设计程序代码,定义结构体,虽然出现了一些问题,但通过上网的查询,都得到了解决。这次的实验对我的c语言又得到了一次较好的巩固。2.心得体会与建议经过对实验的研究,我按照软件工程的思想,把理论应用到了实践当中。采用面向过程的方法开发出了一个万年历的小程序。培养了良好的软件开发习惯,了解了一点软件的企业文化。掌握了一定的结构化数据流分析技术。了解了一定的结构化设计的基本概念与技术,对于以前学习的C语言知识有了更深的了解和更好的应用。对子函数的应用更得心应手。总之,这次实验让我受益匪浅
本文标题:周兵软件工程实验报告
链接地址:https://www.777doc.com/doc-5566751 .html