万年历设计报告

合集下载

万年历课程设计报告报告

万年历课程设计报告报告

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. 界面美观:采用现代化的设计风格,界面简洁大方,用户操作友好。

3. 数据准确:万年历需要准确显示日期、星期、节气等信息,确保用户可以方便地获取所需信息。

4. 可定制性:用户可以根据个人喜好设置界面风格、闹钟提醒等个性化选项。

三、项目计划1. 需求调研:通过市场调研和用户需求分析,了解目标用户对电子万年历的需求和期望。

2. 界面设计:设计美观实用的界面,包括布局、图标、颜色等方面的设计。

3. 功能开发:根据需求调研结果,开发万年历的核心功能,如日期显示、节假日提醒等。

4. 数据源接入:获取准确的日期、星期、节气等数据源,并将其与万年历系统进行整合。

5. 闹钟与备忘录功能开发:根据用户需求,开发闹钟和备忘录功能,使用户可以方便地设置提醒和记录重要事项。

6. 用户界面定制:为用户提供个性化的界面定制选项,使用户可以根据自己的喜好设置界面风格。

7. 测试与优化:对开发完成的电子万年历进行测试,修复bug并优化系统性能。

8. 发布与推广:将电子万年历发布到应用商店等平台,并进行推广,吸引更多用户使用。

四、项目意义1. 提供便利:设计一款功能丰富的电子万年历,可以方便用户获取日期、星期、节气等信息,帮助用户合理安排时间。

2. 提醒功能:通过闹钟和备忘录功能,用户可以设置提醒,不再错过重要的事情。

3. 个性化定制:提供个性化界面定制选项,满足用户对界面风格的不同需求。

4. 科技创新:电子万年历的设计与开发,体现了科技的进步和创新,为用户带来全新的体验。

万年历实验报告

万年历实验报告

万年历实验报告万年历实验报告一、实验目的本次实验的目的是通过制作一个万年历来加深对时间、日期和闰年的理解,并提高对日历制作的实践能力。

二、实验材料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. 可以尝试制作一个更大的万年历,包含更多年份和月份的信息。

七、结论通过本次实验,我们成功制作了一个简易的万年历,并通过实践加深了对时间、日期和闰年的理解。

这个万年历不仅具有实用性,还提高了我们的手工能力和空间想象力。

通过实践,我们对日历的结构和设计有了更深入的了解。

万年历课程设计报告

万年历课程设计报告

课程设计报告万年历学生姓名:系别:自动化学院专业:测控技术与仪器班级: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:复位输入。

万年历设计报告

万年历设计报告

摘要单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置到飞机上的各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡等,这些都离不开单片机。

单片机是集CPU、RAM、ROM、定时、计数和多种接口于一体的微控制器。

它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。

而51系列单片机是各单片机中最为典型和最有代表性的一种。

万年历在日常生活中最常见,应用也最广泛。

本次课程设计主要就是设计一款数字钟,以89S51单片机为核心,配备数码管,按键,蜂鸣器。

数字钟采用24小时制方式显示时间,年、月、日、时、分、秒、星期以及闰年。

文章的核心主要从硬件设计和软件编程两个大的方面。

硬件电路设计主要包括中央处理单元电路、人机接口电路、信号处理电路、执行电路等几部分组成。

软件用C语言来实现,主要包括主程序,显示子程序,按键切换程序,校时程序等软件模块。

关键字:AT89C51数码管喇叭定时中断 LCD128641第一章绪论1.1课题研究的背景随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

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

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

因此,研究数字钟及扩大其应用,有着非常现实的意义。

此万年历电路采用AT89C51单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。

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

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

第一部分:正文一,课程设计名称: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把程序分解成多个小函数,那么问题就分解成几个小问题。

(2023)C语言万年历设计报告(一)

(2023)C语言万年历设计报告(一)

(2023)C语言万年历设计报告(一)C语言万年历设计报告这份报告是针对 2023 年度 C 语言万年历设计而准备的。

设计目的该万年历的设计目的是为了让用户能够快速地查看任意公历年份的日历,同时还能够显示节气、万年历和日历信息。

设计思路该万年历的主要思路是通过用户输入任意公历年份,在程序中计算并显示该年的日历信息。

具体实现思路如下:1.用户输入年份信息。

2.程序判断该年份是否为闰年,并计算该年的总天数。

3.根据该年第一天是星期几,排列该年每个月的天数。

4.标记国历节日,如元旦、劳动节等。

5.计算并标记该年的节气,如立春、清明等。

6.计算并标记该年的重要万年历信息,如“三伏”、“四季”等。

设计要点在实现该万年历的过程中需要注意以下几个要点:1.为了代码的可维护性,尽量将每个功能模块拆分成函数的形式。

2.程序中需要处理日期的加减运算,可以使用标准库中的<time.h>。

3.节气和万年历的计算应该基于一些公式而不是硬编码。

设计结果经过实现,该万年历已经能够正常运行,并能够正确地显示各种信息。

用户输入任意公历年份后,程序可以迅速计算并展示该年的万年历、节气和重要节日信息。

结论通过本次 C 语言万年历的设计,我们不仅深入地了解了日期处理等相关知识,还提升了编码的能力。

在日常开发中,我们也可以根据这些基础知识,设计更为实用的应用程序。

可改进之处尽管该万年历已经能够满足基本的需求,但仍有一些改进空间。

