安徽工业大学软件工程实验报告.doc
《安徽工业大学软件工程实验报告.doc》由会员分享,可在线阅读,更多相关《安徽工业大学软件工程实验报告.doc(8页珍藏版)》请在咨信网上搜索。
《软件工程》实验报告 姓 名:江文杰 学 号:139074333 班 级:网133 指导老师:周兵 一. 实验目的 1.能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。 2.在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。 3.培养良好的软件开发习惯,了解软件企业文化. 4.掌握结构化数据流分析技术。 5.掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格。 6.掌握单元测试的一般步骤及技术。 7.掌握集成测试的一般步骤和技术。 二. 实验内容 1. 软件需求分析 ①、功能需求分析 ·输入一个年份(1—3000),然后显示12个月的月历 ·能解决闰年和平年问题 ·能输出显示结果 ②、运行需求分析 · 操作系统: Windows9x, Windows2000, Windows XP及更高版本 ③、数据流图 是否闰年 确定年份 开始信息 开始信息 年份 显示其他月份 显示12月 错误 显示表头 计算1月1日 检查输入 年份 任意键 年份 年份 非法 显示2月 显示1月 软件结构图: main setinit() output() inputyear() checkinput() setinfo() printmonth() printhead() isleap () 2. 软件设计与编码 #include 〈stdio。h〉 #include 〈ctype。h〉 #include <stdlib。h> #include <math.h> #define firstdayof1 1 /* 定义第一年的第一天, 星期日=7 */ #define gap " " /* 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 printmonth(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, otherwise ask user reenter */ int checkinput(void) { int y; do{ y=inputyear(); if(y<1 || y 〉3000) { printf(”\n输入错误!。\n\n”); y=0; } }while(y〈1); return y; } /* This function is to accept the input year, if it is the integer, it returns it, otherwise it return —1 */ int inputyear(void) { char s[80]; int i, y; y=—1; printf(”请输入年份(1—3000):”); for(i=0;i〈80;++i) { s[i]=getchar(); if(s[i]==27) exit(0); if(s[i]==10) break; } for(i=0;i〈80;++i) { if(s[i]==10) break; else if(!isdigit(s[i])) 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; do{ printhead(monthinfo); 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; printf(”%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: ss="六 月”; break; case 7: ss="七 月"; break; case 8: ss=”八 月”; break; case 9: ss="九 月"; break; case 10: ss=”十 月"; break; case 11: ss="十一 月”; break; case 12: ss=”十二 月”; } printf(” %s%s%s%s\n\n",gap,gap,gap,ss); } /* This module is to accept monthinfo, and print the numbered dates of the month。 */ void printmonth(struct info monthinfo) { int i,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;i〈monthinfo。firstdayofmonth;i=i+1) { printf("%s ”,gap); } k=monthinfo.firstdayofmonth; for(j=1;j〈=monthinfo。daysofmonth;j=j+1) { if(k〉7) { k=k—7; printf(”\n\n%s”,dent); }; k=k+1; printf(”%2d%s”,j,gap); } printf(”\n\n”); } /* 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.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; else monthinfo。daysofmonth = 28; } return monthinfo; } /* This module is to initialize 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; else days=365 ; monthinfo。firstdayofmonth=(monthinfo。firstdayofmonth+days—1)%7+1; } monthinfo.daysofmonth=31; monthinfo。leap=isleap(year); return monthinfo; } void main(){ printf(" \t\t************************************ \n"); printf(” \t\t欢迎使用万年历演示程序 \n"); printf(” \t\t************************************ \n”); int year ; struct info monthinfo; year = checkinput(); monthinfo = setinit(year); output(monthinfo); } 3. 单元测试 ①. 白盒测试 ②.黑盒测试 2015年 三月四月 五月六月 2016年: 三. 总结和体会 本次用C语言编写的万年历系统主要实现了年历、月历、日历的显示。我根本就不喜欢敲代码了,看见代码就头疼。所以感觉厌恶这门专业,对学习也不感兴趣了。而且,还有一件更头疼的事是在写一个简单的程序时竟然老是出错,难一点的,复杂一点的程序竟然无从下手。但是去看程序的参考答案时都看得懂,又感觉很容易。学了软件工程以后,我就感觉我以前的学习方法是错误的。以前我只注重于代码,而不注重理论知识以及编程的思路,程序的架构.以至于在些程序时没有写程序的思路,不能形成程序的架构.只想到看脑袋里是否有与此类似的代码。越想程序越乱,最后脑袋里一片空白。不知道程序从哪个方面下手了。软件工程这门课程是做软件开发的人必学的课程,通过学这门课程,程序员就会注重软件开发的理论知识,以及做项目开发的思路。学了这门课程后你写程序就不会去盲目的去套用代码,而是理清此程序的架构以及思路。程序该从什么时候开始,什么时候结束.在中间需要添加什么样的功能,以完善该软件。 在设计初期,首先温习了课本内容,再次熟悉了一下C语言程序,然后广泛的查找有关万年历的资料,并结合查找到的资料,整理出设计的主要思路,画出流程图,最终写出了源程序,并编译成功,在实验中,碰到了不少问题,其中包括如何获取系统时间,如何计算任意时间的时间差,这些困难,都通过查阅资料和问同学得到了解决。当然,由于时间和能力的原因,做得还不是很完美。 在这学期的课程序设计中,收获知识的同时,还收获了阅历,收获了成熟,通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、 动手制作的能力,在各种其它能力上也都有了提高。更重要的是,在课程序设计里,我们学会了很多学习的方法,知道了理论和实践的巨大差别。而这是以后最实用的,真的是受益匪浅。要面 对社会的挑战,只有不断的学习、实践,再学习、再实践。同时在与老师和同学的交流过程中,互动学习,将知识融会贯通。通过自己的努力,做出了一个万年历,对以后的学习是一个莫大的鼓舞,激起了我的学习兴趣和开发创新思维。 在调试过程中主要的问题就是结果的显示问题,显示易错位.以及函数之间调用问题。对于这些问题,主要是翻阅书籍和在网络上寻找解决方案,以及自己亲自用找到的方法去测试,最终成功的解决了问题。 通过这次课程设计,使我对C语言了解不再停留在书面的了解,而是有了更深的理解,培养了自己的分析能力和设计能力,受益匪浅。 7- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安徽 工业大学 软件工程 实验 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文