C语言万年历课程设计报告书_第1页
C语言万年历课程设计报告书_第2页
C语言万年历课程设计报告书_第3页
C语言万年历课程设计报告书_第4页
C语言万年历课程设计报告书_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言课程设计报告书万年历系统设计学院:理学院专业:信息与计算科学姓名:指导教师:2012年6月10日序言经过一个学期对 C 程序设计的学习,同学们都认为真正的学到了有 用知识,可能有一些人学的不够理想,但无论如何,这些知识都为我们的下 一步学习打下了坚实的基础。 做这么一个课程设计, 一方面是为了检查我们 一个学期来我们学习的成果, 另一方面也是为了让我们进一步的掌握和运用 它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。本程序是一个万年历程序,可以查询 1970 年 1 月 1 日到 2100 年 1 月 1 日中任意一天是星期几,只要在运行程序时按照要求输入年,月,日,程序

2、 就会把这一天是星期几显示子啊屏幕上;也可以输入一个年份和一个月份, 程序就会把该月份的月历显示在屏幕上, 使人一目了然。 该程序能与目前天 文学研究中所采用的各种日历程序所能计算的结果相一致。 还有许多功能等 着你去探讨。这个程序花费了很多时间,用了一天的时间去设计程序和调试程序, 而在调试程序的过程中, 经常会出现一些不如意的地方, 所以程序就要修改。 所以这样经过一次又一次的修改之后,程序更显得人性化。通过这一次程序的设计,让我深深的感受到程序员的辛苦。【课程设计题目:万年历系统】【要求】1:程序的功能多样;2 :输入日期能够判断该日期是星期几;3 :输入一个年份能够显示出该年的全部月历

3、;4 :输入一个年月能够显示该月的月历;5 :输入一个年份能够判断该年是闰年还是平年;6 :能够退出【系统功能模块图】主要功能模块1:输入 year, month, day计算mon th与当年的1月间隔了多少天rr=r+(year/4)*1461+(year%4)*365+dayr=r%7r=0r=1r=2r=3r=4r=5r=6SatSunMonTueWedThuFirY或y返回菜单其他输入均退出程序代码:pr in tf(please in put the day you wan t(2100,1,1*,*,*1970,1,1):);sea nf(%d,%d,%d, &year,&mon

4、 th, &day); for(b=O,r=O;b2006)days=(year-2006)*365+co un t_leap(year)+m on thdays(m on th,year);weekday=days%7;else if(year2006)days=(2005-year)*365+co un t_leap(year)+m on thdays(m on th,year);weekday=7-days%7;elsedays=mon thdays(m on th,year);weekday=days%7;for (i=1;iweekday+2;i+)printf (t);for (i

5、=1;i=y;i+)if (i+weekday-1)%7=0) pri ntf (nt%3dt,i);else printf (%3dt,i);主要功能模块3 :输入的年份闰年每年为366天返回该年的天数程序代码: int i;if (year%4=0&year%100!=0|year%400=0) i=1; else i=0;return i;用到的语句】1.,2.main() /*3.printf(),4.scanf()5.a /*6.if 语句7.for 语句8.void /*/* 头文件 */主函数 */数组 */要调用到的函数 */【源程序代码】#include#include 主函