例如:1.目前仅支持公历,可以添加其他历法的支持,如农历、阴阳历等。

2.界面可以进一步美化,增加更多交互性的组件,如按钮、下拉菜单等。

3.可以添加更多的功能,如查询特定日期的天气、星座运势等。

总结本次 C 语言万年历设计,使我们更好地理解了日期处理的相关知识,提高了我们的编码水平。

同时,我们也意识到在实际项目中,需要更多的功能和优化,才能更好地服务于用户的需求。

通过持续不断的学习和实践,我们可以不断提升自己的编程技能。

万年历设计报告

万年历设计报告

万年历设计报告1. 引言万年历是一种用于查询日期和显示重要节假日的工具,可以帮助用户快速了解任意日期所处的星期、月份、季节等信息。

在本设计报告中,我们将介绍一个基于Python语言的万年历设计方案。

该万年历设计方案使用了面向对象编程的思想,具有良好的可拓展性和易于维护的特点。

2. 功能需求本次万年历设计的功能需求如下:•显示指定年份的公历日历•查询指定日期的公历信息,如星期、星座、节假日等•支持农历查询,显示指定日期的农历信息•支持阳历和农历之间的转换•提供用户友好的命令行界面3. 设计思路基于以上功能需求,我们设计了以下几个核心类来实现万年历的功能:3.1 DateConverterDateConverter是一个日期转换的工具类,用于实现公历日期和农历日期之间的转换。

它包含了以下主要方法:•convert_to_lunar(year, month, day):将公历日期转换为农历日期•convert_to_solar(year, month, day):将农历日期转换为公历日期3.2 CalendarCalendar类负责输出指定年份的公历日历。

它包含以下主要方法:•display(year):输出指定年份的公历日历3.3 HolidayHoliday类负责确定指定日期是否为节假日。

它包含以下主要方法:•is_holiday(year, month, day):判断指定日期是否为节假日3.4 LunarCalendarLunarCalendar类负责显示指定日期的农历信息。

它包含以下主要方法:•display(year, month, day):输出指定日期的农历信息4. 实现结果4.1 用户界面我们使用命令行界面来与用户进行交互。

用户可以输入指令来查询对应的日期信息,例如:请输入指令(输入 help 查看帮助):cal 20222022 年日历如下:一月二月三月日一二三四五六日一二三四五六日一二三四五六...十月十一月十二月日一二三四五六日一二三四五六日一二三四五六4.2 功能展示以下是使用我们设计的万年历程序的一些功能示例:•查询公历日期请输入指令(输入 help 查看帮助):info 2022-01-01查询结果如下:日期:2022-01-01星期:六星座:摩羯座节假日:元旦节•查询农历日期请输入指令(输入 help 查看帮助):lunar 2022-01-01查询结果如下:日期:2022-01-01农历日期:腊月廿七农历年份:牛年•查询节假日请输入指令(输入 help 查看帮助):holiday 2022-05-01查询结果如下:日期:2022-05-01节假日:劳动节5. 总结本次万年历设计方案基于Python语言,使用了面向对象编程的思想,实现了查询公历和农历日期、显示公历日历以及查询节假日等功能。

万年历设计报告

万年历设计报告

课程论文报告——万年历学院:计算机与信息工程学院班级:12级通信3班学号:20124756姓名:王智1.引言万年历是我国古代传说中最古老的一部太阳历。

为纪念历法编撰者万年的功绩,便将这部历法命名为“万年历”。

而现在所使用的万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。

而随着微电子技术的高速发展,人类用于计时的工具也在不断发展更新,单片机技术的出现使得万年历有了新的发展方向。

单片机以其体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。

目前世界上单片机年产量已达十多亿片,通常是当年微处理器产量的4-5倍以上。

用最少的芯片就能实现最强大的功能,这是将来电子产品的主流方向,它将无可置疑地一步步取代其它同类产品,其数量之大和应用面之广,是其它任何类型的计算机所无法比拟的。

以基于单片机的万年历作为设计的课题,因为它有很好的开放性和可发挥性,对作者的要求比较高,不仅考察了对单片机的掌握能力而且强调了对单片机扩展的应用。

另外液晶显示的万年历已经越来越流行,特别适合在家庭居室、办公室、大厅、会议室、车站和广场等地方使用,它具有显示清晰直观、走时准确、可以进行夜视等功能,并且还可以扩展出其它多种功能。

所以,电子万年历作为设计课题很有价值。

2.内容设计A,单片机芯片选择:采用STC89C52芯片,STC89C52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash存储器。

同样具有AT89S51的功能,且具有在线编程可擦除技术,当对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,因此选择采用STC89C52作为主控制系统核心。

万年历实验报告

万年历实验报告

万年历设计实验报告专业:电子信息工程技术年级:2012级姓名:周秘学号:20124696指导教师: 毛群一.实验目的:1、运用芯片设计一个万年历时钟仿真;2、掌握各芯片的逻辑功能及使用方法;3、了解数字万年历的组成及工作原理。

二.设计指标:1.设计一个能直接显示“年”、“月”、“日”、“星期”、“时”、“分”、“秒”的十进制的万年历时钟显示器;2.逐步对“年”、“月”、“日”、“星期”、“时”、“分”、“秒”进行单独设计,再将它们联系起分析;3.在设计过程中对“年”、“月”、“日”进行分析,其“日”分28天、29天、30天、31天;“月”分二月、小月、大月;“年”分平年、闰年。

