您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 安徽工业大学软件工程实验报告
1《软件工程》实验报告姓名:胡成柱学号:129074044班级:计算机科学与技术122指导老师:周兵日期:2015年05月2一.实验目的1.能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。2.在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。3.培养良好的软件开发习惯,了解软件企业文化。4.掌握结构化数据流分析技术。5.掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格。6.掌握单元测试的一般步骤及技术。7.掌握集成测试的一般步骤和技术。二.实验内容1.软件需求分析①、功能需求分析·输入一个年份(1-3000),然后显示12个月的月历·能解决闰年和平年问题·能输出显示结果②、运行需求分析·操作系统:Windows9x,Windows2000,WindowsXP及更高版本③、数据流图软件结构图:检查输入确定年份计算1月1日显示1月显示2月显示12月显示表头显示其他月份错误非法年份年份年份年份是否闰年开始信息开始信息任意键32.软件设计与编码#includestdio.h#includectype.h#includestdlib.h#includemath.h#definefirstdayof11/*定义第一年的第一天,星期日=7*/#definegap/*setgapbetweennumbersofdates*/#definedent/*setrightmargin.*/structinfo{intmonth;intfirstdayofmonth;intdaysofmonth;intleap;}monthinfo;intcheckinput(void);intinputyear(void);intisleap(inty);voidoutput(structinfo);voidprinthead(structinfo);checkinput()mainoutput()inputyear()isleap()setinit()setinfo()printhead()printmonth()4voidprintmonth(structinfo);structinfosetinit(int);structinfosetmonthinfo(structinfo);/*这个作用是判断年,如果是闰年,return1,否则return0*/intisleap(inty){return((y%4==0&&y%100!=0)||y%400==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];inti,y;y=-1;5printf(请输入年份(1-3000):);for(i=0;i80;++i){s[i]=getchar();if(s[i]==27)exit(0);if(s[i]==10)break;}for(i=0;i80;++i){if(s[i]==10)break;elseif(!isdigit(s[i]))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一月*/6voidprinthead(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)7{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){8if(monthinfo.leap)monthinfo.daysofmonth=29;elsemonthinfo.daysofmonth=28;}returnmonthinfo;}/*Thismoduleistoinitializethemonthinfo.*/structinfosetinit(intyear){inti,days,total;structinfomonthinfo;monthinfo.month=1;monthinfo.firstdayofmonth=firstdayof1;for(i=1;iyear;i=i+1){if(isleap(i))days=366;elsedays=365;monthinfo.firstdayofmonth=(monthinfo.firstdayofmonth+days-1)%7+1;}monthinfo.daysofmonth=31;monthinfo.leap=isleap(year);returnmonthinfo;}voidmain(){printf(\t\t************************************\n);printf(\t\t欢迎使用万年历演示程序\n);printf(\t\t************************************\n);intyear;structinfomonthinfo;year=checkinput();9monthinfo=setinit(year);output(monthinfo);}3.单元测试①.白盒测试10②.黑盒测试2015年三月四月11五月六月122016年:13三.总结141.实验内容总结实验时按照步骤进行,利用VC++6.0作为编程环境,参考网上的资料和代码逐渐了解到万年历的真正的强大的功能,然而在实验中并不是那么一帆风顺,编译时老是有错误,好在通过网上搜索资料和同学老师们的帮忙,我才一一解决这些问题。通过此实验我发现数据流图还是比较重要的,这次实验相当于让我再一次熟悉c语言的魅力所在。2.心得体会与建议对于这次实验,由于这门课是双语教学,英语不是很好的我开始理解有一定的难度,经过一定的努力才慢慢入门。经过对实验的研究,我按照软件工程的思想,把理论应用到了实践当中。采用面向过程的方法开发出了一个万年历的小程序。培养了良好的软件开发习惯,了解了一点软件的企业文化。掌握了一定的结构化数据流分析技术。了解了一定的结构化设计的基本概念与技术,对于以前学习的C语言知识有了更深的了解和更好的应用。对子函数的应用更得心应手。总之,这次实验让我受益匪浅。
本文标题:安徽工业大学软件工程实验报告
链接地址:https://www.777doc.com/doc-5103786 .html