课设万年历..

合集下载

c语言课程设计万年历

c语言课程设计万年历

c语言课程设计万年历一、课程目标知识目标:1. 理解C语言中结构体、数组、函数等基本概念,并能运用这些知识实现万年历的基本功能;2. 学会使用循环、判断等控制结构,实现对日期的有效处理;3. 了解并掌握C语言中模块化编程的方法,将万年历功能划分为独立的功能模块。

技能目标:1. 能够独立编写C语言程序,实现万年历的日期显示、查询、切换等功能;2. 学会使用调试工具,对程序进行调试和优化,提高程序的稳定性;3. 学会在团队协作中发挥个人优势,与他人共同完成程序设计。

情感态度价值观目标:1. 培养学生积极思考、勇于探索的精神,增强学生对编程的兴趣和热情;2. 培养学生良好的编程习惯,遵循编程规范,注重代码的可读性和可维护性;3. 培养学生的团队协作意识,学会与他人沟通、分享、互助,共同进步。

课程性质:本课程为实践性较强的课程,要求学生在掌握C语言基本知识的基础上,运用所学知识完成万年历的设计与实现。

学生特点:学生具备一定的C语言基础,对编程有一定了解,但实践经验不足。

教学要求:结合学生特点,注重理论与实践相结合,引导学生主动参与,培养学生的编程能力和团队协作能力。

通过课程学习,使学生能够独立完成万年历的设计与实现,提高学生的编程水平和实际操作能力。

二、教学内容1. C语言基本语法复习:回顾结构体、数组、函数等基本概念,确保学生能够熟练运用;相关教材章节:第一章至第四章。

2. 控制结构:讲解循环、判断等控制结构在万年历中的应用;相关教材章节:第五章。

3. 模块化编程:引导学生将万年历功能划分为独立的功能模块,讲解模块之间的调用关系;相关教材章节:第六章。

4. 程序调试与优化:介绍调试工具的使用,教授学生如何找出并解决程序中的错误;相关教材章节:第七章。

5. 项目实践:指导学生按照教学大纲,分阶段完成万年历的设计与实现;相关教材章节:全书综合应用。

教学进度安排:1. 第一周:C语言基本语法复习;2. 第二周:控制结构;3. 第三周:模块化编程;4. 第四周:项目实践(第一阶段:功能设计);5. 第五周:项目实践(第二阶段:功能实现);6. 第六周:项目实践(第三阶段:调试与优化)。

c万年历课程设计

c万年历课程设计

c 万年历课程设计一、课程目标知识目标:1. 让学生掌握年、月、日的概念及其关系,理解平年和闰年的区别;2. 使学生掌握如何使用万年历查找任意日期的星期,并了解其原理;3. 让学生了解不同历法的起源和发展,提高历史文化的认识。

技能目标:1. 培养学生运用数学知识解决实际问题的能力,如计算日期与星期之间的关系;2. 培养学生动手制作简单万年历的能力,提高动手操作和创新能力;3. 提高学生运用万年历进行时间管理和规划的能力。

情感态度价值观目标:1. 培养学生珍惜时间、合理安排生活的态度,树立时间观念;2. 激发学生对数学学科的兴趣,增强学习数学的自信心;3. 培养学生团队协作意识,学会与同学分享和交流学习心得。

本课程针对小学四年级学生设计,结合学生年龄特点和认知水平,注重知识性与趣味性的结合。

课程内容与教材紧密联系,旨在通过万年历的制作和使用,让学生在实际操作中掌握数学知识,提高解决问题的能力。

同时,注重培养学生良好的时间观念和情感态度,使学生在轻松愉快的氛围中学习,达到预期的学习成果。

二、教学内容1. 年、月、日的基本概念及其关系:包括一年有多少个月,一个月有多少天,平年和闰年的区别及其判断方法。

相关教材章节:第三章《年、月、日》。

2. 万年历的制作原理与使用方法:介绍星期与日期的关系,引导学生学会使用万年历查找任意日期的星期。

相关教材章节:第三章《认识星期》。

3. 不同历法的起源和发展:简述公历、农历等历法的历史背景,提高学生对历史文化的了解。

相关教材章节:第四章《历法的故事》。

4. 实践活动:分组让学生动手制作简易万年历,巩固所学知识,提高动手操作能力。

相关教材章节:第三章实践活动《制作自己的万年历》。

教学内容安排和进度:第一课时:介绍年、月、日的基本概念及其关系,判断平年和闰年的方法。

第二课时:讲解万年历的制作原理与使用方法,学会查找任意日期的星期。

第三课时:简述不同历法的起源和发展,提高历史文化认识。

自动万年历课程设计

自动万年历课程设计

自动万年历课程设计一、引言万年历是一种常见的时间表示工具,能够提供年、月、日、星期等日期信息。

随着科技的发展,人们对于万年历的需求也越来越多样化。

本次课程设计旨在实现一个自动万年历的功能,通过编程实现自动计算日期、星期和节假日等功能。

二、设计目标设计一个自动万年历的程序,实现以下功能:1.输入年份和月份,自动计算该月的日期信息;2.根据输入的日期,自动计算该日是星期几;3.判断输入的日期是否是法定假日,如春节、清明节等;4.根据输入的年份,自动计算该年的各个节假日日期。

三、设计思路3.1 输入年份和月份,自动计算日期1.根据输入的年份和月份,判断该年是否为闰年;2.根据月份判断该月的天数;3.输出该月的日期信息。

3.2 根据日期,自动计算星期1.判断输入的年份是否为闰年;2.计算该日的累计天数;3.判断累计天数对7取模的结果,得到星期。

3.3 判断输入日期是否为法定假日1.根据输入日期判断是否是法定假日,需根据法定假日的具体规定进行判断;2.输出判断结果。

3.4 根据年份,自动计算节假日日期1.根据公历计算的时间规律,计算出春节的日期;2.根据农历计算的时间规律,计算出农历节日的日期;3.输出计算结果。

四、详细设计4.1 输入年份和月份,自动计算日期1.首先通过输入函数获取用户输入的年份和月份;2.使用条件语句判断输入的年份是否为闰年,根据结果确定二月的天数;3.根据月份和上一步得到的天数,使用循环结构输出该月的日期信息。

4.2 根据日期,自动计算星期1.输入年份、月份和日期;2.使用条件语句判断输入的年份是否为闰年,根据结果确定二月的天数;3.根据输入的年、月、日,计算出累计天数;4.使用计算得到的累计天数对7取模,得到星期。

4.3 判断输入日期是否为法定假日1.定义法定假日的日期范围和名称;2.输入日期;3.对输入日期进行判断,判断是否在法定假日日期范围内;4.输出判断结果。

4.4 根据年份,自动计算节假日日期1.输入年份;2.根据公历的时间规律,计算出春节的日期;3.根据农历的时间规律,计算出农历节日的日期;4.输出计算结果。

C语言课程设计万年历 完整版

C语言课程设计万年历  完整版

目录一引言 (2)二系统功能和数据说明 (3)一)功能简介 (3)二)程序中的数据说明 (3)三程序总体设计及流程图 (4)一)应用到的c语言 (4)二)程序的总框架 (5)四功能模块设计及调试 (5)一)算法说明 (5)1.总天数的算法 (5)2.计算输入日期是星期几 (6)3.对输入信息的汇总 (8)4..界面的控制 (10)二)调试结果 (11)五程序清单 (12)六结束语 (17)一引言通过大一上学期对C语言的学习,了解到了很多C语言的相关知识。