三、设计原理:1.原理方框图:2.信号发生器:年、月、日、星期、时、分、秒分别为365(366)、12、31(28、29、30)、7、24、60、 60 进制的计数器,在设计中采用74LS90实现时、分、秒、年。

用74ls160月、日、星期。

在实现的电路中可以采用清零,或置数。

3.译码显示电路:译码器选用BCD 输入端的4线译码器,其输入端A 、B 、C 、D 分别接计数器输出端Q0、Q1、Q2、Q3。

四.设计过程: 1.秒信号:秒计数器是M=60的计数器,可采用中规模集成计数器实现。

实验中我用74LS90实现,74LS90为异步十进制计数器,由于它只要有清零信号,计数器立即清零,与CP 无关,即异步清零。

为实现秒计数器M=60时,即个位从0-9,十位从0-6.当十位为6时,十位清0。

如图:c9G N DCP c1c2c3c4c5c6c7c8c8c2c3c9GND c5c4CKA 14Q012CKB1Q19Q28Q311R0(1)2R0(2)3R9(1)6R9(2)7U474LS90CKA 14Q012CKB1Q19Q28Q311R0(1)2R0(2)3R9(1)6R9(2)7U574LS90456U3:B74LS08CP秒个位秒十位秒60清零卡诺图:00 01 11 10 00 1 1 1 1 01 1 1 X 1 11 X X X X 10XXXXCDAB2.分信号:分计数器的电路和秒计数器电路完全相同是M=60的计数器, 用74LS90实现,如图:b0GND b4b6b7b1b2b3b4b5b6b7b8b8b1GND b0d4c2CKA14Q012CKB1Q19Q28Q311R0(1)2R0(2)3R9(1)6R9(2)7U374LS90CKA14Q012CKB1Q19Q28Q311R0(1)2R0(2)3R9(1)6R9(2)7U174LS90123U3:A74LS08分个位分十位分60清零3.时信号:由于采用的是二十四制的时钟显示,其脉冲由分电路的十位而来且74LS90是异步清零,所以时为24时清零,即时的个位为0100、时的十位为0010清零,如图:a5GND A 5G N D A4a4a3a2a1A1A9a9a8a7a6a5A8A2d1b6CKA 14Q012CKB1Q19Q28Q311R0(1)2R0(2)3R9(1)6R9(2)7U074LS90CKA14Q012CKB1Q19Q28Q311R0(1)2R0(2)3R9(1)6R9(2)7U274LS909108U3:C74LS08U6U7:A时个位时十位时24清零4.星期信号:星期是七进制,星期是从星期一到星期日, 在七段译码器显示是:1、2、3、4、5、6、8(为了和人们的习惯一样,用8来表示星期日),但是七段译码器是显示0—9,在显示星期时,需将0、7、9这三个数屏蔽而不显示,在此电路中采用异步置数的方法来做到。

万年历课程设计报告

万年历课程设计报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

万年历设计报告

万年历设计报告

陕西师范大学远程教育学院题目: java万年历设计学习中心:陕西省咸阳教育科技培训学院学号:层次:高中起点专科姓名:张江目录一、设计分析 (1)1、需求分析 (1)2、功能设计 (1)3、概要设计 (1)3.1程序设计思路 (1)3.2程序运行界面 (2)二、程序结构 (3)三、各模块的功能及程序说明 (4)1、初始化组件 (4)2、初始化数据 (4)3、绘制程序界面 (5)四、操作方法 (14)五、试验结果 (14)六、设计体会 (16)一、设计分析1、需求分析本程序的要求为:1.使用图形用户界面;2.实现日期与星期的查询。

2、功能设计本程序要构建的万年历程序,其功能有以下几个方面:(1)通过网页形式运行,实现图形界面。

(2)能以月历形式显示日期与星期。

(3)支持用户自己输入年份,并提供月份的下拉形式菜单来选择月份。

(4)通过点击“更新”来刷新日历。

3、概要设计3.1程序设计思路1、总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。

然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

2、输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。

3、算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

4、如果年份小于1582年则程序不予判断。

