c++万年历实验报告.doc_第1页
c++万年历实验报告.doc_第2页
c++万年历实验报告.doc_第3页
c++万年历实验报告.doc_第4页
c++万年历实验报告.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验6 基于命令行窗口的日历查询程序 (综合性实验)1.引言.1.1实验目的:(1) 了解程序开发环境调试工具的使用;(2) 掌握小型系统的开发过程,学会用 C+语言解决问题。1.2实验题目:设计一个实用日历查询系统“万年历”,使其类似于家里的日历。方便人们查看日历信息此项目可用:控制语句、函数、数组、循环等基本的知识点综合应用实现它的主要功能为:根据用户输入的参数,显示相应的信息。例如:输入年月日的具体日期,系统会输出该天是星期几;如果输入的数据是年月,则会输出该年该月的日历信息。1.3实验内容:学习开发命令行窗口的日历查询程序。实验涉及的内容包含程序语言基础(C 语言)的大部分知识点,主要包括:三种基本的控制结构、函数和函数调用。还有一些必要的知识点,开发环境采用微软公司的 Visual Studio 6.0。1.4 程序要求(1)程序中必要的地方有注释(2)对输入错误等情况要给出提示信息,要求重新输入(3)对程序进行充分测试,包含可能的各种情况(4)采用多文件结构组织方式来实现该项目程序1.5 基本功能(必做)1) 实现可以“判断指定的年份是否为闰年以及每年的天数”的函数;2) 实现可以“判断指定的年份每一个月的天数”的函数;3) 实现可以“显示指定某一年的日历” 的函数;4) 实现可以“显示指定某年某一月的日历” 的函数;5) 实现可以“显示某一天是星期几”的函数;注意:书写和实现函数时,请在前面按如下格式添加类似注释信息:/* 函数名称:main 功能描述:主程序 创建人 :张三丰 修改记录:2012-12-24 第 1.0 版*/1.6增强功能(选做)1)可以实现日程计划2) 预约提醒显示3)公历与农历的转换4)农历节气信息的查询显示等等2.设计思想:设计本万年历时我做了三个查询功能:查询某一年或某一月的万年历,查询某一天是星期几.使用多文件结构来实现,把年,月,日分作不同的函数在储存在不同的文件里.通过在main函数的中调用来实现.3.算法分析说明(1)计算某一天是星期几的算法:d=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+days)%7结果为0,1,2.6,分别表示星期日至六.(2)判断某一年是否为闰年:if(year%4=0&year%100!=0|year%400=0)4.要用到的函数和语句主函数在功能的选择时用到了switch()语句;实现程序的继续或退出功能时用到了do . while()循环语句判断用if()语句;万年历的输出用到for()循环;5.流程图系统流程图:6.设计分析7.功能过程的推导功能1:设计思路:要想输出一年的日历,首先得解决输出一个月日历的问题,然后用循环输出十二个月份的。首先提示由键盘输入要显示的年份,得到年份后开始进入循环,定义月份变量month,并赋初值为1(从一月份开始),第一步,进入monthdays(int year,int month)函数判断月份的天数,然后根据进入void printmonth(int year,int month)函数根据年月计算出该月一号是星期几并输出月份和每周的表头,由循环空出一号前面空的部分,再由另一个循环,加上前面该月天数的判断,就能输出该月的日历,此时一个月的日历输出完毕,进入第二次循环,输出下一个月的日历,知道十二个月份的日历全部输出,循环结束,第一个功能实现。功能2:设计思路: 第二个功能是第一个功能的一部分,只需要输出一个月的日历,这是月份不是由1开始,而是由键盘输入的,日历输出方法与第一个功能中的方法相似。流程图: 功能3:判断这一天是星期几,由蔡勒公式计算,得到的余数是从0到6,0对应星期日,其他的正好对应;8.测试结果1.开始界面:2.测试1:3.测试3:9.完整的源代码/head.h头文件/#ifndef HEAD_H#define HEAD_Hextern int yeardays(int year);extern int monthdays(int year,int month); extern void printyear();extern void printmonth(int year,int month);extern void findday();#endif/main函数/#includeusing namespace std;#include head.hint main ( int argc, char *argv)cout*endl;cout*欢迎使用万年历!*endl;cout*endl;int flag=1;docoutHALLO! 请选择:endl;cout-1.显示某一年的万年历-endl;cout-2.显示某一月的万年历-endl;cout-3.查询某一天星期几-endl;cout-0.退出-choice;if(choice!=0)hh:switch(choice) /选择case 1:printyear();break; /调用打印年份函数. case 2: int year,month;cout请输入年和月,如:2013 1yearmonth;printmonth(year,month); /调用打印月份函数break;case 3:findday();break;default:cout输入错误,请重新输入:choice;goto hh; else coutendl感谢使用,再见!endlendl;flag=0; /退出while(flag);return 0;/file1.cpp/-“判断指定的年份是否为闰年以及每年的天数”的函数;#include head.hint yeardays(int year) int yeardays=0;if(year%4=0&year%100!=0|year%400=0)/判断是否为闰年.yeardays+=366;elseyeardays+=365;return yeardays;/file2.cpp/-“判断指定的年份每一个月的天数”的函数;#include head.hint monthdays(int year,int month)int days_mon13=0,31,28,31,30,31,30,31,31,30,31,30,31;/用数组表示每个月的天数.if(year%4=0&year%100!=0|year%400=0)days_mon2=29;return days_monmonth;/file3.cpp/-“显示指定某一年的日历” 的函数;#includeusing namespace std;#include head.hvoid printyear()int year;int i;coutendl;cout请输入年份:year;for(i=1;i13;i+)printmonth(year,i);/file4.cpp/-“显示指定某年某一月的日历” 的函数;#includeusing namespace std;#include head.hvoid printmonth(int year,int month)int i,d,days=1; char *dayss=SUN,MON,TUE,WEN,THU,FRI,SAT; /用数组元素代表星期几 coutendl; for(i=0;imonth;i+)days+=monthdays(year,i); /计算总天数 d=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+days)%7;/用d=0.1.2.6来表示星期一至日.coutyear年month月endl; /输出月历部分.for(int j=0;j7;j+)coutdayssj ;coutendl; for(i=0;id;i+) cout ; for(int k=1;k=monthdays(year,month);k+) if(k10) coutk ; else coutk ; if(k+d)%7=0)coutendl; coutendl;/file5.cpp/-“显示某一天是星期几”的函数;#includeusing namespace std;#include head.hvoid findday()char *dayss=日,一,二,三,四,五,六;int year,month,day,days,z=0;cout请输入年月日(如:2013 1 1)yearmonthday;days=day;for(int i=0;imonth;i+)days+=monthdays(year,i);z=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论