版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程实验报告 姓 名:江文杰 学 号: 班 级:网133 指导老师:周兵 一 实验目的1能按照软件工程的思想,采用面向过程的方法开发出一个小型软件系统。2在软件系统开发过程中,能综合利用一门编程语言和软件工程等多门课程的知识。 3培养良好的软件开发习惯,了解软件企业文化。 4掌握结构化数据流分析技术。 5掌握结构化程序设计的基本概念与技术,并且养成良好的编码风格。 6掌握单元测试的一般步骤及技术。 7掌握集成测试的一般步骤和技术。二 实验内容1 软件需求分析 、功能需求分析输入一个年份(1-3000),然后显示12个月的月历能解决闰年和平年问题能输出显示结果、运行需求分析 操作系统: Wi
2、ndows9x, Windows2000, Windows XP及更高版本、数据流图是否闰年确定年份开始信息开始信息年份显示其他月份显示12月错误显示表头计算1月1日检查输入年份任意键年份年份非法显示2月显示1月 软件结构图:mainsetinit()output()inputyear()checkinput()setinfo()printmonth()printhead()isleap ()2 软件设计与编码#include #include #include #include #define firstdayof1 1 /* 定义第一年的第一天, 星期日=7 */#define gap /
3、* 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);str
4、uct 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
5、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):); for(i=0;i80;+i) si=getcha
6、r(); 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); printmonth(monthinfo); printf(按
7、任意键显视下一月, 按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.month) case 1: ss=一 月; break;
8、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,gap,gap,ss);/* This module
9、 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=monthinfo.firstdayofmonth; for
10、(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+ monthinfo.daysofmonth-1)%7+1; m
11、onthinfo.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 monthin
12、fo. */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.daysofmonth=31; monthinfo.lea
13、p=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);3 单元测试 白盒测试黑盒测试2015年三月四月五月六月2016年:三 总结和体会本次用C语言编写的万年历系统主要实现了年历、月历、日历的显示。我根本就不喜欢敲代码了,看见代码就头疼。所以感觉厌恶这
14、门专业,对学习也不感兴趣了。而且,还有一件更头疼的事是在写一个简单的程序时竟然老是出错,难一点的,复杂一点的程序竟然无从下手。但是去看程序的参考答案时都看得懂,又感觉很容易。学了软件工程以后,我就感觉我以前的学习方法是错误的。以前我只注重于代码,而不注重理论知识以及编程的思路,程序的架构。以至于在些程序时没有写程序的思路,不能形成程序的架构。只想到看脑袋里是否有与此类似的代码。越想程序越乱,最后脑袋里一片空白。不知道程序从哪个方面下手了。软件工程这门课程是做软件开发的人必学的课程,通过学这门课程,程序员就会注重软件开发的理论知识,以及做项目开发的思路。学了这门课程后你写程序就不会去盲目的去套用
15、代码,而是理清此程序的架构以及思路。程序该从什么时候开始,什么时候结束。在中间需要添加什么样的功能,以完善该软件。在设计初期,首先温习了课本内容,再次熟悉了一下C语言程序,然后广泛的查找有关万年历的资料,并结合查找到的资料,整理出设计的主要思路,画出流程图,最终写出了源程序,并编译成功,在实验中,碰到了不少问题,其中包括如何获取系统时间,如何计算任意时间的时间差,这些困难,都通过查阅资料和问同学得到了解决。当然,由于时间和能力的原因,做得还不是很完美。在这学期的课程序设计中,收获知识的同时,还收获了阅历,收获了成熟,通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、 动手制作的能力,在各种其它能力上也都有了提高。更重要的是,在课程序设计里,我们学会了很多学习的方法,知道了理论和实践的巨大差别。而这是以后最实用的,真的是受益匪浅。要面 对社会的挑战,只有不断的学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届郑州市高三下学期第一次联考物理试卷(含答案解析)
- 3×32000KVA全密闭富锰渣直流电炉项目可行性研究报告模板-申批立项
- 2024年品牌线下分销合作协议模板三篇
- 季度安全生产专项整治工作总结
- 少儿零食食用安全管控常识
- 跨境智算中心间电算协同中跨国算力绿电调度碳衍生品对冲-基于国际碳金融衍生品标准及算力绿电调度碳价格风险对冲机制规范分析
- 跨境算力中心与硝酸铵厂余热协同中跨国余热防爆算力监测-基于国际化工余热安全协会算力中心硝酸铵余热安全调度指南规范分析
- 跨境算力中心与光热储热协同中跨国储热罐热损耗算力监测-基于国际太阳能热发电协会储热系统能效监测指南规范分析
- 道路交通安全出行科普教育
- 网咖网吧日常安全巡查
- 公安刑侦业务知识培训课件
- 雷电灾害专项应急预案
- rma销货退回管理办法
- CJ/T 158-2002城市污水处理厂管道和设备色标
- 2025年版!药食同源物质目录(106种)
- 《海洋遥感技术》课件
- (高清版)DB23∕T 3699-2024 养老机构失智症老人照护规范
- DL∕T 802.8-2023 电力电缆导管技术条件 第8部分:塑钢复合电缆导管
- 变压器局部放电的
- 高中新生入学登记表
- 生猪屠宰场突发环境事件应急预案
评论
0/150
提交评论