3.2程序运行界面二、程序结构流程图:三、各模块的功能及程序说明1、初始化组件import java.applet.Applet;import java.awt.*;import java.util.*;2、初始化数据public class CalendarApplet extends Applet{static final int TOP = 70; //顶端距离static final int CELLWIDTH=50,CELLHEIGHT = 30; //单元格尺寸static final int MARGIN = 3; //边界距离static final int FEBRUARY = 1;TextField tfY ear = new TextField("2004", 5); //显示年份的文本域Choice monthChoice = new Choice(); //月份选择下拉框Button btUpdate = new Button("更新"); //更新按钮GregorianCalendar calendar=new GregorianCalendar(); //日历对象Font smallFont = new Font("TimesRoman", Font.PLAIN, 15); //显示小字体Font bigFont = new Font("TimesRoman", Font.BOLD, 50); //显示大字体String days[] = {"星期日", "星期一", "星期二", "星期三","星期四", "星期五", "星期六"};String months[] = {"一月", "二月", "三月", "四月","五月", "六月", "七月", "八月", "九月","十月", "十一月", "十二月"};int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数int searchMonth,searchY ear; //查询的年份及月份3、绘制程序界面public void init(){setBackground(Color.white); //设置背景颜色searchMonth = calendar.get(Calendar.MONTH); //得到系统年份searchY ear = calendar.get(Calendar.YEAR); //得到系统月份add(new Label(" 年:")); //增加组件到ApplettfY ear.setText(String.valueOf(searchY ear)); //设置文本域文字add(tfY ear);add(new Label(" 月:"));monthChoice.setFont(smallFont); //设置月份选择下拉框的显示字体for (int i = 0; i < 12; i++) {monthChoice.addItem(months[i]); //增加下拉框选项}monthChoice.select(searchMonth); //设置下拉框当前选择项add(monthChoice);add(btUpdate);int componentCount=this.getComponentCount(); //得到Applet中的组件数量for (int i=0;i<componentCount;i++){getComponent(i).setFont(smallFont); //设置所有组件的显示字体}}四、操作方法1、出提示语句,并接受用户输入的年、月。

万年历综合课程设计报告

万年历综合课程设计报告

目录目录 (1)第一章设计目的与要求 (3)1.1设计目的 (3)1.2设计要求 (3)第二章课程设计分析 (4)2.1设计背景 (4)2.2程序开发环境 (4)2.3课程设计主要内容 (4)第三章总体设计 (5)3.1整体流程图 (5)3.2功能模块图 (6)3.3各模块功能详细说明 (6)3.3.1 查询星期模块 (6)3.3.2 判断模块 (6)3.3.3 查询月历模块 (6)3.3.4 显示模块 (7)3.3.5 显示模块 (7)3.3.6 退出模块 (7)3.4各模块函数说明 (7)3.4.1查询星期模块程序: (7)3.4.2 判断模块程序 (7)3.4.3 查询月历模块 (7)3.4.4 显示模块程序 (9)3.4.4 重载模块程序 (10)3.4.4类成员与成员函数 (11)第四章程序调试与功能实现 (13)4.1系统使用说明 (13)4.2系统运行结果及运行截图 (13)4.2.1 系统总体选择图 (13)4.2.2 当前月份日历并可以翻页 (13)4.2.3 某一年的日历 (14)4.2.4输出所要查询的日期并可以翻页 (15)4.2.5 输出所查询的日期星座 (17)4.3主函数代码 (17)第五章课程设计心得与体会 (20)参考文献 (21)附录:源代码 (22)第一章设计目的与要求1.1 设计目的通过显示年日历程序的设计,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。

通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《C++面向对象程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了C++语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!通过C++语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

万年历设计报告书

万年历设计报告书

万年历设计报告书一、设计要求:1.具有年、月、日、星期、时、分、秒等功能;2.时间与阴、阳历能够自动关联;图-1 主程序流程图三、各模块的功能及程序说明1. 具有年、月、日、星期、时、分、秒等功能在设计这一程序的时候,考虑到要在用户界面上对年月日以及时分秒的输入,在使用上更简单易操作。

2. 时间与阴、阳历能够自动关联在设计这一功能的时候,考虑到阴历和阳历要关联,翻阅了大量的资料,找到他们的函数关系,使这一功能在使用上更方便。

四、源程序package prog;import java.util.Scanner;public class MC2 {static final int BASE_YEAR = 2000;static final int BASE_WEEK_DAY = 6;static int getWeekDay(int year, int month, int day) {int base = getWeekDayOfFirstDay(year);int days = getDaysBetweenFirstDay(year, month, day);return (base + days) % 7;}static int getWeekDayOfFirstDay(int year) {if (BASE_YEAR == year) return BASE_WEEK_DAY;int days = getDaysBetweenTwoYear(year, BASE_YEAR);if (year > BASE_YEAR)return (BASE_WEEK_DAY + days) % 7;elsereturn (BASE_WEEK_DAY - days % 7);}static int getDaysBetweenTwoYear(int year1, int year2) {int min = Math.min(year1, year2);int max = Math.max(year1, year2);int sum = 0;for (int i = min; i < max; i++)sum += getYearDays(i);return sum;}static int getYearDays(int year) {return isLeapYear(year)? 366: 365;}static int getDaysBetweenFirstDay(int year, int month, int day) { int sum = 0;for (int i = 1; i < month; i++)sum += getMonthDays(year, i);sum += day - 1;return sum;}static int getMonthDays(int year, int month) {switch (month) {case 1: case 3: case 5: case 7:case 8: case 10: case 12:return 31;case 4: case 6: case 9: case 11:return 30;case 2:return isLeapYear(year)? 29: 28;}return 0;}static boolean isLeapYear(int year) {return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;}static void printYear(int year) {for (int i = 1; i <= 12; i++)printMonth(year, i);}static void printMonth(int year, int month) {System.out.print("\n\n====================== " + month + " ======================\n");System.out.print("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");int wd = getWeekDay(year, month, 1);for (int i = 0; i < wd; i++)System.out.print("\t");int lastday = getMonthDays(year, month);for (int i = 1; i <= lastday; i++) {System.out.printf("%3d\t", i);if (wd++ % 7 == 6 && i != lastday)System.out.println();}}public static void main(String [] args) {System.out.print("Input a year: ");Scanner scanner = new Scanner(System.in);int year = Integer.parseInt(scanner.nextLine());printYear(year);}}五、操作方法当进入用户界面的时候,可以在年月日栏里分别输入年份月份和日,并能自己显示出相对应的农历以及星期。

万年历的设计 设计报告

万年历的设计 设计报告

基于PIC单片机的万年历的设计1 设计目的通过本课程设计,进一步了解课程设计的要求和写作过程,了解课程设计的研究方法,培养文献检索能力、创新能力、文字表达能力等。

本设计主电路都采用目前流行的简单的典型电路接法,简单实用、稳定廉价。

本设计可起到一个很好的教学目的和实验目的,对于认识PIC单片机也有一定的好处,能更加熟悉单片机和其它芯片之间的通信。

2 设计的主要内容和要求2.1 主要内容1)PIC16F87X系列单片机是美国微芯公司(Microchip)推出的单片机系列,采用精简指令集结构(RISC)的高性价比嵌入式控制器,其总线结构采取数据总线和指令线分离独立的哈佛(Harvard)结构。

