




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年历显示 2011137209 汪厚鑫目录一、设计任务,目的与要求21.设计内容:22.设计目的:23.设计要求:3二、概要设计31.需求分析:32.设计流程:31设计要求:32总体设计:4三、运行结果及分析51.程序运行测试:52.进入程序菜单:53.1号键功能:63.2号键功能:64.3号键功能:75.0号键功能:7四、源代码.7一、设计任务,目的与要求1.设计内容:年历显示功能要求:1输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。2输入年月,输出该月的日历。3输入年月日,输出距今天还有多少天,星期几,是否是公历节日。2.设计目的:本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言C+(或C)课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对C+(或C)语言课程的基本知识的理解和掌握 2. 掌握C+(或C)语言编程和程序调试的基本技能 3. 利用C+(或C)语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用C+(或C)语言解决实际问题的能力3.设计要求:1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告及程序代码二、概要设计1.需求分析:目前的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基于该程序所开发的各种应用程序中的日历程序。然而,这些程序都是千遍一律的局限于一个很短的时间内。但是,很多情况下,特别是在众多的科学领域中,一个时间跨度较大的程序是有参考价值的。C+程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本就弥补了这一领域的空白。万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便 ,是一种比较实用的小工具。给人的需求性很大,学生在做此万年历课程设计的同时,能够认识到C+编程给人带来的便捷,也能够清楚万历年表编程的出入。对培养学生的创新能力和动手能力具有很大的作用。2.设计流程:1设计要求:(1)程序运行时,首先给4出个菜单选项的内容和输入提示:1 显示某一年的日历2 显示某一月的月历3查找某一天0 退出(2)用户可以通过主菜单选择不同的选项:若选择1,则通过输入年份,显示输出该年每个月的日历;若选择2,则通过输入年月,显示输出该月的日历;若选择3,则通过输入年月日,输出该天所在月的月历、该天是星期几、是否阳历节日、距今多少天;若选择0,则退出。2总体设计:据输入的年份打印该年的年历据输入的年月打印该月的月历据输入的日期打印该天所在月的月历并判断是否阳历节日退出1. 显示一年的年历2. 显示一月的月历3. 查找一天0. 退出显示年历、月历或查找结果进入程序 (流程图)依据课程设计的要求,需要设计一个菜单功能,进入程序后,有菜单可以提供选择,选择1,进入年历显示阶段,年历显示完毕,再次进入菜单选择。选择2,进入月历显示阶段,月历显示完毕,再次进入菜单选择。选择3,进入日期查询阶段,日期查询完毕,再次进入菜单。选择0,退出程序。三、运行结果及分析1.程序运行测试:在电脑中打开C+应用程序, 首先进入VC+6.0,将程序代码输入,编译,组建,调试。观察运行结果,和各个功能情况。2.进入程序菜单: (图1:菜单页面)说明:该页面表示进入菜单选项,根据选项进入相应的功能。3.1号键功能:输入1,按enter键后:输入要显示的年份:2013 (图2,显示2013年年历查询结果)3.2号键功能:输入2按enter键后:输入年月,例如2013 1(图3,2013年1月月历查询结果)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判断是否为闰年bool IsLeap(int year) if(year%400=0|(year%100!=0&year%4=0) return 1; else return 0; /函数getdays计算从1年1月1日起到输入日一共有多少天int getdays(int year,int month,int day) int i,sum=0;for(i=1;iyear;i+) if(IsLeap(i) sum+=366; else sum+=365; if(IsLeap(year) dayofmonth2=29;/为闰年时二月有29天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 = local_time-tm_year+1900;sum=getdays(y,m,d);return sum;/打印一年的年历void printyear()system(cls);int s,year,month; int a10,b10;coutyear;cout=The Calender of Year year=endl; int i=1; for(i=1;i=12/3;i+) /3确定每一行显示三个月的月历 cout-endl;for(int h=1;h=3;h+)int m=3*(i-1)+h; cout m月 ; /打印月份名称 coutendl-endl; for(int j=0;j3;j+)coutSu Mo Tu We Th Fr Sa ; coutendl; for(int j=0;j3;j+) month=3*(i-1)+j+1; s=getdays(year,month,1); /计算从年月日起到所查找年每月第天一共有多少天s=s%7; for(int m=0;ms;m+) cout ;/每月第一天之前打印空格if(IsLeap(year) dayofmonth2=29; bj=dayofmonthmonth; for(int k=1;k8-s;)/由1开始打印每月月历第一行coutsetw(2)setfill( )k ;k+;aj=k;cout ; coutendl; for(int w=1;w=5;w+)/打印每月月历其余行for(int j=0;j3;j+) int m=1; for(m=1;mbj) break; coutsetw(2)setfill( )aj ; if(m=7) coutbj,n=8-m;n+)coutbj&m!=8) cout ; coutendl; cout=endl; /打印某3月的月历 void printfmonth(int year,int month ,int day)system(cls);int i,s; s=getdays(year,month,1); /计算从1年1月1日起到所查找月第一天一共有多少天s=s%7;coutyear 年month 月?endl;cout SuntMontTuetWedtThutFritSatn;/for ( i = 0; i s; +i )cout t;if ( s = 6 )cout.put( n );for ( i = 1; i = dayofmonthmonth; +i ) if(i=day) coutit;elsecout i t;if ( (i+s) % 7 = 0 )cout n;coutendl;coutendl; /查找某一天 void lookday(int year,int month ,int day)system(cls); int s,y, m, d, h, min, sec,S,sum; s=getdays(year,month,day); /计算从年月日起到查找日一共有多少天sum=s%7;printfmonth(year,month,day);/打印查找日所在月的月历并标识出该天coutyear-month-day is ;switch(sum)/判断所查找天是星期几 case 0:coutSundayendl;break;case 1:coutMondayendl;break; case 2:coutTuesdayendl;break; case 3:coutWednesdayendl;break; case 4:coutThursdayendl;break; case 5:coutFridayendl;break;case 6:coutSaturdayendl;break; switch(month)/判断查找天是否阳历节日先由月份判断是否有节日的月份再由日判断是否为节日 case 1:switch(day) case 1:cout元旦(New years day)endl;break; default:cout不是阳历节日endl; break;case 3:switch(day) case 8:cout妇女节(Womens Day)endl;break; case 12:cout植树节(Arbor Day)endl;break; default:cout不是阳历节日endl; break; case 5:switch(day) case 1:cout劳动节(Labor Day)endl;break; case 4:cout中国青年节(Chinese Youth Day)endl;break; default:cout不是阳历节日endl;break; case 6:switch(day) case 1:cout儿童节(Childrens Day)endl;break; default:cout不是阳历节日endl;break; case 8:switch(day) case 1:cout建军节(the Armys Day)endl;break; default:cout不是阳历节日endl;break; case 9:switch(day) case 10:cout教师|节(Teachers Day)endl;break; default:cout不是阳历节日endl;break; case 10:switch(day) case 1:cout国庆节(National Day)endl;break; default:cout不是阳历节日endl;break; default:cout不是阳历节日endl;S=Initdate(y,m,d,h,min,sec);/计算从1年1月1日起到现在一共2有多少天/计算查找日距今有多少天if(Ss)cout距今还有s-S天endl;elsecout已经过去S-s天endl; /主函数显示程序菜单int main()int choice,year,month,day;for(;1;)/显示程序菜单,为永真,每次查找完回到程序菜单cout=菜单选项=endl;cout请选择:endl;cout* * * * * * * * 1.查找某一年的年历 * * * * * * * *endl;cout* * * * * * * * 2.查找某一月的月历 * * * * * * * *endl;cout* * * * * * * * 3.查找某一天 * * * * * * * *endl;cout* * * * * * * * 0.退出 * * * * * * * *endl;cout=choice;if(choice=1) printyear();/选择1,查找某年年历else if(choice=2)/选择,查找某月月历 int day=0;coutyearmonth;if(month12) /判断输入的年月是否存在,不存在提示重新输入cout输入的年月不存在,请重新输入endl;else printfmonth(year,month,day);/输入的年月存在,查找某月月历 else if(choice=3)/选择,查找某天cout请输入要查找的日期(格式如 2012 12 31):yearmonthday;/判断输入的年月日是否存在,不存在提示重新输入,存在则查找 if(month12)cout输入的月份不存在,请重新输入!=1&day=30) lookday(year,month,day); else cout输入的日期不存在,请
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年 湖南株洲消防招聘考试笔试试题附答案
- 2025年 贵州水利水电职业技术学院招聘教师附答案
- 2025年养护机械市场分析现状
- 中国背投电视行业发展潜力预测及投资战略研究报告
- 焦化耐火设备项目投资可行性研究分析报告(2024-2030版)
- 2025年中国兔毛手袋行业市场发展前景及发展趋势与投资战略研究报告
- 长江存储培训课件
- 视频拍摄制作合同
- 技术服务合同
- 中国电子特种气体行业市场调查研究及投资前景预测报告
- 安全生产管理台账(合集)
- 福建省厦门市第一中学2025届七下英语期末质量跟踪监视试题含答案
- 2024年吉林省国资委监管企业招聘真题
- 2025年霍州煤电招聘笔试冲刺题(带答案解析)
- 大学语文试题及答案 二
- 2025年 汾西矿业井下岗位高校毕业生招聘考试笔试试题(山西省)含答案
- 结构动力学完整版本
- 2025年八年级数学下学期期末总复习八年级数学下学期期末测试卷(2)(学生版+解析)
- 农村供水水质管理制度
- 五年级(下)语文选择题专项165道
- 石油化工工程防渗技术规范
评论
0/150
提交评论