版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XXXXXXXX电子工程系C语言课程设计报告题目名称: 年历显示设计 学生姓名: XXXXXX 学号: XXXXXXXXXXXXX 专业: 电子信息工程 同组成员: XXXXXXXXXXX 2013年12月制成绩: 一、设计题目:题目五,年历显示设计二、设计任务及自己所承担部分设计任务:(1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1950-2050年之间。(2)输入年月,输出该月的日历。(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。自己所承担部分:程序的测试以及运行三、总体设计(程序设计组成框图、流程图)程序组成框图:年历显示设计输出年日历输出月日历输出
2、详细信息流程图:开始点击进入功能选项查询月日历查询详细信息查询年日历输出详细信息输出月日历输出年日历显示结果是否继续四、详细设计(模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等)当我们输入年份任意公元后的年份year时,可以通过一个for语句,算出从公元一年到year-1年的总天数,这其中要注意平年与闰年的区别,平年365天,闰年是366天,把这一部分用how()函数表示。算出总天数Z后,用Z除以7余数是d,则year这一年的一月一日便是星期d。如此则一月的日历可表示出来。然后把Z加上一月的天数tian得到的新值赋给Z,再用Z除以7,重新得到新的余数d,如此可知二月的第一天是
3、星期几,可表示出二月的日历。依次循环,用for(i=0;i=(10+w)就累加否则=输出空格。c. 功能B:查询某一年某一月的月历,和上面一样需要判断是否为闰年,不同之处是星期数由w=(y-1+(y-1)/4-(y-1)/100+(y-1)/400+s+1)%7给出。d. 功能C:查询某一年某一月某一天的具体信息。利用s来计算出当前与你所要查询某一天所想差的天数,具体思想为:两个都利用了for循环语句,循环起点同为0,也就是他们开始记年的时间相同,先计算整年之间所相差的天数y1并判断循环之间的年份是否为闰年,如果是加366否则加365.然后判断月份的天数,也是利用for循环通过调用数组中的满足
4、条件的元素累加月分所经过的天数m1.则sum1=y1+m1+d1.和上面一样计算所要查询的天数总和sum=y+m,s=sum1-sum,判断这一天的星期数由公式w=(y-1+(y-1)/4-(y-1)/100+(y-1)/400+s)%7判断。公历信息应提前输入一个公历信息库,利用条件语句判断如果满足输出该节日。要解决的主要问题为:(1) 找到日期和星期几之间的对应关系。(2) 闰年的判断可以构造一个函数来实现:int IsLeapYear( int year );每月对应的天数可以利用一个一维数组month_day来存储;为显示一年当中的各个月份可用switch-case分支结构。五、调试与
5、测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施测试方法:运用c+语言程序运行。具体步骤:编译,组建,执行测试遇到的问题:(1)函数的调用与套用,具体来说就是如何在一个构造的函数中调用另一个构造函数。(2)把每月的日历设计的美观,如何让星期和下面的数字对齐。(3)如何把握日历的前几天的空格,使每月的第一天正好对在它应该的星期下。测试结果:刚开始未能出来正确结果,有很多错误,但是我们根据c语言程序中的提示一步步的解决,找到问题出来的地方,再不行的地方大家一起讨论,实在不行的我们就上网查资料,仿照别人的程序和思路进行修改,最终取得成功。 六、运行结果程序界面程序功能A
6、:输出年日历程序功能B:输出月日历程序功能C:输出详细信息七、教师评语程序代码:#includemain()int y,m,d,w,k,s,i,j;int a12=31,28,31,30,31,30,31,31,30,31,30,31;char p,q;printf(查询项目A:查询1940-2040年的年历表.n); printf(查询项目B:查询某年某月的日历表.n); printf(查询项目C:输入年月日查询当天信息.nn);doprintf(请输入你所要查询的项目(输入A或者B或者C));scanf( %c,&p);if(p=A)/*打印某年的年历表*/printf(请输入你想知道的年
7、份:); scanf(%d,&y);printf(n); printf(=%d年公历表=nn,y); w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7; if(y%4=0&y%100!=0)|y%400=0) a1=29; for(i=0;i12;i+) d=0; printf(=%2d月=n,i+1); printf( SUN MON TUE WED THU FRI SATn); for(j=1;j=6;j+) for(k=0;k=(10+w) d=d+1; if(dai) printf(n); break; else printf(%5d,d); w=k+1; if(
8、w=7) w=0; printf(n); else printf( ); printf(=n);/*打印某年某月的日历表*/if(p=B) printf(请输入你想知道的年 月:); scanf(%d %d,&y,&m);printf(n); printf(=%d年%d月=nn,y,m); if(y%4=0&y%100!=0)|y%400=0) a1=29; s=0; for(i=0;im-1;i+)s=s+ai; w=(y-1+(y-1)/4-(y-1)/100+(y-1)/400+s+1)%7; printf( SUN MON TUE WED THU FRI SATn); d=0; for
9、(j=1;j=6;j+) for(k=0;k=(10+w) d=d+1; if(dai) printf(n); break; else printf(%5d,d); w=k+1; if(w=7) w=0; printf(n); else printf( ); printf(=n);/*某年某月某日的信息查询*/ if(p=C)/*计算这天距今天多少天*/int y1,m1,d1,sumy,sumy1,summ,summ1,sum,sum1;sumy=0;sumy1=0;summ=0;summ1=0;sum=0;sum1=0;printf(请输入今天的日期:年 月 日);scanf(%d %d
10、%d,&y1,&m1,&d1);printf(请输入你所要查询的年 月 日);scanf(%d %d %d,&y,&m,&d);printf(n);printf(你所查询的%d年%d月%d日的信息如下:n,y,m,d);printf(=n);for(i=0;iy1;i+)if(i%4=0&i%100!=0)|i%400=0)sumy1=sumy1+366;else sumy1=sumy1+365;for(j=0;jm1-1;j+)summ1=summ1+aj;sum1=sumy1+summ1+d1;for(i=0;iy;i+)if(i%4=0&i%100!=0)|i%400=0)sumy=su
11、my+366;else sumy=sumy+365;for(j=0;j0) printf(| 距离今天已过 %-8d天 |n,s);if(s0) printf(| 距离今天还有 %-8d天 |n,-s);if(s=0) printf(| 你所查询的就是今天 |n);/*计算要查询的这一天是星期几*/ s=0; for(i=0;im-1;i+)s=s+ai; s=s+d;w=(y-1+(y-1)/4-(y-1)/100+(y-1)/400+s)%7;switch(w)case 1: printf(| 星期一 |n);break; case 2: printf(| 星期二 |n);break; c
12、ase 3: printf(| 星期三 |n);break; case 4: printf(| 星期四 |n);break; case 5: printf(| 星期五 |n);break; case 6: printf(| 星期六 |n);break; case 0: printf(| 星期天 |n);break;/*查看该日是否有节日*/ if(m=2&d=2) printf(| 世界湿地日 |n); if(m=2&d=13) printf(| 明天情人节了 |n); if(m=2&d=14) printf(| 今天是情人节了 |n); if(m=3&d=1) printf(| 国际海豹日
13、|n); if(m=3&d=3) printf(| 全国爱耳日 |n); if(m=3&d=8) printf(| 3.8妇女节 |n); if(m=3&d=12) printf(| 植树节 |n); if(m=3&d=14) printf(| 国际警察日 |n); if(m=3&d=15) printf(| 消费者权益日 |n); if(m=3&d=17) printf(| 国际航海日 |n); if(m=3&d=21) printf(| 世界森林日 |n); if(m=3&d=23) printf(| 世界气象日 |n); if(m=3&d=24) printf(| 世界防治结核病日 |n
14、); if(m=4&d=1) printf(| 愚人节,小心上当 |n); if(m=4&d=7) printf(| 世界卫生日 |n); if(m=4&d=8) printf(| 复活节 |n); if(m=4&d=13) printf(| 黑色星期五 |n); if(m=5&d=1) printf(| 劳动节 放假 |n); if(m=5&d=4) printf(| 青年节 |n); if(m=5&d=8) printf(| 世界红十字日 |n); if(m=5&d=12) printf(| 国际护士节 |n); if(m=5&d=5) printf(| 近日注意母亲节 |n); if(m
15、=5&d=15) printf(| 国际家庭日 |n); if(m=5&d=31) printf(| 世界无烟日 |n); if(m=6&d=1) printf(| 国际儿童节 |n); if(m=6&d=5) printf(| 世界环境日 |n); if(m=6&d=26) printf(| 国际禁毒日 |n); if(m=6&d=6) printf(| 全国爱眼日 |n); if(m=6&d=13) printf(| 近期注意父亲节 |n); if(m=7&d=1) printf(| 香港回归纪念日 |n); if(m=7&d=7) printf(| 抗日战争纪念日 |n); if(m=7
16、&d=11) printf(| 世界人口日 |n); if(m=8&d=1) printf(| 八一建军节 |n); if(m=8&d=8) printf(| 中国男子节 |n); if(m=8&d=15) printf(| 抗日战争胜利纪念日 |n); if(m=9&d=10) printf(| 中国教师节 |n); if(m=9&d=18) printf(| 九一八事变纪念 |n); if(m=9&d=20) printf(| 国际爱牙日 |n); if(m=9&d=27) printf(| 世界旅游日 |n); if(m=10&d=1) printf(| 中国国庆节 |n); if(m=10&d=4) printf(| 世界动物日 |n); if(m=10&d=24) printf(| 联合国日 |n); if(m=10&d=12) printf(| 明天国际教师节 |n); if(m=10&d=13) printf(| 国际教师节 |n); if(m=11&d=10) printf(| 世界青年节 |n);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 助动车历史文化传播创新创业项目商业计划书
- 多功能帽子设计创新创业项目商业计划书
- 2025年医疗健康服务合同规范
- 多功能战术背包(含防身工具)创新创业项目商业计划书
- 指纹加密数据存储设备创新创业项目商业计划书
- 2025年电工工艺作业试题及答案
- 农产品长途运输路径创新创业项目商业计划书
- 低段识字教学的方法和策略
- 2026年中国泵用输液器行业市场规模及投资前景预测分析报告
- 2026年中国保温水杯行业市场前景预测及投资价值评估分析报告
- 银行面试题目100及最佳答案
- 阴道上皮内瘤变诊治中国专家共识(2024年版)解读
- DB42-T 1989-2023 城乡公益性安葬设施建设与管理规范
- 2025国家开放大学《小学语文教学研究》形考任务1-5答案
- 肠内营养支持护理指南
- 教师名师笔试题库及答案
- 铁路营业线施工安全管理实施细则
- 2025年共同策划城市更新改造项目策划协议
- 生物样本库标准操作流程
- 人教版初一到初三英语单词
- 循证思维在临床护理教学中的应用
评论
0/150
提交评论