所以我们要先掌握精简指令集结构和哈佛结构的特点和用法。

2)实时时钟芯片DS1302和温度传感芯片DS18B20都是DALLAS公司出产的,都采用单总线数据传送方式,所以我们先要弄懂单总线传送方式是一个什么样的传送方式。

3)1602液晶芯片是一款常见的LCD,对它的读写我们要注意读写时序,还有PIC单片机速度比8051单片机要快,以前对1602写操作前不会检查忙否,但PIC一定要确认1602不忙才进行写操作。

4)PIC16F87X系列单片机资源很丰富,故控制寄存器较多,要注意运用,还有PIC16F87X系列单片机有些引角在开出厂时输入输出的是模拟信号,要对其控制寄存器进行设置。

2.2 主要要求1)设计要做到操作简单实用廉价;2)要能显示秒、分、时、天、月、周、年、农历以及闹钟等信息,并能调整以上信息;3)键盘控制调整时钟信息和显示要灵敏不能出现较大的延时,灵活,可移植性强,能够随时对电路进行改进。

3 整体设计方案为提高设计效率,本设计拟将整个系统模块化。

采用的整体设计方案如图3.1所示,整个系统由MCU[1]、显示电路[2],独立键盘电路[3]、DS1302实时时钟电路[4]、复位电路等部分组成。

图3.1 整体设计框图当电源开关打开后,系统电路初始化,一从DS1302实时时钟电路中读取一串时钟信息,二从DS18B20温度传感电路读取一串温度信息,然后,MCU系统对采集到的进行变换和处理,再通过LCD显示出来,完成一次显示过程。

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

课程设计实验报告(万年历)..
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;

万年历课程设计报告

万年历课程设计报告

课程设计报告课程:面向对象程序设计设计项目:万年历学号:姓名:班级:指导教师:1.设计内容:显示公元后任何年份的日历,日历以月份顺序排列,每月一星期顺序排列,类似于一般挂历上的格式。

2.设计目的与要求:达到熟练掌握c++语言的基本知识和技能;基本掌握面向对象程序设计的基本思路和方法;能够利用所学的基本知识和技能,解决简单的设计问题。

3.工具与准备工作:在开始实验前,应回顾或复习相关内容。

需要一台计算机,其中装有Visual C++ 6.0 ,Visual C++ 2005,Dev-C++或MinGW Developer Studio等集成开发环境软件。

4. 系统分析与设计:万年历具有以下特点:平年365天(52周+1天),闰年366天(52周+2天),平年2月28天,闰年2月29天;每400年整一闰,或每4年且不为百年的一闰。

由以上特点以及1900年的元旦刚好是星期一这一已知条件,在程序中定义Date类的声明如下:class Data{private:int year;public:void getyear(); //提示用户输入想要查询的年份 int ioleapyear(); //判断该年是不是闰年int weekday(); //判断该年的元旦是星期几int monthday(int i); //该年每个月的天数void disp(); //显示结果。

};5.具体实现步骤:#include <iostream>#include <iomanip>using namespace std;class Data{private:int year;public:void getyear(); //提示用户输入想要查询的年份 int ioleapyear(); //判断该年是不是闰年int weekday(); //判断该年的元旦是星期几int monthday(int i); //该年每个月的天数void disp(); //显示结果。

万年历设计报告(汇编)

万年历设计报告(汇编)

汇编大作业之万年历914106840745周子聪万年历程序设计报告设置的初始年份为1995年,若距离1995年一月一日不超过65536天的年份应该都不会出错。

也就是说1995——2174年应该都可以查询具体能查询多少年内的没有特意验证,百度日历最多只给查2050年。

