日期时间显示程序_廖海洋

合集下载

课课程设计c语言年历显示

课课程设计c语言年历显示

课课程设计c语言年历显示一、教学目标本节课的教学目标是使学生掌握C语言编程的基本技巧,学会使用C语言编写年历显示程序。

具体来说,知识目标包括了解C语言的基本语法、数据类型、运算符、控制结构等;技能目标包括能够运用C语言编写简单的程序,并具备一定的调试和纠错能力;情感态度价值观目标包括培养学生的编程兴趣,提高学生解决问题的能力。

二、教学内容本节课的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等。

具体安排如下:1.引言:介绍C语言的历史和发展,以及本节课的学习目标。

2.数据类型和变量:讲解C语言的基本数据类型(整型、浮点型、字符型等)和变量,以及如何声明和使用变量。

3.运算符:介绍C语言的基本运算符(算术运算符、关系运算符、逻辑运算符等),以及运算符的优先级。

4.控制结构:讲解C语言的条件语句(if-else)和循环语句(for、while),以及它们的嵌套使用。

5.实践环节:引导学生编写年历显示程序,巩固所学知识。

三、教学方法本节课采用讲授法、讨论法和实验法相结合的教学方法。

首先,通过讲授法向学生传授C语言的基本语法、数据类型、运算符和控制结构等知识;其次,通过讨论法引导学生探讨编程中的问题,培养学生的编程思维;最后,通过实验法让学生动手编写年历显示程序,提高学生的实际编程能力。

四、教学资源本节课的教学资源包括教材、参考书、多媒体资料和实验设备。

教材和参考书用于为学生提供丰富的学习材料,多媒体资料用于辅助讲解和演示,实验设备用于让学生进行实践操作。

此外,还可以利用网络资源,如在线编程平台,让学生进行在线编程练习,巩固所学知识。

五、教学评估本节课的教学评估主要包括平时表现、作业和考试三个部分。

平时表现占30%,主要评估学生在课堂上的参与程度、提问回答等情况;作业占40%,主要评估学生的编程能力和理解程度;考试占30%,主要评估学生对C语言基本语法、数据类型、运算符和控制结构的掌握程度。

C语言课程设计-日历显示

C语言课程设计-日历显示

中国海洋大学青岛学院C语言课程设计报告书题目日历显示学生姓名指导教师学院专业班级组内分工目录1 前言 (1)2 需求分析 (2)3 模块设计图及组内分工 (3)4 NS流程图清单 (5)5 存储结构及函数说明 (8)6 课程设计结果 (9)7 实践心得体会 (14)前言设计目的:1.加深对《C语言程序设计》课程所学知识的理解,进一步巩固C语言语法规则。

学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。

2.对题目的理解:1.本程序设计了一个比较完整的有一定功能的日历显示系统。

2.该题目要求熟练的掌握C语言的基本知识。

中包括数据类型(int、char);运算类型(算术运算、逻辑运算、自增运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构),进一步掌握各种函数的应用,包括时间函数等。

2 需求分析该系统共有四个大部分:日历显示功能、日历查询和闰年判断功能、参数检查功能、选做(通过键盘操作选择各个菜单)。

本系统通过对某天的查询、闰年的判断,日期的合法性判断,日期的调整等各部分进行了有效的计划,组织和控制,得到了一个功能比较完整并能实现一定功能的日历显示系统。

日历显示功能:判断星期,根据公式有年月日判断星期:打印时,通过第一天星期的判断,得到后面的日期,通过定长度输出。

对于初始输入当前日历,可通过函数取出系统时间进行初始化。

日历查询和闰年判断功能:闰年的判断,日期的查询,就是直接打印该天所在月份的日历。

参数检查功能:判断日期是否合法,如果合法,再判断闰年,之后判断二月份是否满足要求。

如果输入不合法或者不满足输入要求,则要求重新输入。

选做(通过键盘操作选择各个菜单):捕获键盘的输入,再判断哪个键的输入,根据某键的输入,则设置相应的年或月或日的值,再属性输出,则可以实现日期的调整。

3 模块设计图及组内分工模块一:日历显示功能判断星期,根据蔡勒公式,有年月日判断星期:nDay=year-1+(year-1)/4+(year-1)/400+ndayw=nDay%7;其中year:要查询的年份,nday:从该年的一月一日起到该天的天数,w:得出的星期数,w==0代表星期天打印月历时,通过第一天星期的判断,依次得到后面的日期,通过定长度输出,遇到星期六就换行输出,因此可以按照月历的格式输出。

c语言课程设计作业年历显示

c语言课程设计作业年历显示

c语言课程设计作业年历显示一、教学目标本课程的目标是让学生掌握C语言编程的基本知识,能够编写简单的年历显示程序。

具体目标如下:1.了解C语言的基本语法和数据类型。

2.掌握控制结构和函数的定义及使用。

3.理解指针的概念及其应用。

4.能够使用C语言编写简单的程序。

5.能够利用控制结构和函数实现年历显示的功能。

6.能够运用指针解决实际编程问题。

情感态度价值观目标:1.培养学生的编程兴趣,提高其学习编程的自信心。

2.培养学生团队合作的精神,学会与他人分享和交流。

3.培养学生解决问题的能力,勇于面对挑战。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、控制结构、函数和指针。

具体安排如下:1.第一章:C语言概述,介绍C语言的基本概念和特点。

2.第二章:数据类型和变量,讲解整型、浮点型、字符型等数据类型的使用。

3.第三章:控制结构,学习顺序结构、分支结构和循环结构。

4.第四章:函数,了解函数的定义、声明和调用。

5.第五章:指针,掌握指针的概念和应用。

6.第六章:年历显示程序的设计与实现,综合运用所学知识编写年历显示程序。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等。

1.讲授法:用于讲解基本概念、语法和算法。

2.讨论法:引导学生针对具体问题进行讨论,培养团队合作精神。

3.案例分析法:通过分析典型实例,让学生学会运用所学知识解决实际问题。

4.实验法:让学生动手编写程序,提高其编程能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《C语言程序设计》。

2.参考书:《C语言编程实例解析》。

3.多媒体资料:教学PPT、视频教程。

4.实验设备:计算机、编程环境。

五、教学评估为了全面、客观地评估学生的学习成果,我们将采取以下评估方式:1.平时表现:通过观察学生在课堂上的参与程度、提问和回答问题的表现,以及小组合作学习中的表现来评估。

c课程设计日历显示

c课程设计日历显示

c 课程设计日历显示一、教学目标本课程的目标是让学生掌握日历显示的基本知识和技能,能够运用编程语言实现简单的日历显示功能。

具体的学习目标包括:1.知识目标:学生需要了解日历的基本结构和相关概念,掌握日历显示的原理和方法。

2.技能目标:学生能够运用编程语言编写日历显示的程序,具备一定的编程能力和问题解决能力。

3.情感态度价值观目标:学生通过完成日历显示的项目,培养对编程和计算机科学的兴趣和热情,提高自我学习和探索的能力。

