



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一、设计任务,目的与要求 .11.设计内容: .12.设计目的: .23.设计要求: .2二、概要设计 .21.需求分析: .22.设计流程: .31 设计要求: .32 总体设计: .4三、运行结果及分析 .51.程序运行测试: .52.进入程序菜单: .53.1号键功能: .53.2号键功能: .54.3号键功能: .55.0号键功能: .5四、源代码.6一、设计任务,目的与要求1.设计内容:年历显示功能要求:1输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040 年之间。2输入年月,输出该月的日历。3输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
2、2.设计目的:本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言 C+(或 C)课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深学生对 C+(或 C)语言课程的基本知识的理解和掌握2. 掌握 C+(或 C)语言编程和程序调试的基本技能3. 利用 C+(或 C)语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用 C+(或 C)语言解决实际问题的能力3.设计要求:1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告及
3、程序代码二、概要设计1.需求分析:目前的计算机日历程序,比较典型的是 Windows各版本中的日历程序以及基于该程序所开发的各种应用程序中的日历程序。然而,这些程序都是千遍一律的局限于一个很短的时间内。但是,很多情况下,特别是在众多的科学领域中,一个时间跨度较大的程序是有参考价值的。 C+程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本就弥补了这一领域的空白。万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁 , 还有就是在某些节日的提醒上都给我们带来极大的方便 ,是一种比较实用的小工具。给人的需求性很大,学生在做此
4、万年历课程设计的同时,能够认识到 C+编程给人带来的便捷,也能够清楚万历年表编程的出入。对培养学生的创新能力和动手能力具有很大的作用。2.设计流程:1 设计要求:(1)程序运行时,首先给4 出个菜单选项的内容和输入提示:1 显示某一年的日历2 显示某一月的月历3 查找某一天0 退出(2)用户可以通过主菜单选择不同的选项:若选择 1,则通过输入年份,显示输出该年每个月的日历;若选择 2,则通过输入年月,显示输出该月的日历;若选择 3,则通过输入年月日,输出该天所在月的月历、该天是星期几、是否阳历节日、距今多少天;若选择 0,则退出。2 总体设计:进 入 程序1. 显示一年的年历2. 显示一月的月
5、历3. 查找一天0. 退出据 输 入据 输 入据输入的日期打印退出的 年 份的 年 月该天所在月的月历打 印 该打 印 该并判断是否阳历节显示年历、月历或查找结果(流程图)依据课程设计的要求,需要设计一个菜单功能,进入程序后,有菜单可以提供选择,选择 1,进入年历显示阶段,年历显示完毕,再次进入菜单选择。选择 2,进入月历显示阶段,月历显示完毕,再次进入菜单选择。选择 3,进入日期查询阶段,日期查询完毕,再次进入菜单。选择 0,退出程序。三、运行结果及分析1.程序运行测试:在电脑中打开 C+应用程序 , 首先进入 VC+6.0,将程序代码输入,编译,组建,调试。观察运行结果,和各个功能情况。2
6、.进入程序菜单:(图 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<iostre
7、am>#include<iomanip>using namespacestd;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 mont
8、h,int day)int i,sum=0;for(i=1;i<year;i+)if (IsLeap(i)sum+=366;else sum+=365;if (IsLeap(year) dayofmonth2=29; /为闰年时二月有29天for(i=1;i<month;i+)sum+=dayofmonthi;sum+=day;return sum;/函数 Initdate获得现在的时间intInitdate(int &y, int &m, int &d, int &h, int &min, int &sec)int sum;time
9、_t t;time( &t );struct tm * local_time = localtime( &t );sec = local_time->tm_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()syste
10、m("cls" );int s,year,month;int a10,b10;cout<<"请输入要查找的年份;cin>>year;cout<<"=The Calender of Year"<<year<<"="<<endl;int i=1;for(i=1;i<=12/3;i+)/3确定每一行显示三个月的月历cout<<"-"for(int h=1;h<=3;h+)<<endl;int m=3*(i
11、-1)+h;cout<<"" <<m<< "月" ; /打印月份名称cout<<endl<< "-"<<endl;for(int j=0;j<3;j+)cout<<"Su " <<"Mo " <<"Tu " <<"We " <<"Th " <<"Fr " <<
12、;"Sa "<<""cout<<endl;for(int j=0;j<3;j+)month=3*(i-1)+j+1;s=getdays(year,month,1); /计算从年月日起到所查找¨年每月第 ì天一共有多少s=s%7;for (int m=0;m<s;m+)cout<<""/每月第一天之前打印空格if (IsLeap(year)dayofmonth2=29;|天bj=dayofmonthmonth;for (int k=1;k<8-s;) /由 1开始
13、打印每月月历第一行cout<<setw(2)<<setfill( ' ')<<k<< " " ;k+;aj=k;cout<<"" ;cout<<endl;for(int w=1;w<=5;w+) /打印每月月历其余行for (int j=0;j<3;j+)int m=1;for(m=1;m<=7;m+,aj+)if (aj>bj)break;cout<<setw(2)<<setfill( ' ')<
14、<aj<< " " ;if (m=7)cout<<"" ;for(int n=1;aj>bj,n<=8-m;n+)cout<<""if (aj>bj&&m!=8)cout<<""cout<<endl;cout<<"="<<endl;/打印某 3月的月历void printfmonth( int year,int month ,int day)system("cls
15、" );int i,s;s=getdays(year,month,1); /计算从 1年1月 1日起到所查找月第一天一共有多少|天s=s%7;cout<<" "<<year<<" 年¨o"<<month<< " 月?"<<" " <<endl; cout << "SuntMontTuetWedtThutFritSatn" ;/for ( i = 0; i < s; +i )c
16、out << 't'if ( s = 6 )cout.put( 'n' );for ( i = 1; i <= dayofmonthmonth; +i )if (i=day) cout<< "" <<i<< "t" ;elsecout << i << 't'if ( (i+s) % 7 = 0 )cout << 'n'cout<<endl;cout<<""&l
17、t;<endl;/查找某一天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); /打印查找日所在月的月历并标识出该天cout<<year<<"-" <<month<< "-" <<d
18、ay<<"is"switch(sum)/判断所查找天是星期几case 0:cout<<"Sunday"<<endl;break;case 1:cout<<"Monday" <<endl;break;case 2:cout<<"Tuesday"<<endl;break;case 3:cout<<"Wednesday"<<endl; break;case 4:cout<<"
19、;Thursday"<<endl; break;case 5:cout<<"Friday" <<endl;break;case 6:cout<<"Saturday"<<endl;break;switch(month)/判断查找天是否阳历节日先由月份判断是否有节日的月份再由日判断是否为节日case 1:switch(day)case 1:cout<<" 元旦( New year's day)"<<endl;break;default:c
20、out<<"不是阳历节日 " <<endl; break;case 3:switch(day)case 8:cout<<"妇女节 ¨(Women's Day)"<<endl; break;case 12:cout<<"植树节( Arbor Day)" <<endl;break;default:cout<<"不是阳历节日 "<<endl; break;case 5:switch(day)case 1:co
21、ut<<"劳动节( Labor Day)" <<endl; break;case 4:cout<<" 中国青年节( Chinese Youth Day)"<<endl;break;default:cout<<"不是阳历节日 "<<endl; break;case 6:switch(day)case 1:cout<<" 儿童节( Children's Day)" <<endl;break;default:cout&
22、lt;<"不是阳历节日 "<<endl; break;case 8:switch(day)case 1:cout<<" 建军节( the Army's Day)" <<endl;break;default:cout<<"不是阳历节日 "<<endl; break;case 9:switch(day)case 10:cout<<"教师 |节( Teacher's Day)"<<endl; break;defaul
23、t: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);/计算从
24、1年1月1日起到现在一共 2有多少天 ?¨?/计算查找日距今有多少天if (S<s)cout<<" 距今还有 "<<s-S<<"天" <<endl;elsecout<<" 已经过去 "<<S-s<<"天" <<endl;/主函数显示程序菜单int main()int choice,year,month,day;for(;1;)/显示程序菜单,为永真,每次查找完回到程序菜单ìcout<<
25、;"=菜单选项=" <<endl;cout<<"请选择 :" <<endl;cout<<"* * * * * * * *1.查找某一年的年历*"<<endl;cout<<"* * * * * * * *2.查找某一月的月历*"<<endl;cout<<"* * * * * * * *3.查找某一天*"<<endl;cout<<"* * * * * * * *0.退出*
26、"<<endl;cout<<"=" <<endl;cin>>choice;if (choice=1)printyear();/选择 1,查找 ¨某年年历else if(choice=2)/选择,查找某月月历int day=0;cout<<"请输入要查找的年月(格式如 ¨2012 12):"cin>>year>>month;if (month>12) /判断输入的年月是否存在,不存在提示重新输入cout<<"输入的年月不存在,请重新输入"<<endl;else printfmonth(year,month,day); /输入的年月存在,查找某月月历¤¨2else if(choice=3)/选择,查找某天cout<<"请输入要查找的日期(格式如2012 12 31):"<<endl;cin>>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024广东珠海市金湾区南泓产业投资有限公司招聘项目运营人员1人笔试参考题库附带答案详解
- 2025年甘肃有色冶金职业技术学院单招职业技能测试题库1套
- 养只“佛系”小青蛙在游戏里当妈
- 第13课 现代战争与不同文化的碰撞和交流 教学设计-2023-2024学年高二下学期历史统编版(2019)选择性必修3文化交流与传播
- 第二章第二节世界的海陆分布 教学设计 2023-2024学年湘教版地理七年级上册
- 四川省江油市八校2024-2025学年七年级下学期开学考试语文试题(解析版)
- 说木叶教学设计 2023-2024学年统编版高中语文必修下册
- 《统计表和条形统计图(一)-运动与身体变化》教学设计-2024-2025学年四年级上册数学苏教版
- Unit12 Review 3(教学设计)-2023-2024学年北师大版(一起)英语六年级下册
- 2024年六安霍邱合高现代产业园投资有限公司招聘4人笔试参考题库附带答案详解
- 人教版高一下英语单词表
- 2025年中国远洋海运集团限公司中石化中海船舶燃料供应限公司招聘26人高频重点模拟试卷提升(共500题附带答案详解)
- 2025年春季学期各周国旗下讲话安排表+2024-2025学年度第二学期主题班会安排表
- 汽车电脑故障解码器项目可行性研究报告评审方案设计2025年发改委标准
- 实验室生物安全培训
- 药品专业知识培训考试试题5
- 五年级下册劳动《日常收纳》课件
- 腾讯风控师(初级)认证考试题库(附答案)
- 第28课改革开放和社会主义现代化建设的巨大成就 课件-高一统编版(2019)必修中外历史纲要上册
- 猪场消防安全培训
- 2024年中国游戏产业报告
评论
0/150
提交评论