学习的过程有很多困惑但是当自己能够独立的看懂,能过独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。

我可以里哟哦那个它看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对探究的兴趣。

C语言是近年在国内外得到迅速推广应用的一种语言。

C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。

因此,C语言特别适合于编写各种软件。

在这次的课程设计中我将把日常生活中最经常接触的——日期的查询利用C语言的程序编成一个简单的日历。

通过这个小小的日历可以实现很多功能。

在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。

在不断的调试中最终才获得最为完整的程序。

接下来就是我的C 语言课程设计的具体内容来了二系统功能和数据说明(一)功能简介在我们的日常生活中能接触到很多不同类型的日历,在日历上我们通常希望它能简介明了的给我们最想要的日期信息。

在我的万年历当中,就是将日历,月历做的简单明了,很方便我们的使用。

下面是它要实现的一些基本功能:用C语言编写万年历1、输入年份,判断是否为闰年2、输入年月日,判断改日为星期几3、输入年份,打出12个月历,输入月份,打出该月的日历4、要求用多个函数实现[名称]万年历[修改]1、对输入的日期进行容错处理2、增加和修改为英文的月份和星期显示3、采用指针形式的weeks和month数组(二)程序中的数据说明①int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};这是定义的关于每个月天数的数组,根据大小月以及二月分的特殊情况将每个月的天数最为数组中的元素存入数组当中。

万年历的课程设计报告及程序

万年历的课程设计报告及程序

第一部分:正文一,课程设计名称:1.万年历2.(a) (b)* **** *** ***** ***** ************** ***** ***** *** **** * ********* **** **** *** *** ** ** * * ** ** *** *** **** **** *********二,使用工具软件:Microsoft Visual Basic 6.0 中文版。

三,课程设计内容简介:(1)万年历的课程设计的基本结构流程:从main函数开始,比如输入2001年,调用函数yearshow,它是控制总循环次数12个月的,在yearshow里有调用了以个函数是monthshow,是控制每个月如何输出显示的,在这个函数里有调用了getmonthweekday函数,它是获得每个月一号是星期几的函数,此函数分为两部分,以2000年1月1号是星期六为准;做十一次运算便可得知2月到12月各个月的1号为星期几。

而在这个函数又调用了getyearday这个函数,是返回天数的函数,它有调用了isleap函数,计算时平年还是闰年是,时闰年返回366,平年返回355。

到这步开始就返回值了,首先isleap告诉getyeardays2000是闰年和平年,于是getyeardays得到366getyearweekday,getyearweekday 就计算sum=366且返回(366+6)%7=2给getmonthweekday,w=2,getmonthweekday中若计算1月1号则为星期二,2月-12月中如3月则要加上以月和二月的天数载加上2对7取余数,这个数返回给monthshow,若这个数是w=0;不输出空格,不等于0就输出w-1个空格,以便日期和星期对应,如此循环十二个月就计算完了,一边计算一遍显示。

(2)(a)图形的课程设计的基本结构流程(3)(b)图形的课程设计的基本结构流程(4)运行环境:Win32 Console Application四,得意之处.1把程序分解成多个小函数,那么问题就分解成几个小问题。

万年历课程设计

万年历课程设计

万年历课程设计一、课程目标知识目标:1. 学生能理解万年历的基本概念,掌握年、月、日的关系及其计算方法。

2. 学生能运用所学知识,制作并解释简单的阴阳历、阳历和阴历。

3. 学生能通过实例分析,了解不同文化背景下时间记录方式的异同。

技能目标:1. 学生能够运用万年历知识,解决生活中的实际问题,如日期推算、节日计算等。

2. 学生通过小组合作,提高沟通协调能力,共同完成万年历的制作。

3. 学生能够运用信息技术,收集、整理万年历相关资料,提高信息处理能力。

情感态度价值观目标:1. 学生培养对时间管理的重视,养成珍惜时间、合理安排时间的良好习惯。

2. 学生通过学习不同文化背景下的时间记录方式,增强对多元文化的尊重和理解。

3. 学生在合作探究过程中,培养团队协作精神,提高问题解决能力和自信心。

课程性质:本课程为实践性、综合性课程,结合数学、历史、文化等多学科知识,旨在培养学生的综合素质。

学生特点:六年级学生具备一定的数学基础和动手操作能力,对新鲜事物充满好奇,善于合作交流。

教学要求:注重理论与实践相结合,以学生为主体,激发学生兴趣,引导学生主动探究,培养学生的实践能力和创新精神。

通过课程目标的分解,使学生在学习过程中达到预期的学习成果,为后续教学设计和评估提供依据。

二、教学内容1. 万年历的基本概念- 日期的组成:年、月、日- 阴阳历、阳历、阴历的定义及特点2. 年月日的关系及计算- 平年、闰年的判断- 月份数与天数的对应关系- 日期推算方法3. 不同文化背景下时间记录方式- 我国古代的时间记录方法- 西方阳历的发展及现行公历- 世界各地阴历的运用4. 万年历的制作与应用- 制作方法:手工绘制与电子表格- 实际应用:节假日计算、纪念日查询等5. 教学内容的安排与进度- 第一课时:万年历的基本概念,日期的组成- 第二课时:年月日的关系及计算方法- 第三课时:不同文化背景下时间记录方式- 第四课时:万年历的制作与应用,实践操作教学内容依据课程目标,结合教材章节进行组织,确保科学性和系统性。

课程设计说明万年历程序设计

课程设计说明万年历程序设计

《高级语言程序设计》课程设计说明书设计题目:万年历程序设计班级:学号:姓名:完成日期:一:课程设计目的《高级语言程序设计》课程设计是电子信息、光信息专业和物理学专业集中实践性环节之一,是学习完《高级语言程序设计》课程后进行的一次全面的综合练习,其目的在于加深对程序设计大体知识的明白得,把握利用C语言进行模块化软件设计的大体方式,提高通过编写程序解决实际问题的能力,为尔后从事设计工作和后续各类编程课程的学习打好基础。

二:需求分析题目:要求:输入年份和月份,自动输出该月的日历,清楚的显示每一天是礼拜几,输入年份,月份和具体日期能确信某天是礼拜几。

万年历是采纳数字电路实现对.时,分,秒.数字显示的计时装置,普遍用于个人家庭,车站, 码头办公室等公开场合,成为人们常生活中不可少的必需品,由于数字集成电路的进展和石英晶体振荡器的普遍应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如按时自动报警、按时自动打铃、时刻程序自动操纵、按时广播、自动起闭路灯、按时开关烘箱、通断动力设备、乃至各类按时电气的自动启用等,可是所有这些,都是以钟表数字化为基础的。

因此,研究万年历及扩大其应用,有着超级现实的意义。

它能够对年、月、日、周日、时、分、秒进行计时,关于数字电子万年历采纳直观的数字显示,能够同时显示年、月、日、周日、时、分、秒等信息,还具有时刻校准等功能。

综上所述此万年历具有读取方便、显示直观、功能多样、电路简练、本钱低廉等诸多优势,符合电子仪器仪表的进展趋势,具有广漠的市场前景。

三:概要设计1-判定是不是为闰年计算所输入的年份是不是可被4整除,假设不能被整除,为平年。

假设可被4整除,计算此年份可否被100整除,不能被100整除那么为闰年。

既能被4整除,也能被100整除的年份,假设也能被400整除,那么为闰年,不然为平年。

