课程设计说明万年历程序设计.doc_第1页
课程设计说明万年历程序设计.doc_第2页
课程设计说明万年历程序设计.doc_第3页
课程设计说明万年历程序设计.doc_第4页
课程设计说明万年历程序设计.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高级语言程序设计课程设计说明书 设计题目:万年历程序设计 班 级: 学 号: 姓 名: 完成日期: 一:课程设计目的 高级语言程序设计课程设计是电子信息、光信息专业以及物理学专业集中实践性环节之一,是学习完高级语言程序设计课程后进行的一次全面的综合练习,其目的在于加深对程序设计基本知识的理解,掌握使用C语言进行模块化软件设计的基本方法,提高通过编写程序解决实际问题的能力,为今后从事设计工作和后续各种编程课程的学习打好基础。 二:需求分析题目:要求:输入年份和月份,自动输出该月的日历,清楚的显示每一天是星期几,输入年份,月份和具体日期能确定某天是星期几。万年历是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础的。因此,研究万年历及扩大其应用,有着非常现实的意义。它可以对年、月、日、周日、时、分、秒进行计时,对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。三:概要设计1判断是否为闰年计算所输入的年份是否可被4整除,若不能被整除,为平年。若可被4整除,计算此年份能否被100整除,不能被100整除则为闰年。既能被4整除,也能被100整除的年份,若也能被400整除,则为闰年,否则为平年。闰年366天,平年365天 2主要设计思路开始输入指令(1234)输入4退出判断是否为闰年1日历2月历3年历输入年月日数日年月输入年份按下回车可得星期几按下回车可得月历按下回车可得年历四:详细设计源程序:#include #include void DayOfWeek() int rtnDay; int y,m,d; char ch; while (1) printf(请输入年月日(xxxx,xx,xx): ); scanf(%d,%d,%d, &y, &m, &d); fflush(stdin); rtnDay = (3*y-(7*(y+(m+9)/12)/4+(23*m)/9+d+17-(y+(m=13|md=0) printf(HAVE WRONG!); else for(i1=0;md+,i1+) if(md=0) md=12; D-=1; else if(md=13) md=1; D+=1; m=md; printf(n=%d,%2d=n,D,md); if(0m&m=12) switch(m) case 1:maxday=31;break; case 2:if(D%4=0&D%100!=0|D%400=0) maxday=29; else maxday=28; break; case 3:maxday=31;break; case 4:maxday=30;break; case 5:maxday=31;break; case 6:maxday=30;break; case 7:maxday=31;break; case 8:maxday=31;break; case 9:maxday=30;break; case 10:maxday=31;break; case 11:maxday=30;break; case 12:maxday=31;break; default:printf(HAVE WRONG); if(0m&m=2) N=D-1; m=m+10; else N=D; m=m-2; c=N/100; y=N%100; Wd=(1+(13*m-1)/5+y+y/4+c/4-2*c)%7+7)%7; printf( SUN MOU TUE WED TUR FRI SATn); for(i=0;iWd;i+) printf(%4c, ); for(d=1;d=maxday;d+) printf(%4d,d); Wd=(Wd+1)%7; if(Wd=0) printf(n); else printf(HAVE WRONG!); if(i1=n) break; void MonthOfYear() char ch; int y, m; while (1) printf(请输入年月(xxxx,xx): ); scanf(%d,%d, &y, &m); fflush(stdin); GetMonth(y, m, 0); printf(n继续查询(y/n); ch = getchar(); if(ch != y & ch != Y) break; void GetYear() char ch; int y; while (1) printf(请输入年: ); scanf(%d, &y); fflush(stdin); GetMonth(y, 1, 11); printf(n继续查询(y/n); ch = getchar(); if(ch != y & ch != Y) break; int main() char ch; while(1) system(cls); printf(1.查询星期n); printf(2.查询月份n); printf(3.显示一年n); printf(4.退出程序n); ch = getchar(); fflush(stdin); switch(ch) case 1: DayOfWeek(); break; case 2: MonthOfYear(); break; case 3: GetYear(); break; case 4: printf(是否退出(y/n)); ch = getchar(); fflush(stdin); if(ch = y | ch = Y) exit(0); break; 五:运行效果及分析1 登录界面输入3,通过输入年份可显示一年每个月份的日历;输入2,通过输入年份和月份(中间以空格分开)可显示该月的日历;若输入1,通过输入年份月份和日期(中间以逗号分开)可显示该日的星期;输入4,则退出查询系统2查询星期 输入1后回车,然后输入具体的年月日可查出该天为星期几3查询月历输入2回车,然后输入年月可显示该月月历4显示一年输入3后回车,输入一个有效年份可显示该年的十二个月的月历。六:课程设计心得通过本次课程设计我第一次通过自己的实践对书本上的知识进行了与生活相关的运用。在这个程序中,主要应用了这学期所学习的循环,条件语句,数组以及调用函数。这些知识的应用使我对课本内容的认识得到了加深。 在编写程序的过程中,也出现了很多错误。比如程序语句错误导致检测时连续报错;函数语句编写错误导致输出结果与实际不符等。出现这些情况后,通过对一些新知识的学习和对网上相关资料的阅览,我发现了自己的程序的问题所在并进行了改正。最后得到了正确的结果。 在程序的编写完成后,我按照要求对程序进行了拓展。在输出年历的基础上增加了月历及确定日期的输出。经过这一次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论