C++程序设计(万年历——说明书)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1C++程序设计说明书题目:万年历班级学号:学生姓名:目录一.应用程序的名称二.应用程序的主题、设计目的2三.应用程序简介1.程序的基本结构及内容2.程序的运行环境四.主要运行界面的介绍五.程序亮点六.课程设计中存在的问题及解决方法一.课程设计名称万年历二.应用程序要求、目的主题:万年历目的:实现对年月的查询三.应用程序简介(1)基本结构:3整个程序有cls_screen(清屏)、judgement(判断是否为闰年)、show_week(记录周几)、print_year(查询某年)、print_year_month(查询某年某月)等自定义函数,程序中涉及到switch语句、for语句、if语句等和多次函数调用语句,开头定义了day_of_month[]数组,主要目的是将12个月每个月有多少天依次排出,在后面又用if语句判断二月的天数是28还是29。在主函数中运用while语言与switch语句的嵌套,是程序拥有了循环的功能。用fflush(stdin);语句清除输入缓存,使程序在使用过程中不会太过眼花缭乱。万年历的编程,需要两个方面的讨论和研究,一是要在用户输入年份的时候,判断该年是否为闰年,而对于闰年的判断,能被4整除但不能被100整除,或者能被400整除的年份为闰年,否则为平年。所以会改变day_of_month[]数组中的二月份的数值。二是在用户输入年月份的时候,判断该年该月的第一天是周几,从来好排列。而对于判断周几,需要运用公式:w=(y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)%7并用if语句使用判断。通过这两个方面的讨论和实现,才能合理的编程出万年历的基本程序代码。(2)源程序代码:#includestdio.h#includestring.h#includetime.h#includemath.h#includewindows.hintyear,month,day;intday_of_month[12]={31,28,31,30,31,30,31,31,30,31,30,31};intcurrent_year,current_month,current_day;voidcls_screen(){printf(请按任意键返回!\n);getchar();getchar();system(cls);}intjudgement(inty){if(y%400==0||(y%100!=0&&y%4==0))return1;elsereturn0;4}intshow_week(intyear,intmonth,intday){/*公式:w=(y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)%7*/intw,k;intyear_last=year%100,c=year/100,m=month;if(month==1){year_last-=1;}elseif(month==2){year_last-=1;}w=(year_last+year_last/4+c/4-2*c+26*(m+1)/10+day-1);if(w0){k=(w%7+7)%7;}elsek=w%7;returnk;}voidprint_year(intyear){inti,k,x,first_week;printf(请输入想要查询的年份(格式如2012):);scanf(%d,&year);printf(=======================%d年===========================\n,year);printf(\n);if(judgement(year)){day_of_month[1]=29;}elseday_of_month[1]=28;for(i=1;i13;i++){first_week=show_week(year,i,1);printf(=====================%d月日历如下========================\n,i);printf(Sun\tMon\tTue\tWed\tThu\tFri\tSat\n);for(x=1;x=first_week;x++){5printf(\t);if(x%7==0)printf(\n);}for(k=1;k=day_of_month[i-1];k++){printf(%d\t,k);if(x%7==0)printf(\n);x++;}printf(\n);printf(\n);printf(\n);}}voidprint_year_month(){intk,x,first_week;printf(请输入想要查询的年月(格式如201212):);do{scanf(%d%d,&year,&month);if(month1||month12){printf(您输入的月份有误哦~请输入正确的月份\n);printf(请输入想要查询的年月(格式如201212):);}}while(1month||month12);printf(=====================%d年%d月======================\n,year,month);if(judgement(year)){day_of_month[1]=29;}elseday_of_month[1]=28;first_week=show_week(year,month,1);printf(Sun\tMon\tTue\tWed\tThu\tFri\tSat\n);for(x=1;x=first_week;x++){printf(\t);if(x%7==0)printf(\n);}for(k=1;k=day_of_month[month-1];k++){6printf(%d\t,k);if(x%7==0)printf(\n);x++;}printf(\n);}voidmain(){intchoice,year,month,day,flag=1,option;charc,k,ch;while(1){printf(===========================欢迎来到XXX的万年历============================\n);printf(请选择:\n);printf(********1.查找某一年的年历********\n);printf(********2.查找某一月的月历********\n);printf(********0.退出********\n);printf(==============================================================================\n);printf(请输入您的选择:);scanf(%d,&option);switch(option){case1:while(1){print_year(year);cls_screen();printf(doyouwanttocontinue?(Y/N));7fflush(stdin);scanf(%c,&ch);if(ch=='N'||ch=='n')break;}break;case2:while(1){print_year_month();cls_screen();printf(doyouwanttocontinue?(Y/N));fflush(stdin);scanf(%c,&ch);if(ch=='N'||ch=='n')break;}break;case0:break;}}}2:程序的运行环境本程序运行环境为VC8四.主要运行界面的介绍选择“1”并查询2012年的日历。显示2012年的日历:910可以按任意键返回。11出现“是否继续的提示语”按y可继续查询某年的日历。按n可返回开始时的画面,再继续选择。12选择“2”,查询2012年9月的月历。五.程序亮点此程序开始有提示语问候,使用户使用时亲切便捷,并实现了循环的过程,可以无限循环的查询你想知道年份月份的日历,在循环的过程中加有清屏的效果。六.课程设计中存在的问题及解决方法在编译程序时,对蔡勒公式的不熟悉,导致程序在年月之间的错误,但在之后的调试中逐步掌握了这个公式,并解决了这一系列的问题。

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功