闰年366天,平年365天2-要紧设计思路四:详细设计源程序:#include <stdio.h> #include <stdlib.h>void DayOfWeek(){int rtnDay;int y,m,d;char ch;while (1){printf("请输入年月日(xxxx,xx,xx): ");scanf("%d,%d,%d", &y, &m, &d);fflush(stdin);rtnDay =(3*y-(7*(y+(m+9)/12))/4+(23*m)/9+d+17-((y+(m<3?-1:0))/100+1)*3/4) % 7; printf("%04d年%02d月%02d日是礼拜%d\n", y, m, d, rtnDay?rtnDay:7); printf("继续查询(y/n)");ch = getchar();if(ch != 'y' && ch != 'Y')break;}}void GetMonth(int D, int md, int n){int N ,m,d,y,c,Wd;int i,maxday,i1;if(md>=13||md<=0)printf("HAVE WRONG!");else{for(i1=0;;md++,i1++){if(md==0){md=12;D-=1;}elseif(md==13){md=1;D+=1;}m=md;printf("\n============%d,%2d============\n",D,md);if(0<m&&m<=12){switch(m){case 1:maxday=31;break;case 2:if(D%4==0&&D%100!=0||D%400==0) maxday=29;elsemaxday=28;break;case 3:maxday=31;break;case 4:maxday=30;break;case 5:maxday=31;break;case 6:maxday=30;break;case 7:maxday=31;break;case 8:maxday=31;break;case 9:maxday=30;break;case 10:maxday=31;break;case 11:maxday=30;break;case 12:maxday=31;break;default:printf("HAVE WRONG");}if(0<m&&m<=2){N=D-1;m=m+10;}else{N=D;m=m-2;}c=N/100;y=N%100;Wd=((1+(13*m-1)/5+y+y/4+c/4-2*c)%7+7)%7; printf(" SUN MOU TUE WED TUR FRI SAT\n"); for(i=0;i<Wd;i++)printf("%4c",' ');for(d=1;d<=maxday;d++){printf("%4d",d);Wd=(Wd+1)%7;if(Wd==0)printf("\n");}}elseprintf("HAVE WRONG!");if(i1==n)break;}}}void MonthOfYear(){char ch;int y, m;while (1){printf("请输入年月(xxxx,xx): "); scanf("%d,%d", &y, &m);fflush(stdin);GetMonth(y, m, 0);printf("\n继续查询(y/n)");ch = getchar();if(ch != 'y' && ch != 'Y')break;}}void GetYear(){char ch;int y;while (1){printf("请输入年: ");scanf("%d", &y);fflush(stdin);GetMonth(y, 1, 11);printf("\n继续查询(y/n)");ch = getchar();if(ch != 'y' && ch != 'Y')break;}}int main(){char ch;while(1){system("cls");printf("1.查询礼拜\n");printf("2.查询月份\n");printf("3.显示一年\n");printf("4.退出程序\n");ch = getchar();fflush(stdin);switch(ch){case '1':DayOfWeek();break;case '2':MonthOfYear();break;case '3':GetYear();break;case '4':printf("是不是退出(y/n)");ch = getchar();fflush(stdin);if(ch == 'y' || ch == 'Y')exit(0);break;}}}五:运行成效及分析1 登录界面输入3,通过输入年份可显示一年每一个月份的日历;输入2,通过输入年份和月份(中间以空格分开)可显示该月的日历;假设输入1,通过输入年份月份和日期(中间以逗号分开)可显示该日的礼拜;输入4,那么退出查询系统2查询礼拜输入1后回车,然后输入具体的年月日可查出该天为礼拜几3查询月历输入2回车,然后输入年月可显示该月月历4显示一年输入3后回车,输入一个有效年份可显示该年的十二个月的月历。

c万年历课程设计

c万年历课程设计

c万年历课程设计一、课程目标知识目标:1. 学生能理解万年历的基本概念,掌握年、月、日的关系及其换算方法。

2. 学生能运用所学的数学知识,编写简单的万年历程序,计算任意日期是星期几。

3. 学生了解历法的起源和发展,理解我国农历与公历的区别和联系。

技能目标:1. 学生通过编写万年历程序,提高编程能力和逻辑思维能力。

2. 学生能够运用万年历知识解决实际问题,如计算节日日期、安排活动等。

3. 学生学会查阅相关资料,培养自主学习能力和合作精神。

情感态度价值观目标:1. 学生对万年历产生兴趣,激发学习数学和编程的热情。

2. 学生通过了解历法的发展,增强对传统文化的认识,培养民族自豪感。

3. 学生在合作学习中,学会尊重他人,培养团队协作意识。

本课程旨在结合学生年级特点,以提高学生的数学应用能力和编程技能为核心,通过万年历的学习,使学生在掌握知识的同时,培养良好的学习态度和价值观。

课程目标具体、可衡量,为教学设计和评估提供明确方向。

二、教学内容1. 万年历的基本概念:年、月、日的关系,闰年的判断方法,星期计算。

2. 编写万年历程序:流程图设计,算法实现,调试与优化。

3. 历法的起源与发展:古代历法,农历与公历的转换,二十四节气。

4. 实践应用:计算特定日期的星期,安排节日活动,了解历史上的今天。

教学大纲:第一课时:万年历的基本概念,闰年的判断方法,星期计算。

第二课时:编写万年历程序,学习流程图设计,实现基本算法。

第三课时:历法的起源与发展,了解农历与公历的转换,学习二十四节气。

第四课时:实践应用,解决实际问题,如计算节日日期,了解历史上的今天。

教学内容依据课程目标,结合课本章节,保证科学性和系统性。

通过以上安排,使学生掌握万年历相关知识,提高编程技能,并培养对传统文化的认识。

三、教学方法本课程采用以下多样化的教学方法,旨在激发学生的学习兴趣,提高主动性和参与度:1. 讲授法:教师通过生动的语言和形象的比喻,讲解万年历的基本概念、历法的发展和算法原理,为学生奠定坚实的理论基础。

c万年历课程设计

c万年历课程设计

c万年历课程设计一、课程目标知识目标:1. 让学生理解并掌握万年历的基本概念,包括阳历、阴历以及它们之间的关系。

2. 学会运用所学的日期计算方法,计算出任意给定年份的星期几。

3. 了解我国历史上重要的节日及其在万年历中的体现。

技能目标:1. 培养学生运用万年历进行日期推算的能力,提高他们的逻辑思维和计算能力。

2. 通过制作简单的手工万年历,锻炼学生的动手操作能力和创新能力。

情感态度价值观目标:1. 培养学生对万年历文化的兴趣,激发他们学习历史和传统文化的热情。

2. 引导学生认识到万年历在日常生活中的实用性,增强他们的生活常识。

3. 培养学生尊重历史、尊重传统文化,形成正确的价值观。

课程性质分析:本课程为实用工具课程,旨在帮助学生掌握万年历的基本知识,提高他们在生活中的实用技能。

学生特点分析:考虑到学生所在年级,他们已经具备了一定的逻辑思维和计算能力,但对于复杂的概念和技巧还需要进一步的引导和锻炼。

教学要求:结合学生特点,课程设计要注重理论与实践相结合,强调学生的动手实践能力,同时注重培养他们的情感态度和价值观。

通过具体的学习成果分解,为后续的教学设计和评估提供明确的方向。

二、教学内容1. 万年历的基本概念:阳历、阴历、农历、公历的起源及关系。

