能准确校时的万年历的设计【开题报告】
- 格式:pdf
- 大小:280.70 KB
- 文档页数:3
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的情况下,程序应给出错误提示信息,如下:输入的年份或月份不合法,请重新输入。
万年历毕业设计万年历毕业设计毕业设计是每个大学生都要面对的一项重要任务,它不仅是对所学知识的综合运用,更是对学生综合能力的一次考验。
在选择毕业设计题目时,我对于万年历产生了浓厚的兴趣。
万年历是一种记录时间的工具,它不仅可以帮助人们了解日期和节气,还可以记录重要的日程安排。
因此,我决定以万年历为主题进行毕业设计。
首先,我将设计一个基于手机应用的万年历。
随着智能手机的普及,手机应用成为人们日常生活的重要组成部分。
通过手机应用,人们可以随时随地查看日历,并进行日程安排。
我的设计将包括一个简洁而美观的界面,用户可以通过滑动屏幕查看不同日期的信息。
同时,我还将添加提醒功能,用户可以设置重要的日程提醒,以免错过重要的事项。
其次,我将研究和设计一个能够自动识别节气的万年历。
节气是中国传统文化的重要组成部分,它与农业生产和人们的生活密切相关。
通过研究历史数据和天文知识,我将设计一个算法,能够准确地判断节气的日期和时间。
用户可以通过万年历应用随时查看当前的节气,并了解与之相关的习俗和文化。
另外,我还将研究和设计一个能够记录重要纪念日的功能。
每个人都有自己重要的纪念日,比如生日、结婚纪念日等。
通过万年历应用,用户可以设置这些纪念日,并在特定日期收到提醒。
这将帮助人们更好地珍惜和庆祝重要的时刻,增进彼此之间的情感。
在进行毕业设计的过程中,我将不仅仅局限于软件开发,还将深入了解和研究万年历的历史和文化背景。
万年历作为一种时间记录工具,有着悠久的历史和丰富的文化内涵。
我将通过阅读相关文献和参观博物馆,了解万年历的演变和不同地区的特色。
这将为我的毕业设计增添一份独特的深度和魅力。
最后,我将进行用户调研和测试,以进一步完善我的毕业设计。
通过与用户的交流和反馈,我可以了解他们对于万年历应用的需求和期望。
我将根据用户的反馈进行改进和优化,以提供更好的用户体验。
总之,我的毕业设计将以万年历为主题,设计一个基于手机应用的万年历,包括日程安排、节气识别和纪念日记录等功能。
万年历设计组员*************** 系部*******学院****************万年历设计(B题)【乙组】一、任务采用单片机设计并制作一个桌面万年历。
二、要求1.基本要求(1)可以显示日期、时间(显示年、月、日、具体时间)(2)时间可以调整。
(3)可以显示温度、湿度。
2.发挥部分(1)采用12864LCD或采用TFT屏作为显示器。
(2)时间掉电后不丢失。
(3)其它特色与创新。
三、评分标准项目满分基本要求设计与总结报告20 实际制作完成情况50发挥部分完成第一项10 完成第二项10 完成第三项10四、说明摘要本文通过对于一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。
系统由主控器AT89C51、 LCD12864液晶显示屏 、时钟电路、按键电路和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。
一、方案设计与论证方案一:系统分为主控制器模块、显示模块、按键开关模块,主控制模块采用AT89C52单片机为控制中心,显示模块采用普通的共阴LED 数码管,键输入采查询法实现功能调整,计时使AT89C52单片机自带的定时器功能,实现对时间、日期的操作,通过按键盘开关实现对时间、日期的调整。
方案二:系统分为主控模块、时钟电路模块、按键扫描模块,LCD 显示模块,电源电路、复位电路、晶振电路等模块。
主控模块采用AT89C52单片机,按键模块用三个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DHT11时钟芯片实现对时间、日期的操作。
两个方案工作原理大致相同,只有显示模块和时钟电路不同。
LED 数码管价格适中,对于数字显示效果较好,而且使用单片机的端口也较少;LCD12864液晶显示屏,显示功能强大,可以显示大量的文字、图形,显示多样性,清晰可见,价格相对LED 数码管来说要昂贵些,但是基于本设计显示的东西较多,若采用LED 数码管的话,所需数码管较多,而且不利于控制,因此选择LCD12864作为显示模块。
万年历课程设计报告一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握年、月、日的关系及其换算方法。
2. 学生能够运用所学知识,独立制作并使用简易的万年历。
3. 学生了解我国农历与公历的区别及相互转换方法。
技能目标:1. 培养学生运用数学知识解决实际问题的能力,提高逻辑思维和推理能力。
2. 培养学生动手操作和团队协作能力,通过制作万年历的过程,锻炼实践操作技能。
情感态度价值观目标:1. 培养学生对时间管理的重视,树立珍惜时间的观念。
2. 增强学生对传统文化的认识,激发对中国古代天文历法的兴趣。
3. 培养学生积极探究、合作交流的良好学习态度,提高学习自信心。
课程性质分析:万年历课程属于数学与生活相结合的综合性课程,旨在让学生在实际问题中运用数学知识,提高解决实际问题的能力。
学生特点分析:考虑到学生所在年级的特点,课程内容应以直观、生动、有趣的方式进行设计,注重培养学生的动手操作能力和团队协作精神。
教学要求:1. 教师应充分准备教学资源,提供丰富的实例,引导学生主动参与学习过程。
2. 教学过程中,教师要以学生为主体,关注学生的个体差异,给予个性化指导。
3. 教师要关注学生的学习反馈,及时调整教学策略,确保课程目标的达成。
二、教学内容1. 年、月、日的关系及其换算方法- 公历与农历的基本概念- 年、月、日的定义及其相互关系- 闰年和平年的判断方法2. 简易万年历的制作- 万年历的基本结构- 制作步骤及注意事项- 万年历的使用方法3. 我国农历与公历的转换方法- 农历与公历的对应关系- 农历日期的推算方法- 二十四节气的计算与应用教学大纲安排:第一课时:导入万年历的概念,介绍年、月、日的关系及其换算方法,讲解闰年和平年的判断方法。
第二课时:指导学生动手制作简易万年历,掌握万年历的基本结构和使用方法。
第三课时:学习我国农历与公历的转换方法,了解二十四节气的计算与应用。
教材章节:《数学》教科书:第四章 时间与测量,第四节 万年历的制作与应用。
毕业设计开题报告测控技术与仪器基于单片机的万年历时钟设计1选题的背景、意义在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。
为了更好的利用我们自己的时间,需要一款灵活、稳定而又功能强大的自动定时控制系统,以规范本单位的作息时间或定时控制一些设备。
目前,市面上出现的一些时控设备或功能单一,或使用烦琐,或价格昂贵,总有一些不尽如人意的地方[1]。
我们必须对时间有一个度量,因此产生了钟表。
钟表的发展是非常迅速的,17 世纪中叶, 由荷兰人C. Huygens来发明的第一个钟摆与以前任何计时装置相比, 摆钟的精确度提高了上百倍,而他随后发明的螺旋平衡弹簧,又进一步提高精度、减小体积, 导致了怀表的出现。
然而再好的摆钟,其精度也只能达到每年误差不超过一秒[2]。
1939年出现了利用石英晶体振动计时的石英钟, 每天误差只有千分之二秒, 到二次大战后精度提高到30 年才差一秒。
很快, 测年的技术又推进到原子层面, 1948 年出现第一台原子钟, 1955年又发明了铯原子钟, 利用Cs133原子的共振频率计时,现在精度已经高达每天只差十亿分之一秒[2]。
从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能——计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,无法更大程度上的满足人们的需求。
发展到现在人们广泛使用的万年历。
万年历在家庭居室、学校、车站和广场使用越来越广泛,给人们的生活、学习、工作带来极大的方便[3]。
电子万年历具有信息量大、直观清晰、经济实用等优点,正成为家庭、商场、公共场所等新的消费热点,具有重要的开发价值[4]。
随着科技的不断发展,家用电子产品不但种类日益丰富,而且变得更加经济实用,,功能也越来越齐全,除了公历年月、日、时分秒、星期显示及闹铃外,又增加了农历、温度、24节气及l2生肖等显示。
开题报告
电子信息工程
能准确校时的万年历的设计
一、综述本课题国内外研究动态,说明选题的依据和意义
随着信息化的发展和人们生活节奏的提高,为了提高工作效率,大家越来越具有时间观念,一个人的成功与失败在很大程度上与这个人是否有时间观念相关。
现在还有许多特殊的日子,如各种各样的节日,假日,纪念日,而全部记住这些特殊日子对我们来说是不可能的,幸好我们有一个好帮手来帮助我们记住这些日子——日历。
自从日历发明以后,由于其给生活带来许多方便,就逐渐地进入了不少在朝大官的家庭,经过一番变动,编制成自家的日历。
再往后,随着日历向大众化,家庭化的发展,人们也就把历书上的干支月令,节气及黄道吉日都印在日历上,并留下供记事用的的大片空白,这是传统的日历。
近一个世纪以来,日历又发展成挂历、台历等各种形式。
尽管日历的品种增多、花样也不断翻新,但仍旧保持着古老日历的格局。
随着电子技术的发展,又出现了日历的新形式——电子万年历,它采用独立芯片控制内部数据运行,以LED,LCD显示日期、时间、星期、节气,以及温度等日常信息。
人们对万年历的要求也越来越高,要求其不仅计时精度高,而且要具有可靠性好、成本低、功能全,外形美观等特点。
目前单片机已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
另一种新兴技术就是GPS技术,由于GPS技术所具有的全天候、高精度和自动测量的特点,作为先进的测量手段和新的生产力,已经融入了国民经济建设、国防建设和社会发展的各个应用领域。
随着冷战结束和全球经济的蓬勃发展,美国政府宣布2000年至2006年期间,在保证美国国家安全不受威胁的前提下,取消SA政策,GPS民用信号精度在全球范围内得到改善,利用C/A码进行单点定位的精度由100米提高到10米,这将进一步推动GPS技术的应用,提高生产力、作业效率、科学水平以及
人们的生活质量,刺激GPS市场的增长。
据有关专家预测,在美国,单单是汽车GPS导航系统,2000年后的市场将达到30亿美元,而在我国,汽车导航的市场也将达到50亿元人民币。
可见,GPS技术市场的应用前景非常可观。
由于时钟芯片会易受环境影响,会使该电路出现时钟精度不高、时钟混乱等问题,致使时间不准,这就需要人们不时进行校时工作,这无疑是一件麻烦的事情。
本设计采用了GPS校时以达到准确显示时间,日期的目的,只要一个按键(或者通过定时)就可以进行校对,省去了复杂的调时过程。
而且现在GPS应用迅速发展,本设计可以作为车载GPS产品的一部分,因此,具有较大的实际应用价值。
二.研究的基本内容,拟解决的主要问题:
需要完成的功能:
(1)在LCD上显示时间,日期,星期,阴历,温度;
(2)能够采集GPS模块的时间,日期等信息用于调时;
(3)通过按键手动调整时间。
需要解决的问题:
(1)时间,日期的显示可以通过一个时钟芯片(DS1302)得到,但是该芯片无法得到阴历日期,所以需要一个阳历转阴历算法;
(2)GPS的传输格式不同,包含内容不同,选择的GPRMC格式不包括星期信息,所以需要一个通过日期算出星期的算法;
(3)显示的内容较多,用到AMPIRE12864作为LCD显示器,这个显示器需要制作字模,但是它的驱动是KS0108,字模的显示方式是按列排列,字节倒序。
这就需要功能较强的字模生成器,以正常显示;
(4)GPS模块需要用到单片机串行通信,所以串行通信部分需要重点看,而且需要了解GPRMC数据格式,取出其中的时间,日期信息,并要写入DS1302;(5)温度用DS18b20芯片,需要了解原理及应用方法;
(6)硬件制作时,需要注意各芯片的外围硬件电路。
三、研究步骤、方法及措施:
研究步骤:
(1)研究用C语言控制51单片机;
(2)研究DS1302,DS18b20,AMPIRE12864;
(3)研究51单片机控制DS1302,DS18b20,AMPIRE12864;
(4)研究GPS数据格式和51单片机的GPS接收方法;
(5)研究星期,阴历算法;
(6)研究硬件电路的制作。
措方法及施:看书了解单片机的基本原理和C语言编程方法,通过网络寻找相关芯片数据手册及应用例子,用protues仿真完善软件,在老师的指导下完成毕业设计。
四、参考文献
[1] 高禹,冯相忠. C语言程序设计[M].北京:中国农业大学出版社,2008.
[2] 菜美琴等. MCS-51系列单片机系统及其应用[M].北京:高等教育出版社,
2004.
[3] 楼然苗,李光飞. 单片机课程设计指导[M].北京:北京航空航天大学出版
社,2007.
[4] 白延敏. 51单片机典型系统开发实例精讲[M].北京:电子工业出版社,
2009.
[5] 邱关源. 电路[M].北京:高等教育出版社,2006.
[6] 康华光. 电子技术基础模拟部分[M].北京:高等教育出版社,2005.
[7] 王怀平,王仁波,胡开明. Proteus仿真设计基于单片机AT89C51的电子万年
历[J]. 科技广场, 2008, (10):20~36.
[8] 杨河理,熊晓东. 电子万年历中公历农历互换算法研究[J]. 长江大学学报
(自科版), 2006, (10):14~21.
[9] 张剑锋, 陈慕君. 万年历算法研究及实现[J]. 中国水运(理论版), 2007,
(04):44~50.
[10] 肖炎根,舒望. 基于实时钟芯片的电子万年历的设计[J]. 电子技术, 2007,
(Z3):32~35.。