万年历课程设计实验报告
- 格式:docx
- 大小:125.99 KB
- 文档页数:23
WORD格式可编辑面向对象课程设计题目万年历程序设计系部商学系专业信息管理与信息系统班级信息N122 学号学生姓名指导教师编写日期 2015.01.15第一章需求分析 (3)第二章概要设计 (4)第三章详细设计与编码 (6)第四章调试分析 (10)第五章用户使用说明 (13)第六章设计心得 (14)第一章需求分析如今的社会是一个信息的时代,随着电脑等科技产品在人们生活中占据着越来越重要的地位,人们就会越加的善加利用,这为我们的生活带来了极大的效率,同时计算机的普及更可以看出它所占的地位。
万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便,是一种比较实用的小工具。
我们每个人都可以在自己的个人电脑上进行制作,一方面不仅可以加强巩固我们对C#语言的学习,还可以通过自主的编程找到自身的缺点。
这对培养我们自身的创新能力和动手能力具有很大的作用。
第二章概要设计1.设计要求程序完成运行时,能过正确的表达出所输入年份的万年历。
2.总体设计<1>实现操作流程图<2>程序设计流程图第三章详细设计与编码<1>源代码using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Linq;using System.Windows.Forms;using System.Globalization;namespace AllAgesCalendar{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e) {string intmonth =monthCalendar1.TodayDate.Month.ToString();string intdaty =monthCalendar1.TodayDate.Day.ToString();if (monthCalendar1.TodayDate.Month < 10){intmonth = "0" +monthCalendar1.TodayDate.Month.ToString();}if (monthCalendar1.TodayDate.Day < 10){intdaty = "0" +monthCalendar1.TodayDate.Day.ToString();}string s = String.Format("{0}年{1}月{2}", GetStemBranch(monthCalendar1.TodayDate),GetMonth(monthCalendar1.TodayDate),GetDay(monthCalendar1.TodayDate)); label1.Text = monthCalendar1.TodayDate.Year + "年" + intmonth + "月" + intdaty + "日" + " " + s + " " + getReturnYear(monthCalendar1.TodayDate) + "年";label1.ForeColor = Color.Green;}private void label1_Click(object sender, EventArgs e) {}ChineseLunisolarCalendar calendar = new ChineseLunisolarCalendar();public string GetYear(DateTime time){StringBuilder sb = new StringBuilder();int year = calendar.GetYear(time);int d;do{d = year % 10;sb.Insert(0, ChineseNumber[d]);year = year / 10;} while (year > 0);return sb.ToString();}private static string ChineseNumber = "〇一二三四五六七八九";public string GetMonth(DateTime time){int month = calendar.GetMonth(time);int year = calendar.GetYear(time);int leap = 0;for (int i = 3; i <= month; i++){if (calendar.IsLeapMonth(year, i)){leap = i;break;}}if (leap > 0) month--;return (leap == month + 1 ? "闰" : "") + ChineseMonthName[month - 1];}public static readonly string[] ChineseMonthName = new string[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };public string GetDay(DateTime time){returnChineseDayName[calendar.GetDayOfMonth(time) - 1];}public static readonly string[] ChineseDayName = new string[] {"初一","初二","初三","初四","初五","初六¨´","初七","初八?","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六¨´","廿七","廿八","廿九","三十"};public string GetStemBranch(DateTime time){int sexagenaryYear =calendar.GetSexagenaryYear(time);string stemBranch =CelestialStem.Substring(calendar.GetCelestialStem(sexagenar yYear) - 1, 1) +TerrestrialBranch.Substring(calendar.GetTerrestrialBranch(s exagenaryYear) - 1, 1);return stemBranch;}public const string CelestialStem = "甲乙丙丁戊己庚辛壬癸";public const string TerrestrialBranch = "子丑寅卯辰巳午未申酉戌亥";public string getReturnYear(DateTime time){int sexagenaryYear =calendar.GetSexagenaryYear(time);string Tree =TreeYear.Substring(calendar.GetTerrestrialBranch(sexagenary Year) - 1, 1);return Tree;}public const string TreeYear = "鼠牛虎兔龙蛇马羊猴鸡狗猪";private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e){string strYesr = String.Format("{0}年{1}月{2}", GetStemBranch(monthCalendar1.SelectionStart),GetMonth(monthCalendar1.SelectionStart),GetDay(monthCalendar1.SelectionStart));toolTip1.ToolTipTitle =monthCalendar1.SelectionStart.ToShortDateString();toolTip1.Show(strYesr + " " +getReturnYear(monthCalendar1.SelectionStart) + "年", monthCalendar1, monthCalendar1.Location, 5000);}}}第四章调试分析<1>程序运行测试①进入程序界面:。
万年历实验报告1. 引言日历是人们日常生活中必不可少的工具,用于追踪时间和日期。
在计算机科学中,开发一个能够准确显示日期和日历的程序也是非常重要的。
本实验的目标是设计并实现一个万年历程序,能够显示指定年份和月份的日历。
2. 实验目标本实验的目标是设计和实现一个简单的万年历程序,具体要求如下: - 能够根据指定的年份和月份显示该月的日历。
- 显示的日历应包含月份的名称、年份、星期几和日期。
- 如果输入的年份和月份超出了合法范围(如年份小于1或大于9999,月份小于1或大于12),程序应给出相应的错误提示。
3. 实验方法为了实现上述目标,我们采用了以下步骤:3.1 设计算法设计一个算法来确定给定年份和月份的开始日期,以及该月份的天数。
我们使用基于蔡勒公式的算法来计算开始日期,并根据每个月的天数确定日历的布局。
3.2 编写代码使用Python编程语言编写代码来实现万年历程序。
采用面向对象的编程方式,将日历的显示和计算逻辑封装到一个Calendar类中。
3.3 编写测试用例编写一系列测试用例来验证万年历程序的正确性。
测试用例包括输入合法年份和月份的情况,以及输入非法年份和月份的情况。
3.4 运行程序运行程序,并根据输入的年份和月份来显示相应的日历。
如果输入的年份和月份超出合法范围,程序应给出相应的错误提示信息。
4. 实验结果经过编写代码并进行测试,我们得到了一个能够正常显示日历的万年历程序。
以下是几个测试用例的示例结果:4.1 输入合法年份和月份输入年份为2022,月份为6的情况下,程序显示的结果如下:六月 2022日一二三四五六1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 304.2 输入非法年份和月份输入年份为0,月份为13的情况下,程序应给出错误提示信息,如下:输入的年份或月份不合法,请重新输入。
万年历实验报告万年历实验报告一、引言万年历是一种用来记录日期和时间的工具,它可以帮助人们追溯过去和规划未来。
在这个数字化时代,人们已经习惯了使用智能手机或电脑上的日历应用来管理时间。
然而,万年历的历史悠久,它的设计和功能一直在不断演进。
本实验旨在通过制作一个简单的万年历,探索其原理和功能。
二、实验材料和方法1. 材料:- 一张大纸板- 一支铅笔- 一把剪刀- 一些彩色纸张- 一些装饰用的贴纸或标签- 一把直尺2. 方法:- 使用直尺和铅笔在大纸板上绘制一个正方形,边长为30厘米。
- 将正方形分为7行7列,形成一个格子状的网格。
- 在每个格子中填写日期和星期几,从1号到31号。
- 使用剪刀将彩色纸张剪成小方块,每个方块代表一个特殊的日子(如生日、节日等)。
- 将彩色纸张粘贴在相应的日期上,并使用贴纸或标签进行装饰。
三、实验结果经过一番努力,我成功地制作了一个简单的万年历。
每个格子中都填写了日期和星期几,并且我还用彩色纸张标记了一些特殊的日子。
整个万年历看起来非常漂亮,装饰用的贴纸和标签增添了一些趣味性。
四、讨论万年历是人类文明的重要组成部分,它不仅帮助人们记录时间,还反映了人们对时间的认知和组织。
通过制作万年历,我更深入地理解了时间的概念和日期的变化规律。
我发现,每个月的天数不同,而星期几则是按照一定的循环顺序变化的。
此外,万年历还可以帮助我们规划未来。
通过标记特殊的日子,我们可以提前做好准备,如购买礼物、安排行程等。
而且,万年历还可以提醒我们重要的事项,如朋友的生日、会议的时间等。
它是我们生活中不可或缺的工具之一。
然而,制作一个完整的万年历并不容易。
除了填写日期和星期几之外,还需要考虑闰年的影响。
闰年是指能被4整除但不能被100整除的年份,或者能被400整除的年份。
在闰年中,2月份会多出一天,即29号。
这是为了与地球公转周期相适应,以保持日历系统的准确性。
五、结论通过本实验,我成功地制作了一个简单的万年历,并对时间的概念和日期的变化规律有了更深入的了解。
万年历实验报告万年历实验报告一、实验目的本次实验的目的是通过制作一个万年历来加深对时间、日期和闰年的理解,并提高对日历制作的实践能力。
二、实验材料1. 硬纸板2. 尺子3. 铅笔4. 剪刀5. 胶水6. 彩色纸7. 圆规三、实验步骤1. 使用尺子和铅笔在硬纸板上绘制一个正方形,边长为20厘米。
2. 将正方形分成7个等分,每个小方格的边长为2.86厘米。
3. 使用圆规在彩色纸上绘制一个直径为2.86厘米的圆。
4. 将圆剪下来,并在其上方留下一段直线。
5. 将圆粘贴在正方形的左上角小方格内,并将直线向下延伸至第二行小方格的中心。
6. 在正方形的左上角小方格内写下月份的缩写,如1月、2月等。
7. 在第二行小方格内写下1、2、3等日期。
8. 重复步骤6和步骤7,直到填满整个正方形。
9. 在正方形的左上角小方格内写下星期几的缩写,如周一、周二等。
10. 将整个正方形的边缘用彩色纸包裹,以增加美观度。
四、实验结果通过以上步骤,我们成功制作了一个简易的万年历。
每个小方格对应一个日期,上方的直线表示该月份的第一天是星期几。
通过翻阅这个万年历,我们可以轻松地查找到任意日期所对应的星期几。
五、实验心得通过这次实验,我深刻理解了时间和日期的关系,以及闰年的概念。
制作万年历的过程中,我不仅学会了使用尺子、铅笔、剪刀等工具,还提高了我的手工能力和空间想象力。
此外,通过实践,我对日历的结构和设计有了更深入的了解。
六、实验拓展1. 可以尝试使用不同颜色的彩色纸来制作万年历,增加视觉效果。
2. 可以尝试增加一些特殊日期的标记,如节假日、生日等。
3. 可以尝试制作一个更大的万年历,包含更多年份和月份的信息。
七、结论通过本次实验,我们成功制作了一个简易的万年历,并通过实践加深了对时间、日期和闰年的理解。
这个万年历不仅具有实用性,还提高了我们的手工能力和空间想象力。
通过实践,我们对日历的结构和设计有了更深入的了解。
万年历实验报告c万年历实验报告一、引言万年历是一种用来记录时间和日期的工具,它可以帮助人们更好地组织日常生活和工作。
本实验旨在探究万年历的原理和功能,并通过实际操作来验证其准确性和可靠性。
二、实验设备和方法1. 实验设备:万年历软件、计算机、手机等。
2. 实验方法:通过使用万年历软件和其他设备,观察和记录不同日期和时间的显示情况,并与实际情况进行对比。
三、实验结果和讨论1. 日期显示准确性在实验过程中,我们发现万年历软件能够准确地显示当前日期,并且可以根据需要切换到其他日期。
无论是过去的日期还是将来的日期,软件都能正确地显示出来。
这表明万年历软件具有很高的日期显示准确性。
2. 节假日提醒功能万年历软件还具有节假日提醒功能,可以在特定的节假日提醒用户。
我们设置了几个节假日,如春节、国庆节等,并观察软件是否能够准确地提醒。
结果显示,软件能够在相应的节假日前一天或当天提醒用户,这对于人们合理安排假期和活动非常有帮助。
3. 日期计算功能万年历软件还提供了日期计算功能,可以根据用户输入的日期和天数,计算出未来或过去的日期。
我们进行了一些日期计算的实验,结果发现软件能够准确地计算出目标日期。
这对于人们进行时间规划和安排非常方便。
4. 多时区显示功能在实验中,我们还测试了万年历软件的多时区显示功能。
通过设置不同的时区,我们观察软件是否能够准确地显示不同地区的时间。
实验结果显示,软件能够根据设置的时区自动调整时间显示,确保用户能够准确了解不同地区的时间。
5. 天气预报功能一些万年历软件还提供了天气预报功能,可以显示当前和未来几天的天气情况。
我们对软件的天气预报功能进行了测试,结果显示软件能够准确地显示天气情况,并且提供了详细的天气信息。
这对于人们出行和活动的决策非常有帮助。
四、结论通过本实验,我们验证了万年历软件的准确性和可靠性。
它能够准确地显示日期、提醒节假日、进行日期计算、显示多时区时间以及提供天气预报等功能。
课程设计报告万年历学生姓名:系别:自动化学院专业:测控技术与仪器班级:1102目录一、方案简介二、逻辑总框图三、设计所需的元件四、单元电路设计4.1、主控制系统4.2、时钟振荡电路4.3、复位电路4.4、DS1302时钟电路4.5、按键电路4.6、显示电路五、流程图与软件设计5.1、程序流程图5.2、软件设计六、个人心得一、方案简介:系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,电源电路、复位电路、晶振电路等模块。
主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对时间、日期的操作。
二、逻辑总框图:该电子万年历的总体设计框图如图(1)所示。
图(1)电子万年历总体设计框图三、设计所需的元件:元件名称型号数量/个单片机 AT89C52 1时钟芯片 DS1302 1晶振 12MHz 1晶振 32.768kHz 1电容 30pF 2电容 22uF 1按键开关 4电阻 10K 9滑动变阻器 1K 1电池 1.5V 4LCD LCD1602 1电源Vcc +5V 1导线若干四、单元电路设计:4.1、主控制系统单片机中央处理系统的方案设计,选用AT89C52单片机作为中央处理器,如图(2)所示。
该单片机除了拥有MCS-51系列单片机的所有优点外,内部还具有8K的在系统可编程FLASH存储器,低功耗的空闲和掉电模式,极大的降低了电路的功耗,还包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。
整个系统结构紧凑,抗干扰能力强,性价比高。
P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)RST:复位输入。
万年历设计1、设计目的:1、学会对单片机外围电路的使用。
2、熟悉使用proteus电路仿真软件。
3、熟悉使用KILE C语言编程软件。
4、了解数字万年历的工作原理及其组成。
2、设计任务:1、显示年月日时分秒及星期信息2、具有可调整日期和时间功能3、增加闰年计算功能3、方案比较:用单片机设计电子时钟通常有两种方法:一是通过单片机内部的定时器或者计数器。
这种方法硬件线路简单,采用软件编程实现时钟计数,一般称为软时钟。
系统的功能一般与软件设计有关,通常用在对时间精度要求不高的场合;二是采用时钟芯片,它的功能强大,功能部件集成在芯片内部,自动产生时钟等相关功能。
硬件成本相对较高,软件编程简单。
通常使用在对时钟精度要求较高的场合。
本次设计采用第一种方法4、设计方案4.1 设计原理:本方案有的时间脉冲由单片机内部的定时器/计数器产生,所以硬件电路相对简单,由单片机产生时钟信号,通过程序分别产生年月日时分秒,同时可以区分闰年闰月,加送数码管显示,同时加上按键电路,可以对年月日时分秒进行调整,还有清零。
4.2硬件设计:图1如图1该电路由51单片机为核心,使用数码管显示,按键电路进行调整,考虑到单片机P0口的驱动能力不足的情况,使用上拉电阻提升驱动能力。
4.3软件设计:仿真开始,先初始化系统时间加送数码管显示,然后判断按键是否按下,如果按下,就表明要对时间进行调整,接下来则显示调整完的时间,如果没有按下,则显示初始时间。
5、设计结果图2如图2所示,数码管阵列第一列显示年月日,第二列显示时分秒,按键电路从上到下分别为复位,秒分时日月年的调整按键。
每当秒到60则分进位,同理,分满时进位,时满日进位,日满月进位,月满年进位,还可以区分闰年闰月。
6、总结和个人体验通过该课程设计很好的掌握了KILE,proteus两个和专业相关的软件,极大的拓宽了自己的知识宽度,期间产生的问题都与老师一起讨论得到了很好的解决,这对自己的问题阐述能力以及解决问题的能力都有很大的提升。
万年历课程设计报告课程设计报告课程名称程序设计基础专周题目年历显示姓名XX班级XXXXXX学号XX指导教师XXX设计时间2022-03-02至2022-03-06XX学院计算机工程系XX学院课程设计(论文)任务书一、课程设计题目年历显示二、课程设计工作自2022年03月02日至2022年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分。
学生签名:XX2022年3月8日目录目录-1-正文-2-一、需求分析-2-二、个人工作-2-三、概要设计-2-流程图……………………………………………………………….-2-程序……………………………………………………………….-4-四、程序结果-7-课程设计体会-9-正文一、需求分析我选择课程设计题目:年历显示日常生活当中,我们查询日期很大程度上需要用到日历。
而手动去翻纸质日历查询速度慢,而且会让人看的眼花缭乱。
因此,我们可以编写一个程序来显示某一年的日历。
①程序要能够准确输出某一年的日历;②程序要能够准确的输出某一年的某一月的月历;③程序能够详细查询某一年某一天的日期;④程序能够循环输出。
摘要:本实训报告旨在通过对万年历的设计与应用,加深对时间管理、编程技术以及用户界面设计的理解。
通过实训,我们不仅学会了万年历的基本原理,还掌握了编程实现和用户体验优化的方法。
以下是对实训过程的详细记录和分析。
一、实训目的1. 理解万年历的基本原理和设计思路。
2. 掌握编程语言(如Python、Java等)在万年历开发中的应用。
3. 提升用户界面设计能力,优化用户体验。
4. 培养团队合作与沟通能力。
二、实训环境1. 操作系统:Windows 102. 开发工具:Python3.8、PyCharm3. 用户界面设计工具:Qt Designer4. 数据库:SQLite三、实训原理万年历是一种用于记录和显示日历的工具,它按照公历或农历的日期排列,方便用户查看和查询。
万年历的设计原理主要包括以下几个方面:1. 闰年判断:通过判断年份是否为4的倍数来确定是否为闰年,同时还需考虑能被100整除但不能被400整除的年份不是闰年。
2. 月份天数:根据月份和闰年/非闰年的判断来确定每月的天数。
3. 星期计算:根据年、月、日计算出星期几。
4. 农历转换:根据农历的算法将公历日期转换为农历日期。
四、实训过程1. 确定项目需求:根据实训要求,设计一个功能齐全、界面友好的万年历软件。
2. 设计软件架构:确定软件的模块划分,包括主界面、日期计算、农历转换等模块。
3. 编写代码实现:使用Python语言实现万年历的各个功能模块。
4. 用户界面设计:使用Qt Designer设计软件的用户界面,包括日期选择、查询结果展示等。
5. 数据库设计:使用SQLite数据库存储万年历的数据,包括日期、农历信息等。
6. 调试与优化:对软件进行调试,修复可能出现的问题,并优化用户体验。
五、实训结果1. 成功实现万年历的基本功能,包括公历和农历的日期转换、查询等。
2. 软件界面简洁美观,用户操作方便。
3. 数据库设计合理,保证了数据的完整性和安全性。
万年历课程设计报告一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握年、月、日的关系及其换算方法。
2. 学生能够运用所学知识,独立制作并使用简易的万年历。
3. 学生了解我国农历与公历的区别及相互转换方法。
技能目标:1. 培养学生运用数学知识解决实际问题的能力,提高逻辑思维和推理能力。
2. 培养学生动手操作和团队协作能力,通过制作万年历的过程,锻炼实践操作技能。
情感态度价值观目标:1. 培养学生对时间管理的重视,树立珍惜时间的观念。
2. 增强学生对传统文化的认识,激发对中国古代天文历法的兴趣。
3. 培养学生积极探究、合作交流的良好学习态度,提高学习自信心。
课程性质分析:万年历课程属于数学与生活相结合的综合性课程,旨在让学生在实际问题中运用数学知识,提高解决实际问题的能力。
学生特点分析:考虑到学生所在年级的特点,课程内容应以直观、生动、有趣的方式进行设计,注重培养学生的动手操作能力和团队协作精神。
教学要求:1. 教师应充分准备教学资源,提供丰富的实例,引导学生主动参与学习过程。
2. 教学过程中,教师要以学生为主体,关注学生的个体差异,给予个性化指导。
3. 教师要关注学生的学习反馈,及时调整教学策略,确保课程目标的达成。
二、教学内容1. 年、月、日的关系及其换算方法- 公历与农历的基本概念- 年、月、日的定义及其相互关系- 闰年和平年的判断方法2. 简易万年历的制作- 万年历的基本结构- 制作步骤及注意事项- 万年历的使用方法3. 我国农历与公历的转换方法- 农历与公历的对应关系- 农历日期的推算方法- 二十四节气的计算与应用教学大纲安排:第一课时:导入万年历的概念,介绍年、月、日的关系及其换算方法,讲解闰年和平年的判断方法。
第二课时:指导学生动手制作简易万年历,掌握万年历的基本结构和使用方法。
第三课时:学习我国农历与公历的转换方法,了解二十四节气的计算与应用。
教材章节:《数学》教科书:第四章 时间与测量,第四节 万年历的制作与应用。