1995年到2050年均正确,抽取三年截图如下:万年历源代码(汇编)DATAS SEGMENTpwrdw 0yeardw ?monthdw 1,2,3,4,5,6,7,8,9,10,11,12xingqidb 's','m','t','w','t','f','s'daydw32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,1 0,9,8,7,6,5,4,3,2,1nuofdaydw 31,28,31,30,31,30,31,31,30,31,30,31firstdaydw 12 dup(?) ;存放每月第一天星期几nowdaydw 4 dup(?) ;动态变化,存放当前月份下次须输出几号tishidb 'INPUT YEAR YOU WANT TO KNOW:',0dh,0dh,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXmovdx,offsettishimov ah,9int 21hCALL PrintOneLine;接收输入的年份input:MOV AH,1INT 21H;ÊäÈëÒ»¸öNmov ah,0MOV pwr,AxCMP al,0dHjz next0sub al,30hmov ah,0push axmovax,yearshl ax,1push axmov cl,2shlax,clpopbxaddax,bxpopbxaddax,bxmovyear,axjmp input;计算并初始化数据段中每个月第一天星期几next0:movcx,yearCALL IsLeapcmp ax,1jnzInitFirstDayOfMonthmovnuofday[2],29 InitFirstDayOfMonth:CALL PrintOneLinemov dx,0movbx,yearsub bx,1995movcx,year caculator:sub cx,1CALL IsLeapcmp ax,1jnz nextinc dxnext:cmp cx,1995jnzcaculatormovax,yearsub ax,1995mov bx,365push dxmulbxpop dxaddax,dxmov bx,7MOV DX,0divbxmovfirstday,dxmov bx,0InitLoop:movax,firstday[bx]addax,nuofday[bx]mov dx,0div cxadd bx,2movfirstday[bx],dxcmp bx,22jnzInitLoopmov bx,2 BIGLOOP:pushbxCALL PRINTYEARCALL PrintOneLine popbxadd bx,6cmp bx,26jnz BIGLOOPEXIT:MOV AH,4CHINT 21H;打印第二三四行日期PRINT234 PROCpushbxloopline234:CALL PrintOneLineCALL PrintBlankCALL PrintBlankprintdayline234:mov cx,7movsi,nowday[bx]CALL PrintBlankCALL PrintBlankag7day234:movax,day[si]CALL PrintNumcmp day[si],10jae printoneblank234CALL PrintBlankCALL PrintBlankjmp next234 printoneblank234:CALL PrintBlank next234:sub si,2loop ag7day234movnowday[bx],siincbxincbxcmp bx,8jnz printdayline234popbxRETPRINT234 ENDP;打印第五/六行日期PRINT56 PROCpushbxCALL PrintOneLineCALL PrintBlankCALL PrintBlankprintdayline56:mov cx,7pushbxmov dx,0movax,bxshr ax,1mov bx,3divbxmovbx,dxcmp bx,0jz bxis3shl bx,1jmpjustbxbxis3:mov bx,6 justbx:movsi,nowday[bx]popbxCALL PrintBlankCALL PrintBlank ag7day5:sub bx,2movax,day[si]sub ax,1cmpnuofday[bx],axjz printblank2movax,day[si]CALL PrintNumsub si,2jmp nextline5printblank2:CALL PrintBlankCALL PrintBlank nextline5:CALL PrintBlankadd bx,2loop ag7day5pushbxmov dx,0movax,bxshr ax,1mov bx,3divbxmovbx,dxcmp bx,0jz ifbxequ3shl bx,1jmpbxjustifbxequ3:mov bx,6bxjust:movnowday[bx],simovax,bxpopbxincbxincbxcmp ax,6jnz printdayline56popbxRETPRINT56 ENDP;将ax中数字转化为一个个ASCII码打印出来PrintNum PROCpush axpushbxpush cxpush dxmov cx,0mov bx,10ag1:mov dx,0divbxadd dl,30hpush dxinc cxcmp ax,0jnz ag1ag2:pop dxmov ah,2int 21hloop ag2pop dxpop cxpopbxpop axRETPrintNum ENDP;入口参数为bx,bx为2/8/14/20则打印第一/二/三/四季度日历PRINTYEAR PROCpushbxprintmonth:mov dx,' 'mov ah,2int 21hCALL PrintBlankCALL PrintBlankCALL PrintBlankCALL PrintBlankCALL PrintBlankCALL PrintBlankagain1:sub bx,2 movax,month[bx] add bx,2CALL PrintNummov dx,' 'mov ah,2int 21hmov dx,' 'mov ah,2int 21hmov dx,' 'mov ah,2int 21hCALL PrintBlankCALL PrintBlankCALL PrintBlankpushbxmov dx,0movax,bxshr ax,1mov bx,3divbxmovbx,dxcmp bx,0jz ifbxequ300shl bx,1jmp bxjust00 ifbxequ300:mov bx,6bxjust00:movax,bxpopbxadd bx,2cmp ax,6jnz again1popbxCALL PrintOneLinepushbxmov cx,3;显示星期日到星期六printxingqi:CALL PrintBlankCALL PrintBlankmov bx,0again2:CALL PrintBlankCALL PrintBlankmovdl,xingqi[bx]mov ah,2int 21hincbxcmp bx,7jnz again2loopprintxingqipopbxCALL PrintOneLinepushbx;显示第一行日期printdayline1:mov si,32 ;day[si]表示当前日期shl si,1sub si,2sub bx,2movcx,firstday[bx]add bx,2push cxagblank1:cmp cx,0jz next000CALL PrintBlankCALL PrintBlankCALL PrintBlanksub cx,1jmp agblank1next000:CALL PrintBlankCALL PrintBlankpop cxmov ax,7subax,cxmovcx,ax outputline1:CALL PrintBlankCALL PrintBlankmovax,day[si]CALL PrintNumsub si,2loop outputline1pushbxmov dx,0movax,bxshr ax,1mov bx,3divbxmovbx,dxcmp bx,0jz bxis31shl bx,1jmp justbx1bxis31:mov bx,6justbx1:movnowday[bx],simovax,bxpopbxadd bx,2cmp ax,6jnz printdayline1popbx;显示第二三四行日期CALL PRINT234CALL PRINT234CALL PRINT234;显示第五六行日期next5:;CALL PRINT56CALL PRINT56RETPRINTYEAR ENDP;判断CX中的年份是不是闰年,是闰年AX置1否则置0 IsLeap PROCpushbxpush cxpush dx;判断能否被4整除movax,cxmov bx,4MOV dx,0divbxcmp dx,0jnznotleap;判断能否被100整除movax,cxmov bx,100MOV DX,0 divbxcmp dx,0jnz leap;判断能否被400整除movax,cxmov bx,400MOV DX,0 divbxcmp dx,0 jnznotleapleap:mov ax,1jmpendleap notleap:mov ax,0 endleap:pop dxpop cxpopbxRETIsLeap ENDP;打印一个空格PrintBlank PROCmov dx,' 'mov ah,2int 21hRETPrintBlank ENDP;换行PrintOneLine PROCmov dx,0dhmov ah,2int 21hmov dx,0ahmov ah,2int 21hRETPrintOneLine ENDPCODES ENDSEND START总结调试至少100多次,历时两天完成,使用的是Masm for Windows 集成实验环境2015。

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

