课程设计题目:万年历

上传人:工**** 文档编号:564893275 上传时间:2024-03-09 格式:DOCX 页数:5 大小:15.22KB
返回 下载 相关 举报
课程设计题目:万年历_第1页
第1页 / 共5页
课程设计题目:万年历_第2页
第2页 / 共5页
课程设计题目:万年历_第3页
第3页 / 共5页
课程设计题目:万年历_第4页
第4页 / 共5页
课程设计题目:万年历_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《课程设计题目:万年历》由会员分享,可在线阅读,更多相关《课程设计题目:万年历(5页珍藏版)》请在金锄头文库上搜索。

1、一课程设计题目:万年历 二题目要求:(1) 程序运行的开始显示当前份的年年历(2) 能够按照输入的年份显示月历(3) 当输入小于1900 的年份时退出程序三题目分析: 课程设计题目的分析,功能模块的划分。(1)首先要根据起始年份判断每年的第一天是周几,然后根据周几控制每月的 第一行输出的空格!(2)判断每年是否为闰年,并设置相关的 2月份的天数! 四模块设计(流程图): 各个模块的设计说明,包括模块的名称、功能、入口参数说明与返回值说明,以 及各个模块实现过程的说明(必要时画出流程图)。(1)main 函数: 该函数为程序入口,通过一个 do-while 来实现当输入年数小 于 1900 时程

2、序退出,否则 main 函数调用 calculate 函数,并将输入年数作为参 数传递给 claculate 函数!(2) calculate函数:该函数有一个参数,为ma in函数传递进来的输入年份, 返回类型为void,该函数负责从ma in函数中承接输入年份并显示出来,然后 调用standpirnt函数(3) standpirnt 函数:该函数有一个参数,为 calculate 函数传递进来的输入年 份,返回类型为void,该函数负责实现标准的日历格式输出,根据循环次数设定 每月的天数,并且通过tag与tag2来控制每个月的月首的空格!并且通过调用 dayOfweek获得输入年份的第一天

3、是周几,并且输出相应空格!(4) dayOfweek函数:该函数有一个参数,是输入的年数,返回值为该年的第 一天是周几,该函数负责返回输入年数的第一天是周几,并输出一个与周几匹配 的空格数!五源代码: 各个模块实现的源代码。main 函数:void main() int input = 0;int jude = 1;do printf(please input a year!n);scanf(%d,&input);if(input = 1900) printf(DATA ERROR !);jude = 0;printf(the year is %dn,input);/这里判断是否闰年! if(

4、jude) calculate(input); while(jude);*Calculate 函数: /该函数负责显示年份并且调用 standpirnt 函数! void calculate(int year) printf(%dn,year);standpirnt(year);/ dayOfweek(year);standpirnt 函数void standpirnt(int year) /这里测试日历格式输出 int date31 = 0;for(int i=0; i31; i+) datei = i+1;int input = year;int tag = 0;int tag2 = 0;

5、int leap = 0;int ccyd = 0;int bug = 0;for(int j=0; j12; j+) printf(*n);printf(”d 年 d 月n,input,(j+1);printf(*n);printf(日一二三四五六n);/设定月份的天数!if(input % 4 =0 | input %100 =0 & input%400 != 0) ccyd = 1;switch(j+1) case 1: leap = 31;break;case 2: ccyd?leap = 29:leap = 28;break;case 3: leap = 31;break;case

6、4: leap = 30;break;case 5: leap = 31;break;case 6: leap = 30;break;case 7: leap = 31;break;case 8: leap = 31;break;case 9: leap = 30;break;case 10: leap = 31;break;case 11: leap = 30;break;case 12: leap = 31;break;/这里控制跳转换行!for(int k =0; kleap; k+) if(k=0 & j = 0) tag = dayOfweek(input);if(tag = 7)

7、tag = 0;else if(k=0) switch(tag2) case 0:printf(); break;case 1:printf(); break;case 2:printf(); break;case 3:printf(); break;case 4:printf(); break;case 5:printf(); breakcase 6:printf(); break;printf(%3d,datek);tag +;/新加的if(datek = leap) tag2 = tag - 1;if(tag=7) printf(n); tag = 0;printf(n); dayOfw

8、eek 函数: /该函数负责判断输入年数的第一天是周几 int dayOfweek(int dayy) int value = 0; int input2 =dayy ;int start = 1990;int days = 1; days = input2 - start;int total = 0;int years100000 = 0; for(int i=0; idays; i+) yearsi = start + i;if(yearsi % 4 = 0 | (yearsi %100 =0 & yearsi %400 !=0) printf(是闰年!);total += 366;els

9、e/平年!total += 365; int week = total % 7; switch(week) case 0: value = 1;printf( ); break;case 1: value = 2; printf( ); break;case 2: value = 3;printf( ); break; case 3: value = 4;printf( ); break; case 4: value = 5;printf( ); break; case 5: value = 6;printf( ); break; case 6: value = 7;printf(); bre

10、ak;return value; 六测试与调试: 设计系统及各模块的测试方法、测试方案。(1) 完成main函数后,通过输入小于1900函数观察程序是否退出来测试程序 main 模块是否正常!(2) 完成calculate函数后,在ma in中调用calculate函数,在calculate中输 出相关信息来判断calculate函数是否正常!(3) 完成standpirnt函数后,在calculate函数中调用,观察在控制台输出的日 历格式是否正确!(4) 完成dayOfweek函数后,在standpirnt函数中调用,最终观察输出情况! 七课程设计总结:(1) 通过该课程设计,增强了对C语言中函数调用,与换行跳转的理解与掌握。(2) 加深了对面向过程编程思想的理解!(3) 对万年历的具体实现有了深刻的理解!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号