您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言程序设计 万年历
-1-华东交通大学理工学院C语言课程设计第1页共17页存档资料成绩:华东交通大学理工学院课程设计报告书所属课程名称车C语言程序设计课程设计题目万年历查询分院电信分院专业班级2013级电气工程及其自动化1班学号20130210470105学生姓名周利凯指导教师肖盛文2014年6月15日-2-华东交通大学理工学院C语言课程设计第2页共17页摘要通过C语言编程实现了一个万年历,能实现基本的万年历功能。通过本章的讲解,使读者能够明白万年历的实现原理和方法。万年历的实现核心是要判断闰年和根据给定的日期计算其对应的星期,并按照合适的方式输出日历.这都是本章向读者讲述的重点。另外,在当今社会万年历在生活起着越来越重要的角色,它悄无声息的走进我们的生活,还向读者讲述了怎样突出显示某个日期的方法,这会在实际应用中经常遇到。除了讲述万年历的实现方法外,本章还回顾了前面章节的知识,如光标定位﹑设置寄存器﹑产生中断﹑输出一个字符等,以及讲述系统日期﹑屏幕输出的方法等。关键字:C语言,函数,历法计算,万年历,中断。-3-华东交通大学理工学院C语言课程设计第3页共17页目录1.设计万年历目的---------------------------P42.万年历程序设计思路图解及其讲解-----------P53.万年历程序清单与编码----------------------P74.万年历的调试与分析------------------------P125.万年历的使用环境与说明--------------------P146.设计心得-----------------------------------P157.万年历参考文献------------------------------P168.致谢-----------------------------------------P17-4-华东交通大学理工学院C语言课程设计第4页共17页1.设计万年历的目的万年历慢慢的走进我们的生活,在我们生活中起着很重要的部分。虽然万年历几乎在每个电子产品中都能看到,我们时时刻刻都在用着它,但是又有多少人知道万年历真正的工作原理呢?所以一是了解万年历真正的原理,二是完成学校给予我们这里机会来与她亲密的接触万年历这个神奇的东西。同时通过显示年日历程序的设计,可以培养和利用C++语言进行程序设计的能力,加强函数的运用及对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养利用系统提供的标准函数及典型算法进行设计。出于兴趣爱好,我们选择做万年历这个任务,一是可以锻炼我们独立完成任务的本领,提高自己的认知能力。二是可以提高自己逻辑思维的严密性,因为C语言本就是一门对逻辑考察很强的一门学科,多一个逗号都不能使函数成立,平台就无法便以这个程序。-5-华东交通大学理工学院C语言课程设计第5页共17页2..万年历程序设计思路图解1.万年历总程序大体图解在本次的程序中,我们由浅及深,我们将年份赋值给y,判断y的值是否符合要求,y的值要大于1,否则结束程序。等y的值大于1时,我们将打印出输入年份的日历。2.万年历分步程序图解-6-华东交通大学理工学院C语言课程设计第6页共17页此为程序的的分步骤,因为有这些分步骤的模切配合,总程序才能得以顺利的进行。在这里我们运用了判断年份是否为闰年的重要公式:(a%400==0||a%100!=0&&a%4==0),与闰年平年和闰年一年第一天元旦的计算!3.万年历程序清单判断输入的年份是否为闰年闰年与平年的元旦的计算输入表头判断每月的天数判断每月的第一天填设置三个月打印成一排计算日期输出-7-华东交通大学理工学院C语言课程设计第7页共17页1.源程序:#includestdio.hintfdyear(inta){if(a%400==0||a%100!=0&&a%4==0)//判断是不是闰年return(a-1+a/4-a/100+a/400)%7;//闰年元旦计算elsereturn(a+a/4-a/100+a/400)%7;//平年元旦计算}intmain(){intn,i,y,fdmonth[12];printf(****************欢迎使用周利凯设计万年历****************\n);printf(本程序来至电气1班周利凯,请愉快使用!\n);printf(请输入年份:);scanf(%d,&y);if(y1)printf(输入的是错误年份。\n);-8-华东交通大学理工学院C语言课程设计第8页共17页else{n=(y%400==0||y%100!=0&&y%4==0);char*month[12]={Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};charweek[]=日一二三四五六;intdaysmonth[12]={31,28+n,31,30,31,30,31,31,30,31,30,31};//输入年份每个月的总天数printf(%d年的日历\n\n,y);for(i=0;i12;i++)//计算个月每个月的第一天{staticintday=0;fdmonth[i]=(day+fdyear(y))%7;day=day+daysmonth[i];}for(i=0;i12;i+=3)//每三个月并排打印{-9-华东交通大学理工学院C语言课程设计第9页共17页printf(%s%s%s\n,month[i],month[i+1],month[i+2]);chars[]=;printf(%-3s%s%-3s%s%-3s%s,s,week,s,week,s,week);for(intj=0;j6;j++)//每个月最多占行{for(intd=i;di+3;d++)//三个月并排打印每一行{printf();for(intn=0;n7;n++)//每一行有日{intk=1-fdmonth[d]+n+7*j;if(k1||kdaysmonth[d])printf();elseprintf(%-3d,k);//计算日期输入}-10-华东交通大学理工学院C语言课程设计第10页共17页}printf(\n);}printf(\n);}}}2.编码1判断闰年与平年{if(a%400==0||a%100!=0&&a%4==0)//判断是不是闰年return(a-1+a/4-a/100+a/400)%7;//闰年元旦计算elsereturn(a+a/4-a/100+a/400)%7;//平年元旦计算}2打印表头的制作intmain(){intn,i,y,fdmonth[12];printf(****************欢迎使用周利凯设计万年历****************\n);printf(本程序来至电气1班周利凯,请愉快使用!\n);printf(请输入年份:);3判断年分是否符合要求并算每月的第一天是周几?scanf(%d,&y);if(y1)printf(输入的是错误年份。\n);else{n=(y%400==0||y%100!=0&&y%4==0);char*month[12]={Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};charweek[]=日一二三四五六;-11-华东交通大学理工学院C语言课程设计第11页共17页intdaysmonth[12]={31,28+n,31,30,31,30,31,31,30,31,30,31};//输入年份每个月的总天数printf(%d年的日历\n\n,y);for(i=0;i12;i++)//计算个月每个月的第一天{staticintday=0;fdmonth[i]=(day+fdyear(y))%7;day=day+daysmonth[i];}4.设计三月成为一排与打印万年历for(i=0;i12;i+=3)//每三个月并排打印{printf(%s%s%s\n,month[i],month[i+1],month[i+2]);chars[]=;printf(%-3s%s%-3s%s%-3s%s,s,week,s,week,s,week);for(intj=0;j6;j++)//每个月最多占行{for(intd=i;di+3;d++)//三个月并排打印每一行{printf();for(intn=0;n7;n++)//每一行有日{intk=1-fdmonth[d]+n+7*j;if(k1||kdaysmonth[d])printf();elseprintf(%-3d,k);//计算日期输入}}printf(\n);}printf(\n);}}}-12-华东交通大学理工学院C语言课程设计第12页共17页4.万年历的调试与分析1.程序在刚开始运行时2我们任意输入一个年份如”2013”和”2014”-13-华东交通大学理工学院C语言课程设计第13页共17页-14-华东交通大学理工学院C语言课程设计第14页共17页3.输入不正确的格式如“0”4.输入“aaa”-15-华东交通大学理工学院C语言课程设计第15页共17页5.年历的使用环境与说明鄙人设计的万年历适合在在Visual6.00环境下使用C++语言编译后运行实现。在刚使用时可以看到居中的两行大字“欢迎使用周利凯设计万年历”与“本程序来自电气1班周利凯,欢迎使用!”。当输入小于1的年份时,程序会自动退出,当输入不符合年份的关键词时也会出现自动退出,如当输入“AA”时也会退出程序,自由当输入正确的年份时,就会打印出对应年份的日期与周数。6.设计心得通过本次课程设计我第一次通过自己的实践对书本上的知识进行了与生活相关的运用。在这个程序中,主要应用了这学期所学习的循环,条件语句,数组与调用函数。这些知识的的应用使我对课本内容的认识得到了加深。在编写程序的过程中,也出现了很多错误。比如程序语句错误导致检测时连续报错;函数语句编写错误导致输出结果与实际不相符合等。出现这些情况后,通过对一些新知识的学习和对网上相关资料的阅读,我发现了自己程序的问题所在并进行了改正。最后的到正确的结果。在程序编写完成后,我想对程序进行进一步的拓展。在输出年历的同时增加农历生肖功能,但是由于程序过于复杂,最终没有规定的时间内完成调试成功。-16-华东交通大学理工学院C语言课程设计第16页共17页7.万年历设计参考文献【1】.杨文君,杨柳C语言程序设计教程【M】清华大学出版社【2】.谭浩强,C语言程序设计【M】。清华大学出版社2007.6【3】.《C语言程序设计》精品课程【4】.C程序设计教程.北京:清华大学出版社.2007.07【5】.路俊维马雪松主编.C语言程序设计.中国铁道工业出版社.2009.06【6】.李丽娟C语言程序设计教程(第4版)人民邮电出版社20139【7】.百度文库-17-华东交通大学理工学院C语言课程设计第17页共17页8.致谢感谢肖盛文老师对我在完成C语言课程设计中的指导。在这次课程实验报告中,碰到过很多问题,而老师给了我指明灯的作用,他循循善诱的教导和不拘一格的思路给予我无尽的启迪,让我很快就感受到了设计的快乐并融入其中。其次我要感谢同学对我的帮助和指点,以及对我的鼓励和支持。
本文标题:C语言程序设计 万年历
链接地址:https://www.777doc.com/doc-5924716 .html