您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 软件工程-万年历实验报告
1《软件工程》实验报告学号:099074069姓名:朱霄班级:计092指导教师:周兵2实验题目:编写一个万年历程序要求:输入一个年份(1-3000),然后显示12个月的月历,如屏幕显示不下,则应提供翻页功能。一:实验目的1、能按照软件工程的思想,采用面向对象过程的方法开发出一个小型的软件系统2、在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程知识3、培养良好的软件开发习惯,了解软件企业文化4、掌握结构话数据流分析技术5、掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格6、掌握单元测试的一般步骤及技术7、掌握集成测试的一般步骤和技术二:实验内容1、功能需求分析·能列出公元元年到3000年所有月历·能解决闰年和平年问题·能输出显示结果2、运行需求分析·运行于windowxp及更高版本操作系统上3、数据流图34、软件设计与编码·检查输入·输入数据是否超出程序处理范围·输入数据是否非法字符机器处理检查输入显示表头计算1月1日确定闰年年份年份年份年份开始信息是否闰年输入非法重新输入显示接下来的月份开始信息显示一月4while(iserror){printf(Entertheyear:);scanf(%d,&year);if(year1||year3000)printf(inputerror!\n);elsebreak;getch();}·确定闰年if((year%4==0)&&(year%100!=0)||year%400==0)·显示表头·计算一月一日·程序代码:#includestdlib.h#includeconio.h#includestdio.hintisleapyear(intyear){if((year%4==0)&&(year%100!=0)||year%400==0)return1;elsereturn0;}voidmain(){intisleapyear(int);inti,day,year,temp,temp_i,year_start=1,per_year_days,iserror=1;intmonth_days[]={31,28,31,30,31,30,31,31,30,31,30,31,29};longintyear_days=0;while(iserror){printf(Entertheyear:);scanf(%d,&year);if(year1||year3000)printf(inputerror!\n);elsebreak;getch();}while(year_startyear){if(isleapyear(year_start))per_year_days=366;elseper_year_days=365;5year_days=year_days+per_year_days;year_start++;}for(temp=1;temp=12;temp++){switch(temp){case1:printf(--------January(%d)--------\n,year);break;case2:printf(---------February(%d)--------\n,year);break;case3:printf(---------March(%d)---------\n,year);break;case4:printf(---------April(%d)---------\n,year);break;case5:printf(---------May(%d)---------\n,year);break;case6:printf(---------June(%d)---------\n,year);break;case7:printf(---------July(%d)---------\n,year);break;case8:printf(---------January(%d)---------\n,year);break;case9:printf(---------August(%d)---------\n,year);break;case10:printf(---------October(%d)---------\n,year);break;case11:printf(---------November(%d)---------\n,year);break;case12:printf(---------December(%d)---------\n,year);break;6}i=year_days%7;printf(MonTueWedThuFriSatSun\n);if(i!=0)for(temp_i=0;temp_ii;temp_i++)printf();day=1;if(isleapyear(year)&&temp==2)while(day=month_days[12]){if(day1)if(year_days%7==0)printf(\n);if(day=10)printf(%d,day);elseprintf(%d,day);year_days++;day++;}elsewhile(day=month_days[temp-1]){if(day1)if(year_days%7==0)printf(\n);if(day=10)printf(%d,day);elseprintf(%d,day);year_days++;day++;}printf(\n);if(getch()=='q')exit(0);}}5、单元测试与集成测试·测试方案设计:·白盒测试输入若干数据,对程序逻辑路径进行测试,检验内部控制结构和数据是否有错,实际的运行状态与预期的状态是否一致;·测试数据:2012(闰年)2011(平年)test:-1,3001白盒测试结果7·黑盒测试根据程序的提示输入数据,检查程序是否满足功能要求。·黑盒测试结果启动程序,输入年份2012,按下enter键的时候会显示所有的月历。89输入年份2011,按下enter键的时候会显示所有的月历1011按ESC键即可退出应用程序。三、总结与心得:总结:通过测试,程序内部控制结构和数据结构没有出现问题,实际运行结果和预期的相符合。心得与体会:通过这次实验让我对结构化程序设计有了更深一步的理解,了解到了软件设计的思想,也认识了软件测试和调试的重要性,对程序的模块化设计有了更深的理解。通过自己的努力完整地按照结构化的编程思想做好万年历程序,从中获益匪浅。
本文标题:软件工程-万年历实验报告
链接地址:https://www.777doc.com/doc-5143313 .html