C语言程序设计实训任务书题目:万年历学生:学号:班级:_物联网工程_ 题目类型:软件工程(R)指导教师:一、设计目的1.进一步掌握和利用C语言进行程序设计的能力;2.进一步理解和运用结构化程序设计的思想和方法;3.初步掌握开发一个小型实用系统的基本方法;4.学会调试一个较长程序的基本方法;5.学会利用流程图或N-S图表示算法;6.掌握书写实训开发文档的能力(书写实训报告)。

二、设计任务及容用C语言编写万年历1.功能选择可以用菜单实现。

例如可以选择1按年查询2按月查询3按日查询0退出用户通过不同的数字进入不同的菜单2.万年历显示公元后任何年份的日历,类似于一般挂历上的格式3.输入年份,判断是否为闰年4.输入年月日,判断改日为星期几5.输入年份,打出12个月历,输入月份,打出该月的日历6.要求用多个函数实现三、设计要求1.用C语言实现系统;2.利用结构体、数组等实现数据结构设计;3.系统的各个功能模块要求用函数的形式实现;4.文档:实训说明书每个学生一份,并装在统一的资料盒中。

5.光盘:每个学生文档和程序资料分别建在一个以自己学号和命名的文件夹下,并要求每班负责人汇总每个学生的文件放在以班级命名的文件夹下,刻录成一光盘,放在一个专门的资料袋中。

四、提交的成果1. 设计任务书一份(学校统一格式)2. 设计说明书一份,容包括:1) 中文摘要100字,关键词3-5个。

2) C语言课程实训题目、容、要求。

3)总体设计(包含几大功能模块)。

4)详细设计(各功能模块的具体实现算法——流程图)5)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。

6)调试分析(包含各模块的测试用例,及测试结果。

)7)总结(实训完成了哪些功能,还有哪些地方需要改进,及通过实训有何收获,调试程序的体会等)8) 参考文献、致等。

五、主要参考资料1. 王连相.《C/C++程序设计》大学2.谭浩强《C语言程序设计(第2版)学习指导》清华大学3. 莉,龚义建《C语言程序设计实训指导教程》华中科技大学4. 小东,宏珍《C语言程序设计与应用》人民邮电5. 郭翠英《C语言C语言课程实训案例精编》中国水利水电6.郭有强《C语言程序设计》清华大学7.丹程,莹,那俊《C语言程序设计案例实践》清华大学8.丽娟《C语言程序设计教程》人民邮电9.武雅丽,王永玲,解亚利《C语言程序设计》清华大学摘要C语言在近年来国外得到了很广泛的推广,而电子万年历也是人们在日常的生活需求中必不缺少的一部分。

我们通过这学期对C语言的学习,做出了一个万年历程序。

该程序实现了简易的万年历的功能,实现了万年历的四个基本功能。

当进入此程序,通过界面的提示可以很容易的进入万年历功能选择所实现的功能。

此万年历有以下四个常能用的功能:按年查询、按月查询、按日查询、打印整年日历。

这四个常用功能基本满足了人们在生活中的对万年的需求,本万年历跨度较其他万年历稍大一些,可以查询到更广的年历。

关键词: C语言;电子万年历;数组目录1绪论 (1)1.1设计目的 (1)1.2设计背景 (1)1.3需求背景 (1)1.4小组分工 (3)2总体设计 (3)2.1总模块设计 (3)2.2使用头文件说明 (3)2.3使用变量声明 (4)2.4运用到C语言的函数 (4)2.5函数调用关系 (5)3详细设计 (6)3.1函数运行流程图 (6)3.2闰年判断模块 (7)3.3年历打印模块 (8)3.4星期计算模块 (9)3.5打印月历模块 (11)3.6日期合法性检查模块 (13)4 调试分析 (14)4.1错误分析 (14)4.2错误修改 (14)4.3运行程序 (15)4.4闰年的判断 (15)4.5 星期计算的功能 (16)4.6月历查询功能 (17)4.7打印整年年历功能 (18)5 源程序清单 (19)总结 (26)致 (27)参考文献 (3)1绪论本课题主要是针对简易电子万年历的功能,以及子模块的设计展开探究。

课题主要包括了使用C语言来调用各个模块的函数,使这些函数相互之间联系起来,解决用户需要的简易问题,同时考察组员对C语言中的函数、顺序、循环、if语句的嵌套、for语句的嵌套的操作能力。

并且在探究的过程中培养组员分析问题和解决问题的能力,提高组员之间团结合作的能力。

