1、年历显示 2011137209 汪厚鑫第 1 页 共 14 页目录一、设计任务,目的与要求 21.设计内容: 22.设计目的: 23.设计要求: 3二、概要设计 31.需求分析: 32.设计流程: 31 设计要求: 32 总体设计: 4三、运行结果及分析 51.程序运行测试: 52.进入程序菜单: 53.1 号键功能: .63.2 号键功能: .64.3 号键功能: .75.0 号键功能: .7四、源代码 7年历显示 2011137209 汪厚鑫第 2 页 共 14 页一、设计任务,目的与要求1.设计内容:年历显示功能要求:1输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在 194
2、0-2040 年之间。2输入年月,输出该月的日历。3输入年月日,输出距今天还有多少天,星期几,是否是公历节日。2.设计目的:本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言 C+(或 C)课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深学生对 C+(或 C)语言课程的基本知识的理解和掌握2. 掌握 C+(或 C)语言编程和程序调试的基本技能3. 利用 C+(或 C)语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用 C+(或 C)语言解决实际问题的能力3.设计要求:1. 分析课程设计题目的要求2. 写出详细设计说明3
3、. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告及程序代码二、概要设计1.需求分析:目前的计算机日历程序,比较典型的是 Windows 各版本中的日历程序以及基于该程序所开发的各种应用程序中的日历程序。然而,这些程序都是千遍一律的局限于一个很短的时间内。但是,很多情况下,特别是在众多的科学领域年历显示 2011137209 汪厚鑫第 3 页 共 14 页中,一个时间跨度较大的程序是有参考价值的。C+程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本就弥补了这一领域的空白。万年历作为日常中的一种小工具,它具有多方面的小工能,
4、主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便 ,是一种比较实用的小工具。给人的需求性很大,学生在做此万年历课程设计的同时,能够认识到 C+编程给人带来的便捷,也能够清楚万历年表编程的出入。对培养学生的创新能力和动手能力具有很大的作用。2.设计流程:1 设计要求:(1)程序运行时,首先给 4 出个菜单选项的内容和输入提示:1 显示某一年的日历2 显示某一月的月历3 查找某一天0 退出(2)用户可以通过主菜单选择不同的选项:若选择 1,则通过输入年份,显示输出该年每个月的日历;若选择 2,则通过输入年月,显示输出该月的日历;若选择
5、 3,则通过输入年月日,输出该天所在月的月历、该天是星期几、是否阳历节日、距今多少天;若选择 0,则退出。2 总体设计:年历显示 2011137209 汪厚鑫第 4 页 共 14 页据输入的年份打印该年的年历据输入的年月打印该月的月历据输入的日期打印该天所在月的月历并判断是否阳历节日退出1. 显示一年的年历2. 显示一月的月历3. 查找一天0. 退出显示年历、月历或查找结果进入程序(流程图)依据课程设计的要求,需要设计一个菜单功能,进入程序后,有菜单可以提供选择,选择 1,进入年历显示阶段,年历显示完毕,再次进入菜单选择。选择 2,进入月历显示阶段,月历显示完毕,再次进入菜单选择。选择 3,进
6、入日期查询阶段,日期查询完毕,再次进入菜单。选择 0,退出程序。年历显示 2011137209 汪厚鑫第 5 页 共 14 页三、运行结果及分析1.程序运行测试:在电脑中打开 C+应用程序, 首先进入 VC+6.0,将程序代码输入,编译,组建,调试。观察运行结果,和各个功能情况。2.进入程序菜单:(图 1:菜单页面)说明:该页面表示进入菜单选项,根据选项进入相应的功能。3.1 号键功能:输入 1,按 enter 键后:输入要显示的年份:2013年历显示 2011137209 汪厚鑫第 6 页 共 14 页(图 2,显示 2013 年年历查询结果)3.2 号键功能:输入 2 按 enter 键后
7、:输入年月,例如 2013 1(图 3,2013 年 1 月月历查询结果)年历显示 2011137209 汪厚鑫第 7 页 共 14 页4.3 号键功能:输入 3 按 enter 键后:输入年月日,如 3013 1 1(图 4,2013 年 1 月 1 查询结果)显示查询天所在月月历,并标识出该天,同时显示是否阳历节日,距今多少天。5.0 号键功能:退出程序。四、源代码#include#includeusing namespace std;int dayofmonth13=0,31,28,31,30,31,30,31,31,30,31,30,31;/定义全局变量,每月的天数/函数IsLeap判
8、断是否为闰年bool IsLeap(int year) if(year%400=0|(year%100!=0 else return 0; /函数getdays计算从1年1月1日起到输入日一共有多少天年历显示 2011137209 汪厚鑫第 8 页 共 14 页int getdays(int year,int month,int day) int i,sum=0;for(i=1;itm_sec;min = local_time-tm_min ;h = local_time-tm_hour ;d = local_time-tm_mday ;m = local_time-tm_mon+1;y =
9、local_time-tm_year+1900;sum=getdays(y,m,d);return sum;/打印一年的年历void printyear()system(“cls“);int s,year,month; int a10,b10;coutyear;coutbj) break; coutbj,nbjif(choice=1) printyear();/选择1,查找某年年历else if(choice=2)/选择,查找某月月历 int day=0;coutyearmonth;if(month12) /判断输入的年月是否存在,不存在提示重新输入coutyearmonthday;/判断输入的年月日是否存在,不存在提示重新输入,存在则查找if(month12)cout=1else cout“输入的日期不存在,请重新输入!“endl; else if(choice=0)/选择,退出 cout“谢谢使用!“endl;break;else cout“输入错误!请按照提示输入!“endl;年历显示 2011137209 汪厚鑫第 14 页 共 14 页