- 教材章节:第一章第一节“时间的计算与历法”2. 日期计算方法:- 平年与闰年的判断方法。

- Zeller公式及其在日期计算中的应用。

- 教材章节:第一章第二节“日期的计算方法”3. 制作手工万年历:- 设计并制作个人简易万年历。

- 教材章节:第二章“动手制作万年历”4. 我国重要节日及其历法体现:- 春节、中秋节、端午节等节日的历法含义。

- 教材章节:第三章“历法与我国重要节日”5. 实践活动:- 利用所学日期计算方法,进行实际操作练习。

- 分析并讨论生活中万年历的应用实例。

教学内容安排与进度:第一课时:万年历基本概念的学习。

第二课时:日期计算方法的学习与练习。

数字电子课设:万年历的设计

数字电子课设:万年历的设计

编号北京工商大学数字电子技术基础《万年历的设计》姓名学院班级学号设计时间一、设计目的1、熟悉集成电路的引脚安排2、掌握芯片的逻辑功能及使用方法3、了解数字电子钟及万年历的组成及工作原理4、熟悉数字电子钟及万年历的设计与制作5、熟悉multisim电子电路设计及仿真软件的应用二、设计思路1、设计60进制秒计数器芯片2、设计24进制时计数器芯片3、设计31进制天计数器芯片4、设计12机制月计数器芯片5、设计7进制周计数器芯片6、设计闰年平年不同月份不同进制逻辑三、设计过程1、Tr_min and s 60进制计数器芯片:“秒”、“分”电路都六十进制,它由一级十进制计数器和一级六进制计数器组成,六十进制计数器的设计图如下,采用四个片74ls161N串联而成,低位芯片的抚慰信号作为下级输入信号,串接起来构成“秒”、“分”计数器芯片。

2、Tr_hour 24进制计数器芯片:24进制计数器芯片的设计图如下,时计数电路由两片74ls161串联组成。

当时个位计数为4,十位计数为2时,两片74ls160N复零,从而构成24进制计数。

3、Tr_day天计数器芯片:采用两片74ls160N和一片74ls151N串联而成,天计数器的进制受到月计数器反馈M、N影响和年计数器反馈R4的影响,在M、N不收到反馈信息的时候,天计数器为28进制,电路设计图如下:4、Tr_week周计数器芯片:周计数器由一块74ls161N构成一个七进制计数器,原理与秒、分、时计数器相似,电路设计图如下5、Tr_month月计数器芯片:采用两片74160N和两片74HC151D_2V串联而成,月计数器的反馈信息M、N影响日计算器的进制,本身月进制计数器为12进制,电路设计图如下:6、Tr_year年计数器芯片:年计数器由七片74160N组成,其中四片构成四个十进制来确定年份,另外三块则为闰年R4确定值,并把R4反馈到日计数器芯片中。

电路设计图如下:7、Tr_555 555计数器:方波信号,其周期约为一秒。

万年历课程设计

万年历课程设计

万年历课程设计一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握年、月、日的关系及其换算方法。

2. 学生能够运用所学的知识,制作并解释简单万年历,了解闰年和平年的判断规则。

3. 学生能够解释生活中的时间单位,如时、分、秒,并掌握它们之间的换算。

技能目标:1. 学生通过实际操作,学会制作和应用简单万年历,提升解决问题的能力和动手实践能力。

2. 学生能够运用万年历进行日期查询和推算,增强逻辑思维和计算能力。

3. 学生通过合作交流,提高表达和沟通能力,培养团队协作精神。

情感态度价值观目标:1. 学生培养对时间管理和计划安排的意识,养成珍惜时间、合理规划的好习惯。

2. 学生在学习过程中,体验探索和发现的乐趣,激发对自然科学和数学的兴趣。

3. 学生通过了解不同文化背景下的时间观念,增强跨文化理解和尊重多元文化的态度。

课程性质:本课程以实践性、探究性和趣味性为主要特点,结合数学、自然科学和社会文化知识,帮助学生建立时间观念,提高综合运用知识的能力。

学生特点:考虑到学生的年级特点,课程设计将注重直观演示和实际操作,以激发学生的兴趣和好奇心,同时结合学生的认知水平,逐步引导他们掌握万年历的制作和应用。

教学要求:教师在教学过程中,应关注学生的个体差异,提供个性化的指导和支持。

课程设计应注重培养学生的动手能力、逻辑思维能力和团队协作能力,确保学生能够达到预定的学习目标。

二、教学内容1. 年、月、日的概念及其关系- 介绍年、月、日的定义和相互关系。

- 年份的种类:闰年和平年的区别及判断方法。

2. 万年历的制作原理- 探索如何将日历与天文数据相结合,介绍格里高利历的基本原理。

- 学习如何通过计算确定每个月的天数,以及如何安排闰年的2月。

3. 日期的换算与查询- 学习日期的换算方法,如年与日、日与星期等。

- 实践操作:使用万年历进行日期查询和推算。

4. 实际应用与时间管理- 讨论如何利用万年历进行时间规划和管理。

万年历课程设计报告

万年历课程设计报告

万年历课程设计报告一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握年、月、日的关系及其换算方法。

2. 学生能够运用所学知识,独立制作并使用简易的万年历。

3. 学生了解我国农历与公历的区别及相互转换方法。

技能目标:1. 培养学生运用数学知识解决实际问题的能力,提高逻辑思维和推理能力。

2. 培养学生动手操作和团队协作能力,通过制作万年历的过程,锻炼实践操作技能。

情感态度价值观目标:1. 培养学生对时间管理的重视,树立珍惜时间的观念。

2. 增强学生对传统文化的认识,激发对中国古代天文历法的兴趣。

3. 培养学生积极探究、合作交流的良好学习态度,提高学习自信心。

课程性质分析:万年历课程属于数学与生活相结合的综合性课程,旨在让学生在实际问题中运用数学知识,提高解决实际问题的能力。

学生特点分析:考虑到学生所在年级的特点,课程内容应以直观、生动、有趣的方式进行设计,注重培养学生的动手操作能力和团队协作精神。

教学要求:1. 教师应充分准备教学资源,提供丰富的实例,引导学生主动参与学习过程。

2. 教学过程中,教师要以学生为主体,关注学生的个体差异,给予个性化指导。

3. 教师要关注学生的学习反馈,及时调整教学策略,确保课程目标的达成。

二、教学内容1. 年、月、日的关系及其换算方法- 公历与农历的基本概念- 年、月、日的定义及其相互关系- 闰年和平年的判断方法2. 简易万年历的制作- 万年历的基本结构- 制作步骤及注意事项- 万年历的使用方法3. 我国农历与公历的转换方法- 农历与公历的对应关系- 农历日期的推算方法- 二十四节气的计算与应用教学大纲安排:第一课时:导入万年历的概念,介绍年、月、日的关系及其换算方法,讲解闰年和平年的判断方法。

第二课时:指导学生动手制作简易万年历,掌握万年历的基本结构和使用方法。

第三课时:学习我国农历与公历的转换方法,了解二十四节气的计算与应用。

教材章节:《数学》教科书:第四章 时间与测量,第四节 万年历的制作与应用。

c万年历课程设计

c万年历课程设计

c 万年历课程设计一、课程目标知识目标:1. 让学生掌握年、月、日的基本概念及其关系,理解平年与闰年的区别。

2. 使学生能够运用万年历的原理,自主编制简单的日历。

