万年历课程设计报告.docx
- 文档编号:16182082
- 上传时间:2023-07-11
- 格式:DOCX
- 页数:12
- 大小:158.52KB
万年历课程设计报告.docx
《万年历课程设计报告.docx》由会员分享,可在线阅读,更多相关《万年历课程设计报告.docx(12页珍藏版)》请在冰点文库上搜索。
万年历课程设计报告
课程设计报告
课程名称
程序设计基础
专周题目
年历显示
姓名
XX
班级
XXXXXX
学号
XX
指导教师
XXX
设计时间
2015-03-02至2015-03-06
成都工业学院计算机工程系
成都工业学院
课程设计(论文)任务书
一、课程设计题目 年历显示
二、课程设计工作自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日
流程图……………………………………………………………….-2-
程序……………………………………………………………….-4-
正文
一、需求分析
我选择课程设计题目:
年历显示
日常生活当中,我们查询日期很大程度上需要用到日历。
而手动去翻纸质日历查询速度慢,而且会让人看的眼花缭乱。
因此,我们可以编写一个程序来显示某一年的日历。
1程序要能够准确输出某一年的日历;
2程序要能够准确的输出某一年的某一月的月历;
3程序能够详细查询某一年某一天的日期;
4程序能够循环输出。
二、个人工作
(1)、设计程序主题,根据输入的内容判断是否为年,月,日,然后输出对应内容;
(2)、想出一个算法,排列月份,使输出年历的格式与题目要求一样;
(3)、想出一个算法,计算某一天到现在时间有多少天。
(4)、编写打印年历的函数;
(5)、编写打印月历的函数;
(6)、编写计算日期的函数;
(7)、编写主程序。
设计方法:
先设计一个主程序,有特定的用户输入界面,然后根据输入的内容判断应该打印的内容。
比如输入2015,程序判断为打印2015年的年历;输入201503程序判断应该打印2015年3月的月历;输入20150305,程序判断是查询2015年3月6日的信息。
然后根据要执行的功能调用相应的函数。
然后分别设计打印日历和打印月历,以及判断日期的函数。
函数思想会在后面的概要设计里面阐述。
三、概要设计
1、画出程序流程图;
主程序流程图:
打印年历或月历的流程图
2、根据流程图设计程序
首先是主程序,这个程序的主要功能是判断输入的内容并调用相应的函数。
主程序(部分):
#include
#include
voidpart1(intx);//函数1~6为打印日历的函数
voidpart2(intx);
voidpart3(intx);
voidpart4(intx);
voidpart5(intx);
voidpart6(intx);
intweak(intx,inty);//计算1号对应的星期
intweak2(intx,inty,intz);//计算星期,为函数day提供数据
intyear(intx);//打印日历的函数
intmouth(intx);//打印月历的函数
intday(intx);//查询天数的函数
intdistance(intx,inty,intz);//提供距离天数查询
intmain()
{
inta;
charz;
x:
//位置标注
printf("\n");
printf("请输入一个日期(Ex:
20150302或201503或2015):
");
scanf("%d",&a);
printf("\n");
if((1940<=a)&&(a<=2040))
year(a);
elseif((194001<=a)&&(a<=204012))
mouth(a);
elseif((19400101<=a)&&(a<=20401231))
day(a);
else
{printf("输入错误,请重新输入!
");
gotox;}
printf("\n");
printf("\n");
printf("继续查询(y),退出(n):
");
scanf("%s",&z);
if(z=='y')
gotox;
else
;
return0;
}
然后是各部分的函数,主要列出几个比较重要的函数:
计算每个1日月对应星期几的函数:
intweak(intx,inty)//这个函数用于计算3~12月份的第一天对应的星期
{intw2,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;
}
returnw3;
}
这个函数是通过使用蔡勒公式来实现的;
下面这个函数是计算某天距离现在还有多少天:
intdistance(intx,inty,intz)//查询距今时间的函数x,y,z为查询的年月日
{
intmonthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//定义12个月每个月天数
intn1,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 { if(x1%4==0) { if(x1%100! =0) daytemp++; elseif((x1%100==0)&&(x1%400==0)) daytemp++; else ; } 。 。 。 。 。 。 。 。 。 这个函数的算法是先计算两年之间的差值,然后加上现在时间的月份和日期,再减去查询哪一年已经过了的日期。 四、程序结果 1、查询主界面: 2、当输入数据为年份是,比如2015,打印2015年的年历; 3、当输入数据是月份时,比如: 201503,打印2015年3月的月历; 4、当输入数据为某一天是,比如: 20100305,输出这一天的详细信息; 5、退出查询 课程设计体会 通过这次C语言的课程设计,我明白了很多也知道了很多,更收获了很多。 在课程设计的过程中出现过困难,但我都一一去客服,去解决。 最终,终于完成了一份满意的程序。 转眼几天的课程设计已经结束了。 回想学习C语言的过程中,既有快乐又有烦恼,回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。 在设计的过程中遇到的问题,这毕竟独立做的,难免会遇到各种各样的问题,同时在设计的过程中发现自己的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识从新温故。 这次课设终于顺利完成了,在设计中遇到了很多编程问题 做完这个课程设计,我们的自信一下子提高了,我们也会写程序了;尽管对于有些人这种程序会很简单,可对于我们C语言初学者来说,已经很不容易了。 这次体验为以后的学习计算机的我们增强了信心。 享受劳动成果的滋味实在美妙啊! 很感谢这次的课程设计,它使我更加地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题;另外,在做任何事倒要有耐心,不要一遇到困难就退缩。 人生的道路是曲折的,但正是因为曲折人生才光彩夺目,在人生的道路上,总遇到重重困难,但正是因为困难我们才变得更坚强。 今后的路还很长,面对困难,让我们用行动去俘虏它吧!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万年历 课程设计 报告