二、教学内容根据课程目标,本课程的教学内容主要包括以下几个部分:1.日历的基本结构和相关概念:介绍日历的基本组成部分,如年、月、日、星期等,以及与之相关的概念如闰年、公历、农历等。

2.日历显示的原理和方法:讲解日历显示的基本原理和方法,包括日期计算、星期计算、闰年判断等。

3.编程实现日历显示:通过编程语言(如C语言)编写日历显示的程序,涉及变量定义、循环结构、条件语句等编程基础。

三、教学方法为了达到课程目标,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:教师通过讲解和演示,向学生传授日历的基本知识和编程方法。

2.讨论法:教师引导学生进行思考和讨论,通过提问和回答的方式促进学生的理解和思考。

3.案例分析法:教师通过分析具体的日历显示案例,让学生理解和掌握编程的思路和方法。

4.实验法:学生通过动手编写程序,实现日历显示的功能,培养编程能力和问题解决能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:选择合适的编程教材,提供日历显示的相关知识和编程指导。

2.参考书:提供相关的参考书籍,供学生进一步学习和深入研究。

3.多媒体资料:制作课件和教学视频,通过图文并茂的方式展示日历的基本知识和编程方法。

4.实验设备:提供计算机和其他实验设备,让学生能够实际编写程序并进行实验。

五、教学评估为了全面、客观、公正地评估学生的学习成果,本课程将采用多种评估方式相结合的方法。

日期时间显示程序_廖海洋

日期时间显示程序_廖海洋

信息科学与技术学院程序设计基础课程设计报告题目名称:日期时间显示程序学生姓名:廖海洋学号: 2014508010专业班级:14计科1班指导教师:郭理2015年 6 月17 日目录1 课程设计题目与要求 (3)1.1设计题目 (3)1.2设计要求 (3)2 总体设计 (4)2.1 总体功能框架 (4)2.2 数据结构概要设计 (5)3 详细设计 (6)3.1数据结构详细设计 (6)3.2系统功能详细设计 (8)4 运行结果 (20)5 课程设计总结 (23)5.1 编程中的问题及解决方法 (23)5.2 小结 (23)5.3 心得体会 (23)5.4 程序设计方法 (24)参考文献 (24)附:源代码 (25)1 课程设计题目与要求1.1设计题目C++题目11:日期时间显示程序:编一应用程序,输入年、月、日、时、分、秒,在屏幕上模拟显示一电子计时器,不断输出下一秒的时间和日期,以及格林威治的日期和时间。

注意,当对日期增加1天后,会涉及所谓的"进位"问题:首先算出本"日"所在的月份具有的天数N,若加1之后的"日"数值超过所在的月份具有的天数N时,"进位"到月,而月份若超过12时还要"进位"到年。

1.2设计要求(1)定义一个时间结构体类型time,能提供时、分、秒组成的时间,并提供时间增加的方法(按秒)。

(2)定义一个日期结构体类型Date,记录年、月、日,并提供日期增加的方法(按天)。

(3)定义个日期时间结构体类型DateTime,除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差。

思考:可对该类增加你所考虑到的其他功能,如,对日期进行输入,计算二日期的间隔天数,计算某日期为星期几,打印对象当前数据的y年m月的月历,一次增加若干天,对两个日期进行其他比较运算等。

2 总体设计2.1 总体功能框架1.时间模块功能:能提供时、分、秒组成的时间,并提供时间增加的方法(按秒)。

c日历显示课程设计

c日历显示课程设计

c 日历显示课程设计一、课程目标知识目标:1. 让学生掌握日历的基础知识,包括星期、日期、月份和年份的表示方法。

2. 使学生了解不同历法的起源和特点,如公历、农历等。

3. 让学生学会如何使用日历查找特定日期,并了解日期与星期的对应关系。

技能目标:1. 培养学生动手制作日历的能力,运用所学知识设计简单的日历。

2. 提高学生运用日历进行时间管理和计划安排的能力。

3. 培养学生通过观察和思考,发现日历中隐藏的规律和周期性现象。

情感态度价值观目标:1. 培养学生珍惜时间、合理安排生活的意识。

2. 激发学生对历史文化的兴趣,了解历法发展的历史背景。

3. 培养学生合作交流、共同探讨的学习氛围,增强团队协作意识。

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

通过本课程的学习,使学生能够更好地了解时间概念,培养时间管理能力,同时提高学生的动手实践和团队协作能力。

课程目标旨在将理论知识与实际应用相结合,使学生在轻松愉快的氛围中掌握日历知识,培养良好的情感态度和价值观。

二、教学内容1. 日历的基础知识:包括星期的表示、日期、月份和年份的认识,以及日历的布局和结构。

- 教材章节:第三章“时间的计量”2. 历法的介绍:比较公历、农历等不同历法的特点和用途。

- 教材章节:第三章“历法的故事”3. 日历的使用方法:教授如何利用日历查询特定日期、计算日期间隔和判断星期。

- 教材章节:第三章“日历的运用”4. 制作手工日历:指导学生动手制作简单日历,加深对日历构成的理解。

- 教材章节:第三章“实践活动”5. 时间管理和计划安排:讨论如何合理安排时间,提高效率。

- 教材章节:第三章“时间管理”6. 日历中的规律和周期性:探索日历中的周期性现象,如闰年、季节变化等。

- 教材章节:第三章“时间的秘密”教学内容按照以上安排进行,确保学生能够系统地学习和掌握日历知识。

在教学过程中,结合实际案例和生活应用,使学生能够将所学知识内化为实际能力,培养良好的时间管理习惯。

万年历显示程序

万年历显示程序

汇编语言课程实习报告实习题目万年历显示程序学生姓名班级(学号)院系信息学院计算机系指导老师叶晓霞提交时间一、课题内容和要求题目描述:用汇编语言编写一个有简单界面显示的日历,要求输入年月日后,将该月的完整日历显示出来,包括星期几,且每月的星期六,日用不同颜色来表示。

并且要求显示输入的日期。

基本要求:(1)设计一个简单的接受键盘输入年月日信息的界面;(2)输入年月日后,将该月的完整日历显示出来,包括星期几,且每月的六,日。

(3)实物演示时要求讲出程序原理和设计思想;(4)程序运行良好、界面清晰。

提高要求:(1)界面色彩鲜明、友好,能够突出显示主题;(2)用不同的色彩明显表示出输入的日期;(3)错误输入要有提示及处理,结果显示清晰、合理。

二、需求和思路分析本课题要求设计一个显示万年历的程序,即要输入年月日后,将这个月的完整日历显示出来,包括这个月的每一天是星期几也要显示。

公历每年有12 个月,其中1、3、5、7、8、10、12 月为大月,每月31 天;4、6、9、11 月为小月,每月30 天。

公历有闰年平年之分,若某年是闰年,则该年2 月有29 天,全年有366 天;若某年是平年,则该年2 月有28 天。