3. 引导学生了解不同文化背景下的时间记录方式,拓展对时间认知的视野。

技能目标:1. 培养学生运用数学知识解决实际问题的能力,如通过计算判断平闰年。

2. 提高学生的观察、分析、归纳能力,通过对万年历的研究,发现规律并应用于生活。

3. 培养学生团队协作能力,通过小组活动,共同完成日历的设计与制作。

情感态度价值观目标:1. 培养学生珍惜时间、合理规划生活的意识,树立时间观念。

2. 激发学生对传统文化的兴趣,尊重并传承我国古代的历法知识。

3. 培养学生热爱科学、追求真理的精神,提高探索未知世界的热情。

本课程旨在通过万年历的学习,使学生在掌握相关知识的基础上,提高实践操作能力,培养良好的时间观念和团队合作精神。

针对学生的年龄特点和认知水平,课程目标具体、明确,以便于教学设计和评估的实施。

二、教学内容1. 年、月、日的基本概念及其关系:介绍时间的计量单位,讲解年、月、日的定义及其相互关系,阐述平年与闰年的产生原因及判断方法。

2. 万年历的原理与编制:讲解万年历的起源,阐述其设计原理,引导学生学会编制简单的日历,并掌握查找特定日期的方法。

3. 历法的演变与文化:介绍我国古代历法的演变,以及不同文化背景下的时间记录方式,拓展学生的知识视野。

4. 实践活动:组织学生进行小组活动,共同设计与制作一个具有特色的万年历,培养学生的动手能力和团队协作精神。

教学内容依据课程目标进行选择和组织,注重科学性和系统性。

教学大纲明确以下安排和进度:第一课时:年、月、日的基本概念及其关系,平闰年的判断方法。

第二课时:万年历的原理与编制方法,查找特定日期的技巧。

第三课时:历法的演变与文化,不同文化背景下的时间记录方式。

第四课时:实践活动,设计与制作万年历。

教学内容与课本紧密关联,符合教学实际,旨在帮助学生系统掌握万年历相关知识。

c万年历课程设计

c万年历课程设计

c 万年历课程设计一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握年、月、日之间的关系。

2. 学生能够运用数学知识,进行日期的计算和推算。

3. 学生能够了解不同历法的起源和发展,认识我国农历的特色。

技能目标:1. 学生能够运用所学知识,制作简单的万年历。

2. 学生能够通过观察、分析、推理等方法,解决日期计算问题。

3. 学生能够运用信息技术,查找历法相关资料,提高信息处理能力。

情感态度价值观目标:1. 学生培养对时间观念的尊重,养成珍惜时间的良好习惯。

2. 学生通过学习万年历,增强对我国传统文化的认同感。

3. 学生在学习过程中,培养合作意识,提高团队协作能力。

课程性质:本课程为数学学科拓展课程,结合实际生活,培养学生的实际应用能力。

学生特点:四年级学生具有较强的观察、分析、推理能力,对新鲜事物充满好奇心。

教学要求:注重理论与实践相结合,鼓励学生主动探究,充分调动学生的学习积极性。

在教学过程中,关注学生的个体差异,因材施教,确保每个学生都能达到课程目标。

通过课程学习,使学生能够将所学知识运用到实际生活中,提高综合素养。

二、教学内容1. 年、月、日的基本概念及关系- 介绍公历、农历的年份、月份、日期的表示方法。

- 讲解平年、闰年的判断方法及其意义。

2. 日期的计算与推算- 掌握日期推算的基本方法,如加减法、乘除法等。

- 引导学生运用所学知识,解决实际问题,如计算某人生日是星期几。

3. 历法的起源与发展- 简要介绍世界主要历法的发展历程。

- 着重讲解我国农历的起源、特点及其在生活中的应用。

4. 制作简单万年历- 教授制作方法,引导学生运用所学知识,动手制作属于自己的万年历。

- 选取合适的教学案例,展示万年历在实际生活中的应用。

5. 教学内容的安排与进度- 第一章节:年、月、日的基本概念及关系(1课时)- 第二章节:日期的计算与推算(2课时)- 第三章节:历法的起源与发展(1课时)- 第四章节:制作简单万年历(2课时)教学内容与教材关联性:本教学内容紧密围绕课程目标,结合教材相关章节,确保教学内容的科学性和系统性。

课程设计实验报告(万年历)..

