C语言万年历课程设计报告书

上传人:suij****uang 文档编号:52458185 上传时间:2022-02-08 格式:DOC 页数:11 大小:252KB
收藏 版权申诉 举报 下载
C语言万年历课程设计报告书_第1页
第1页 / 共11页
C语言万年历课程设计报告书_第2页
第2页 / 共11页
C语言万年历课程设计报告书_第3页
第3页 / 共11页
资源描述:

《C语言万年历课程设计报告书》由会员分享,可在线阅读,更多相关《C语言万年历课程设计报告书(11页珍藏版)》请在装配图网上搜索。

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

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

3、的月历;5 :输入一个年份能够判断该年是闰年还是平年;6 :能够退出。【系统总体功能设计框架】进入程序1:日期查询1、输入年,月,2、输入年2:一年月历查4、输入年3、输入年,月询(0,15000,12)( 0-5000)日(0-5000)星期 *12 个月3:月历查询 该月月闰、平年(1970,1-2100,14:闰年判断屏幕显示5:退出继Y,y续N退出程序【系统功能模块图】主要功能模块1:计算输入 year , month, daymonth 与当年的1 月间隔了多少天rr=r+(year/4)*1461+(year%4)*365+dayr=r%7r=0r=1r=2r=3r=4r=5r=6

4、SatSunMonTueWedThuFirY 或 y返回菜单其他输入均退出程序代码: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;b2006)days=(year-2006)*365+count_leap(year)+monthdays(month,year); weekday=days%7;else if(year2006)days=(2005-year)*365+count_leap(year)+monthdays(m

5、onth,year);weekday=7-days%7;elsedays=monthdays(month,year);weekday=days%7;for (i=1;iweekday+2;i+)printf (t);for (i=1;i=y;i+)if (i+weekday-1)%7=0) printf (nt%3dt,i);else printf (%3dt,i);主要功能模块3:输入的年份判断从定义年到输入的年份中每个年份是否为闰年是否闰年每年为 366 天平年每年为 365 天返回该年的天数程序代码: int i;if (year%4=0&year%100!=0|year%400=0)

6、i=1;else i=0;return i;【用到的语句】1.,2.main()/*/*头文件 */主函数 */3.printf(),4.scanf()5.a/*数组 */6.if7.for语句语句8.void/*要调用到的函数*/【源程序代码】#include#include 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,numbe

7、r;/ 定义变量char choose;int a=0,31,28,31,30,31,30,31,31,30,31,30,31; printf(*mainMeun*n );printf(printf(printf(printf(printf(1:ri qixing qi ji.n);2:yue li.n);3:ri li.n);4:run nian pan duan. n);5:exitn);printf(n);printf(*n );printf ( please input the number:); scanf(%d,&number);if(number=1)printf(please

8、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(month=1;month*,*1970,1):);scanf(%d,%d,&year,&month);/ 输入要查询的年,月printf(%dyear %dmonthn,year,month);printf(*n);printf( Sun Mon Tue Wen Thu monthprint(year,month)

9、;Fri/Satn);printf(n);printf(*n);elsechoose=getchar();printf(Continue(y/n):nn);scanf(%c,&choose);if (choose=y|choose=Y) main(); if(number=4)printf(please input a year5000*0:);scanf(%d,&year);/ 输入要查询的年份if(leap_year(year)printf(This is runyear.n);elseprintf(This is pingyear.n);choose=getchar();printf(C

10、ontinue(y/n):nn);scanf(%c,&choose);if (choose=y|choose=Y) main();else/ 选择其他则退出return 0;int leap_year(int year)/ 判断是否闰年 int i;if (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)

11、 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;else 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+count_leap(year)+monthdays(month,ye

12、ar); weekday=days%7;else if(year2006)days=(2005-year)*365+count_leap(year)+monthdays(month,year);weekday=7-days%7;elsedays=monthdays(month,year);weekday=days%7;for (i=1;iweekday+2;i+)/ 输出该月第一天所在位置之前的空格printf (t);for (i=1;i=y;i+)if (i+weekday-1)%7=0) printf (nt%3dt,i);else printf (%3dt,i);/ 输出该月的月历;【

13、调试及分析过程】1:在代码编辑器上输入以上程序代码后,保存并 f9 到 tc3.0 上运行结果输出:分析:运行后出现“菜单” ,选项意思是:输入 1,则确定一个日期是星期几。输入 2,则是查询某年的 12 个月历。输入 3,则是查询某年某月的月历。 4,则是判断输入年是闰年还是平年。 5,退出。2:选择 1 后,再根据提示输入 * ,* , * :2011,10,28结果输出:分析:输入你要查询的年月日后, 程序会经过计算输出该日的星期号。 然后,输出结果后,系统会询问你是否继续,输入 y 或 Y,继续;输入 N 或 n 或其他字母都会直接退出。3:选择 y 后结果输出:4:选择 2 后,再根

14、据提示输入你想查询的年份 * :2012结果输出:分析:输入你要查询的年份后,系统会经过计算得出每月的月历,然后输出。但因为输出窗口限制,结果只能看到部分。同样的,输出结果后,系统仍然会询问是否继续。5:选择 3 后,再根据提示输入你要查询的月份 * ,* :2012,6结果输出:分析:输入你要查询的月份后,系统会经过计算得出该月的月历图,然后输出。同样的系统依然会询问是否继续。6:选择 4 后,再根据提示输入你要查询的年份 * :2100结果输出:7:在程序成功测试之前出现主要的问题是:错误:程序经计算后得出的月历的开头第一行对不上下面的。分析:原因是在给每月的第一天的前面空格时多空了一个位

15、只要将“ i=weekday;”改为“ iweekday;”即可。【总结】经历了这次课程设计的设计和制作的整个过程,我才发现我知识的贫乏和知识面的狭窄,真实的感受到程序设计的困难性,只说时间上面,我总共花了二十几个小时。这次作课程设计我也是收获很大,首先,我对C 语言有了更深的了解,使用起来也更加的熟练,原来有一些不知道和不熟悉的函数,我学会用了。其次,我这一次找了不少的资料,找专业的书籍、上网找各方面的资料,也使我学到了一些书本中学不到的知识,让我长了见识。同时我们同学之间也互相的探讨,也增进了我们同学之间的感情。这次作的这一个设计,虽然我自己觉的很有的成就感,但是这必竟是我第一次作C 语言

16、的课程设计,必然会有很多的不足之处有待改进,相信以后我一定会做的更好。对C 语言在编写程序时的用处有了更明确的认识,懂得了编写 C 程序的一般法方步骤。 最大的收获是,编写程序时一定要有信心和勇气,要相信自己一定可以把这个程序编写出来。分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写下的东西认真整理,查缺补漏,把一些细节的地方补上,就这样一个貌似很难的程序就写出来了。其实编程并不难,关键是要投入,要钻到里面去。下一步就是读程序了,读程序时一定要小心仔细,一条语句一条语句的读,看是否能输出自己想要输出的结果,如果发现错误要马上改过来,再接着向下读,直到把程序调试的完美无缺为止。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!