那么首先要做的就是完成通过键盘输入得到要显示的年月日,能够将年月日储存起来同时将输入的日期显示出来这个功能。

在这里可以调用INT 21H的0AH的功能将键入的一串字符送入用户程序的缓冲区,0AH功能要求键入的字符串必须以“回车”做为结束标志,换句话说,按下回车键后,本次功能调用结束。

由于题目的要求错误输入要有提示及处理,所以也要考虑到所输入的年月日是否有符合日常逻辑,如果输入不正确,要显示出错误输入信息,并且提示重新输入年月日。

本课题的重点的地方和难点的地方就是怎么将输入的日期的当月的完整日历给显示出来。

那么就得在屏幕上先显示出星期一到星期日,在设计时将SUN…SAT在屏幕上显示出来,然后在下面依次显示完这个月的所有天数,而且要正确显示。

c课程设计日期时间显示

c课程设计日期时间显示

c 课程设计日期时间显示一、课程目标知识目标:1. 让学生掌握课程相关的基本概念,如时间的表达方式和日期的换算方法。

2. 使学生了解时间显示的原理,包括时区、夏令时等概念。

3. 帮助学生理解时间管理的重要性,学会合理安排自己的学习、生活时间。

技能目标:1. 培养学生运用所学知识进行日期时间计算和转换的能力。

2. 提高学生运用时间管理工具,如时间表、计划表等,规划自己学习和生活的技能。

3. 培养学生运用信息技术解决实际问题的能力,例如使用编程软件编写时间显示程序。

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

2. 培养学生合作、探究的学习态度,激发学生对科学知识的好奇心和求知欲。

3. 增强学生的环保意识,了解时间显示与环境、能源等方面的关系。

课程性质:本课程为学科整合课程,结合数学、科学、信息技术等学科知识,旨在培养学生的综合运用能力。

学生特点:六年级学生具有一定的认知能力和自主学习能力,对新鲜事物充满好奇心,但注意力容易分散。

教学要求:结合学生特点,采用生动有趣的教学方法,注重实践操作,提高学生的参与度和兴趣。

同时,关注个体差异,因材施教,确保每个学生都能在课程中取得进步。

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

二、教学内容1. 时间的概念与表达:介绍时间的基本单位(秒、分、时)、时间的表达方式(数字、文字)、时间进制换算(60进制、24进制)等。

教材章节:第一章 时间与时刻2. 日期的表示与计算:讲解日期的表示方法(阳历、阴历)、日期换算(年、月、日)、闰年的判断等。

教材章节:第二章 日期与时间计算3. 时间显示原理:介绍时区、夏令时的概念,以及时间显示设备(如电子表、钟表)的工作原理。

教材章节:第三章 时区与时间显示4. 时间管理:探讨时间管理的重要性,教授如何制定时间表、计划表,以及提高时间利用效率的方法。

教材章节:第四章 时间管理5. 实践操作:结合信息技术学科,运用编程软件(如Scratch、Python等)编写简单的日期时间显示程序。

九年级信息技术上册 第一单元 第2课 显示日期时间教学设计

九年级信息技术上册 第一单元 第2课 显示日期时间教学设计



【教师活动】
屏幕广播“日期时间查询”程序运行界面,单击“查询”、“退出”,展示程序运行的结果。
问题:该程序中用到了哪个对象?各对象都显示什么内容?
【学生活动】
观看广播。
结合已有的知识,考虑老师提出的问题。




【教师活动】
任务1、设计日期时间查询程序的界面。(注:三个标签框、二个命令按钮。)
课题名称
显示日期时间
主备人
周次
备课时间
组长签字
教学目标
◇掌握窗体、标签控件和命令按钮的使用方法。
◇掌握日期时间函数的使用方法。
◇熟悉VB程序设计的一般过程。
教学重点
◇掌握窗体、标签控件和命令按钮的使用方法。
◇掌握日期时间函数的使用方法。
◇依据对问题的分析设计合适的程序界面。
教学难点
◇对VB程序开发全过程的把握。
【学生活动】
1、启动VB6.0
2、在窗体中添加对象(提示:对象添加完的同学想办法设置一下各个对象的位置、大小及对齐方式。)
3、设置各对象的属性
(提示:前景色Forecolor、是否透明Backstyle、边框样式Borderstyle。)
【教师活动】
引导学生如何编写程序代码。
(注:向学生介绍Date$、Time$及“+”的作用。)
【学生活动】
编写程序代码。
调试并运行自己设计的程序。
以“日期时间查询”为名保存到自己的学习档案源自,并生成扩展名为“.exe”的文件。




参照课本P12自主学习“知识集装箱”
说明:教学过程包括预习内容与指导、展示交流、点拨升华、作业反馈等内容。

c预言课程设计日历显示

c预言课程设计日历显示

c预言课程设计日历显示一、教学目标本章节的教学目标包括以下三个方面:1.知识目标:使学生掌握日历显示的基本原理和实现方法,理解c预言的相关概念,能够运用c预言编写简单的日历显示程序。

2.技能目标:培养学生运用c预言进行程序设计的能力,提高学生的编程技巧和问题解决能力,使学生能够独立完成日历显示程序的编写和调试。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生对新技术的学习和应用能力,培养学生团队合作意识和自主学习能力。

二、教学内容本章节的教学内容主要包括以下几个部分:1.c预言的基本概念和语法,如变量、数据类型、运算符、控制语句等。

2.日历显示的程序设计方法,包括日历的布局设计、日期计算、事件显示等。

3.程序调试和优化技巧,如语法错误、逻辑错误、性能优化等。

4.团队合作和代码共享,如版本控制、代码评审、团队协作工具等。

三、教学方法本章节的教学方法采用以下几种方式:1.讲授法:教师讲解c预言的基本概念和语法,引导学生理解和掌握相关知识。

2.案例分析法:教师展示日历显示的实例,引导学生分析和理解程序设计方法。

3.实验法:学生动手编写和调试日历显示程序,培养学生的编程能力和问题解决能力。

4.讨论法:学生分组讨论和合作完成程序设计任务,培养学生的团队合作意识和交流能力。

四、教学资源本章节的教学资源包括以下几种:1.教材:提供c预言的基本概念和语法的讲解,日历显示的实例和教程。

2.多媒体资料:提供教学PPT、视频教程、在线编程平台等,丰富学生的学习体验和资源。

3.实验设备:提供计算机、编程环境、网络等,方便学生进行程序设计和调试。

4.团队合作工具:提供版本控制、代码评审等工具,方便学生进行团队合作和代码共享。

五、教学评估本章节的教学评估主要包括以下几个方面:1.平时表现评估:评估学生在课堂上的参与程度、提问回答、小组讨论等表现,以及学生的出勤情况。

2.作业评估:评估学生提交的作业质量,包括程序设计作业、实验报告等,检查学生的理解和掌握程度。

万年历程序

万年历程序

万年历程序简介万年历(Perpetual Calendar)是一个可以显示公历和农历的时间工具。