课程设计实验报告(万年历)..
int days1(int y,int m,int d);//计算该天时这一年的第几天
int days2(int y);//判断该年有多少天
int days3(int y);//计算从元年到该之年前总天数
int totaldays(int y,int m,int d);//计算指定日期距今天的天数
int yi();//实现万年历的时间校对功能
second=59;
minute--;}
if(minute==-1){
minute=59;
hour--;}
if(hour==-1)
hour=23;}
private:
int hour,minute,second;};
int yi(){
char a,i,temp[30];
int b,c,d,shi,fen,miao;
《C++语言程序设计》
课程设计报告
设计题目:简单万年历
专业:网络工程
班级:12级
姓名:杨茂林
学号:121124028
联系方式:13213501410
1.设计目标……………………………………………3
2.设计思想……………………………………………3
3.类及函数的实现……………………………………3
4.程序流程图…………………………………………3
cout<<setw(6)<<" "<<"╬★欢迎进入万年历的页面★╬"<<endl;
cout<<setw(6)<<" "<<"╬★★★★╬"<<endl;

万年历课程设计(完整版)

万年历课程设计(完整版)

万年历课程设计(完整版)-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN基于51单片机的万年历的设计学生姓名学号所在专业电子信息工程所在班级电子1111小组成员指导教师完成日期基于51单片机的万年历的设计1 需求分析1.1“需“的分析万年历是一个可以显示当前时间、日历、温度信息以及设置闹钟报警的应用系统,其具有以下功能:(1)可以显示当前的时间信息;(2)可以显示当前的温度;(3)可以手动修改时间;(4)可以设置闹钟,并且达到设置的时间点发出音响信号。

1.2 “求“的分析设计万年历,需要考虑以下几方面的内容:(1)如何获取当前的时间信息,这些时间信息包括时、分、秒、年、月、日、和星期;(2)如何获得当前的温度信息,精确到1°C即可;(3)提供必要的用户输入设置通道;(4)提供相应的显示和报警部件;(5)需要写出合适的软件应用代码。

2方案设计与论证2.1时间获取方法的方案设计与论证方案一:使用单片机的内部定时器进行定时,使用软件算法来计算当前的时间信息。

此种方案虽然可以不使用时钟芯片,节约成本,但是时间的精准度一般,软件代码复杂。

方案二:采用外部扩展实时时钟芯片DS12C887的方式来获取相应的时间信息。

DS12C887是一种高性能的芯片,能自动产生年、月、日、时、分、秒等信息,并有闰年修正功能。

采用双电源供电方式,可设置备用电源充电方式,提供了对后备电源进行涓细电流的充电的能力,在能满足精度要求的同时价格也比较便宜,性价比较高。

所以采用方案二。

2.2显示模块的方案设计与论证方案一:采用LED数码管动态扫描。

LED数码管价格适中,但只能显示数字和简单的字符,且其的接口线少。

方案二:采用点阵式数码管显示。

点阵式数码管是由八行八列的发光二极管组成,并不太适合于对数字跟字母进行显示,其主要用于汉字的显示。

方案三:采用LED液晶显示屏。

液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,虽然价格稍微贵了点,但其接口线多。

c万年历课程设计

c万年历课程设计

c 万年历课程设计一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握年、月、日的关系及换算方法;2. 学生能够运用所学的日期知识,正确编制简单的万年历;3. 学生了解我国农历及二十四节气的由来及特点。

技能目标:1. 学生通过实际操作,提高观察能力、分析能力和解决问题的能力;2. 学生能够运用万年历知识解决生活中的实际问题,如计算日期、安排活动等;3. 学生掌握基本的计算机或手工制作万年历的技能。

情感态度价值观目标:1. 学生培养对时间管理和珍惜时间的意识,树立时间观念;2. 学生在学习过程中,增强对我国传统文化的认同感和自豪感;3. 学生通过合作学习,培养团队协作能力和沟通能力,形成积极向上的学习态度。

课程性质:本课程为综合实践课程,结合数学、历史、文化等多学科知识。

学生特点:五年级学生具备一定的观察能力、分析能力和动手操作能力,对新鲜事物充满好奇心。

教学要求:教师应注重激发学生的学习兴趣,引导他们主动探究万年历知识,将理论与实践相结合,提高学生的综合运用能力。

同时,关注学生的情感态度价值观的培养,使他们在学习过程中形成正确的价值观。

通过分解课程目标为具体的学习成果,为后续的教学设计和评估提供依据。

二、教学内容1. 万年历的基本概念:介绍年、月、日的关系,引导学生理解闰年和平年的区别,掌握日期的换算方法。

教材章节:《数学》五年级下册第四章“年、月、日”2. 农历及二十四节气:讲解我国农历的起源、发展及特点,引导学生了解二十四节气的意义及农事活动。

教材章节:《传统文化》五年级下册第三章“我国的农历和节气”3. 万年历的制作:指导学生运用所学的日期知识,手工或使用计算机软件制作简单的万年历。

教材章节:《信息技术》五年级下册第四章“电子表格的应用”4. 实践活动:组织学生进行观察、记录和分析,了解日常生活中时间管理的重要性,提高珍惜时间的意识。

教材章节:《综合实践活动》五年级下册第二单元“时间管理”教学进度安排:第一课时:万年历的基本概念及换算方法第二课时:农历及二十四节气的学习第三课时:万年历制作方法的学习与实践第四课时:实践活动及成果展示教学内容注重科学性和系统性,结合教材章节,使学生在掌握万年历知识的同时,提高实践操作能力,培养正确的价值观。

课程设计-万年历系统

课程设计-万年历系统

课程设计-万年历系统课程设计报告设计名称:程序语言课程设计设计题目:万年历系统软件学院课程设计任务书学生姓名学号1402120134专业班级软件工程12级1班设计题目万年历系统内容概要:设计或开发环境:VC++6.0 技术:C语言满足当前页以系统当前日期的月份为准,显示当前月的每一天。

按“Up ”键其下面接着会显示上一年该月的万年历,按“Down ”键其下面会接着显示下一年该月的万年历,按“←”键下面将会接着显示当年上一个月的万年历,按“→”键将会在下面接着显示当年下一个月的万年历,以上所显示按Esc后将会退去该程序。

文献资料:谭浩强.《C程序设计》(第三版).清华大学出版社,2005年7月陈维兴林小茶文献名:C++面向对象程序设计(第3版)出版地:清华大学出版年:2009.10其他一些万年历系统设计要求:工作期限:设计工作自2013年12月9日至2013年12月23日止。

指导教师:院长:软件学院课程设计进度安排表学生姓名:易海门学号:1402120134 专业:软件工程班级:12级1班起止日期内容备注12月9日下达任务书,制定进度安排计划12月10日~12月12日系统整体设计和详细设计12月13日~12月17日系统编码实现12月18日~12月19日系统测试12月20日~撰写课程设计报告12月23日12月25日演示软件和答辩指导教师签名:2013年12月11日成绩评定表学生姓名:易海门学号:1402120134 专业:软件工程班级:12级1班类别合计分值各项分值评分标准实际得分合计得分平时表现10 10按时参加设计指导,无违反纪律情况。

完成情况3020按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。

10能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。

报告质35 10报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告量字数符合相关要求,工整规范,整齐划一。

课程设计万年历

课程设计万年历

课程设计万年历一、课程目标知识目标:1. 学生能理解万年历的概念,掌握年、月、日的关系及其换算方法。

2. 学生能运用所学知识编制简单的万年历,并能够识别各类历法的基本特点。

3. 学生了解中国农历的历史及基本使用方法,增进对传统文化的理解。

技能目标:1. 学生通过动手制作万年历,提高观察、分析、解决问题的实践能力。

2. 学生能够运用万年历进行时间计算,提升生活实用技能。

3. 学生通过合作交流,培养团队协作能力和沟通技巧。

情感态度价值观目标:1. 学生培养对时间管理的重视,树立珍惜时间的观念。

2. 学生在学习过程中,体验探索的乐趣,增强对科学的热爱和求知欲。

3. 学生通过了解和制作中国农历,培养对传统文化的尊重和传承意识。

课程性质:本课程为综合实践活动课程,结合数学、历史及传统文化知识,注重实践性和应用性。

学生特点:考虑到学生所在年级,已有一定的数学基础和时间概念,好奇心强,喜欢动手操作,对传统文化有一定的兴趣。

教学要求:课程设计需注重理论与实践相结合,鼓励学生主动参与,注重培养学生解决问题的能力和团队合作精神。

通过课程学习,使学生将知识内化为具体的学习成果,提高综合素养。

二、教学内容1. 引言:介绍万年历的概念、作用及其在生活中的重要性。

2. 知识讲解:- 公历与农历的起源及发展历程。

- 年、月、日的定义及其关系。

- 闰年和平年的判断方法。

- 农历与24节气的联系。

3. 实践操作:- 制作简易的万年历,包括公历和农历的转换。

- 学习如何根据农历推算节气,了解农事活动的安排。

- 分析万年历中的数学规律,提高学生观察和推理能力。

4. 案例分析:- 选取具有代表性的农历案例,如春节、中秋节等,分析其文化内涵。

- 通过实际案例,让学生了解历法在历史长河中的作用和影响。

5. 文化传承:- 介绍中国农历的传统习俗和民间故事,增进学生对传统文化的了解。

- 讨论如何将传统文化与现代生活相结合,弘扬民族精神。

教学内容安排与进度:第一课时:引言、知识讲解(1-2点)第二课时:知识讲解(3-4点)、实践操作(1)第三课时:实践操作(2-3)、案例分析(1)第四课时:案例分析(2)、文化传承教材章节关联:《数学》:年月日及其换算、周期问题《历史与社会》:中国传统节日、文化习俗《综合实践活动》:时间管理、历法制作与应用三、教学方法1. 讲授法:- 对于万年历的基础知识,如年、月、日的换算关系以及历法的起源等理论性较强的内容,采用讲授法进行教学,使学生在短时间内掌握基本概念。

课设万年历..

课设万年历..

课设万年历..课程设计Ⅰ设计说明书万年历的实现学⽣姓名学号班级成绩指导教师数学与计算机科学学院2014年3⽉9⽇课程设计任务书2013—2014 学年第2 学期专业:学号:姓名:课程设计名称:课程设计Ⅰ设计题⽬:万年历的实现完成期限:⾃2014 年2⽉24 ⽇⾄2014 年 3 ⽉7 ⽇共 2 周设计依据、要求及主要内容(可另加附页):1.任务说明运⽤C/ C++结构体、函数、数据结构等基础知识,按以下要求编程实现万年历的功能: 1)阐述设计思想,画出流程图;2)输⼊任⼀年,判断该年是否为闰年;输⼊年⽉⽇计算该⽇为当年的那⼀天;3)输⼊任⼀年,显⽰该年的⽇历,⽇历包括阳历、星期;4)说明测试⽅法,写出完整的运⾏结果,较好的界⾯设计。

