版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选安徽工业大学软件工程实验报告 PAGE 26 ?软件工程?实验报告 姓 名:江文杰 学 号:139074333 班 级:网133 指导老师:周兵 实验目的1能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。2在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。 3培养良好的软件开发习惯,了解软件企业文化。 4掌握结构化数据流分析技术。 5掌握结构化程序设计的根本概念与技术,并且养成良好的编码风格。 6掌握单元测试的一般步骤及技术。 7掌握集成测试的一般步骤和技术。实验内容软件需求分析 、功能需求分析输入一个年份1-3000,然后显示12个月的月历能解决闰年
2、和平年问题能输出显示结果、运行需求分析 操作系统: Windows9x, Windows2000, Windows XP及更高版本、数据流图是否闰年确定年份开始信息开始信息年份显示其他月份显示12月错误显示表头计算1月1日检查输入年份任意键年份年份非法显示2月显示1月 软件结构图:mainsetinit()output()inputyear()checkinput()setinfo()printmonth()printhead()isleap ()软件设计与编码#include #include #include #include #define firstdayof1 1 /* 定义第一年的
3、第一天, 星期日=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 p
4、rintmonth(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, otherwi
5、se ask user reenter */ int checkinput(void) int y; do y=inputyear(); if(y3000) printf(n输入错误!。nn); y=0; while(y1); 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 s80; int i, y; y=-1; printf(请输入年份(1-3000):)
6、; for(i=0;i80;+i) si=getchar(); if(si=27) exit(0); if(si=10) break; for(i=0;i80;+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; do printhead(monthinfo); prin
7、tmonth(monthinfo); printf(按任意键显视下一月, 按Esc键退出. n); ch=getchar(); if(ch=27) exit(0); monthinfo=setmonthinfo(monthinfo); while(monthinfo.month13);/* This module is to accept monthinfo, amd print monthly head like一 月 */void printhead(struct info monthinfo) char *ss; printf(%s,dent); switch(monthinfo.mon
8、th) 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%snn,gap
9、,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日nn,gap,gap,gap,gap,gap,gap); printf(%s,dent); for(i=1;imonthinfo.firstdayofmonth;i=i+1) printf(%s ,gap); k=mon
10、thinfo.firstdayofmonth; for(j=1;j7) 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+ mont
11、hinfo.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 i
12、s 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;iyear;i=i+1) if(isleap(i) days=366; else days=365 ; monthinfo.firstdayofmonth=(monthinfo.firstdayofmonth+days-1)%7+1; monthinfo.da
13、ysofmonth=31; monthinfo.leap=isleap(year); return monthinfo; void main()printf( tt* n);printf( tt欢送使用万年历演示程序 n);printf( tt* n); int year ; struct info monthinfo; year = checkinput(); monthinfo = setinit(year); output(monthinfo);单元测试白盒测试黑盒测试2023年三月四月五月六月2023年:总结和体会本次用C语言编写的万年历系统主要实现了年历、月历、日历的显示。我根本就不
14、喜欢敲代码了,看见代码就头疼。所以感觉厌恶这门专业,对学习也不感兴趣了。而且,还有一件更头疼的事是在写一个简单的程序时竟然老是出错,难一点的,复杂一点的程序竟然无从下手。但是去看程序的参考答案时都看得懂,又感觉很容易。学了软件工程以后,我就感觉我以前的学习方法是错误的。以前我只注重于代码,而不注重理论知识以及编程的思路,程序的架构。以至于在些程序时没有写程序的思路,不能形成程序的架构。只想到看脑袋里是否有与此类似的代码。越想程序越乱,最后脑袋里一片空白。不知道程序从哪个方面下手了。软件工程这门课程是做软件开发的人必学的课程,通过学这门课程,程序员就会注重软件开发的理论知识,以及做工程开发的思路
15、。学了这门课程后你写程序就不会去盲目的去套用代码,而是理清此程序的架构以及思路。程序该从什么时候开始,什么时候结束。在中间需要添加什么样的功能,以完善该软件。在设计初期,首先温习了课本内容,再次熟悉了一下C语言程序,然后广泛的查找有关万年历的资料,并结合查找到的资料,整理出设计的主要思路,画出流程图,最终写出了源程序,并编译成功,在实验中,碰到了不少问题,其中包括如何获取系统时间,如何计算任意时间的时间差,这些困难,都通过查阅资料和问同学得到了解决。当然,由于时间和能力的原因,做得还不是很完美。在这学期的课程序设计中,收获知识的同时,还收获了阅历,收获了成熟,通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、 动手制作的能力,在各种其它能力上也都有了提高。更重要的是,在课程序设计里,我们学会了很多学习的方法,知道了理论和实践的巨大差异。而这是以后最实用的,真的是受益匪浅。要面 对社会的挑战,只有不断的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防应急照明线路敷设管控要点
- 八年级语文使人伤脑筋的鸭嘴兽省公开课获奖课件市赛课比赛一等奖课件
- 2027届河北宇华教育集团物理九上期末检测模拟试题含解析
- 2027届安徽省宿州市鹏程中学化学九上期末经典模拟试题含解析
- 2027届陕西省汉中市名校化学九上期末学业水平测试试题含解析
- 四川省成都市新都区2027届九年级化学第一学期期中考试模拟试题含解析
- 2027届湖北省枝江市九校化学九上期中预测试题含解析
- X医院年度工作计划(2篇)
- 医院女工委工作计划(2篇)
- (2026)医院科室培训计划实施方案
- 露天矿山三级安全培训
- M+小牛电动车维修手册
- 2024年全国高考数学试题及解析答案(新课标Ⅱ卷)
- 2024届安徽省普通高校分类考试招生和对口招生文化素质语文模拟检测试题(含答案)
- (正式版)JB∕T 14732-2024 中碳和中碳合金钢滚珠丝杠热处理技术要求
- 2024年滨州传媒集团有限公司招聘笔试冲刺题(带答案解析)
- DL-T-5161.13-2018电气装置安装工程质量检验及评定规程第13部分:电力变流设备施工质量检验
- 护士实习:护士职业规划与发展路径
- UG NX 12.0三维建模及自动编程项目教程 课件 任务1.9虎钳零件建模及工程图制作
- 2023年昆山市档案局公开招聘1名公益性岗位工作人员(共500题含答案解析)笔试历年难、易错考点试题含答案附详解
- 公安局xx派出所业务用房建设可行性论证报告
评论
0/150
提交评论