6、数int main() / int leap_year(int y);int count_leap(int year);定义变量int monthdays(int month,int year); void monthprint(int year,int month); int year,month,day,b,r,number; /char choose;int a=0,31,28,31,30,31,30,31,31,30,31,30,31;printf( *mainMeun*n);printf(1:ri qixing qi ji.n);printf(2:yue li.n);printf(3

7、:ri li.n);printf(4:run nian pan duan. n);printf(5:exitn);printf(n);printf(*n);printf ( please input the number:);scanf(%d,&number);if(number=1)printf(please input the day you want(2100,1,1*,*,*1970,1,1):);间隔了多少scanf(%d,%d,%d,&year,&month,&day); /for(b=0,r=0;b*0):);scanf(%d,&year); / 输入要查询的年份 for(mon

8、th=1;month*,*1970,1):);scanf(%d,%d,&year,&month); / 输入要查询的年,月printf(%dyear %dmonthn,year,month);printf(*n);printf( Sun Mon Tue Wen Thu Fri Satn); monthprint(year,month); / printf(n);printf(*n);choose=getchar();printf(Continue?(y/n):nn);scanf(%c,&choose);if (choose=y|choose=Y) main(); else if(number=

9、4) printf( please input a year5000*0:);scanf(%d,&year); / 输入要查询的年份 if(leap_year(year)printf(This is runyear.n);else printf(This is pingyear.n); choose=getchar();printf(Continue?(y/n):nn); scanf(%c,&choose);if (choose=y|choose=Y) main();else / 选择其他则退出 return 0;int leap_year(int year)/ 判断是否闰年 int i;if

10、 (year%4=0&year%100!=0|year%400=0) i=1;else i=0;return i;int count_leap(int year) int i=0,j,min,max;if(year2006) min=2006;max=year;else min=year+1;max=2006;for(j=min;j=2006) static int t12=31,0,31,30,31,30,31,31,30,31,30,31;j=month-1; if(leap_year(year) t1=29;else t1=28; for(i=0;ij;i+) sum=sum+ti;el

11、se static int t112=31,30,31,30,31,31,30,31,30,31,0,31; j=12-month;if(leap_year(year) t110=29;else t110=28;for(i=0;i2006)days=(year-2006)*365+co un t_leap(year)+m on thdays(m on th,year);weekday=days%7;else if(year2006)days=(2005-year)*365+co un t_leap(year)+m on thdays(m on th,year);weekday=7-days%7

12、;elsedays=mon thdays(m on th,year);weekday=days%7;for (i=1;iweekday+2;i+)/输出该月第一天所在位置之前的空格printf (t);for (i=1;ixing vue 1 i *man panqi Ji duan.please input ihe number:分析:运行后出现“菜单”,选项意思是:输入1,则确定一个日期是星期几。 输入2,则是查询某年的12个月历。 输入3,则是查询某年某月的月历。4,则是判断输入年是闰年还是平年。5,退出。2:选择1后,再根据提示输入结果输出:* , * : 2011,10,28ram

13、C :W I ndowssyEtem 3 2cmd. exe1235xkk打存何已丄nEeun :ri qi xi ng :yue 1i.:ri liU1 JI.回S3:run man pan :ex 11tiuan .please input the number:1please input the day you want(2100,1,!*,* *1970,1,1):2011.10,28fFSH CXAfiindowsYsyste-m 3 2cmid .cxe123ibplease input the number:1p 1 case iripLi t the day you want

14、(2100,1,1- ,1970,1,1 ) : 2011* 10,28Cont inne?(y/n):Today i s f i relay .分析:输入你要查询的年月日后, 程序会经过计算输出该日的星期号。然后,输出结果后,系统会询问你是否继续,输入y或Y,继续;输入N或n或其他字母都会直接退出。3:选择y后结果输出:曰工 nMuLin*:ri xing 1970.11): 2011,10 28Con t iriiLie? ( y/ri ):Todaiy is F i rday ,*11101 nnieun* :r i oixing qi j i - :yue 1i :ri 1 i B:r

15、uni niarti p&n duan,:exi Iplease input the number:4:选择2后,再根据提示输入你想查询的年份2012结果输出:I r12345li.1 i .panmamMeun口 i i i duan .pl ease input the number- : 2inpul the yeur(5000 *0 J :2012H * tw* A307/U * s 112 i * n29630 * F 123M;* h 18 5 2 9 - 2122 * 1* 2 * n 41 1 * c 23 Jt 0 杆u?* 27il8 - 1122 * 0 H 26307

16、H122 Htales?9s1?M -1741812?63071225296418s11229M* 0 22 * M5296 H112H30741112318 *22 *4185 H112 29600120Conlinue?(y/n):分析:输入你要查询的年份后,系统会经过计算得出每月的月历,然后输出。但因为输出窗口限制,结果只能看到 部分。同样的,输出结果后,系统仍然会询问是否继续。5:选择3后,再根据提示输入你要查询的月份* ,* : 2012,6结果输出:I LCT:XWii ndowsVsyste-rn 3 2cnnid. exeW -M-M-WX * X:ri:yuc :ri:run

17、 nani 口曰n :AMI +w -w-*e-ai i idluan *,t-*-i*i|-M*0al) : 2012,6row C:Wii ndoWEsystein 3 2cmd. exeS3p 1 etise i npLi ItSun3074112-MO* c 123/5* ma inMieun* :ri aixing 口i j i :yue 1i.:ri 1i.:run nian pan duan.:exi tplease input the number:3the year jnd monthk(jO00,1 T *0 ,2012year 6month1):2012?6MonTueW

18、enThu4185112529611263071227418122厂 18529F1221t329630 s 123分析:输入你要查询的月份后,系统会经过计算得出该月的月历图,然后输出。同样的系统依然会询问是否继续。6:选择4后,再根据提示输入你要查询的年份* : 2100结果输出: if-(O:VVj rbdow5X-syrfce-m 2 Humtd .exe-12345minr i aiMin-*0 : 2100*mainMcun r iyue 1 i .ri 1 i :run nian pan exi trami CXWind112345plecise inpu l the nLimbe

19、r : 4 please input a year5000*0:2100 his is pincivear, ContinuR?(y/n):7:在程序成功测试之前出现主要的问题是:ect C:Wi ndovEs,y5tenn 3 2.cmd. exe回 SB 1234* ma inMieun* :ri aixing 口i j i :yue 1i.:ri 1i.:exitplease input the number:31 ease inpu t the year and month (2100,1 * .,J.) : 2E31N . &201 2yt?rtr 6mor-)thSun30/411?41851125296112630712274181228529122错误:程序经计算后得出的月历的开头第一行对不上下面的。 分析:原因是在给每月的第一天的前面空格时多空了一个位for (i = l;i = weekday-i-2;iH- +

温馨提示

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

评论

0/150

提交评论