2.要求1)问题分析和任务定义:根据设计题⽬的要求,充分地分析和理解问题,明确问题要求做什么;2)逻辑设计:写出抽象数据类型的定义,各个主要模块的算法,并画出模块之间的调⽤关系图;3)详细设计:定义相应的存储结构并写出各函数的伪码算法;4)程序编码:把详细设计的结果进⼀步求精为程序设计语⾔程序;5)程序调试与测试:采⽤⾃底向上,分模块进⾏,即先调试低层函数;6)结果分析:程序运⾏结果包括正确的输⼊及其输出结果和含有错误的输⼊及其输出结果。

算法的时间、空间复杂性分析;7)编写课程设计报告。

以上要求中前三个阶段的任务完成后,先将算法流程图交指导⽼师⾯审,审查合格后⽅可进⼊后续阶段的⼯作。

设计⼯作结束后,经指导⽼师验收合格后将设计说明书打印装订,并进⾏答辩。

指导教师(签字):教研室主任(签字):课程设计评阅评语:指导教师签名:年⽉⽇摘要设计了⼀个万年历,该万年历具有⽇历显⽰功能,年历、⽉历、⽇历查询,闰年判断功能和星期查询功能。

本万年历采⽤VC++6.0作为软件开发环境,利⽤C语⾔和数据结构的相关知识,采⽤函数之间的调⽤关系实现了万年历的功能。

该万年历的除了简单的⽇期查询之外,还可以显⽰公历的节⽇。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计Ⅰ设计说明书万年历的实现学生姓名学号班级成绩指导教师数学与计算机科学学院2014年3月9日课程设计任务书2013—2014 学年第2 学期专业:学号:姓名:课程设计名称:课程设计Ⅰ设计题目:万年历的实现完成期限:自2014 年2月24 日至2014 年 3 月7 日共 2 周设计依据、要求及主要内容(可另加附页):1.任务说明运用C/ C++结构体、函数、数据结构等基础知识,按以下要求编程实现万年历的功能: 1)阐述设计思想,画出流程图;2)输入任一年,判断该年是否为闰年;输入年月日计算该日为当年的那一天;3)输入任一年,显示该年的日历,日历包括阳历、星期;4)说明测试方法,写出完整的运行结果,较好的界面设计。

2.要求1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么;2)逻辑设计:写出抽象数据类型的定义,各个主要模块的算法,并画出模块之间的调用关系图;3)详细设计:定义相应的存储结构并写出各函数的伪码算法;4)程序编码:把详细设计的结果进一步求精为程序设计语言程序;5)程序调试与测试:采用自底向上,分模块进行,即先调试低层函数;6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。

算法的时间、空间复杂性分析;7)编写课程设计报告。

3.参考资料。

以上要求中前三个阶段的任务完成后,先将算法流程图交指导老师面审,审查合格后方可进入后续阶段的工作。

设计工作结束后,经指导老师验收合格后将设计说明书打印装订,并进行答辩。

指导教师(签字):教研室主任(签字):课程设计评阅评语:指导教师签名:年月日摘要设计了一个万年历,该万年历具有日历显示功能,年历、月历、日历查询,闰年判断功能和星期查询功能。

本万年历采用VC++6.0作为软件开发环境,利用C语言和数据结构的相关知识,采用函数之间的调用关系实现了万年历的功能。

该万年历的除了简单的日期查询之外,还可以显示公历的节日。

操作简单,界面清晰,易于为用于所接受。

关键词:万年历;函数;查询;参数检查目录1 课题描述 (1)2 需求分析 (2)3 逻辑设计 (3)4 详细设计 (4)5 程序源代码 (7)6 程序调试与测试 (18)7 总结 (24)参考文献 (25)1 课题描述1.1任务运用C/ C++结构体、函数、数据结构等基础知识,按以下要求编程实现万年历的功能:1)阐述设计思想,画出流程图;2)输入任一年,判断该年是否为闰年;输入年月日计算该日为当年的那一天;3)输入任一年,显示该年的日历,日历包括阳历、节日、星期;4)说明测试方法,写出完整的运行结果,较好的界面设计.1.2要求1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么;2)逻辑设计:写出抽象数据类型的定义,各个主要模块的算法,并画出模块之间的调用关系图;3)详细设计:定义相应的存储结构并写出各函数的伪码算法;4)程序编码:把详细设计的结果进一步求精为程序设计语言程序;5)程序调试与测试:采用自底向上,分模块进行,即先调试低层函数;6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果,算法的时间、空间复杂性分析;7)编写课程设计报告。

2 需求分析设计一个万年历程序。

主要功能是能够输出任意年份或月份的日历,程序的输出的月历格式与日常生活中使用的月历格式相同,最好能够支持通过命令行参数指定要输出的年份或月份。

为了更便捷地使用万年历,要注意以下几点:1)日历显示功能。

能根据系统日期进行初始化,如果没有任何输入,则显示系统日期所在月份的月历。

2)日历查询、闰年判断功能。

输入日期进行查询,显示查询日期所在月份的月历,还将显示所在年份是否为闰年。

3)参数检查功能。

如果输入日期不合法,查询将被拒绝,并显示提示信息。

1)在该万年历的设计过程中,主要功能有年历查询,月历查询和日期查询,其功能模块如图3.1所示:图3.1万年历功能模块2)在该万年历中,采用函数之间的调用来完成结果的显示。

先进入菜单选择,选择之后,进入相应的模块(年历查询模块,月历查询模块,日期查询模块和退出模块)中,并进行相关查询。

如图3.2所示:图3.2万年历调用模块月历显示 月历查询日期查询年历查询 2、月历查询3、日期查询4、退出程序1、年历查询2、月历查询3、日期查询4、退出程序1、年历查询 程序进入记录当时的日期离日期还有几天4.1变量说明1)year 表示年份的变量;2)month 表示月份的变量;3)day 表示日期的变量;4)select 表示菜单选择的变量;5)i 表示月份的变量;6)j 表示一个月中的某一天的变量;7)sum 判断某天是一年中的第几天的变量;8)number判断某天离公元1年1月1日还有几天的变量;9)a[] 表示每月天数的数组变量;10)year1 系统时间年份的变量;11)month1 系统时间月份的变量;12)day1 系统时间日期的变量;以上均为整形变量。

4.2各个算法的流程图4.2.1闰年的判断闰年的判断,能被4整除但不能100整除,或者能被400整除的年份为闰年,否则为平年。

日期的查询,就是直接打印该月份的月历。

1)算法程序int isleap(int year) /*判断是否为闰年*/{if(year%4==0&&year%100!=0||year%400==0)return 1;elsereturn 0;}int maxDay(int year,int month) /*每月的天数*/{int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; /*每个月中的天数*/if(isleap( year))a[1]=29; /*闰年2月份有29天*/return a[month-1];}2)流程图开始输入yearyear%4==0&&year%100!=0||year%400==0Y N该年为闰年该年为平年结束4.2.2对天数的判断对天数进行判断确定是星期几:难点在于判断星期,但根据蔡勒公式,可以很容易地有年月日推断出星期:nday=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+nday;w=nDay%7。

