万年历课程设计报告

合集下载

万年历课程设计报告报告

万年历课程设计报告报告

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、设计目的: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两个和专业相关的软件,极大的拓宽了自己的知识宽度,期间产生的问题都与老师一起讨论得到了很好的解决,这对自己的问题阐述能力以及解决问题的能力都有很大的提升。

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

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

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

万年历课程设计

万年历课程设计

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

2. 学生能运用所学知识,制作并解释简单的阴阳历、阳历和阴历。

3. 学生能通过实例分析,了解不同文化背景下时间记录方式的异同。

技能目标:1. 学生能够运用万年历知识,解决生活中的实际问题,如日期推算、节日计算等。

2. 学生通过小组合作,提高沟通协调能力,共同完成万年历的制作。

3. 学生能够运用信息技术,收集、整理万年历相关资料,提高信息处理能力。

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

2. 学生通过学习不同文化背景下的时间记录方式,增强对多元文化的尊重和理解。

3. 学生在合作探究过程中,培养团队协作精神,提高问题解决能力和自信心。

课程性质:本课程为实践性、综合性课程,结合数学、历史、文化等多学科知识,旨在培养学生的综合素质。

学生特点:六年级学生具备一定的数学基础和动手操作能力,对新鲜事物充满好奇,善于合作交流。

教学要求:注重理论与实践相结合,以学生为主体,激发学生兴趣,引导学生主动探究,培养学生的实践能力和创新精神。

通过课程目标的分解,使学生在学习过程中达到预期的学习成果,为后续教学设计和评估提供依据。

二、教学内容1. 万年历的基本概念- 日期的组成:年、月、日- 阴阳历、阳历、阴历的定义及特点2. 年月日的关系及计算- 平年、闰年的判断- 月份数与天数的对应关系- 日期推算方法3. 不同文化背景下时间记录方式- 我国古代的时间记录方法- 西方阳历的发展及现行公历- 世界各地阴历的运用4. 万年历的制作与应用- 制作方法:手工绘制与电子表格- 实际应用:节假日计算、纪念日查询等5. 教学内容的安排与进度- 第一课时:万年历的基本概念,日期的组成- 第二课时:年月日的关系及计算方法- 第三课时:不同文化背景下时间记录方式- 第四课时:万年历的制作与应用,实践操作教学内容依据课程目标,结合教材章节进行组织,确保科学性和系统性。

万年历设计报告

万年历设计报告

万年历设计报告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语言,使用了面向对象编程的思想,实现了查询公历和农历日期、显示公历日历以及查询节假日等功能。

单片机万年历课程设计报告

单片机万年历课程设计报告

单片机万年历课程设计报告一、课程设计目标本课程设计旨在帮助学生掌握单片机应用基础知识,学习并完成万年历电路的设计和代码编写。

通过这个实践,学生将会深入理解单片机在实际生活中的应用,同时提升自己的程序设计和解决问题的能力。

二、课程设计内容1. 万年历电路的原理和设计本次课程设计要求学生完成一个万年历电路的设计,包括硬件电路和程序设计。

在电路设计中,学生需要考虑到显示器、时钟模块、日期模块和温湿度传感器等部分的连接和调试。

在程序设计方面,学生需要实现万年历的功能,包括显示当前日期和时间、自动确定闰年、节假日提示等。

2. 单片机基本原理和应用实践在万年历电路设计之前,本课程将会对单片机基本原理进行介绍,包括单片机内部结构、芯片选型和I/O口控制等。

另外,还将介绍单片机在各种应用场景中的应用实践,如遥控、电脑控制、机器人和智能家居等。

3. 问题解决和困难克服在学生完成万年历电路设计的过程中,难免会遇到各种问题和困难。

本课程将对学生进行相关的实用技巧和方法讲解,帮助他们解决问题和克服难关。

三、课程设计流程1. 单片机基础知识介绍(2学时)讲解单片机内部结构及其原理,并介绍单片机应用实践2. 万年历电路设计(12学时)对万年历的硬件和软件进行介绍,包括连接显示器和外设、编写程序等3. 问题解决(2学时)介绍学生应对问题的技巧和方法,并帮助他们克服电路设计中的问题和难点四、课程设计评价标准1. 设计成果设计成果的好坏是课程设计的重要衡量标准之一,包括电路的设计完整性、软件功能实现等方面。

2. 实践能力课程设计是一种实践性强的学习形式,学生需要通过实践来掌握知识,因此他们的实践能力成为衡量标准之一。

3. 团队合作在课程设计的过程中,学生要协同工作,完成一个大型的项目,因此团队合作能力是衡量标准之一。

4. 学习的态度学习态度是衡量标准之一,包括学生在课程设计中的主动性、积极性和责任感等方面。

五、总结通过这个万年历课程设计,学生不仅学会了单片机应用的基础知识,还掌握了实际项目开发的方法和技巧。

c语言万年历课程设计报告

c语言万年历课程设计报告

本次课程设计的主题为“C语言万年历”,旨在通过设计和实现一个简单的万年历程序,深入了解C语言程序设计的基本方法和技巧。

通过本课程设计的学习,我对C语言程序设计的各个方面进行了深入的了解和掌握,同时也提高了自己的编程思维和实践能力。

一、设计思路。

本次课程设计的主要功能是实现万年历。

在设计程序之前,我首先对万年历的基本功能进行了分析和思考,包括输入年月日,输出当月的日历和星期几等。

同时,考虑到用户友好性,我还增加了一些额外的功能,如输入错误时的提示,具体日历同时附带节假日等。

