安徽工业大学软件工程试验报告.docx

上传人:scccc 文档编号:13362431 上传时间:2021-12-23 格式:DOCX 页数:19 大小:255.76KB
返回 下载 相关 举报
安徽工业大学软件工程试验报告.docx_第1页
第1页 / 共19页
安徽工业大学软件工程试验报告.docx_第2页
第2页 / 共19页
安徽工业大学软件工程试验报告.docx_第3页
第3页 / 共19页
安徽工业大学软件工程试验报告.docx_第4页
第4页 / 共19页
安徽工业大学软件工程试验报告.docx_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《安徽工业大学软件工程试验报告.docx》由会员分享,可在线阅读,更多相关《安徽工业大学软件工程试验报告.docx(19页珍藏版)》请在三一文库上搜索。

1、软件工程实验报告姓 名:江文杰学 号:139074333班 级:网133 指导老师:周兵一.实验目的1 .能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。2 .在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知 识。3 .培养良好的软件开发习惯,了解软件企业文化。4 .掌握结构化数据流分析技术。5 .掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格。6 .掌握单元测试的一般步骤及技术。7 .掌握集成测试的一般步骤和技术。实验内容1 . 软件需求分析、功能需求分析 输入一个年份(1-3000),然后显示12个月的月历 能解决闰年和平年问题,能输出显示结

2、果、运行需求分析 操作系统:Windows9x, Windows2000, Windows XP 及更高版本、数据流图显示12月显示其他月份软件结构图:maincheckinput()inputyear()printhead()output()printmonth()setinfo()2. 软件设计与编码#include <stdio.h>#include <ctype.h>#include <stdlib.h>#include <math.h>#define firstdayofl 1/*定义第一年的第一天,星期日=7 */#define ga

3、p ""/* set gap between numbers of dates */#define dent ""/* set right margin. */struct info int month;int firstdayofmonth;int daysofmonth;int leap;monthinfo;int checkinput(void);int inputyear(void);int isleap(int y);void output(struct info);void printhead(struct info );void print

4、month(struct info);struct info setinit(int);struct info setmonthinfo(struct info );/* 这个作用是判断年, 如果是闰年, return 1, 否则return 0*/int isleap(int y)return (y%4=0 && y%100!=0)| y%400=0);/* This module is to accept inputyear() and check if it is correct. if it is correct it return int year, otherwis

5、e ask user reenter*/int checkinput(void)int y;doy=inputyear();if(y<1 | y >3000)printf("n 输入错误!。 nn");y=0;while(y<1);return y;/* This function is to accept the input year, if it is the integer, it returns-1it,otherwiseitreturn*/int inputyear(void)char s80;int i, y;y=-1;printf("

6、; 请输入年份(1-3000):");for(i=0;i<80;+i)si=getchar();if(si=27)exit(0);if(si=10)break;for(i=0;i<80;+i)if(si=10) break;else if(!isdigit(si)return y;y=atoi(s);return y;*/*This module is to accept monthinfo, and print the whole year calender.void output(struct info monthinfo)char ch;doprinthead(mo

7、nthinfo);printmonth(monthinfo);printf(" 按任意键显视下一月, 按 Esc 键退出 . n");ch=getchar();if(ch=27)exit(0);monthinfo=setmonthinfo(monthinfo);while(monthinfo.month<13);/* This module is to accept monthinfo, amd print monthly head like" 一 月 */void printhead(struct info monthinfo)char *ss;print

8、f("%s",dent);switch(monthinfo.month)case 1: ss=" 一 月 "break;case 2: ss=" 二月 "break;case 3: ss=" 三月 "break;case 4: ss=" 四月 "break;case 5: ss=" 五月 "break;case 6: $="六月"; break;case 7: ss=" 七 月 "break;case 8: ss=" 八月 &

9、quot;break;case 9: ss=" 九月 "break;case 10: ss="十 月"; break;case 11: ss="H月”; break;case 12: ss="十二月";printf(" %s%s%s%snn",gap,gap,gap,ss);/* This module is to accept monthinfo, and print the numbered dates of the month.*/void printmonth(struct info monthi

