万年历课程设计报告
课程设计报告 课程名称 程序设计基础 专周题目 年历显示 姓 名 XX 班 级 XXXXXX 学 号 XX 指导教师 XXX 设计时间 2015-03-02至2015-03-06 XX学院计算机工程系 XX学院 课程设计(论文)任务书 一、课程设计题目 年历显示 二、课程设计工作自 2015 年 03 月 02 日至 2015 年 03 月 06 日。
三、课程设计地点: XXXX 四、课程设计内容要求:
1.本课程设计的目的 1)增进对C语言各理论知识的熟练程度,2)加强算法设计的能力,为以后的程序设计与编写打下良好基础。
3)增加对C语言的熟练程度,提高程序设计的能力,并初步接触实用程序的编写。
2.课程设计的任务及要求 题目:年历显示 要求:(1)
输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。
(2)
输入年月,输出该月的日历。
(3)
输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
3)课程设计编写要求 1)详细清晰地描述个人的课程设计工作;
2)要按照本模板的规格打印誊写课程报告;
3)课程报告包括目录、内容提要、正文、课程设计体会、参考文献、附 录等;
4)课程报告装订按学校的统一要求完成 4)评分标准:
1)完成原理分析:20分;
2)完成设计过程:40分;
3)完成代码分析:20分。
4)个人创新工作:20分。
学生签名:
XX 2015年 3 月 8 日 目 录 目 录-1-正 文-2-一、需求分析-2-二、个人工作-2-三、概要设计-2-流程图……………………………………………………………….-2-程 序……………………………………………………………….-4-四、程序结果-7-课程设计体会-9-正 文 一、需求分析 我选择课程设计题目:年历显示 日常生活当中,我们查询日期很大程度上需要用到日历。而手动去翻纸质日历查询速度慢,而且会让人看的眼花缭乱。因此,我们可以编写一个程序来显示某一年的日历。
① 程序要能够准确输出某一年的日历;
② 程序要能够准确的输出某一年的某一月的月历;
③ 程序能够详细查询某一年某一天的日期;
④ 程序能够循环输出。
二、个人工作(1)、设计程序主题,根据输入的内容判断是否为年,月,日,然后输出对应内容;
(2)、想出一个算法,排列月份,使输出年历的格式与题目要求一样;
(3)、想出一个算法,计算某一天到现在时间有多少天。
(4)、编写打印年历的函数;
(5)、编写打印月历的函数;
(6)、编写计算日期的函数;
(7)、编写主程序。
设计方法:
先设计一个主程序,有特定的用户输入界面,然后根据输入的内容判断应该打印的内容。比如输入2015,程序判断为打印2015年的年历;
输入201503程序判断应该打印2015年3月的月历;
输入20150305,程序判断是查询2015年3月6日的信息。然后根据要执行的功能调用相应的函数。
然后分别设计打印日历和打印月历,以及判断日期的函数。函数思想会在后面的概要设计里面阐述。
三、概要设计 1、画出程序流程图;
主程序流程图:
打印年历或月历的流程图 2、根据流程图设计程序 首先是主程序,这个程序的主要功能是判断输入的内容并调用相应的函数。
主程序(部分):
#include
计算每个1日月对应星期几的函数:
int weak(int x,int y)//这个函数用于计算3~12月份的第一天对应的星期 {int w2,w3,a;if(x<2000)//小于两千年的一月份 {a=x-19*100;w2=(19/4)-2*19+(a+a/4)+(13*(y+1)/5);while(w2<0)w2=w2+7;w3=w2%7;} if(x>=2000)//大约两千年的一月份 {a=x-20*100;w2=(20/4)-2*20+(a+a/4)+(13*(y+1)/5);while(w2<0)w2=w2+7;w3=w2%7;} return w3;} 这个函数是通过使用蔡勒公式来实现的;
下面这个函数是计算某天距离现在还有多少天:
int distance(int x,int y,int z)//查询距今时间的函数 x,y,z为查询的年月日 { int monthday[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//定义12个月每个月天数 int n1,y1,r1,i,temp,daytemp,x1,tempmonth1,tempmonth2,allday,t,y2;//n1,y1,r1为现在时间,通过输入t转换;
tempmonth1为计算以前年份后的月份的天数,tempmonth2计算现在日期月份的天数, //temp,x1,y2,t为临时变量 printf(“ \n“);printf(“请输入今天日期(Ex:20150305):“);scanf(“%d“,&t);//输入当前时间 n1=(int)(t/10000);y2=t%10000;y1=(int)(y2/100);r1=y2%100;//分别计算出年,月,日 temp=n1-x;if(temp<0)//将年份差值转换为正数 temp=-temp;daytemp=temp*365;//计算相差日期 x1=x;for(i=0;i 这个函数的算法是先计算两年之间的差值,然后加上现在时间的月份和日期,再减去查询哪一年已经过了的日期。 四、程序结果 1、查询主界面: 2、当输入数据为年份是,比如2015,打印2015年的年历; 3、当输入数据是月份时,比如:201503,打印2015年3月的月历; 4、当输入数据为某一天是,比如:20100305,输出这一天的详细信息; 5、退出查询 课程设计体会 通过这次C语言的课程设计,我明白了很多也知道了很多,更收获了很多。在课程设计的过程中出现过困难,但我都一一去客服,去解决。最终,终于完成了一份满意的程序。 转眼几天的课程设计已经结束了。回想学习C语言的过程中,既有快乐又有烦恼,回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。在设计的过程中遇到的问题,这毕竟独立做的,难免会遇到各种各样的问题,同时在设计的过程中发现自己的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识从新温故。这次课设终于顺利完成了,在设计中遇到了很多编程问题 做完这个课程设计,我们的自信一下子提高了,我们也会写程序了; 尽管对于有些人这种程序会很简单,可对于我们C语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在美妙啊!很感谢这次的课程设计,它使我更加地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题; 另外,在做任何事倒要有耐心,不要一遇到困难就退缩。 人生的道路是曲折的,但正是因为曲折人生才光彩夺目,在人生的道路上,总遇到重重困难,但正是因为困难我们才变得更坚强。今后的路还很长,面对困难,让我们用行动去俘虏它吧!