其中:year:要查询的年份;nday: 从该年的一月一日起到改天的天数;w:得出的星期数,w==0表示星期天。

在打印月历时,只要知道第一天的星期,就可以依次输入后面的日期,通过定长度输出日期,在遇到某天是星期六时,就换行输出,因此可以按照月历的格式输出。

1)算法程序int eachyeartotal(int year,int month,int day) /*判断某天是一年中的第几天*/{int i,sum=0;for(i=1;i<month;i++)sum+=maxDay(year,i);sum+=day;return sum;}int week(int year,int month,int day) /*对天数进行判断确定是星期几*/{int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number=number%7 ;return number;}2)流程图开始输入i,sum=0i<monthYsum+=maxDay(year,i)Ni++结束5程序源代码以下为万年历的源代码(其中包括主函数和12个子函数):/*****************************包含的头文件******************************/#include "time.h"#include "stdio.h"#include "math.h"#include "windows.h"#include "conio.h"/***********************************函数声明*********************************/ int eachyeartotal(int year,int month,int day); /*判断某天是一年中的第几天*/int counterdays(int year,int month,int day);/*判断今天距特定日期的天数*/int week(int year,int month,int day); /*对天数进行判断确定是星期几*/int maxDay(int year,int month);/*每月的天数*/int isleap(int year);/*判断是否为闰年*/void whatweek(int year,int month,int day);/*判断是星期几*/void display(int year ,int month);/*输出年月*/void display1(int year);/*输出年历*/void display2(int year,int month);/*输出月历*/void display3(int year,int month,int day) ;/*输出日历*/void jieri(int month,int day); /*判断是否公历节日*/void getmenu();/* 显示菜单选择*//**************************************主函数*******************************/ void main(){int year,month,day,select,runyear;while(1){void getmenu();printf(" 请输入相应数字:"); /*菜单选择*/ scanf("%d",&select);system("cls");//清屏命令switch(select){case 1: /*当选择为1时显示年历*/ printf(" 年历显示:输入年(如2011):");scanf("%d",&year);runyear=isleap(year);if(runyear==1)printf("\n\n\n该年为闰年\n\n\n ");elseprintf("\n\n\n该年为平年\n\n\n ");if(year>0&&year<10000) /*显示年份从0-10000 */ {display1(year); /*调用函数*/}elsesystem("cls");break;case 2: /*当选择为2显示月历*/ printf(" 月历显示:输入年月(如2011,6):");scanf("%d,%d",&year,&month);if(year>0&&year<10000&&month>=1&&month<=12){display2(year,month);}elsesystem("cls");break;case 3: /*当选择为3时显示日期*/printf(" 日期显示:输入年月日(比如2011,6,23):");scanf("%d,%d,%d",&year,&month,&day);if(year>0&&year<10000&&month>=1&&month<=12&&day>=1&&day<=maxDay(year,month)) {display3(year,month,day);}elsesystem("cls");break;case 4:exit(0);default: /*当输入其他数字时,输入无效,重新输入*/system("cls");printf(" 输入无效,重新输入!\n");}}}/****************************判断是否为闰年****************************/int isleap(int year){if(year%4==0&&year%100!=0||year%400==0)return 1;elsereturn 0;}/*******************************每月的天数*****************************/{int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; /*每个月中的天数*/if(isleap( year))a[1]=29; /*闰年2月份有29天*/return a[month-1];}/***********************判断某天是一年中的第几天************************/ int eachyeartotal(int year,int month,int day){int i,sum=0;for(i=1;i<month;i++)sum+=maxDay(year,i);sum+=day;return sum;}/********************对天数进行判断确定是星期几***************************/ int week(int year,int month,int day){int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number=number%7 ;return number;}/****************************输出年月*********************************/ void display(int year ,int month){int max,number,i,j=1;number=week(year,month,1);printf(" %4s %4s %4s %4s %4s %4s %4s\n","Sun","Mon","Tue","Wed", "Thu","Fri","sat");for(i=0;i<number;i++)printf(" "); /*1号前的星期补空格*/ while(j<=max){printf("%6d",j);if (i%7==6)printf("\n"); /* 每7格换一行*/i++;j++;}printf("\n\n");}/******************************输出年历****************************/ void display1(int year){int i;printf("\n");for(i=1;i<=12;i++){printf("%d 年%d 月\n\n ",year,i);display(year,i);}}/****************************输出月历****************************/void display2(int year,int month){printf("\n%d 年%d 月\n ",year,month);display(year,month);}/******************************输出日历**************************************/ void display3(int year,int month,int day){whatweek( year,month,day);jieri(month,day);counterdays(year,month, day);}/****************************判断是星期几************************************/ void whatweek(int year,int month,int day){int number;number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day); number=number%7 ;switch( number){case 0:printf( "\n %d年%d月%d日是星期日",year,month,day);break;case 1:printf( "\n %d年%d月%d日是星期一",year,month,day);break;case 2:printf( "\n %d年%d月%d日是星期二",year,month,day);break;case 3:printf( "\n %d年%d月%d日是星期三",year,month,day);break;case 4:printf( "\n %d年%d月%d日是星期四",year,month,day);break;case 5:printf( "\n %d年%d月%d日是星期五",year,month,day);break;case 6:printf( "\n %d年%d月%d日是星期六",year,month,day);break;default:system("cls");printf(" 出现错误!\n" );}}/*******************************判断今天距特定日期的天数********************/int counterdays(int year,int month,int day){int year1, days0,days1,month1,days, day1;time_t timep;struct tm *p;time(&timep);p=gmtime(&timep);year1=(1900+p->tm_year) ;month1=(1+p->tm_mon) ;day1=(p->tm_mday); /*获取系统时间year1、month1、day1分别为年、月、日*/ days0=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day);days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,day1);days=days0-days1; /*计算出两个日期之间的时间差*/printf("\n\n 今天距%d年%d月%d日还有%d天\n\n",year,month,day,days);return days;}/****************************判断是否公历节日*****************************/void jieri(int month,int day){if(month==1)switch(day){case 1:printf(",这天是元旦");}if(month==2)switch(day){case 14:printf(",这天是情人节");}if(month==3)switch(day){case 8:printf(",这天是妇女节");break;case 12:printf(",这天是植树节");}if(month==4)switch(day){case 1:printf(",这天是愚人节");}if(month==5)switch(day){case 1:printf(",这天是劳动节");break;case 4:printf(",这天是青年节");}if(month==6)switch(day){case 1:printf(",这天是儿童节");}if(month==7)switch(day){case 1:printf(",这天是建党节");}if(month==8)switch(day){case 1:printf(",这天是建军节");}if(month==9)switch(day){case 10:printf(",这天是教师节");}if(month==10)switch(day){case 1:printf(",这天是国庆节");}if(month==12)switch(day){case 25:printf(",这天是圣诞节");}}/**********************************显示菜单选择*****************************/ void getmenu(){printf(" ************主菜单************\n\n");printf(" * 1、年历显示*\n\n");printf(" * 2、月历查询*\n\n");printf(" * 3、日期查询*\n\n");printf(" * 4、退出系统*\n\n");printf(" ******************************\n\n");}6 程序调试与测试6.1调试结果通过前期的上网,看有关书籍进行程序源代码的编写,编写完之后通过后期的改错,调试结果没有错误。

相关文档
最新文档