电子时钟课程设计Time,Date。派生出DateTime类
- 格式:doc
- 大小:337.50 KB
- 文档页数:26
电子时钟c语言课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中结构体、指针、函数等基本概念;2. 学生能运用C语言编程实现电子时钟的功能,包括时、分、秒的显示与更新;3. 学生了解电子时钟的原理,明确时间与计算机系统时间的关系。
技能目标:1. 学生能运用所学知识,设计并编写出具有实际功能的电子时钟程序;2. 学生通过课程学习,掌握编程调试技巧,提高解决问题的能力;3. 学生能够进行团队协作,共同分析问题、设计解决方案并完成项目。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发探索精神,增强学习动力;2. 学生通过课程学习,认识到编程在实际生活中的应用,提高学习的实用性;3. 学生在团队协作中,学会沟通与交流,培养合作精神和团队意识。
课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握C语言编程的基本技能,培养实际编程能力。
学生特点:学生已经掌握了C语言的基本语法,具有一定的编程基础,但对实际项目的开发流程和团队协作经验不足。
教学要求:教师需引导学生将所学理论知识应用于实际项目,注重培养学生的动手能力、解决问题的能力和团队协作能力。
在教学过程中,将目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. C语言基础回顾:结构体、指针、函数的定义与使用;2. 电子时钟原理介绍:时间概念、计算机系统时间处理;3. 编程环境准备:配置开发环境、编译与调试;4. 项目需求分析:明确电子时钟的功能需求、界面设计;5. 编程实现:- 设计结构体存储时间数据;- 编写函数实现时、分、秒的更新;- 实现界面显示与交互;- 处理异常情况与边界条件;6. 项目测试与优化:测试电子时钟程序、优化代码性能;7. 团队协作与交流:分组进行项目开发、组内讨论与分享;8. 课堂总结与反馈:总结项目开发过程、收集学生反馈。
教材关联章节:C语言基础、结构体与指针、函数、项目实践。
教学内容安排与进度:1. 基础知识回顾(1课时);2. 电子时钟原理介绍(1课时);3. 编程环境准备与项目需求分析(1课时);4. 编程实现(4课时);5. 项目测试与优化(2课时);6. 团队协作与交流(2课时);7. 课堂总结与反馈(1课时)。
课程设计电子时钟一、课程目标知识目标:1. 学生能够理解电子时钟的基本原理,掌握电子时钟的构成及各部分功能。
2. 学生能够运用所学知识,设计并制作一个简易的电子时钟。
3. 学生了解电子时钟在日常生活和科技领域中的应用。
技能目标:1. 学生能够运用所学知识,分析并解决电子时钟制作过程中遇到的问题。
2. 学生掌握基本的电路连接和调试方法,具备一定的动手操作能力。
3. 学生能够运用电子时钟的设计理念,进行创新设计和改进。
情感态度价值观目标:1. 培养学生对电子技术的兴趣和好奇心,激发学生的学习积极性。
2. 培养学生合作、探究、创新的精神,提高学生解决问题的能力。
3. 增强学生的环保意识,引导学生关注电子产品的节能和环保问题。
课程性质分析:本课程为电子技术学科的教学内容,旨在让学生了解电子时钟的基本原理和制作过程,提高学生的动手实践能力和创新能力。
学生特点分析:六年级学生具备一定的逻辑思维和动手能力,对新鲜事物充满好奇心,但需注意引导学生将理论知识与实际操作相结合。
教学要求:1. 注重理论与实践相结合,让学生在实际操作中掌握电子时钟的制作方法。
2. 创设有趣的学习情境,激发学生的学习兴趣和探究欲望。
3. 关注学生的个体差异,提供有针对性的指导,确保每个学生都能达到课程目标。
二、教学内容1. 电子时钟的基本原理与构成- 时钟芯片的工作原理- 电子时钟的电路构成及各部分功能2. 电子时钟的制作与调试- 元器件的识别与选用- 电路连接与焊接技巧- 电子时钟的调试与优化3. 电子时钟的应用与拓展- 电子时钟在日常生活和科技领域中的应用案例- 电子时钟的创新设计与改进方向教学大纲安排:第一课时:电子时钟的基本原理与构成- 介绍时钟芯片的工作原理- 分析电子时钟的电路构成及各部分功能第二课时:电子时钟的制作与调试- 讲解元器件的识别与选用方法- 演示电路连接与焊接技巧- 指导学生进行电子时钟的调试与优化第三课时:电子时钟的应用与拓展- 分享电子时钟在日常生活和科技领域中的应用案例- 引导学生进行电子时钟的创新设计与改进思考教材章节及内容:- 教材第十一章《数字电路及其应用》- 第三节:电子时钟的制作- 第四节:数字电路的应用与拓展教学内容进度安排:- 第一课时:完成电子时钟基本原理与构成的学习- 第二课时:完成电子时钟制作与调试的学习- 第三课时:进行电子时钟应用与拓展的讨论与分享三、教学方法1. 讲授法:- 通过生动的语言和形象比喻,讲解电子时钟的基本原理与构成,使学生易于理解。
简单电子时钟课程设计一、课程目标知识目标:1. 学生能够理解电子时钟的基本原理,掌握电子时钟的主要组成部分及其功能。
2. 学生能够掌握电子时钟显示时间的基本方法,包括时、分、秒的表示和转换。
3. 学生能够了解电子时钟的简易电路图,并认识常见电子元件。
技能目标:1. 学生能够运用所学知识,设计并搭建一个简易的电子时钟。
2. 学生能够通过实际操作,调试和优化电子时钟的运行效果。
3. 学生能够运用电子时钟知识解决实际问题,提高创新能力和动手能力。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发学习热情,树立科学探究精神。
2. 学生在合作探究中,培养团队协作能力和沟通能力,增强集体荣誉感。
3. 学生通过学习电子时钟的制作,认识到科技对生活的影响,培养环保意识和节能意识。
课程性质:本课程为实践性课程,结合理论知识与实际操作,注重培养学生的动手能力和创新能力。
学生特点:六年级学生具备一定的认知能力和动手能力,对新奇事物充满好奇心,善于合作探究。
教学要求:教师需引导学生掌握电子时钟的基本原理和制作方法,注重培养学生的实践能力和团队协作能力,提高学生的科学素养。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容本章节教学内容依据课程目标,结合课本《信息技术》六年级下册第四章“走进电子世界”内容进行组织。
1. 电子时钟原理:介绍电子时钟的基本工作原理,包括晶振振荡器、分频器、计数器、显示电路等组成部分。
2. 电子元件认知:学习常见电子元件,如电阻、电容、二极管、三极管等,并了解其在电子时钟中的作用。
3. 制作简易电子时钟:详细讲解电子时钟的制作步骤,包括电路图的绘制、元件的选取、焊接和调试。
4. 时间的表示与转换:学习电子时钟中时、分、秒的表示方法,以及它们之间的转换关系。
5. 教学大纲安排:- 第一节课:电子时钟原理及电子元件认知;- 第二节课:绘制简易电子时钟电路图,学习焊接技巧;- 第三节课:组装电子时钟,进行初步调试;- 第四节课:优化电子时钟,学习时间表示与转换。
电子时钟工具的程序设计及代码示例为满足现代生活的需求,电子时钟成为人们生活中的常见工具。
除了具备实时显示时间的功能外,电子时钟还可以根据用户需求进行各种定制,如显示日期、倒计时、闹钟等功能。
本文将探讨电子时钟的程序设计方法,并提供一个简单的代码示例。
一、程序设计方法在进行电子时钟的程序设计前,我们需要确定以下几个关键因素:1. 使用的编程语言:根据实际情况选择合适的编程语言,如C++、Java、Python等。
2. GUI框架:确定使用什么图形界面框架,如Qt、Tkinter等。
3. 实时更新:确定时间的实时更新方式,可以利用计时器、循环等方式进行时间更新。
4. 用户交互:考虑用户是否需要与电子时钟进行交互,如设置闹钟、选择日期等。
二、代码示例以下是一个基于Python和Tkinter的电子时钟代码示例,代码注释中详细说明了每个函数的功能和实现方法:```pythonimport tkinter as tkfrom datetime import datetimedef update_time():# 获取当前时间current_time = datetime.now().strftime("%H:%M:%S")# 更新时间标签time_label.config(text=current_time)# 每隔1秒更新一次时间time_label.after(1000, update_time)# 创建窗口window = ()window.title("电子时钟")# 创建时间标签time_label = bel(window, font=("Arial", 100), bg="white") time_label.pack(pady=50)# 更新时间update_time()# 运行窗口主循环window.mainloop()```以上代码创建了一个简单的窗口,使用标签实时显示当前时间。
电子时钟课程设计一、课程目标知识目标:1. 学生能理解电子时钟的基本组成部分,掌握时钟的运行原理;2. 学生能运用所学知识,分析电子时钟的电路图,并解释各部分功能;3. 学生能掌握电子时钟的设置与调整方法,了解其应用场景。
技能目标:1. 学生能通过实际操作,完成电子时钟的组装和调试;2. 学生能运用所学知识,解决电子时钟使用过程中遇到的问题;3. 学生能运用电子时钟的设计思路,进行简单的电子制作。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发学习热情;2. 学生养成合作学习的习惯,学会与他人分享和交流;3. 学生认识到科技发展对社会生活的影响,树立创新意识。
课程性质:本课程为电子技术实践课程,以培养学生的动手能力和创新意识为主。
学生特点:学生为初中生,具有一定的物理知识和动手能力,对电子技术感兴趣。
教学要求:结合学生特点,注重实践操作,引导学生运用所学知识解决实际问题,培养创新思维。
在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 电子时钟的基本原理与组成- 时钟电路的运行原理- 电子时钟的组成部分及功能2. 电子时钟的电路分析与设计- 电路图的识别与分析- 元器件的选择与应用- 电路连接与调试方法3. 电子时钟的组装与调试- 组装过程的步骤与方法- 调试技巧与故障排查- 电子时钟的优化与改进4. 电子时钟的使用与设置- 时钟显示与调整方法- 闹钟、定时器等功能的应用- 电子时钟的日常维护与保养5. 电子时钟的制作实践- 制作简单的电子时钟- 创新设计与应用- 成果展示与评价教材章节关联:1. 电子时钟基本原理与组成:对应教材第3章“电子时钟与计时器”2. 电路分析与设计:对应教材第4章“电子电路分析与设计”3. 组装与调试:对应教材第5章“电子制作实践”4. 使用与设置:对应教材第6章“常用电子设备的使用与维护”5. 制作实践:结合教材第5章和第6章内容,进行综合实践教学进度安排:第1-2课时:电子时钟的基本原理与组成第3-4课时:电子时钟的电路分析与设计第5-6课时:电子时钟的组装与调试第7-8课时:电子时钟的使用与设置第9-10课时:电子时钟的制作实践与评价三、教学方法1. 讲授法:- 对于电子时钟的基本原理与组成,采用讲授法进行教学,让学生掌握基本概念和原理;- 结合多媒体演示,以图文并茂的形式,帮助学生理解电路图的识别与分析;- 通过讲解实例,使学生了解电子时钟在实际应用中的功能与作用。
电子时钟的设计课程设计一、课程目标知识目标:1. 学生能理解电子时钟的基本工作原理,掌握电子时钟的组成部分及功能。
2. 学生能够运用所学的电子元件,如LED数码管、时钟芯片等,设计并搭建一个简单的电子时钟。
3. 学生了解并掌握时间计算、时间显示转换等相关知识。
技能目标:1. 学生能够运用所学知识,进行电路设计、搭建和调试,提高动手实践能力。
2. 学生能够通过团队合作,共同解决问题,提高沟通协作能力。
3. 学生能够运用所学知识,对电子时钟进行创新设计和优化,培养创新思维和创新能力。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发学习热情,树立科学研究的自信心。
2. 学生在学习过程中,养成积极思考、勤于动手的好习惯,提高自主学习能力。
3. 学生通过团队协作,培养集体荣誉感和责任感,增强团队精神。
4. 学生能够关注电子时钟在生活中的应用,体会科技改变生活,培养社会责任感。
本课程针对初中年级学生,结合电子技术课程内容,注重实践性与创新性。
在教学过程中,关注学生的个体差异,鼓励学生积极参与,培养他们的实践能力、创新精神和团队合作意识。
通过本课程的学习,使学生在掌握电子时钟相关知识的基础上,能够将所学应用于实际生活,提高解决实际问题的能力。
二、教学内容1. 电子时钟基础知识:- 时钟芯片的原理与功能- LED数码管的结构与显示原理- 电阻、电容等基本电子元件的作用与选型2. 电子时钟设计与制作:- 电路原理图绘制与电路搭建- 时钟芯片的编程与调试- 电路焊接与电子时钟组装3. 电子时钟应用与优化:- 时间计算与显示功能实现- 电子时钟的创新设计与优化方案- 电子时钟在生活中的应用案例教学内容依据课程目标,结合教材第十五章“电子时钟的设计与应用”展开。
教学大纲分为三个阶段:第一阶段:电子时钟基础知识学习,为期2课时。
第二阶段:电子时钟设计与制作,为期4课时。
第三阶段:电子时钟应用与优化,为期2课时。
教学内容注重理论与实践相结合,逐步引导学生掌握电子时钟相关知识,培养实践能力和创新精神。
课程设计电子时钟设计一、教学目标本课程旨在让学生掌握电子时钟的基本设计原理和技能,能够独立完成一个简单的电子时钟设计项目。
具体目标如下:1.了解电子时钟的基本构成和原理;2.掌握常用的电子元器件及其功能;3.学习电子时钟设计的常用方法和技巧。
4.能够使用基本的电子工具和设备;5.能够阅读和理解电子时钟的设计图纸;6.能够独立完成一个简单的电子时钟设计项目。
情感态度价值观目标:1.培养学生的创新意识和团队合作精神;2.培养学生对电子技术的兴趣和热情;3.培养学生对科学研究的严谨态度和责任感。
二、教学内容本课程的教学内容主要包括以下几个部分:1.电子时钟的基本原理和构成;2.常用电子元器件的功能和应用;3.电子时钟设计的常用方法和技巧;4.电子时钟设计实例讲解和分析。
第一周:电子时钟的基本原理和构成;第二周:常用电子元器件的功能和应用;第三周:电子时钟设计的常用方法和技巧;第四周:电子时钟设计实例讲解和分析。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:用于讲解电子时钟的基本原理、构成和设计方法;2.案例分析法:通过分析具体的电子时钟设计案例,让学生更好地理解和掌握设计技巧;3.实验法:让学生通过实际操作,独立完成一个简单的电子时钟设计项目。
四、教学资源本课程的教学资源主要包括以下几个部分:1.教材:《电子时钟设计入门》;2.参考书:电子时钟设计相关的专业书籍;3.多媒体资料:电子时钟设计的相关视频和图片;4.实验设备:电子工作台、示波器、信号发生器等。
以上教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。
1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估其对电子时钟设计的理解和掌握程度。
2.作业:布置相关的设计项目和练习题,要求学生在规定时间内完成,以检验其对电子时钟设计方法和技巧的掌握情况。
时分电子时钟课程设计一、课程目标知识目标:1. 学生能理解时分电子时钟的基本原理,掌握时钟的数字电路组成和工作方式。
2. 学生能够描述电子时钟中时分秒的显示方式,了解其换算关系。
3. 学生掌握电子时钟的调整方法,包括校时、校分等操作。
技能目标:1. 学生能够运用所学知识,设计简单的时分电子时钟电路。
2. 学生通过动手实践,提高电子元件的连接和调试技能。
3. 学生能够运用逻辑思维和问题解决能力,分析和解决电子时钟在使用过程中可能出现的简单问题。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,增强学习电子技术的自信心。
2. 学生在团队合作中,培养沟通与协作能力,学会相互尊重和关心。
3. 学生认识到电子时钟在现代生活中的重要性,增强珍惜时间的意识。
课程性质:本课程为电子技术实践课程,以理论联系实际,注重培养学生的动手操作能力和实际应用能力。
学生特点:五年级学生,具有一定的逻辑思维能力和动手操作能力,对新鲜事物充满好奇心。
教学要求:结合学生特点,采用启发式教学,激发学生兴趣,引导学生主动探索,注重培养学生的实际操作能力。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 电子时钟原理:介绍电子时钟的基本工作原理,包括振荡器、分频器、计数器、译码器等组成部分的功能和作用。
相关教材章节:第五章《数字电路基础》2. 时分秒显示与换算:讲解时分秒的显示方式,以及它们之间的换算关系。
相关教材章节:第六章《计数器与显示电路》3. 电子时钟电路设计:引导学生学习设计简单的时分电子时钟电路,包括电路图的绘制、元件的选择和连接。
相关教材章节:第七章《数字电路设计与应用》4. 电子时钟调整方法:介绍电子时钟的校时、校分等调整方法,以及注意事项。
相关教材章节:第八章《数字电路调试与维修》5. 实践操作:组织学生进行电子时钟的组装、调试和测试,培养学生的动手操作能力。
相关教材章节:实验指导书《数字电路实验》教学进度安排:第一课时:电子时钟原理学习,了解电子时钟的组成和功能。
电子时钟电子课程设计一、教学目标本课程旨在让学生了解电子时钟的工作原理,掌握基本的电子电路设计和实验技能,培养学生的创新意识和团队合作精神。
具体目标如下:1.知识目标:学生能够理解电子时钟的基本原理,包括时钟芯片、电路板设计、显示系统等。
2.技能目标:学生能够运用电子元件,如电阻、电容、二极管、晶体管等,设计并制作一个简单的电子时钟。
3.情感态度价值观目标:学生能够体验到科技制作的乐趣,增强对科学的兴趣和好奇心,培养团队合作和解决问题的能力。
二、教学内容本课程的教学内容主要包括电子时钟的工作原理、电路设计、实验操作和调试技巧。
具体安排如下:1.第一章:电子时钟概述,介绍电子时钟的原理和应用。
2.第二章:电路设计基础,讲解电子元件的功能和应用,以及电路图的绘制。
3.第三章:时钟芯片的使用,介绍时钟芯片的原理和编程方法。
4.第四章:电路板设计和制作,讲解电路板的设计原则和制作流程。
5.第五章:显示系统的设计,介绍各种显示器件的原理和应用。
6.第六章:实验操作和调试,讲解实验设备的使用方法和调试技巧。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等。
具体应用如下:1.讲授法:用于讲解电子时钟的基本原理和知识点。
2.讨论法:鼓励学生就电路设计和实验过程中遇到的问题进行讨论,培养团队合作精神。
3.案例分析法:分析典型的电子时钟设计案例,帮助学生掌握电路设计和调试技巧。
4.实验法:让学生动手制作电子时钟,提高其实际操作能力和创新能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:电子时钟设计指南,用于引导学生学习电子时钟的基本知识和技能。
2.参考书:电子电路设计手册,为学生提供更多的电路设计参考资料。
3.多媒体资料:包括电子时钟工作原理的视频、电路图演示等,帮助学生更好地理解电子时钟的原理和设计。
电子时钟课程设计1. 引言本篇文档介绍了一个关于电子时钟的课程设计方案。
电子时钟是一种常见的时间显示设备,它可以通过集成电路和显示屏来实现时间的精确显示。
本课程设计旨在帮助学生深入了解电子时钟的工作原理和实现方法,并通过实际动手实践来巩固所学知识。
2. 设计目标本课程设计的主要目标如下:1.了解电子时钟的基本工作原理;2.掌握使用集成电路和显示屏实现电子时钟的方法;3.理解时钟实时显示的原理,并能够实现时间的准确显示;4.学会利用按键和继电器等模块实现时钟的功能扩展。
3. 设计内容本课程设计包括以下三个主要部分:3.1 硬件设计在硬件设计部分,学生需要选择适当的集成电路和显示屏,根据设计要求进行电路布局和连线。
具体的设计步骤如下:1.确定所需的功能,包括显示时间、日期、闹钟等;2.选择适当的集成电路,如时钟芯片、计数器芯片等,并了解其引脚功能;3.选择合适的显示屏,如数码管、液晶显示屏等,并了解其接口要求;4.根据引脚功能和接口要求,进行电路布局和连线;5.搭建电路并进行测试,确保电子时钟的基本功能正常。
3.2 软件设计在软件设计部分,学生需要编写相应的程序代码,控制集成电路和显示屏实现电子时钟的功能。
具体的设计步骤如下:1.熟悉集成电路的工作原理和编程接口;2.编写初始化程序,对集成电路进行初始化设置;3.编写时钟显示程序,实现时间的实时显示功能;4.编写日期显示程序,实现日期的显示功能;5.编写闹钟程序,实现闹钟功能的设定和响铃;6.编写功能扩展程序,如按键控制、亮度调节等。
3.3 整体调试在整体调试部分,学生需要对硬件和软件进行整体的测试和调试,确保电子时钟的各项功能正常工作。
具体的调试步骤如下:1.连接电子时钟的电源,确保电路和显示屏正常供电;2.进行硬件自检,检查电路连线和元件的工作状态;3.启动电子时钟,观察显示屏是否正常显示时间和日期;4.设置闹钟,检查闹钟的设定和响铃功能;5.进行功能扩展测试,如按键控制、亮度调节等;6.若发现问题,及时进行修改和调试,直至所有功能正常。
课程设计报告课程设计题目:日期时间显示专业:软件工程(嵌入式)********学号:**********班级:10211118****:**2011年12 月3 日目录1.实验目的 (3)2.实验要求……………………………………………3~43.题目分析……………………………………………4~54.实验思路 (5)5.实验过程 (5)5.1类的创建 (5)5.2类成员函数的实现…………………………6~85.3主调函数……………………………………8~105.4程序运行测试 (11)《2011级C++语言程序设计课程设计》实验时间:2011.11.29-2010.12.02实验地点:软件楼505室实验目的:《程序设计语言II》是计算机专业一门重要的专业基础课。
此次课程设计的目的是以面向对象程序设计语言为基础,通过完成一些具有一定难度的课程设计题目的编写、调试、运行工作,进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。
从而提高自我分析问题、解决问题的能力。
通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C++语言程序设计》的基本理论知识,理论联系实际,进一步培养学生综合分析问题、解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握面向对象的程序设计方法。
(6)进一步掌握在集成环境下如何调试程序、修改程序和程序的测试。
实验要求:问题描述:(1)定义一个时间类Time,能提供时、分、秒组成的时间,并提供时间增加的方法(按秒)。
(2)定义一个日期类Date,记录年、月、日,并提供日期增加的方法(按天)。
(3)由类Time和日期类Date,派生出DateTime类,除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差。
编一应用程序,输入年、月、日、时、分、秒,在屏幕上模拟显示一电子计时器,不断输出下一秒的时间和日期,以及格林威治的日期和时间。
注意,当对日期增加1天后,会涉及所谓的“进位”问题:首先算出本“日”所在的月份具有的天数N,若加1之后的“日”数值超过所在的月份具有的天数N时,“进位”到月,而月份若超过12时还要“进位”到年。
思考:可对该类增加你所考虑到的其他功能,如,对日期进行输入,计算二日期的间隔天数,计算某日期为星期几,打印对象当前数据的y年m月的月历,一次增加若干天,对两个日期进行其他比较运算等。
题目分析:定义时钟的相关属性,包括time,date,datetime类型的year、month、day、hour、minute、second,week等信息。
在计算时间日期的时候,每达到1秒的时候对second进行加1,然后判断是否达到60秒,达到的话minute就加1,同样的方法对hour、day、month和year 进行计算,在对day计数时,考虑到大小月和闰年,对day进行加1时,判断是哪一月和是否为闰年。
在确定年、月、日之后,使用函数Week()进行对星期几的计算,根据1901年每月1号是星期几可以得出现在是星期几。
在这个程序中,还使用了一个对话框类,使用对话框来对时间日期的设置。
在菜单栏里添加一个“设置时间”的选项和一个菜单消息,当点击这个选项就会弹出设置时间日期的对话框,对话框中编辑控件设定了每个值的取值范围,从而对输入错误进行排除。
UML图:实验思路:先判断年份是否是闰年,而计算出一年的天数,在定义出time和date类,派生出datetime类。
在进行实现赋值。
同时根据函数的重载推算出年份的二月天数,而得到这天在这年的具体位置。
然后根据void stuation1(datetime & t)计算两日期相差天数。
用void timers( datetime &dtime)模拟电子计时器,用goto l;//exit();//退出系统。
实验过程:#include<iostream>#include<string>#include<cmath>#include<windows.h>using namespace std;int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};bool isleapyear(int year)//判断是否是闰年{return (year%4==0 && year%100!=0)||(year%400==0);}int mon_day(int year ,int month)//判断月份对应的天数{if (isleapyear(year)&&month==2){return 29;}else return mon[month];}int getyearday(int year)//返回一年天数{if(isleapyear(year))return 366;else return 365;}class time{private:int hour;int minute;int second;public:time();time(int nhour,int nminute,int nsecond);time(time &c);~time();int gethour(){return hour;};int getminute(){return minute;};int getsecond(){return second;};void sethour(int nhour){hour=nhour;};void setminute(int nminute){minute=nminute;};void setsecond(int nsecond){second=nsecond;}; };class date{private:int year;int month;int day;string week;public:date();date(int y,int m,int d);date(date &t);~date();int getyear(){return year;};int getmonth(){return month;};int getday(){return day;};string getweek(){ return week;};void setyear(int nyear){year=nyear;};void setmonth(int nmonth){month=nmonth;};void setday(int nday){day=nday;};void setweek(string c){week=c;};void reset(int y=0,int m=0,int d=0);date operator +(const date &t);date operator -(const date &t);};class datetime:public date,public time{private:public:datetime();datetime(int nyear,int nmonth,int nday,int nhour,int nminute,int nsecond);datetime(int nyear,int nmonth,int nday,time & c);datetime(date & t,int nhour,int nminute,int nsecond);datetime addbysecond();datetime operator=(datetime & t);datetime operator+(datetime & t);};time::time(){hour=0;minute=0;second=0;}time::time(int nhour,int nminute,int nsecond){if(nhour>24||nhour<0){ hour=0;}else hour=nhour;if(nminute>59||nminute<0){minute=0;}else minute=nminute;if(nsecond>59||nsecond<0){second=0;}else second=nsecond;}time::time(time &c){hour=c.hour;minute=c.minute;second=c.second;}time::~time(){}date::date(){year=0;month=0;day=0;}date::date(int y,int m,int d) {if(y<1900){y=1900;}else year=y;if(m>12 || m<=0){m=1;}else month=m;int maxday=0;if(m==2){if(isleapyear(year)){maxday=29;}else{maxday=28;}}else{maxday=mon[m];}if(d>maxday || d<=0){d=1;}day=d;}date::date(date & t){year=t.year ;month=t.year;day=t.day;}date::~date(){};void date::reset (int y,int m,int d){this->year =y;this->month =m;this->day =d;}datetime::datetime():date(),time(){};datetime::datetime(int nyear,int nmonth,int nday,int nhour,int nminute,int nsecond):date(nyear,nmonth,nday),time(nhour,nminute,nsecond){}datetime::datetime(int nyear,int nmonth,int nday,time & c):time(c),date(nyear,nmonth,nday){}datetime::datetime(date & t,int nhour,int nminute,int nsecond):date(t),time(nhour,nminute,nsecond){}datetime datetime::addbysecond(){this->setsecond(this->getsecond()+1);if(this->getsecond()>59){this->setsecond(0);this->setminute(this->getminute()+1);if(this->getminute()>59){this->setminute(0);this->sethour(this->gethour()+1);if(this->gethour()>23){this->sethour(0);this->setday(this->getday()+1);if(this->getday()>mon_day( this->getyear() ,this->getmonth())){this->setday(1);this->setmonth(this->getmonth()+1);if(this->getmonth() >12){this->setmonth(1);this->setyear(this->getyear()+1);}}}}}return *this;}datetime datetime::operator=(datetime & t){this->setyear(t.getyear());this->setmonth(t.getmonth());this->setday(t.getday());this->sethour(t.gethour());this->setminute(t.getminute());this->setsecond(t.getsecond());return *this;}datetime datetime::operator+(datetime & t){if((this->getyear()+t.getyear())<1900){this->setyear(1900);}else this->setyear((this->getyear()+t.getyear()));if((this->getmonth()+t.getmonth())>12 || (this->getmonth()+t.getmonth())<=0) {this->setmonth(1);}else this->setmonth((this->getmonth()+t.getmonth()));int maxday=0;if((this->getyear()+t.getyear())==2){if(isleapyear((this->getyear()+t.getyear()))){maxday=29;}{maxday=28;}}else{maxday=mon[this->getmonth()+t.getmonth()];}if((this->getday()+t.getday())>maxday ||(this->getday()+t.getday())<=0) {this->setday(1);}this->setday((this->getday()+t.getday()));return *this;}int dayinyear(datetime & t)//日期在年中的天数{int i=0,day=0;for(i=1;i<t.getmonth();i++){day+=mon_day(t.getyear(),i);}day+=t.getday();return day;}void getweek( datetime &t)//判断天数对应星期{int week=0;int diffday;if(t.getyear()==1900){if(t.getmonth()==1){diffday=t.getday()-1;}else{diffday=dayinyear(t)-1;}}elseint d1=getyearday(1900)-1;int d2=dayinyear(t);int d3=0;int year=0;for(year=1901;year<t.getyear();year++){d3+=getyearday(year);}diffday=d1+d2+d3;}week=diffday%7;switch(week){case 0:t.setweek("星期一");break;case 1:t.setweek("星期二");break;case 2:t.setweek("星期三");break;case 3:t.setweek("星期四");break;case 4:t.setweek("星期五");break;case 5:t.setweek("星期六");break;case 6:t.setweek("星期天");break;}cout<<t.getweek() <<" "<<endl;;}int getmonthfirst(datetime & t)//返回对应月的第一天星期数{datetime temp(t.getyear(),t.getmonth(),1,t.gethour(),t.getminute(),t.getsecond());getweek( temp);//判断对应星期数if(temp.getweek()=="星期一")return 1;else if(temp.getweek()=="星期二")return 2;else if(temp.getweek()=="星期三")return 3;else if(temp.getweek()=="星期四")return 4;else if(temp.getweek()=="星期五")return 5;else if(temp.getweek()=="星期六")return 6;elsereturn 7;}void calendar(datetime & t)//打印特殊节日 {if( t.getmonth()==2){if(t.getday()==3)cout<<"立春。