在这个文档中,我们将讨论如何编写一个简单的万年历程序,以及其实现原理和功能。

功能该万年历程序将具备以下功能:1.显示当前日期2.显示当前周数3.显示当前月份的日历4.显示指定年份和月份的日历实现原理为了实现万年历程序,我们需要使用一些基本的计算方法。

以下是一些相关的计算原理:判断某年是否是闰年判断某年是否是闰年可以使用以下公式:is_leap_year = (year % 4 == 0 and year % 100 ! = 0) or (year % 400 == 0)若上述公式的值为真,则表示该年份是闰年。

计算指定年份和月份的天数可以使用以下公式来计算指定年份和月份的天数:days_in_month = [31, # 1月28 + is_leap_year, # 2月31, # 3月30, # 4月31, # 5月30, # 6月31, # 7月31, # 8月30, # 9月31, # 10月30, # 11月31 # 12月]这样,我们就可以得到每个月份的天数。

判断某年某月的第一天是星期几我们可以使用Zeller’s Congruence算法来判断某年某月的第一天是星期几。

以下是该算法的公式:h = (day + 26*(month+1)//10 + k + k//4 + j//4 + 5*j) % 7其中,h是星期几(0代表星期六,1代表星期日,依次类推),day是月份的第一天的日期,month是月份(3代表三月,4代表四月,依次类推),k是该年的前两位数,j是该年的后两位数。

实现步骤以下是实现万年历程序的步骤:1.获取当前日期和时间2.使用相关公式判断当前年份是否是闰年3.显示当前日期和时间4.计算当前周数并显示5.获取当前月份的相关信息:年份、月份、天数、星期几6.显示当前月份的日历7.提供用户界面,允许用户输入指定的年份和月份8.使用相关算法计算指定年份和月份的日历9.显示指定年份和月份的日历示例代码以下是使用Python语言实现的一个简单的万年历程序:```python import datetime获取当前日期today = datetime.date.today() current_year = today.year current_month = today.month current_day = today.day判断当前年份是否是闰年is_leap_year = (current_year % 4 == 0 and current_year % 100 != 0) or (current_year % 400 == 0)显示当前日期和时间print(。

万年历C语言设计

万年历C语言设计

万年历的设计:要求:模仿现实生活中的挂历,能够显示年历、月历、日历,并具备退出功能。

当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。

当系统日期变到下一月时,系统自动翻页到下一月。

万年历的程序流程图:主要程序流程图:具体对于月份和年份的程序图如下:上图为计算星期方法 上图为打印日历程序图万年历的设计的程序源代码:#include <stdio.h>#include <stdlib.h>#include <ctype.h>void f(){int day,month,year,sum,leap,S;printf("\n请输入年月日\n");scanf("%d%d%d",&year,&month,&day);while(1){if((month>12||month<1)||(day>31||day<1)){printf("输入错误,重新输入");scanf("%d%d%d",&year,&month,&day);}else break;}switch(month){case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day;if(year%400==0||(year%4==0&&year%100!=0))leap=1;else leap=0;if(leap==1&&month>2)sum++;S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7; switch(S){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 0:printf("星期日\n");break;}}void g(){int i,j=1,k=1,a,b,month,year;printf("\n输入年月:\n");scanf("%d%d",&year,&month);while(1){if(month>12||month<1){printf("输入错误,重新输入");scanf("%d%d",&year,&month);}else break;}b=days_month(month,year);a=firstday (month,year);printf("*************************************\n"); printf(" Sun Mon Tue Wed Thu Fri Sat \n");if(a==7){for(i=1;i<=b;i++){printf("%4d",i);if(i%7==0){printf("\n");}}}if(a!=7){while (j<=4*a){printf(" ");j++;}for(i=1;i<=b;i++){printf("%4d",i);if(i==7*k-a){printf("\n");k++;}}}printf("\n*************************************\n");printf("\n");}int leap (int year){if(year%4==0&&year%100!=0||year%400==0)return 1;else return 0;}int days_month (int month,int year){if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) return 31;if(month==4||month==6||month==9||month==11)return 30;if(month==2&&leap(year)==1) return 29;else return 28;}int firstday(int month,int year){int W;W=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1;return W;}void h(){int i,j=1,k=1,a,b,month,year,g;printf("\n输入任意年:\n");scanf("%d",&year);for(g=0;g<=11;g++){month=g+1;b=days_month(month,year);a=firstday (month,year);printf("%d月\n",month);printf("*************************************\n");printf(" Sun Mon Tue Wed Thu Fri Sat \n");if(a==7){for(i=1;i<=b;i++){printf("%4d",i);if(i%7==0){printf("\n");}}}j=1;k=1;if(a!=7){while (j<=4*a){printf(" ");j++;}for(i=1;i<=b;i++){printf("%4d",i);if(i==7*k-a){printf("\n");k++;}}}printf("\n*************************************\n"); printf("\n");}}void main(){for(;;){switch(menu_select()){case 1:printf("输入年月日计算星期几\n");f();break;case 2:printf("打印任意日历\n");g();break;case 3:printf("打印任意年历\n");h();break;case 4:printf("谢谢使用!\n");exit(0);}}}int menu_select(){char S;int cn;printf("1.输入年月日计算星期几\n"); printf("2.打印任意月历\n");printf("3.打印任意年历\n");printf("4.谢谢使用! \n");printf("input 1-4:\n");do {S=getchar();cn=(int)S-48;}while(cn<0||cn>6);return cn;}万年历的运行结果截图万年历的日历功能的实现:月历功能的实现:年历功能的实现:..;.。

c语言年历显示课课程设计

c语言年历显示课课程设计

c语言年历显示课课程设计一、教学目标本课程的目标是让学生掌握C语言编程的基本技能,能够使用C语言编写简单的程序,以实现年历的显示功能。

通过本课程的学习,学生将了解C语言的基本语法和编程思想,培养逻辑思维能力和问题解决能力。

具体来说,知识目标包括:1.掌握C语言的基本语法和数据类型。

2.理解函数的定义和调用。

3.学习循环和条件语句的使用。

4.了解字符串操作和文件操作的基本方法。

技能目标包括:1.能够使用C语言编写简单的程序。

2.能够运用循环和条件语句实现年历的显示功能。

3.能够利用字符串操作和文件操作处理年历数据。

情感态度价值观目标包括:1.培养学生对编程的兴趣和热情。

2.培养学生解决问题的自信心和耐心。

3.培养学生团队合作和自主学习的意识。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、函数、循环和条件语句、字符串操作和文件操作。

具体安排如下:1.第一章:C语言概述–介绍C语言的历史和发展–解释C语言的特点和优势2.第二章:基本语法和数据类型–讲解变量、常量的声明和赋值–介绍数据类型的定义和使用3.第三章:函数–讲解函数的定义和声明–演示函数的调用和返回值4.第四章:循环和条件语句–介绍循环语句的原理和用法–讲解条件语句的判断和执行5.第五章:字符串操作–讲解字符串的基本操作方法–演示字符串的输入和输出6.第六章:文件操作–介绍文件的概念和文件指针–讲解文件的读写和操作方法三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式。

1.讲授法:教师通过讲解和示范,引导学生掌握C语言的基本概念和编程方法。

2.讨论法:教师学生进行小组讨论,鼓励学生提出问题和建议,促进学生之间的交流和合作。

3.案例分析法:教师提供实际的编程案例,学生通过分析和解题,培养解决问题的能力。

4.实验法:学生通过编写和运行程序,实践所学知识,巩固编程技能。

四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《C程序设计语言》(K&R)2.参考书:《C Primer Plus》(Deitel)3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)通过以上教学资源的使用,学生将能够更好地学习和实践C语言编程,提高编程技能和解决问题的能力。

JAVA显示日历课程设计csdn

JAVA显示日历课程设计csdn

JAVA显示日历课程设计csdn一、教学目标本课程旨在通过Java编程语言实现一个简单的日历显示功能,帮助学生掌握以下知识目标:1.理解并掌握Java编程语言的基本语法和结构。

2.学习并应用Java中的日期和时间处理类库。

3.学习并实践面向对象编程的基本概念和方法。

在技能目标方面,学生将能够:1.运用Java编程语言独立开发一个简单的日历应用程序。

2.运用面向对象编程的思想,设计和实现具有良好结构的应用程序。

在情感态度价值观目标方面,学生将:1.培养解决问题的能力和创新精神。

2.培养团队合作和分享的意识。

二、教学内容本课程的教学内容将按照以下大纲进行:1.Java编程语言基础:介绍Java的基本语法、数据类型、控制结构等。

2.面向对象编程:介绍类、对象、继承、多态等概念和方法。

3.日历显示功能的实现:学习并应用Java中的日期和时间处理类库,实现一个简单的日历显示功能。

具体的教学内容安排如下:第1周:Java编程语言基础。

第2周:面向对象编程。

第3周:日历显示功能的实现。

三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法:1.讲授法:讲解Java编程语言的基础知识和面向对象编程的概念。

2.案例分析法:分析并讨论实际的日历应用程序案例,帮助学生理解和应用知识。

3.实验法:学生通过动手实践,独立开发一个简单的日历应用程序。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,将准备以下教学资源:1.教材:Java编程语言基础和面向对象编程的教材。

2.多媒体资料:相关的教学视频、演示文稿和案例分析资料。

3.实验设备:计算机和网络设备,以供学生实践和开发应用程序。

五、教学评估本课程的评估方式将包括以下几个方面,以保证评估的客观性和公正性:1.平时表现:包括课堂参与度、小组讨论、提问等,占总评的20%。

2.作业:包括课后编程练习和相关的写作任务,占总评的30%。

3.考试:包括期中和期末考试,占总评的50%。

显示日期时间程序

显示日期时间程序

课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 显示日期时间程序初始条件:在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间。

按Q退出程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物目录一、课程设计的目的及要求 (3)1.课程设计的目的 (3)2.课程设计要求分析 (3)二、方案设计 (3)1.程序流程图 (3)2.工作原理 (5)3.程序代码 (5)4.程序说明 (9)(1)日期子程序 (9)(2)时间子程序 (10)三、程序调试与结果 (10)1.调试程序 (10)2. 实验结果分析 (11)四、总结 (12)参考文献: (12)2一、课程设计的目的及要求1.课程设计的目的课程设计是完成教学计划达到工科大学生培养目标的重要环节,是教学计划中进行综合训练的重要实践环节,是有助于培养应用性人才的一种教学形式,它将使学生在综合运用所学知识,解决本专业方向的实际问题方面得到系统性的训练。

培养学生利用计算机软、硬件技术解决问题的初步能力.2.课程设计要求分析通过课程设计深入了解课本内容,系统掌握8088/8086微机原理及应用知识,初步掌握DOS/BIOS调用及程序设计基本方法。

本次课程设计要求设计一个显示日期时间程序,在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间,按Q则退出程序。

要完成本次设计,就必须用到对DOS和BIOS常用功能的调用(DOS的2AH 调用实现系统日期调用功能,2CH调用实现系统时间调用功能),并且退出程序时需要用到汇编语言对I/O中断的使用。

日期时间显示系统

日期时间显示系统

郑州科技学院《微机原理与接口技术》课程设计题目日期时间显示系统目录1课程设计的目的 (1)2课程设计的任务与要求 (1)3设计方案与论证 (1)4设计原理及功能说明 (1)4.1 程序流程图 (2)4.2 系统工作原理 (3)5硬件的制作与调试 (4)5.1 方案所需软件与硬件条件 (5)5.2 具体各部分功能实现 (5)5.3实验结果 (8)6总结 (9)参考文献 (11)附录 (11)1课程设计的目的用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的程序的目的。

(1)学习分支、中断、和逻辑表达。

(2)熟悉汇编语言程序的编译、链接过程。

2课程设计的任务与要求设计一个显示日期或时间的汇编程序间且满足以下要求:基本功能:运行可执行程序RQSZ.exe,在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序。

3设计方案与论证根据键盘输入的相关内容,如:若输入D,则设计程序代码依次读取系统日期年、月、日,并转换成BCD码调用10号中断予以显示;若在键盘输入T,则设计程序代码依次读取系统时间时、分、秒,并转换成BCD码并调用10号中断予以显示;若输入大写字母Q,则退出当前状态;若不是相关字符,则不于任何响应,并不显示任何信息。

4设计原理及功能说明4.1 程序流程图由课程设计任务要求可知,程序的大致过程是:先判断输入的字符是否为“D”、“T”、“Q”,否则回到初始状态等待重新输入。

若为“D”,则调用日期读取程序,显示出日期并回到初始状态;若为“T”,则调用时间读取程序,显示出时间并回到初始状态;若为“Q”,则直接退出程序。

由此可以画出如下程序流程图:4.2 系统工作原理说明本次课程设计的程序编译和调试应该都是在DOS环境中进行的。

程序的工作过程如前一节的流程图所示。

其中调用日期的子程序需要用到DOS中的2AH号功能,而调用系统时间的子程序需要用到DOS中的2CH号功能,最后退出程序的功能则需要用到I/O中断。

日历显示 C++6.0

日历显示 C++6.0

#include<stdio.h>#include<time.h>#include<math.h>#include<windows.h>#include<conio.h>#define KEYNUMUp 0x48#define KEYNUMDown 0x50#define KEYNUMLeft 0x4b#define KEYNUMRight 0x4d#define KEYNUMPageUp 0x49#define KEYNUMPageDown 0x51int year,month,day;//全局变量记录时间intdaysOfMonth[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30, 31}};int runYear(int year)//判断是否是闰年{int flag=0;if(year%400==0||(year%4==0&&year%100!=0))flag=1;return flag;}struct tm *getDay()//从系统取得当前时间{time_t timer;struct tm *gmt;time(&timer);gmt=localtime(&timer);return gmt;}int dayExame(int year,int month,int day)//检查日期是否正确{if(year<0||month<1||month>12||day<1||day>31)return 0;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(day>31)return 0;break;case 4:case 6:case 9:case 11:if(day>30)return 0;break;default:if(runYear(year)&&day>29)return 0;else if(runYear(year)==0&&day>28)return 0;}return 1;}int getwDay(int year,int month,int day)//取得日期{int nday=0,nDay,i,w;for(i=0;i<month-1;i++)nday+=daysOfMonth[runYear(year)][i];nday+=day;nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday;w=nDay%7;return w;}void printCalender(int year,int month,int day);void setDay(int &year,int &month,int &day)//调节日期{printf("%c:上一年%c:下一年\n",24,25);printf("%c:上个月%c:下个月\n",27,26);printf("PageUp:昨天PageDown:明天\n");printf("其他:返回主菜单\n");char k;getch();k=getch();switch(k){case KEYNUMUp:year--;if(dayExame(year,month,day)==0){year++;printf("%c",7);//检查日期的合法性} //若错误保持日期不变,并警告system("cls");printCalender(year,month,day);setDay(year,month,day);break;case KEYNUMDown:year++;if(dayExame(year,month,day)==0){year--;printf("%c",7);}system("cls");printCalender(year,month,day);setDay(year,month,day);break;case KEYNUMLeft:month--;if(dayExame(year,month,day)==0){month++;printf("%c",7);}system("cls");printCalender(year,month,day);setDay(year,month,day);break;case KEYNUMRight:month++;if(dayExame(year,month,day)==0){month--;printf("%c",7);}system("cls");printCalender(year,month,day);setDay(year,month,day);break;case KEYNUMPageUp:day--;if(dayExame(year,month,day)==0){day++;printf("%c",7);}system("cls");printCalender(year,month,day);setDay(year,month,day);break;case KEYNUMPageDown:day++;if(dayExame(year,month,day)==0){day--;printf("%c",7);}system("cls");printCalender(year,month,day);setDay(year,month,day);break;default: ;}}void printCalender(int year,int month,int day)//打印月历{int i;char wday[7][7]={"sun","mon","tue","wed","thu","fri","sat"};printf("%d年%d月%d日\n",year,month,day);printf("***************************************\n");for(i=0;i<7;i++){printf("%5s",wday[i]);}printf("\n");int w;int nowDay=1;w=getwDay(year,month,nowDay);//找到第一天的星期int n;n=daysOfMonth[runYear(year)][month-1];switch(w){case 0:printf("%5d",nowDay);break;case 1:printf("%10d",nowDay);break;case 2:printf("%15d",nowDay);break;case 3:printf("%20d",nowDay);break;case 4:printf("%25d",nowDay);break;case 5:printf("%30d",nowDay);break;default:printf("%35d\n",nowDay);}nowDay++;for(i=1;i<n;i++){w=getwDay(year,month,nowDay);printf("%5d",nowDay);if(w==6)//如果星期六,则换行打印puts("\n");nowDay++;}printf("\n***********************\n\n");}void checkCalender()//查询日历{system("cls");int year,month,day;printf("请输入你要查询的日期(格式为年月日,如2009 11 3):");scanf("%d%d%d",&year,&month,&day);while(!dayExame(year,month,day))//如果日期输入不正确,则重新输入{printf("%c 你输入的日期错误,请重新输入:",7);scanf("%d%d%d",&year,&month,&day);}system("cls");if(runYear(year))printf("\n闰年\n\n");else printf("\n平年\n\n");printCalender(year,month,day);}void inline backMenu(){printf("请按任意字符键返回主菜单:");getch();system("cls");}void mainMenu(int &year,int &month,int &day)//主菜单{printf("*************主菜单************\n");printf("*************1.日历显示************\n");printf("*************2.日历查询************\n");printf("*************3.修改日期************\n");printf("*************4.帮助****************\n");printf("*************5.退出****************\n");printf("***********************************\n");char menu[100];int flag=0;do{int f=0;do{f=0;printf("\n请输入相应数字:");scanf("%s",menu);if(strlen(menu)>2)f=1;} while(f==1);switch(*menu){case'1':system("cls");//printCalender(year,month,day);backMenu();//break;case'2':system("cls");checkCalender();backMenu();mainMenu(year,month,day);break;case'3':system("cls");printCalender(year,month,day);setDay(year,month,day);printf("请按任意字符键返回主菜单");getch();system("cls");mainMenu(year,month,day);break;case'4':system("cls");printf("在主菜单中输入相应的数字就可以完成以下功能:\n\n");printf("*1.显示今天所在月的月份\n\n");printf("*2.输入日期,判断该年是否为闰年,并显示所在月份的月历\n\n");printf("*3.用%c%c%c%cPageUp PageDown进行日期的调整\n\n",24,25,27,26);printf("*4.显示功能以及操作方法\n\n");printf("*5.退出程序\n\n");backMenu();mainMenu(year,month,day);break;case'5':system("cls");printf("程序退出!\n\n");exit(0);default:printf("%c 输入错误!\n",7);flag=1;}}while(flag);}void main(){struct tm *gmt=getDay();year=gmt->tm_year+1900;month=gmt->tm_mon+1;day=gmt->tm_mday;printCalender(year,month,day);//用系统时间进行初始化,打印当前月历backMenu();mainMenu(year,month,day);}。

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

信息科学与技术学院程序设计基础课程设计报告题目名称:日期时间显示程序学生姓名:***学号: **********专业班级: 14计科1班指导教师:**2015年 6 月 17 日目录1 课程设计题目与要求 (3)1.1设计题目 (3)1.2设计要求 (3)2 总体设计 (4)2.1 总体功能框架 (4)2.2 数据结构概要设计 (5)3 详细设计 (6)3.1数据结构详细设计 (6)3.2系统功能详细设计 (8)4 运行结果 (16)5 课程设计总结 (19)5.1 编程中的问题及解决方法 (19)5.2 小结 (19)5.3 心得体会 (19)5.4 程序设计方法 (20)参考文献 (20)附:源代码 (21)1 课程设计题目与要求1.1设计题目C++题目11:日期时间显示程序:编一应用程序,输入年、月、日、时、分、秒,在屏幕上模拟显示一电子计时器,不断输出下一秒的时间和日期,以及格林威治的日期和时间。

注意,当对日期增加1天后,会涉及所谓的"进位"问题:首先算出本"日"所在的月份具有的天数N,若加1之后的"日"数值超过所在的月份具有的天数N时,"进位"到月,而月份若超过12时还要"进位"到年。

1.2设计要求(1)定义一个时间结构体类型time,能提供时、分、秒组成的时间,并提供时间增加的方法(按秒)。

(2)定义一个日期结构体类型Date,记录年、月、日,并提供日期增加的方法(按天)。

(3)定义个日期时间结构体类型DateTime,除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差。

思考:可对该类增加你所考虑到的其他功能,如,对日期进行输入,计算二日期的间隔天数,计算某日期为星期几,打印对象当前数据的y年m月的月历,一次增加若干天,对两个日期进行其他比较运算等。

2 总体设计2.1 总体功能框架1.时间模块功能:能提供时、分、秒组成的时间,并提供时间增加的方法(按秒)。

2.日期化模块功能:记录年、月、日,并提供日期增加的方法(按天)。

3.日期时间模块功能:除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差4.时间差模块功能:1.计算从出生到现在的年,月,日2.计算两日期间隔天数3.计算某日为星期几蔡勒(Zeller)公式4. 根据给定的日期,求出它在该年的第几天5.日历模块功能:显示y年m月的日历6. 验证模块功能:1.验证所有日期格式是否正确2.验证所有时间格式是否正确7. 杂项:功能:1. 当前系统时间2. 返回一个月的天数3. 判断是否是闰年2.2 数据结构概要设计class date(基类)功能:能提供时、分、秒组成的时间,并提供时间增加的方法(按秒)。

class Time (基类)功能:记录年、月、日,并提供日期增加的方法(按天)。

class DateTime:public date,Time(派生类)功能:继承前两个类,并提供全部时间的增加方法图2- 13 详细设计3.1数据结构详细设计class date //定义日期类{public:int year; //年int month; //月int day; //日date(int y,int m,int d);~date(){};void add(); //日期增加的方法void showdate();};功能: 能提供时、分、秒组成的时间,并提供时间增加的方法(按秒)。

class Time //定义时间类{public:int hour; //时int minute; //分int second; //秒Time(int h,int m,int s);~Time(){};void add();void showTime();};功能: 记录年、月、日,并提供日期增加的方法(按天)。

class DateTime:public date,Time //日期时间类{string country; //国家名int time_differ; //时间差public:DateTime(int h,int mi,int s,int y,int m,int d);~DateTime(){};void add(); //日期增加的方法void showDateTime();};功能:继承data,time类,提供所有时间的增加方法(年月日时分秒)3.2系统功能详细设计time 类时间增加函数:add()功能:使时间增加的算法入口参数:无。

出口参数:无。

图3- 1data类中的成员函数 add()功能:使日期增加的算法入口参数:无。

出口参数:无。

图3- 2DateTime类 add()功能:使所有函数增加的方法入口参数:无。

出口参数:无。

图3- 3全局函数int DayInYear(int year, int month, int day) year:年 month:月 day 日;功能:能根据给定的日期,求出它在该年的第几天。

入口参数:int year, int month, int day出口参数:day;图3- 4全局函数 int yearDay(int year, int month, int day,int year1, int month1, int day1)功能:求日期间隔入口参数:int year, int month, int day,int year1, int month1, int day1 出口参数:天数。

图3- 5全局函数 void calendar(int y,int m)功能:显示日历入口参数:int y,int m y:年 m月出口参数:输出日历图3- 6全局函数 bool pass_date(int y,int m, int d)功能:验证日期格式是否正确入口参数:int y,int m, int d y:年 m:月 d:日。

出口参数:0或1图3- 7全局函数 int Month_Day(int year,int month) year:年 month:月功能:返回一个月的天数入口参数:int year,int month出口参数:0或1图3- 84 运行结果图4- 1显示菜单的系统时间图4- 2通过输入的年月日时分秒,显示一个模拟动态时钟,并显示相应格林威治时间.图4- 3 通过输入的两个日期,计算两日期间隔天数图4- 4 通过输入的日期,计算这一日是星期几图4- 5通过输入的日期,显示这一月的日历图4- 6通过输入的生日,显示从出生到现在的年月日5 课程设计总结5.1 编程中的问题及解决方法相对于其他同学来说我的题目还是相对简单,不过也遇到了一些问题,就是对一些东西还不太懂,但这终归来说是学习不够,我解决问题最主要的问题是在网上搜,还有就是和同学交流讨论5.2 小结回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力5.3 心得体会这次课程设计自我感觉我的题目比较简单,但是我也很用心的在做,相比于上课来说,我认为课程设计能学到更多的知识,在这个过程中,遇到不会的,我会自己查资料,上网,实现一个个的功能,虽然我这道题目并不是很难,但是却学到了很多.课堂上要讲授许多关于c++语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。

然而要使用c++语言这个工具解决实际问题,又必须掌握它。

通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。

对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。

5.4 程序设计方法1.在这个程序首先我用到了oop面向对象的程序设计思想,2.我用到了基类和派生类的方法来实现模拟时钟的实现3.在实现星期的函数中我还用到的数学方法来计算参考文献[1]C++面向对象程序设计教程(第3版). 北京:清华大学出版社 2009.6附:源代码#include<iostream>#include <windows.h>#include<cstdio>#include <time.h>using namespace std;bool IsLeap(int year) //判断是否是闰年{return (year%4 == 0)&& (year%100 != 0) || (year%400 ==0);}int Month_Day(int year,int month) //返回一个月的天数{int day = 0;if(month==1||month==3||month==5||month==7||month==8||month==10||m onth==12)day = 31;else if(month==4||month==6||month==9||month==11)day = 30;else if(month==2)day = 28 + IsLeap(year);return day+1;}class Time //定义时间类{public:int hour; //时int minute; //分int second; //秒Time(int h,int m,int s);~Time(){};void add();void showTime();};Time::Time(int h,int m,int s):hour(h),minute(m),second(s)//采用成员初始化列表对成员赋值{}void Time::add() //时间增加的方法{if(second<60)++second;if(second==60){++minute;second=0;}if(minute==60){++hour;minute=0;}if(hour==24){hour=0;}}void Time::showTime() //输出时间的方法{cout<<"\t\t※"<<"\t\t"<<hour<<"时"<<":"<<minute<<"分"<<":"<<second<<"秒"<<endl<<"\t\t※※※※※※※※※※※※※※※※"<<endl;// cout<<"\t\t"<<hour<<"时"<<":"<<minute<<"分"<<":"<<second<<"秒"<<endl;}class date //定义日期类{public:int year; //年int month; //月int day; //日date(int y,int m,int d);~date(){};void add(); //日期增加的方法void showdate();date::date(int y,int m,int d):year(y),month(m),day(d)//采用成员初始化列表对成员赋值{}void date::add() //日期增加的方法{if(day<Month_Day(year,month))day++;if(day==Month_Day(year,month)){day = 1;month++;}if(month>12){month = 1;year++;}}void date::showdate() //输出时间的方法{cout<<endl<<endl;cout<<"\t\t※※※※※※※※※※※※※※※※"<<endl<<"\t\t※"<<"\t\t"<<year<<"年"<<":"<<month<<"月"<<":"<<day<<"日"<<endl;}class DateTime:public date,Time //日期时间类{string country; //国家名int time_differ; //时间差public:DateTime(int h,int mi,int s,int y,int m,int d);~DateTime(){};void add(); //日期增加的方法void showDateTime();};DateTime::DateTime(int y,int m,int d,int h,int mi,int s):date(y,m,d),Time(h,mi,s){}void DateTime::add(){if(second<0){second=60+second;--minute;}if(second<60 && second>=0)++second;if(second==60){++minute;second=0;if(minute<0){minute=60+minute;--hour;}if(minute==60){++hour;minute=0;}if(hour<0){hour=24+hour;--day;}if(hour==24){hour=0;++day;}if(day<=0){day=30+day;--month;}if(day==Month_Day(year,month)) {day = 1;++month;if(month<=0){month=12+month;--year;}if(month>12){month = 1;++year;}}void DateTime::showDateTime(){date::showdate();Time::showTime();}//DayInYear能根据给定的日期,求出它在该年的第几天int DayInYear(int year, int month, int day){//int _day = 0;int DAY[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if(IsLeap(year))DAY[1] = 29;for(int i=0; i<month - 1; ++i){day += DAY[i];}return day;}//求日期间隔int yearDay(int year, int month, int day,int year1, int month1, int day1) {int sum=0;if(year==year1){int d=DayInYear(year,month,day)-DayInYear(year1,month1,day1);if(d<0)d=-d;return d;}else if(year>year1){for(int i=year1+1;i<year;i++)//若两日期间隔大于一年,则累加他们之间整年的天数{if(IsLeap(i))sum=sum+366;elsesum=sum+365;}if(IsLeap(year))returnDayInYear(year,month,day)+(366-DayInYear(year1,month1,day1))+sum;elsereturnDayInYear(year,month,day)+(365-DayInYear(year1,month1,day1))+sum;}else if(year<year1){for(int i=year+1;i<year1;i++)//若两日期间隔大于一年,则累加他们之间整年的天数{if(IsLeap(i))sum=sum+366;elsesum=sum+365;}if(IsLeap(year))returnDayInYear(year1,month1,day1)+(366-DayInYear(year,month,day))+sum;elsereturnDayInYear(year1,month1,day1)+(365-DayInYear(year,month,day))+sum;}}void localtime()//当前系统时间{time_t t;tm *lt;t = time(NULL); //历史时间清空lt = localtime(&t);cout<<lt->tm_year+1900<<"年"<<lt->tm_mon<<"月"<<lt->tm_yday-150<<"日"<<"星期"<<lt->tm_wday<<""<<lt->tm_hour<<":"<<lt->tm_min<<":"<<lt->tm_sec<<endl;}void birthday(int y,int m,int d)//从出生到现在的年,月,日{time_t t;tm *lt;t = time(NULL); //历史时间清空lt = localtime(&t);intday=yearDay(y,m,d,lt->tm_year+1900,lt->tm_mon,lt->tm_yday-150);cout<<"从您出生到现在共经历了"<<(lt->tm_year+1900)-y<<"年 "<<"共经历了"<<((lt->tm_year+1900)-y)*12<<"月 "<<"共经历了"<<day<<"天"<<endl;}void calendar(int y,int m){int cal[6][7];int c=1;int firstday=(1 + 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;//蔡勒(Zeller)公式计算y年m月的第一天是星期几int Day=Month_Day(y,m)-1; //计算一个月的天数cout<<" 一二三四五六日 "<<endl;for(int i=0;i<6;i++){for(int n=0;n<7;n++){if(n < firstday && i==0)cal[i][n]=0;else{cal[i][n]=c;c++;}}}c=0;for( i=0;i<6;i++){for(int n=0;n<7;n++){if(cal[i][n]==0){cout<<" ";}if(c!=Day&&cal[i][n]!=0){printf("%3d",cal[i][n]);c++;}}cout<<endl;}}bool pass_date(int y,int m, int d)//日期验证函数{if(d>Month_Day(y,m)||m<0)return 0;else if(m<0||m>12)return 0;else if(y<1000||y>9999)return 0;elsereturn 1;}bool pass_time(int h,int m, int s)//日期验证函数{if(h>23||h<0)return 0;else if(m<0||m>59)return 0;else if(s<0||s>59)return 0;elsereturn 1;}int main(){while(1){char op;cout<<"当前时间:";localtime();cout<<endl;cout<<endl<<"\t\t※※※※※※※※※※※※※※※※" <<endl<<"\t\t※ a.显示电子计时器和格林威治的日期和时间※" <<endl<<"\t\t※ b.计算两日期间隔天数※" <<endl<<"\t\t※ c.计算某日期为星期几※" <<endl<<"\t\t※ d.打印y年m月的月历※" <<endl<<"\t\t※ e.从出生到现在的年,月,日※" <<endl<<"\t\t※※※※※※※※※※※※※※※※"<<endl<<endl;cout<<"请输入操作"<<endl;cin>>op;if(op=='a')//显示电子计时器和格林威治的日期和时间{system("cls");int year=0,month=0,day=0,hour=0,minute=0,second=0;cout<<"请输入初始日期:年月日如:2004 2 28"<<endl;cin>>year>>month>>day;cout<<"请输入初始时间:时分秒如:23 59 57"<<endl;cin>>hour>>minute>>second;if(pass_time(hour,minute,second)&&pass_date(year,month,day)) {DateTime clock(year,month,day,hour,minute,second);DateTime clock1(year,month,day,hour-8,minute,second);while(1){cout<<"你输入的时间"<<endl;clock.add();clock.showDateTime();cout<<"对应格林威治时间"<<endl;clock1.add();clock1.showDateTime();Sleep(1000);system("cls");}}else{cout<<"时间格式错误"<<endl;system("pause");}}if(op=='b')//计算两日期间隔天数{int year1,month1,day1,year,month,day;cout<<"请输入第一个日期如:2014 1 1"<<endl;cin>>year>>month>>day;cout<<"请输入第二个日期如:2014 1 1"<<endl;cin>>year1>>month1>>day1;if(pass_date(year,month,day)&&pass_date(year1,month1,day1)) {cout<<"两日期间隔天数"<<endl;cout<<yearDay(year,month,day,year1,month1,day1)<<"天"<<endl;}else cout<<"时间格式错误"<<endl;system("pause");}if(op=='c')//计算某日期为星期几{int y,m,d;cout<<"年月日如: 2008 12 1"<<endl;cin>>y>>m>>d;if(pass_date(y,m,d)){cout<<y<<"年"<<m<<"月"<<d<<"日是星期";cout<<(d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1<<endl;//蔡勒(Zeller)公式}else cout<<"时间格式错误"<<endl;system("pause");}if(op=='d'){int y,m;cout<<"请输入年月如 2015 6"<<endl;cin>>y>>m;if(pass_date(y,m,10))calendar(y,m);else cout<<"时间格式错误"<<endl;system("pause");if(op=='e'){int y,m,d;cout<<"请输入您的生日如:1996 3 20"<<endl;cin>>y>>m>>d;if(pass_date(y,m,d))birthday(y,m,d);else cout<<"时间格式错误"<<endl;system("pause");}system("cls");}return 0;}。

相关文档
最新文档