1.1设计目的1.通过实训可以综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关。

更加了解了C语言的好处和其可用性。

同时增加了同学之间的团队合作精神,更加也体会到以后在工作中团队合作的重要性和必要性。

2.通过实训,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程设计能力。

为后续各门计算机课程的学习和毕业设计打下坚实基础。

1.2设计背景C语言是近年在国外得到迅速推广应用的一种机器语言。

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

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

在这次的实训中我将把日常生活中最经常接触的——日历的查询,利用C语言的程序编成一个简单的万年历查询系统。

通过这个小小的系统可以实现部分功能。

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

1.3需求背景目前比较流行电子万年历程序,比较典型的是windows中各版本的日历程序。

但是这些程序总是有一定的限制,需要一个跨度很大的日历来方便人们的生活,而C 语言程序与设计充分发挥了这个优点,用很短的文本填补了这一个空白。

同时也用强有力的证据告诉人们C语言这个新生事物的应用围是极其广阔的。

1.4小组分工组成员是一个整体,小组是一个团队,强调集体行动,不搞个人主义,组对于各种任务要有明确分工,并且要明确落实到人。

组长:白博康在以身作则的基础上,对组员的学习、行为、思想等进行监督、督促和指导。

包括随时与指导老师联系,分派组员任务。

同时负责实训容的收尾、排版、制图、检查错误、部分程序的调试等工作。

组员:蔡家豪在报告书中做了很大的贡献,在我们的报告书中担任了流程图制作,资料搜集的工作,为我们的工作顺利进行起到了很大的作用。

同时为组同学做好了后勤保障工作。

组员:程虞华在我们组中寻找源代码以及对源代码进行改进,为我们提供了程序设计的基础,并和其他组员一起查询错误。

在报告书中为我们编辑了详细程序这一部分。

同时协助其他组员进行实训中表格的制作,流程图的制作。

2总体设计2.1总模块设计用户通过不同的数字进入不同的菜单,万年历显示公元后任何年份的日历,类似于一般挂历上的格式,输入年份,判断是否为闰年;输入年月日,判断为星期几;输入年份,打印出查询月历;输入年份,打出该月的日历。

图2.1 功能模块图2.2使用头文件说明本程序应用到的头文件:#include"stdio.h"在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#include<stdio.h>的作用就是用来提供这些信息的,stdio.h是C编译系统提供的一个文件名,stdio是“standard input & output”的缩写,即有关标准输入输出的信息。

在程序中用到系统提供的标准函数库中的输入输出函数时,应在程序的开头写上一行:#include"stdio.h"或者是#include<stdio.h>,这样才能调用库函数。

二者主要在于查找效率上有差别,#include<stdio.h>一般用包含系统文件,它是查找先从系统目录查找开始查找;#include "stdio.h"一般用包含项目文件,它是查找先从项目目录查找开始查找。

在编写C语言中,常用到printf()和scanf()函数,他们就是stdio.h中的两个标准输入输出函数,所以编程语句中如果要用到此两个函数就一定要在头文件中加入#include<stdio.h>。

#include"windows.h"头文件封装了库函数以及一些类,将一些复杂的工作由库函数处理,而用户不必把精力放在这些地方。

比如说cout<<,为标准输出流,其实说到底还是函数调用,不过这个函数有些特殊,用的是运算符重载,确切地说是重载了“<<”运算符,作用是将键盘输入的在屏幕上打印出来,这个功能要是由我们去写,估计也得学个两三年才有可能。

所以就简化了操作。

而这一系列的函数都在头文件中包含(是一个函数库)。

在调用时包含后便可直接用。

2.3使用变量声明表 2.2 变量的声明2.4运用到C语言的函数在程序中应用了大量的自定义函数,都为了使程序更简洁明了。

其中:int IsLeapYear ()/*判断是否为闰年*/char *NameOfMonth ()/*判断某天是一年中的几月*/char *WeekDay ()/*对天数进行判断确定是星期几*/int jiri()/*判断这一月的总天数*/int X=(int)(year/100);/*世纪数*/int Y=X-(int)(X/4);/*如果按4年一闰来算,Y指的是比实际上多算的天数,在下面需要减去*/int GetDayOfMonth()/*输出某一年中的月历*/int tmp_days=GetDays(year,month,1);/*本月积日*/int ShowCalendar()/*输出某一年的某一月的详细日历*/int DateCheck /*判断合法性*/jiri=GetDays(year,month,1);/*获取特定日期的总天数*/ShowCalendar(year,month,1);} /*输出年历*/int counterdays()/*判断今天距特定日期的天数*/int dayofweek()/*判断是星期几*/int GetDays/*判断今天的日期*/2.5函数调用关系上述函数调用关系如下图所示:图2.5 函数调用关系3详细设计3.1函数运行流程图通过外部菜单的功能和相应的提示进行输入即进入所要运行的功能。

定义了一个主函数int main()这个函数就是我们整个程序运行的主要框架。

通过while这个主循环让用户输入相应的功能前的代码来实现想要的功能。

通过在Choise>之后输入所需运行的程序的代码进行执行相应的程序。

图3.1函数运行流程图3.2闰年判断模块用户通过输入1进入闰年判断的程序,进入闰年判断后,通过对函数int IsLeapYear ()的循环进行判断,最后输出结果,输出结果后返回主菜单。

相关文档
最新文档