在分析了功能需求之后,我便开始考虑程序设计的具体实现。

首先,我选择了C语言作为实现程序的语言,因为C语言广泛应用于各类软件工程和移动计算等领域,适用性强,易于学习和掌握。

接着,我根据分析需求,确定了程序的基本框架和主要模块,包括输入年月日模块、求解该日是星期几模块、绘制当月日历模块和判断节日等模块。

二、程序实现。

在程序实现过程中,我遵循了模块化编程的原则,把整个程序划分成几个独立的模块,并在模块之间进行数据交互和函数调用。

具体来说,我分别实现了以下几个模块:1.输入年月日模块:该模块负责接收用户输入的年月日信息,并检查输入格式是否正确。

在输入不合法时,该模块能够给用户相应的提示信息,并要求用户重新输入。

2.求解该日是星期几模块:该模块根据给定年月日,求出该日是星期几。

该模块采用基姆拉尔森计算公式来实现。

3.绘制当月日历模块:该模块负责绘制给定月份的日历,并标注当日及节假日等信息。

在绘制日历时,该模块能够考虑各种特殊情况,如闰年、月初不为星期一等。

4.判断节日等模块:该模块能够根据给定年月日信息,判断当日是否为节假日、纪念日等特殊日子,如春节、圣诞节等,并在日历上作出相应标注。

以上四个模块构成了整个程序的主要功能。

在实现过程中,我还遇到了一些问题,如求解闰年的问题、绘制多行日历的问题等。

针对这些问题,我通过查找资料、借鉴其他同学的代码等方式进行了解决。

万年历系统课程设计报告附源码

万年历系统课程设计报告附源码

2013-2014学年第二学期《面向对象程序设计》课程设计报告题目:万年历系统专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:计算机与信息工程系2014年6月6日目录1 设计内容及要求万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。

在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规范。