10、nfo)int i,j,k;printf("%s",dent);printf(" 一 %s 二 %s 三 %s 四 %s 五 %s 六 %s 日 nn",gap,gap,gap,gap,gap,gap);printf("%s",dent);for(i=1;i<monthinfo.firstdayofmonth;i=i+1) printf("%s ",gap);k=monthinfo.firstdayofmonth;for(j=1;j<=monthinfo.daysofmonth;j=j+1)if(k&g

11、t;7)k=k-7;printf("nn%s",dent);k=k+1;printf("%2d%s",j,gap); printf("nn");/* This module is to accept the monthinfo, and set the monthinfo of next month.*/struct info setmonthinfo(struct info monthinfo)int m;monthinfo.firstdayofmonth= (monthinfo.firstdayofmonth+ monthinfo

12、.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;return monthinfo;/* This module is to initialize

13、the monthinfo. */struct info setinit(int year)int i,days,total;struct info monthinfo;monthinfo.month=1;monthinfo.firstdayofmonth=firstdayof1;for(i=1;i<year;i=i+1)if(isleap(i)days=366;elsedays=365 ;monthinfo.firstdayofmonth=(monthinfo.firstdayofmonth+days-1)%7+1;monthinfo.daysofmonth=31;monthinfo.

14、leap=isleap(year);return monthinfo;void main() printf("*n");n");printf("tt 欢迎使用万年历演示程序printf("int year ;皿*n");struct info monthinfo;year = checkinput();monthinfo = setinit(year); output(monthinfo);3.单元测试白盒测试欢迎使用万年历演示程序M .MCM MMHM. . MHM M M MHM M M MHM M M MHM M 闷 MHKM请

15、输入年份IT眄阴):T输入错误! .请输入年份1T0萌 :3500输入错误!。请输入年份ST眄S 2b输入错误!,请输入年份ST眄S :,! ?,输入错误! .请输入年份1-30刖):半:.黑盒测试2015 年三月四月 GC + + B件工程口心力1111心匕二三月四五、 K日111234567H19101112131415161718192。212223242526272829303 1|按任意键显视一月,按E.避退出-四月1一=四五3日1234567891B11121314151G17±819202123269五月六月2016年:总结和体会本次用 C 语言编写的万年历系统主要实现

16、了年历、月历、日历的显示。我根本就不喜欢敲代码了,看见代码就头疼。所以感觉厌恶这门专业,对学习也不感兴趣了。而且,还有一件更头疼的事是在写一个简单的程序时竟然老是出错,难一点的,复杂一点的程序竟然无从下手。但是去看程序的参考答案时都看得懂,又感觉很容易。学了软件工程以后,我就感觉我以前的学习方法是错误的。以前我只注重于代码,而不注重理论知识以及编程的思路,程序的架构。以至于在些程序时没有写程序的思路,不能形成程序的架构。只想到看脑袋里是否有与此类似的代码。越想程序越乱,最后脑袋里一片空白。不知道程序从哪个方面下手了。软件工程这门课程是做软件开发的人必学的课程,通过学这门课程,程序员就会注重软件

17、开发的理论知识,以及做项目开发的思路。学了这门课程后你写程序就不会去盲目的去套用代码,而是理清此程序的架构以及思路。程序该从什么时候开始,什么时候结束。在中间需要添加什么样的功能,以完善该软件。在设计初期,首先温习了课本内容,再次熟悉了一下C 语言程序,然后广泛的查找有关万年历的资料,并结合查找到的资料,整理出设计的主要思路,画出流程图,最终写出了源程序,并编译成功,在实验中,碰到了不少问题,其中包括如何获取系统时间,如何计算任意时间的时间差,这些困难,都通过查阅资料和问同学得到了解决。当然,由于时间和能力的原因,做得还不是很完美。在这学期的课程序设计中,收获知识的同时,还收获了阅历,收获了成

18、熟,通动手制作的过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、能力,在各种其它能力上也都有了提高。更重要的是,在课程序设计里,我们学会 了很多学习的方法,知道了理论和实践的巨大差别。而这是以后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。同时在与老师和同学的交流过程中,互动学习,将知识融会贯通。通过自己的努力,做出了一个万年历,对以后的学习是一个莫大的鼓舞,激起了我的学习兴趣和开发创新思维。在调试过程中主要的问题就是结果的显示问题,显示易错位。以及函数之间调用问题。对于这些问题,主要是翻阅书籍和在网络上寻找解决方案,以及自己亲自用找到的方法去测试,最终成功的解决了问题。通过这次课程设计,使我对C 语言了解不再停留在书面的了解,而是有了更深的理解,培养了自己的分析能力和设计能力,受益匪浅。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1