您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > c语言课程设计万年历
摘要随着当今世界的快速发展和信息化时代的来临,各种各样的小型智能家电产品陆续出现在我们的生活中。日历是人们不可或缺的日常用品,但一般日历都为纸制用品,使用不便,寿命不长。但利用c语言编译出来的万年历可以使用长久,并且能够很好地查询日期,方便快捷,可以大范围的使用。本文通过c语言的编译,利用多个函数和数组,实现了对日期的快速查询。例如:输入年月日,可以快速查询年历、月历以及该日为星期几。关键词:万年历;函数;数组AbstractWiththeeraofrapiddevelopmentandinformationintheworldtocome,ofsmallintelligenthomeappliancesproductsofallkindshaveappearedinourlife.Thecalendaristhedailynecessitiesindispensable,buttheinconveniencetheyaregenerallypapergoods,lifeisnotlong.ButtheuseofClanguagecompilerfromthecalendarcanbeusedforlong,andisabletocheckthedate,convenient,canuseawiderangeof.Inthispaper,throughtheClanguagecompiler,usingmultiplefunctionandthearray,realizequickqueryonthedateofthe.Forexample:enterthedate,canquicklycheckthecalendar,calendar,thedayoftheweek.Keyword:Perpetualcalendar;Function;Array目录1概述..............................................................11.1设计题目及功能...............................................11.2使用的所有变量的声明........................................12总体设计..........................................................22.1应用到的C语言...............................................22.3功能模块图...................................................44调试分析.........................................................184.1年历的显示..................................................194.2月历的显示..................................................214.3日历的显示..................................................224.4退出程序...................................................245总结和体会.......................................................25参考文献...........................................................26致谢.............................................................2711概述1.1设计题目及功能题目:万年历课程设计功能:c语言实现万年历查询功能1、输入一个年份,在屏幕上输出该年的年历(包括每月的天数和所对应的星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐、美观,符合年历显示规范。假定输入的年份在1-9999年之间。2、输入年月,输出该月的月历。3、输入年月日,输出距今天还有多少天,是星期几,是否是公历节日。4、指定键盘的某些键,用于控制变换不同年、月、日的显示。即:当前若正在显示2011年的年历,按下键盘“←”方向键后,年历变为2010年的。1.2使用的所有变量的声明变量说明:(以下均为整型变量)year表示年份的变量month表示月份的变量day表示日期的变量select表示菜单选择的变量i表示月份的变量j表示一个月中的某一天的变量sum判断某天是一年中的第几天的变量number判断某天离公元1年1月1日还有几天的变量a[]表示每月天数的数组变量year1系统时间年份的变量month1系统时间月份的变量day1系统时间日期的变量22总体设计2.1应用到的C语言头文件:#includetime.h#includestdio.h#includemath.h#includewindows.h#includeconio.h在程序中应用了大量的自定义函数,都涉及为了使程序更简洁明了。其中:intisleap()/*判断是否为闰年*/inteachyeartotal()/*判断某天是一年中的第几天*/intweek()/*对天数进行判断确定是星期几*/voiddisplay1()/*输出年历*/voiddisplay2()/*输出月历*/intcounterdays()/*判断今天距特定日期的天数*/voidwhatweek()/*判断是星期几*/voidjieri()/*判断是否公历节日*/voidsetDay2()/*通过键盘“←”“→”控制月历的变换*/这些函数的定义极其相应的内部程序共同构筑起了这个万年历总程序。其中的isleap函数是用来判断输入的年份是否为闰年,实现了预计功能的第一个方面;theweek函数则是为了实现判断星期而编写的.32.2判断是否为闰年图2.1判断闰年开始输入yearYear%4==0Year%10!=0Yrea%400==0是闰年非闰年结束否是是否否是42.3功能模块图图2.2功能图开始1年历3日历2月历是是是输入年份输入年月日输入年月输出年历输出星期几输出月历键0退出是53详细设计源程序#includetime.h/*包含的头文件*/#includestdio.h#includemath.h#includewindows.h#includeconio.h#defineKEYNUMUp0x48/*宏定义*/#defineKEYNUMDown0x50#defineKEYNUMLeft0x4b#defineKEYNUMRight0x4d#defineKEYNUMPageUp0x49#defineKEYNUMPageDown0x51inteachyeartotal(intyear,intmonth,intday);/*函数声明*/intcounterdays(intyear,intmonth,intday);intnowtime(intyear,intmonth,intday);intweek(intyear,intmonth,intday);intmaxDay(intyear,intmonth);intisleap(intyear);voidwhatweek(intyear,intmonth,intday);voiddisplay(intyear,intmonth);voiddisplay2(intyear,intmonth);voiddisplay3(intyear,intmonth,intday);voidsetDay1(intyear,intmonth,intday);voidsetDay2(intyear,intmonth,intday);voidsetDay3(intyear,intmonth,intday);voidjieri(intmonth,intday);voiddisplay1(intyear);voidgetmenu();6voidmain()/*主函数*/{intyear,month,day,select;while(1){getmenu();printf(请输入相应数字:);/*菜单选择*/scanf(%d,&select);system(cls);switch(select){case1:/*当选择为1时显示年历*/printf(年历显示:输入年(如2011):);scanf(%d,&year);if(year0&&year10000)/*显示年份从0-10000*/{display1(year);/*调用函数*/printf(提示按↑:上一年按↓:下一年按其他键:返回菜单\n\n);setDay1(year,month,day);}elsesystem(cls);printf(输入无效,重新输入!\n);break;case2:/*当选择为2显示月历*/printf(月历显示:输入年月(如2011,6):);scanf(%d,%d,&year,&month);if(year0&&year10000&&month=1&&month=12){7display2(year,month);printf(提示按←:上个月按→:下个月按其他键:返回菜单\n\n);setDay2(year,month,day);}elsesystem(cls);printf(输入无效,重新输入!\n);break;case3:/*当选择为3时显示日期*/printf(日期显示:输入年月日(比如2011,6,23):);scanf(%d,%d,%d,&year,&month,&day);if(year0&&year10000&&month=1&&month=12&&day=1&&day=maxDay(year,month)){display3(year,month,day);printf(提示按PageUp:前一天按PageDown:后一天按其他键:返回菜单\n\n);setDay3(year,month,day);}elsesystem(cls);printf(输入无效,重新输入!\n);break;case4:exit(0);default:/*当输入其他数字时,输入无效,重新输入*/system(cls);printf(输入无效,重新输入!\n);8}}}intisleap(intyear)/*判断是否为闰年*/{if(year%4==0&&year%100!=0||year%400==0)return1;elsereturn0;}intmaxDay(intyear,intmonth)/*每月的天数*/{inta[]={31,28,31,30,31,30,31,31,30,31,30,31};/*每个月中的天数*/if(isleap(year))a[1]=29;/*闰年2月份有29天*/returna[month-1];}inteachyeartotal(intyear,intmonth,intday)/*判断某天是一年中的第几天*/{inti,sum=0;for(i=1;imonth;i++)sum+=maxDay(year,i);sum+=day;returnsum;}intweek(intyear,intmonth,intday)/*对天数进行判断确定是星期几*/{9intnumber=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number=number%7;returnnumber;}voiddisplay(intyear,intmonth)
本文标题:c语言课程设计万年历
链接地址:https://www.777doc.com/doc-6461847 .html