(2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。

(3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。

(4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

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

利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。

用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。

要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。

当用户随意改动年份或月份时系统自动显示与星期对应的日期。

用户点击日期时系统会显示具体星座信息。

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

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

万年历课程设计

万年历课程设计

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

2. 学生能够运用所学的知识,制作并解释简单万年历,了解闰年和平年的判断规则。

3. 学生能够解释生活中的时间单位,如时、分、秒,并掌握它们之间的换算。

技能目标:1. 学生通过实际操作,学会制作和应用简单万年历,提升解决问题的能力和动手实践能力。

2. 学生能够运用万年历进行日期查询和推算,增强逻辑思维和计算能力。

3. 学生通过合作交流,提高表达和沟通能力,培养团队协作精神。

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

2. 学生在学习过程中,体验探索和发现的乐趣,激发对自然科学和数学的兴趣。

3. 学生通过了解不同文化背景下的时间观念,增强跨文化理解和尊重多元文化的态度。

课程性质:本课程以实践性、探究性和趣味性为主要特点,结合数学、自然科学和社会文化知识,帮助学生建立时间观念,提高综合运用知识的能力。

学生特点:考虑到学生的年级特点,课程设计将注重直观演示和实际操作,以激发学生的兴趣和好奇心,同时结合学生的认知水平,逐步引导他们掌握万年历的制作和应用。

教学要求:教师在教学过程中,应关注学生的个体差异,提供个性化的指导和支持。

课程设计应注重培养学生的动手能力、逻辑思维能力和团队协作能力,确保学生能够达到预定的学习目标。

二、教学内容1. 年、月、日的概念及其关系- 介绍年、月、日的定义和相互关系。

- 年份的种类:闰年和平年的区别及判断方法。

2. 万年历的制作原理- 探索如何将日历与天文数据相结合,介绍格里高利历的基本原理。

- 学习如何通过计算确定每个月的天数,以及如何安排闰年的2月。

3. 日期的换算与查询- 学习日期的换算方法,如年与日、日与星期等。

- 实践操作:使用万年历进行日期查询和推算。

4. 实际应用与时间管理- 讨论如何利用万年历进行时间规划和管理。

万年历课程设计报告

万年历课程设计报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C++课程设计报告__万年历

C++课程设计报告__万年历

课程设计报告课程设计名称:万年历系别:三系学生姓名:蔡菲菲班级:10计本(2)学号:20100303201成绩:指导教师:汤亮开课时间:2010-2011学年第二学期一、课程设计目的本课程设计是在学习面向对象基本理论之后的实践教学环节。

该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。

要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。

学生通过课程设计在下述各方面得到锻炼:(1)能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。

(2)提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法和程序的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。

二、课程设计要求2.1基本要求:(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;(4)在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。

2.2创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。

三、课程设计内容万年历(★★)3.1问题描述实现星期、日期的计算和转换,实现生日、纪念日等倒计时天数3.2基本要求3.2.1 目的:通过显示年日历程序的设计,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。

3.2.2 基本要求:(1)要求用C++语言编程,在Visual C++环境下调试完成;(2)要求划分功能模块,各个功能分别使用函数来完成。

(3)源代码程序要有必要的注释。

万年历综合课程设计报告

万年历综合课程设计报告

目录目录 (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++语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

java课程设计万年历报告

java课程设计万年历报告

java课程设计万年历报告一、课程目标知识目标:1. 掌握Java语言基础,包括数据类型、运算符、控制结构等;2. 学会使用Java中的类和对象,理解面向对象编程思想;3. 了解Java中日期时间处理类,如java.util.Calendar和java.time包的使用;4. 能够运用所学知识设计并实现一个简单的万年历程序。

技能目标:1. 培养学生运用Java语言解决实际问题的能力;2. 提高学生的编程实践能力,使其能够独立完成程序的设计、编码、测试和调试;3. 培养学生查阅资料、自学新知识的能力,为后续学习打下基础。

情感态度价值观目标:1. 培养学生热爱编程,对计算机科学产生浓厚兴趣;2. 培养学生积极思考、主动探究的学习态度,提高其解决问题的自信心;3. 培养学生良好的团队合作精神,学会在团队中沟通与协作。

分析课程性质、学生特点和教学要求:本课程为Java语言编程课程,旨在让学生掌握Java编程基础,并能运用所学知识解决实际问题。

学生处于初中年级,具备一定的逻辑思维能力,对新鲜事物充满好奇心,但编程实践经验不足。

因此,教学要求注重理论与实践相结合,以项目驱动教学,激发学生兴趣,培养其编程技能和解决问题的能力。

课程目标分解:1. 知识目标:通过讲解和练习,使学生掌握Java基础知识和日期时间处理类;2. 技能目标:通过项目实践,培养学生编程能力和解决问题的能力;3. 情感态度价值观目标:通过团队合作和互动交流,激发学生兴趣,培养其积极的学习态度和价值观。

二、教学内容1. Java基础知识回顾- 数据类型与变量- 运算符与表达式- 控制结构(顺序、分支、循环)2. 面向对象编程基础- 类与对象- 方法- 封装、继承、多态3. Java日期时间处理类- java.util.Calendar类- java.time包(LocalDate、LocalTime、LocalDateTime)4. 万年历项目实践- 项目需求分析- 程序设计(界面设计、功能模块划分)- 编码实现(关键代码:日期计算、界面展示)- 测试与调试5. 教学内容的安排和进度- Java基础知识回顾(1课时)- 面向对象编程基础(2课时)- Java日期时间处理类(1课时)- 万年历项目实践(3课时)6. 教材章节及内容列举- 《Java编程思想》第3章:控制结构- 《Java编程思想》第4章:面向对象编程- 《Java核心技术 卷I》第9章:日期时间处理教学内容确保科学性和系统性,结合课程目标,注重理论与实践相结合,以项目驱动教学,使学生在实践中掌握Java编程知识。

万年历课程设计

万年历课程设计

汇编语言课程设计报告书一.课程设计的题目和内容用汇编语言编写一个万年历程序系统,该系统要有进入系统的封面,要有验证用户名和密码的功能,能正确显示万年历,在推出系统的时候,要有封底。

二.系统设计及功能要求1.系统封面设计内容:题目名称,设计日期,设计者姓名。

要求:具有动感,如题目名称移动;字体具有立体感。

可插入一些图画,如学校的校徽图。

2.输入画面设计内容及要求:①密码及口令:输入,核查及修改功能。

②年份:输入及判断功能。

如:年份值是否为4位整数,不为4位,提示用户重输。

3.日历计算功能设计①求某年某月某日是星期几的子功能。

(要求编成子程序)算法:s=(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+c(其中:y为年份;c为某月某日是这一年的第几天,由②求出;s为总天数。

“/”为整除。

)n=s%7 (其中:n为星期数;“%”为求余数)②求某月某日是这一年的第几天的子功能。

(要求编成子程序)二月份是否为平年(28天)或闰年(29天)的算法:y/400=0∨y/4=0∧y/100≠0 (y为年份;“/”整除),则y为以闰年;否则,y为平年。

根据①②可求出一年中的日历。

4.日历输出功能设计。

①格式及显示设计显示要求:设置显示滚动区;在该区中每次显示4个月的日历(并列排列)。

②日历打印设计:将日历按年存入磁盘不同的文件中保存,供打印或再次显示使用。

1.程序系统总体功能模块调用图及模块功能说明封面程序的功能是显示欢迎信息,并且显示制作人的信息的;验证用户名和密码的程序是验证用户是否是合法的用户的,该程序要有容错的功能;万年历程序是主程序,该程序的功能是通过用户输入年和月,来查询日历的,并且该程序还可以判断输入的年份是平年还是闰年。

封底程序是用来显示用户退出万年历系统的时候,一个感谢用户使用万年历的界面的。

2.程序系统详细的程序框图(每个子程序的流程图)①封面子程序,封底子程序的框图注:以封面程序为例,封底程序与封面程序类似②用户名和密码子程序框图注:以用户名程序为例,密码程序和用户名程序类似③求某年某月某日是星期几的子程序④..求某月某日是这一年的第几天的⑤判断是平年还是闰年的子程序⑥年份月份转化为真值的子程序四. 程序运行结果五.系统源程序.386DATA SEGMENT USE16A0 DB ' _____◆____◆____◆____◆____◆____◆_____◆_____ $' DB '※※$' DB '| |$' DB '◆◆$' DB '| ┏☆━━━━━━━━━━━━━━☆┓|$' DB '◆☆^ǒ^*☆*^ǒ^*★*^ǒ^*☆*^ǒ^*★*^ǒ^*☆◆$' DB '| ┃欢迎进入万年历系统┃|$' DB '◆☆^ǒ^*★*^ǒ^*☆*^ǒ^*★*^ǒ^*☆*^ǒ^*☆◆$' DB '| ┗☆━━━━━━━━━━━━━━☆┛|$' DB '◆◆$' DB '| |$' DB '◆制作人:某某某◆$' DB '| |$' DB '◆班级:2班◆$' DB '| |$' DB '◆学号:123456789012 ◆$' DB '| |$' DB '◆日期:08.1.15 ◆$' DB '| |$' DB '◆◆$' DB '| |$' DB '◆◆$' DB '| 版权所有,请勿仿冒|$' DB '※____◆____◆____◆____◆____◆____◆____◆____※$'A1 DB ' ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆$' DB '◇◇$' DB '◆◆$' DB '◇◇$' DB '◆┏━☆━━━━━━★━━━━━━☆━┓◆$' DB '◇┃◆◇┃◇$' DB '◆┃请输入用户名和密码┃◆$' DB '◇┃◇↑↑↑↑↑↑↑↑↑↑↑↑↑◆┃◇$' DB '◆┗━☆━━━━━━★━━━━━━☆━┛◆$' DB '◇◇$' DB '◆◆$' DB '◇◇$' DB '◆◆$' DB '◇用户名:◇$' DB '◆◆$' DB '◇◇$' DB '◆密码: ◆$' DB '◇◇$' DB '◆◆$' DB '◇◇$' DB '◆◆$' DB '◇◇$' DB '◆◆$' DB ' ◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇$'A2 DB '******★******☆******★*******☆*******★********$' DB '☆☆$' DB '| |$' DB '★★$' DB '| *********************************** |$' DB '☆* 欢迎再次使用万年历系统* ☆$' DB '| *********************************** |$' DB '★★$' DB '| |$' DB '☆☆$' DB '| |$' DB '★☆☆★★$' DB '| 如有不足之处,请联系我☆☆|$' DB '☆☆$' DB '| ★★☆|$' DB '★我们会不断的完善的★$' DB '| |$' DB '☆^_^ ☆$' DB '| |$' DB '★ISBN 7-300-00528-9 ★$' DB '| |$' DB '☆********★******☆********★********★*********☆$'A3 DB '******************万年历*******************$' DB '** ** ** **$' DB '======================================$' DB '| S UN | MON | T UE | WED | T HU | F A I | S A T |$' DB '|=====|=====|=====|=====|=====|=====|=====|$' DB '| | | | | | | |$' DB '|=====|=====|=====|=====|=====|=====|=====|$' DB '| | | | | | | |$' DB '|=====|=====|=====|=====|=====|=====|=====|$' DB '| | | | | | | |$' DB '|=====|=====|=====|=====|=====|=====|=====|$' DB '| | | | | | | |$' DB '|=====|=====|=====|=====|=====|=====|=====|$' DB '| | | | | | | |$' DB '|=====|=====|=====|=====|=====|=====|=====|$' DB '| | | | | | | |$' DB '|=====|=====|=====|=====|=====|=====|=====|$'YEAR DW ?MONTH DB ?B DW ?C1 DW 0D1 DW 0E DW 0G DB 0T DW 0S DB 0P DW ?N DW 0Y DW 0M DW 0BUF1 DB 31,?,31,30,31,30,31,31,30,31,30,31BUF2 DB 1,2,3,4,5,6,7,8,9,10,11,12INPUT1 DB '请输入要查询的年份:$'INPUT2 DB '请输入要查询的月份:$'INPUT3 DB '该年是平年$'INPUT4 DB '该年是闰年$'INPUT5 DB '要继续查询? 1.继续查询 2.退出万年历系统$'STR5 DB 5DB 0DB 5 DUP(0)STR6 DB 3DB 0DB 3 DUP(0)BUF3 DB ' 1',0AH,0DH,'$'DB ' 2',0AH,0DH,'$'DB ' 3',0AH,0DH,'$'DB ' 4',0AH,0DH,'$'DB ' 5',0AH,0DH,'$'DB ' 6',0AH,0DH,'$'DB ' 7',0AH,0DH,'$'DB ' 8',0AH,0DH,'$'DB ' 9',0AH,0DH,'$'DB '10',0AH,0DH,'$'DB '11',0AH,0DH,'$'DB '12',0AH,0DH,'$'DB '13',0AH,0DH,'$'DB '14',0AH,0DH,'$'DB '15',0AH,0DH,'$'DB '16',0AH,0DH,'$'DB '17',0AH,0DH,'$'DB '18',0AH,0DH,'$'DB '19',0AH,0DH,'$'DB '20',0AH,0DH,'$'DB '21',0AH,0DH,'$'DB '22',0AH,0DH,'$'DB '23',0AH,0DH,'$'DB '24',0AH,0DH,'$'DB '25',0AH,0DH,'$'DB '26',0AH,0DH,'$'DB '27',0AH,0DH,'$'DB '28',0AH,0DH,'$'DB '29',0AH,0DH,'$'DB '30',0AH,0DH,'$'DB '31',0AH,0DH,'$'C DB ?D DB ?STR1 DB 20DB 0DB 20 DUP(0)STR2 DB 20DB 0DB 20 DUP(0)STR3 DB 'admin' ; 用户名COUNT1 EQU $-STR3STR4 DB 'admin' ;密码COUNT2 EQU $-STR4BUF4 DB '用户名不正确,请重新输入!$'BUF5 DB '密码不正确,请重新输入!$'DATA ENDSSTACK SEGMENT USE16 STACKDB 200 DUP(0)STACK ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AH,0 ;设置显示方式MOV AL,3 ;彩色文本方式INT 10H;************************封面程序************************************ MOV AH,6MOV AL,0MOV CL,0 ;清整个屏幕MOV DH,24MOV DL,79MOV BH,26INT 10HMOV CX,24MOV SI,OFFSET A0MOV B,000EHLOPA0: MOV AH,2MOV BX,0MOV DX,BINT 10HADD DX,0100HMOV B,DXMOV DX,SIMOV AH,9INT 21HADD SI,52DEC CXJNZ LOPA0MOV AH,1INT 21H;*************************用户名,密码程序****************************MOV AL,0MOV CH,0MOV CL,0 ;清整个屏幕MOV DH,24MOV DL,79MOV BH,30INT 10HMOV CX,24 ;显示用户名的密码页面,共24行,循环输出24次MOV SI,OFFSET A1MOV B,000EHLOPA1: MOV AH,2 ;定光标位置MOV BX,1MOV DX,BINT 10HADD DX,0100HMOV B,DXMOV DX,SI ; 显示字符串MOV AH,9INT 21HADD SI,52DEC CXJNZ LOPA1MOV C,3 ;容错三次LOPA2: MOV AH,2 ;设置用户名光标位置MOV BH,0 ; 页号为1(帧屏号)MOV DX,0D21HINT 10HLEA DX,STR1 ;输入用户名,保存在缓冲区STR1中MOV AH,10INT 21HMOV AL,STR1+1 ;用户名的长度送到AL中CMP AL,COUNT1 ;比较输入的用户名是否和指定的用户名长度一样JNE R ;长度不一样,跳转到PLEA SI,STR1+2LEA DI,STR3MOV CX,COUNT1REPZ CMPSB ;逐一比较两串的对应字符是否相等JNE R ;不相等,跳转到P 否则程序往下执行,输入密码MOV D,3LOPA3: MOV AH,2 ;设置密码光标位置MOV BH,0 ; 页号为1(帧屏号)MOV DX,1021HINT 10HLEA DX,STR2 ;输入密码,保存在缓冲区STR2中MOV AH,10INT 21HMOV AL,STR2+1 ;密码的长度送到AL中CMP AL,COUNT2 ;比较输入的密码是否和指定的密码长度一样JNE Q ;长度不一样,跳转到QLEA SI,STR2+2LEA DI,STR4MOV CX,COUNT2REPZ CMPSB ;逐一比较两串的对应字符是否相等JNE Q ;不相等,转QJMP T1 ;相等,转LOPA4R: MOV AH,2 ;设置显示用户名错误信息光标位置MOV BH,0 ; 页号为1(帧屏号)MOV DX,1521HINT 10HLEA DX,BUF4 ;输出用户名错误信息MOV AH,9INT 21HMOV AH,6MOV AL,1MOV CH,13MOV CL,33 ;清用户名输入行的屏幕MOV DH,13MOV DL,53MOV BH,30INT 10HINT 21HMOV AH,6MOV AL,1MOV CH,21MOV CL,33 ;清用户名出错行的屏幕MOV DH,21MOV DL,60MOV BH,20INT 10HDEC C ;循环次数减1JNZ LOPA2 ;跳转到LOPA2,重新输入用户名JE EXITQ: MOV AH,2 ;设置显示密码错误信息光标位置MOV BH,0 ; 页号为1(帧屏号)MOV DX,1521HINT 10HLEA DX,BUF5 ;输出密码错误信息MOV AH,9INT 21HMOV AH,6MOV AL,1MOV CH,16MOV CL,33 ;清密码输入行的屏幕MOV DL,53MOV BH,30INT 10HMOV AH,1INT 21HMOV AH,6MOV AL,1MOV CH,21MOV CL,33 ;清密码出错行的屏幕MOV DH,21MOV DL,60MOV BH,20INT 10HDEC D ;循环次数减1JNZ LOPA3 ;跳转到LOPA3,重新输入密码JE EXITMOV AH,1INT 21H;***********************显示万年历程序*******************************T1: MOV T,0MOV AH,6MOV AL,0MOV CL,0 ;清整个屏幕MOV DH,24MOV DL,79MOV BH,27INT 10HMOV CX,17MOV SI,OFFSET A3MOV B,0411HLOPA4: MOV AH,2MOV BX,0MOV DX,BINT 10HADD DX,0100HMOV B,DXMOV DX,SIMOV AH,9INT 21HADD SI,44DEC CXJNZ LOPA4MOV AH,2 ;定输入年份提示信息的光标MOV BX,0MOV DH,1MOV DL,17INT 10HLEA DX,INPUT1 ;提示信息,请输入要查询的年份MOV AH,9INT 21HMOV AH,2 ;定输入年份的光标MOV BX,0MOV DH,5MOV DL,19INT 10HLEA DX,STR5 ;输入年份,保存在缓冲区STR1中MOV AH,10INT 21HLEA DI,STR5+2 ; DI指向年份输入串的首地址MOV CL,STR5+1 ;输入年份字符串的长度送到CLMOV AX,0 ;年份转化为真值P1: MOV BL,[DI] ; 取字符送到BLSUB BL,30H ;字符减去30H,转化为真值MOV BH,0MOV P,10MUL PADD AX,BXINC DI ;DI指向下一个字符DEC CX ;长度减一JNZ P1MOV YEAR,AX ;把年送到YEAR中CALL PR ;调用判断平年还是闰年的程序JC L1 ;有进位,借位,跳转到L1,输出闰年,否则顺序执行,是平年MOV AH,2 ;输出平年信息的光标MOV BX,0MOV DH,1MOV DL,36INT 10HLEA DX,INPUT3 ;输出平年MOV AH,9INT 21HLEA DI,BUF1MOV [DI+1],BYTE PTR 28 ;平年把28送入BUF1中JMP J0L1: MOV AH,2 ;输出闰年信息的光标MOV BX,0MOV DH,1MOV DL,36INT 10HLEA DX,INPUT4 ; 输出闰年MOV AH,9INT 21HLEA DI,BUF1MOV [DI+1],BYTE PTR 29 ;闰年把29送入BUF1中J0: MOV AH,2 ;定输入月份提示信息的光标MOV BX,0MOV DH,2MOV DL,17INT 10HLEA DX,INPUT2 ;提示信息,请输入要查询的月份MOV AH,9INT 21HMOV AH,2 ;定输入月份的光标MOV BX,0MOV DH,5MOV DL,56INT 10HLEA DX,STR6 ;输入月份,保存在缓冲区STR2中MOV AH,10INT 21HLEA DI,STR6+2 ;DI指向月份输入串的首地址MOV CL,STR6+1 ;月份输入串的长度送到CL中MOV AX,0P2: MOV BL,[DI] ;取字符送到BL中SUB BL,30H ;字符减去30HMOV BH,0MOV S,10MUL SADD AX,BXINC DI ;DI指向下一个字符DEC CX ;长度减一JNZ P2MOV WORD PTR MONTH,AX ;月份值送到MONTH中CALL DTOB1 ;显示日历,调用DTOB1子程序返回N侄MOV DI,OFFSET BUF1DEC MONTHADD DI,WORD PTR MONTH ;取出每个月的天数MOV CL,[DI]MOV G,CLMOV SI,OFFSET BUF3MOV AL,6MUL NADD AX,19MOV B,AXMOV C1,9J1: MOV AH,2 ;确定每个月的一号的光标位置,即确定初始输入位置MOV BX, 0MOV DH,BYTE PTR C1MOV DL,BYTE PTR BINT 10HCMP DL,55JBE J2 ;DL<33,跳转到J2,否则行加1列从3开始ADD C1,2MOV B,19JMP J1J2: MOV DX,SIMOV AH,9 ;在当前光标位置显示数字INT 21HADD SI,5ADD B,6DEC GJNZ J1MOV AH,2 ;定输入月份的光标MOV BX,0MOV DH,22MOV DL,17INT 10HLEA DX,INPUT5MOV AH,9INT 21HMOV AH,1INT 21HCMP AL,31HJE T1JMP T2DTOB1 PROC NEAR ;求某年某月某日是星期几子程序PUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DIMOV CX,0DEC YEARMOV AX,YEAR ;YEAR-1送入AX中MOV CX,YEARMOV DX,0MOV BL,4DIV BXMOV C1,AX ;(YEAR-1)/4送入C1中ADD CX,C1MOV AX,YEARMOV DX,0MOV BL,100DIV BXMOV D1,AX ;(YEAR-1)/100送入D中SUB CX,D1MOV AX,YEARMOV DX,0MOV BX,400DIV BXMOV E,AX ;(YEAR-1)/400 送入E中ADD CX,EMOV DX,0 ;DX清零MOV BX,0 ;BX清零MOV DL,MONTH ;求每个月的第一天是本年的第几天SUB DL,1MOV DI,OFFSET BUF2MOV SI,OFFSET BUF1R1: CMP [DI],DLJA R2 ;一月份的时候,跳转到R2MOV BL,[SI] ; 其它月份的时候,进行累加,计算每个月的第一天是该年的第几天ADD T,BXADD SI,1ADD DI,1JMP R1R2: ADD T,1ADD CX,T ;s=(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+TMOV AX,CXMOV DX,0MOV BX,7 ;S%7,计算每个月的第一天是星期几DIV BXMOV N,DXPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETDTOB1 ENDPPR PROC NEAR ;判断是平年还是闰年PUSH AXPUSH BXPUSH CXPUSH DXMOV AX,YEARMOV CX,AXMOV DX,0MOV BX,4DIV BXJNZ B1MOV AX,CXMOV BX,100DIV BXCMP DX,0JNZ B2MOV AX,CXMOV BX,400DIV BXCMP DX,0JZ B2B1: CLCJMP B3B2: STCB3: POP DXPOP CXPOP BXPOP AXRETPR ENDP;***********************底封程序*************************************T2: MOV AH,6MOV AL,0MOV CH,0MOV CL,0 ;清整个屏幕MOV DL,79MOV BH,26INT 10HMOV CX,22MOV SI,OFFSET A2MOV B,010EH LOPA5: MOV AH,2MOV BX,0MOV DX,BINT 10HADD DX,0100HMOV B,DXMOV DX,SIMOV AH,9INT 21HADD SI,52DEC CXJNZ LOPA5EXIT: MOV AH,4CHINT 21HCODE ENDSEND START六.系统设计及实现的技术特点,不足及改进的建议设计封面,封底的时候,我先开始不会用循环的方法显示封面,所以用了许多9号功能调用来显示封面,但用这样的方法,显示的封面不能太大,所以我改用了循环的方法来显示封面,这样封面就可以做的很大了,这是我的一个技术特点在编写验证用户名和密码的程序时,我原先没有弄容错的功能,但是后来经过我的思考,我加了一个循环,让输入错了再返回到原输入位置,并且用循环判断是不是到了最大的输入次数,超过最大次数就退出系统,否则继续输入。

万年历课程设计实验报告

万年历课程设计实验报告

黄淮学院JAVA 课程设计报告题目:《万年历》课程设计学院:信息工程学院专业:计算机科学与技术班级:计科1101班指导老师:二0一三年六月目录前言 (2)1需求分析 (3)1.1需求分析 (3)1.2功能设计 (3)2.概要设计 (3)2.1程序设计思路 (3)3.流程图 (7)4.程序的主要类,和说明: (7)C (19)F (20)G (20)I (20)M (21)S (21)U (21)类分层结构 (22)接口分层结构 (22)前言Java的前身是Oak,它一开始只是被应用于消费性电子产品中。

后来它的开发者们发现它还可以被用于更大范围的Internet上。

1995年,Java语言的名字从Oak编程了Java。

1997年J2SE1.1发布。

1998年J2SE1.2发布,标志Java2的诞生。

十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。

Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。

它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。

Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。

Java的平台标准有Java ME,Java SE和Java EE。

Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。

目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。

其中Java Development Kit 简称JDK是大多开发工具的基础。

以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。

1需求分析1.1需求分析本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。

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

课程设计实验报告(万年历)..
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(); //显示结果。

课程设计万年历

课程设计万年历

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

2. 学生能运用所学知识编制简单的万年历,并能够识别各类历法的基本特点。

3. 学生了解中国农历的历史及基本使用方法,增进对传统文化的理解。

技能目标:1. 学生通过动手制作万年历,提高观察、分析、解决问题的实践能力。

2. 学生能够运用万年历进行时间计算,提升生活实用技能。

3. 学生通过合作交流,培养团队协作能力和沟通技巧。

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

2. 学生在学习过程中,体验探索的乐趣,增强对科学的热爱和求知欲。

3. 学生通过了解和制作中国农历,培养对传统文化的尊重和传承意识。

课程性质:本课程为综合实践活动课程,结合数学、历史及传统文化知识,注重实践性和应用性。

学生特点:考虑到学生所在年级,已有一定的数学基础和时间概念,好奇心强,喜欢动手操作,对传统文化有一定的兴趣。

教学要求:课程设计需注重理论与实践相结合,鼓励学生主动参与,注重培养学生解决问题的能力和团队合作精神。

通过课程学习,使学生将知识内化为具体的学习成果,提高综合素养。

二、教学内容1. 引言:介绍万年历的概念、作用及其在生活中的重要性。

2. 知识讲解:- 公历与农历的起源及发展历程。

- 年、月、日的定义及其关系。

- 闰年和平年的判断方法。

- 农历与24节气的联系。

3. 实践操作:- 制作简易的万年历,包括公历和农历的转换。

- 学习如何根据农历推算节气,了解农事活动的安排。

- 分析万年历中的数学规律,提高学生观察和推理能力。

4. 案例分析:- 选取具有代表性的农历案例,如春节、中秋节等,分析其文化内涵。

- 通过实际案例,让学生了解历法在历史长河中的作用和影响。

5. 文化传承:- 介绍中国农历的传统习俗和民间故事,增进学生对传统文化的了解。

- 讨论如何将传统文化与现代生活相结合,弘扬民族精神。

教学内容安排与进度:第一课时:引言、知识讲解(1-2点)第二课时:知识讲解(3-4点)、实践操作(1)第三课时:实践操作(2-3)、案例分析(1)第四课时:案例分析(2)、文化传承教材章节关联:《数学》:年月日及其换算、周期问题《历史与社会》:中国传统节日、文化习俗《综合实践活动》:时间管理、历法制作与应用三、教学方法1. 讲授法:- 对于万年历的基础知识,如年、月、日的换算关系以及历法的起源等理论性较强的内容,采用讲授法进行教学,使学生在短时间内掌握基本概念。

万年历java课程设计报告

万年历java课程设计报告

万年历java课程设计报告一、课程目标知识目标:1. 让学生掌握Java语言中日期处理的基本知识,理解万年历的原理和实现方式;2. 使学生了解并运用面向对象编程思想,设计合理的类和对象,实现万年历功能;3. 帮助学生理解数组、循环、条件判断等基础语法在万年历项目中的应用。

技能目标:1. 培养学生运用Java语言编写程序解决实际问题的能力,特别是日期计算和处理;2. 培养学生运用面向对象编程思想,进行模块化设计和编程;3. 培养学生运用调试工具和技巧,找出并解决程序中的错误。

情感态度价值观目标:1. 培养学生积极探究、合作学习的态度,增强团队协作能力;2. 培养学生面对编程困难时,勇于挑战、持续改进的精神;3. 增强学生的创新意识,激发对计算机编程的兴趣和热情。

课程性质:本课程为计算机科学与技术专业的Java语言程序设计课程的一部分,旨在通过实际项目万年历的设计与实现,使学生掌握Java编程的基本知识和技能。

学生特点:学生处于高中年级,已经具备一定的编程基础,对Java语言有一定的了解,但对于面向对象编程和实际项目开发的经验较少。

教学要求:结合学生特点,本课程要求教师采用任务驱动的教学方法,将万年历项目拆解为多个小任务,引导学生逐步完成。

在教学过程中,注重理论与实践相结合,强调学生的实际操作和团队协作。

通过课程学习,使学生在掌握知识技能的同时,培养良好的情感态度和价值观。

最终将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. Java语言基础复习:回顾变量、数据类型、运算符、数组等基本概念,为编写万年历程序打下基础。

教材章节:第一章至第三章。

2. Java控制结构:介绍循环结构(for、while)、条件判断(if、switch)等,用于实现日期计算。

教材章节:第四章。

3. 面向对象编程基础:讲解类、对象、构造方法、封装等概念,指导学生设计万年历类。

教材章节:第五章。

4. Java异常处理:学习异常处理机制,提高程序的稳定性和可靠性。

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

课程设计报告课程名称程序设计基础专周题目年历显示姓名XX班级XXXXXX学号XX指导教师XXX设计时间2015-03-02至2015-03-06成都工业学院计算机工程系成都工业学院课程设计(论文)任务书一、课程设计题目年历显示二、课程设计工作自 2015年 03月 02日至 2015年 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分。

学生签名:XX2015年 3 月8 日目录目录................................................................................................................... - 1 -正文................................................................................................................... - 2 -一、需求分析............................................................................................... - 2 -二、个人工作..................................................................... 错误!未定义书签。

三、概要设计............................................................................................... - 2 -流程图……………………………………………………………….- 2-程序……………………………………………………………….- 4-四、程序结果..................................................................... 错误!未定义书签。

课程设计体会............................................................................. 错误!未定义书签。

正文一、需求分析我选择课程设计题目:年历显示日常生活当中,我们查询日期很大程度上需要用到日历。

而手动去翻纸质日历查询速度慢,而且会让人看的眼花缭乱。

因此,我们可以编写一个程序来显示某一年的日历。

①程序要能够准确输出某一年的日历;②程序要能够准确的输出某一年的某一月的月历;③程序能够详细查询某一年某一天的日期;④程序能够循环输出。

二、个人工作(1)、设计程序主题,根据输入的内容判断是否为年,月,日,然后输出对应内容;(2)、想出一个算法,排列月份,使输出年历的格式与题目要求一样;(3)、想出一个算法,计算某一天到现在时间有多少天。

(4)、编写打印年历的函数;(5)、编写打印月历的函数;(6)、编写计算日期的函数;(7)、编写主程序。

设计方法:先设计一个主程序,有特定的用户输入界面,然后根据输入的内容判断应该打印的内容。

比如输入2015,程序判断为打印2015年的年历;输入201503程序判断应该打印2015年3月的月历;输入20150305,程序判断是查询2015年3月6日的信息。

然后根据要执行的功能调用相应的函数。

然后分别设计打印日历和打印月历,以及判断日期的函数。

函数思想会在后面的概要设计里面阐述。

三、概要设计1、画出程序流程图;主程序流程图:打印年历或月历的流程图2、根据流程图设计程序首先是主程序,这个程序的主要功能是判断输入的内容并调用相应的函数。

主程序(部分):#include<stdio.h>#include<math.h>void part1(int x); //函数1~6为打印日历的函数void part2(int x);void part3(int x);void part4(int x);void part5(int x);void part6(int x);int weak(int x,int y); //计算1号对应的星期int weak2(int x,int y,int z); //计算星期,为函数day提供数据int year(int x); //打印日历的函数int mouth(int x); //打印月历的函数int day(int x); //查询天数的函数int distance(int x,int y,int z); //提供距离天数查询int main(){int a;char z;x: //位置标注printf("\n");printf("请输入一个日期(Ex:20150302或201503或2015):");scanf("%d",&a);printf("\n");if((1940<=a)&&(a<=2040))year(a);else if((194001<=a)&&(a<=204012))mouth(a);else if((19400101<=a)&&(a<=20401231))day(a);else{printf("输入错误,请重新输入!");goto x;}printf("\n");printf("\n");printf("继续查询(y),退出(n):");scanf("%s",&z);if(z=='y')goto x;else;return 0;}然后是各部分的函数,主要列出几个比较重要的函数:计算每个1日月对应星期几的函数:int weak(int x,int y) //这个函数用于计算3~12月份的第一天对应的星期{int w2,w3,a;if(x<2000) //小于两千年的一月份{a=x-19*100;w2=(19/4)-2*19+(a+a/4)+(13*(y+1)/5);while(w2<0)w2=w2+7;w3=w2%7;}if(x>=2000) //大约两千年的一月份{a=x-20*100;w2=(20/4)-2*20+(a+a/4)+(13*(y+1)/5);while(w2<0)w2=w2+7;w3=w2%7;}return w3;}这个函数是通过使用蔡勒公式来实现的;下面这个函数是计算某天距离现在还有多少天:int distance(int x,int y,int z) //查询距今时间的函数 x,y,z为查询的年月日{int monthday[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义12个月每个月天数int n1,y1,r1,i,temp,daytemp,x1,tempmonth1,tempmonth2,allday,t,y2;//n1,y1,r1为现在时间,通过输入t转换;tempmonth1为计算以前年份后的月份的天数,tempmonth2计算现在日期月份的天数,//temp,x1,y2,t为临时变量printf(" \n");printf("请输入今天日期(Ex:20150305):");scanf("%d",&t); //输入当前时间n1=(int)(t/10000);y2=t%10000;y1=(int)(y2/100);r1=y2%100; //分别计算出年,月,日temp=n1-x;if(temp<0) //将年份差值转换为正数temp=-temp;daytemp=temp*365; //计算相差日期x1=x;for(i=0;i<temp;i++) //计算闰年多的一天{if(x1%4==0){if(x1%100!=0)daytemp++;else if((x1%100==0)&&(x1%400==0))daytemp++;else;}。

这个函数的算法是先计算两年之间的差值,然后加上现在时间的月份和日期,再减去查询哪一年已经过了的日期。

四、程序结果1、查询主界面:2、当输入数据为年份是,比如2015,打印2015年的年历;3、当输入数据是月份时,比如:201503,打印2015年3月的月历;4、当输入数据为某一天是,比如:20100305,输出这一天的详细信息;5、退出查询课程设计体会通过这次C语言的课程设计,我明白了很多也知道了很多,更收获了很多。

在课程设计的过程中出现过困难,但我都一一去客服,去解决。

最终,终于完成了一份满意的程序。

转眼几天的课程设计已经结束了。

回想学习C语言的过程中,既有快乐又有烦恼,回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。

在设计的过程中遇到的问题,这毕竟独立做的,难免会遇到各种各样的问题,同时在设计的过程中发现自己的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识从新温故。

相关文档
最新文档