专业课程设计实验报告万年历.doc

上传人:知**** 文档编号:97919447 上传时间:2024-07-08 格式:DOC 页数:37 大小:342.50KB
返回 下载 相关 举报
专业课程设计实验报告万年历.doc_第1页
第1页 / 共37页
专业课程设计实验报告万年历.doc_第2页
第2页 / 共37页
点击查看更多>>
资源描述

《专业课程设计实验报告万年历.doc》由会员分享,可在线阅读,更多相关《专业课程设计实验报告万年历.doc(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、专业课程设计实验报告万年历C+课程设计简单万年历制作C+语言程序设计课程设计报告设计题目:简单万年历 专 业:网络工程 班 级:12级 姓 名:杨茂林 学 号:121124028 联系方式:13213501410 目 录1.设计目标32.设计思想33.类及函数的实现34.程序流程图35.程序源代码116.调试记录307.调试语录338.总结34简单万年历程序1.1设计题目描述 本程序是一个简单的实现时间系统功能的万年历程序,此程序是为了遵循用户的意愿与指示对用户输入的日期进行简单的处理,输出所要查询的日期的信息,如:当时的时间,年月日,生肖,天干地支,以及输出所要查询的日期日历并以日历形式排列

2、出来。1.2设计目标本程序有以下目标要实现:用户可以进行选择,是要进行万年历时间校对系统还是万年历的查询系统,用户可以随时退出系统;:显示本地时间,并征询用户的意见是否要进行时间调整,如果进行了时间调整,要输出调整后的时间;:查询某年的万年历,并输出当年的年历,并显示所要查询的年份,显示出一年的日历、当年的天干地支、生肖、并判断是否为闰年;:将的功能具体到月份;:将的功能具体到日,并判断出用户所要查询的日期当天是什么节日,以及用户所要查询的节日距今天有多少天; :用户多次进行输入,知道用户满意为止。2.设计思想本程序中,因为要用到万年历的时间校对系统,所以,在设计的时候,我定义了一个时间类:c

3、lock类;由于系统要同步到本地的时间(即为运行时电脑上显示的时间),这里用到了 struct time结构体,接下来就是万年历的查询系统功能里面的函数,这些函数要实现的有指导用户进行操作的选项的界面,有计算该月的1号是星期几的函数,有输出每周即每月的表头函数、判断是否为闰年、判断每个月有多少天、要查询的那天距今天有多少天、判断所要查询的年份有多少天、计算指定日期距今天有多少天等函数。其中,共含一个主函数文件、三个功能文件、一个功能函数头文件、界面文件以及时钟类文件。其中,功能函数是主要的函数实现部分,时钟类则主要是实现万年历时间系统。3.类及函数的实现在此只涉及部分函数的实现细节,其他函数详

4、看程序源代码:1.1本程序中,我只设计了一个clock类,类里面有实现时间系统校对功能的私有量,在进行时间校对的过程中,我选择了重载的方法,以达到自己想要的结果。1.2函数部分的实现则是比较普通的,没有什么特殊的地方。其中有如下函数需要实现:int week(int y,int m);/计算该月一号是星期几void printweek();/输出每周表头void printmonth(int m);/输出每月表头int leep(int y);/判断该年是否闰年int md(int y,int m);/判断该月有多少天void other(int year);int days1(int y,i

5、nt m,int d);/计算该天时这一年的第几天int days2(int y);/判断该年有多少天int days3(int y);/计算从元年到该之年前总天数int totaldays(int y,int m,int d);/计算指定日期距今天的天数int yi();/实现万年历的时间校对功能 int er();/进入万年历的系统功能 int first();/实现第一个功能int second();/实现第二个功能void third();/实现第三功能/int tiangandizhi();int jiemian1();/界面1int jiemian2();在jiemian(),in

6、t md()及void third()的实现过程中,我选用了 switch-case套用switch-case语句;在int week()函数中,我采用了蔡勒公式用于计算每个月的星期一是多少,其他函数的实现详看源代码。 1.3在这个程序设计中,有好多知识是我以前没有接触过得,这一点还是比较欣慰的吧,例如,system(“pause”)有着清屏作用,还有就是计算每个月的1号是星期几的问题以及程序运行后背景与字体颜色的变换要用到system(“color”, 9b)4.程序流程图开始进入欢迎页面选择相应的系统功能选择相应按任意键继续进行1.万年历时间校对功能2.万年历时间查询功能3.退出时间校对的

7、实现万年历三个查询功能的实现显示结果按任意键继续进行万年历时间校对系统的实现显示当地时间是否要进行时间调整按y任意键调大还是调小按m要增加的小时的个数要增加的分钟的个数要增加的秒的个数按n要减少的小时的个数要减少的分钟的个数要减少的秒的个数显示结果时间校对系统结束万年历的三个查询系统功能的实现1.查询某年的日历2查询某年某月的日历3.查询某年某月某日的日历输入要查询的年份输入要查询的年月输入要查询的年月日显示结果点任意键返回查询系统的第一个功能界面输入要查询的月份输出所要查询的年份的天干地支,生肖,是否为闰年定义月份变量m,并付初始值m=1判断该月天数根据年月由蔡勒公式计算出该月1号是星期几输

8、出月份和每周的表头用循环输出前面空白的部分用循环输出该月的日历m=12m+第一个功能结束用循环输出前面空白的部分输出月份和每周的表头根据年月由蔡勒公式计算出该月1号是星期几判断该月天数输出所要查询的年份的天干地支,生肖,是否为闰年输入要查询的年月查询系统的第二个功能界面用循环输出该月的日历第二个功能结束输入要查询的年月日查询系统的第三个功能界面输出所要查询的年份的天干地支,生肖,是否为闰年距今天多少天判断该日期是星期几判断该日期是不是公历节日输入的日期距元年1月1日的天数系统的日期距元年1月1日的天数蔡勒公式计算,并用switch语句判断余数,输出对应的语句用switch语句判断是否为公历节日

9、,并输出对应的语句第三个功能结束5.程序源代码#include#include/文件输出#include/清屏#include/控制宽度#include /这两个头文件是为了调用系统时间的#include #include#includeusing namespace std;int week(int y,int m);/计算该月一号是星期几void printweek();/输出每周表头void printmonth(int m);/输出每月表头int leep(int y);/判断该年是否闰年int md(int y,int m);/判断该月有多少天void other(int year)

10、;/以下六个函数是第三个功能里的int days1(int y,int m,int d);/计算该天时这一年的第几天int days2(int y);/判断该年有多少天int days3(int y);/计算从元年到该之年前总天数int totaldays(int y,int m,int d);/计算指定日期距今天的天数int yi();/实现万年历的时间校对功能 int er();/进入万年历的系统功能 int first();/实现第一个功能int second();/实现第二个功能void third();/实现第三功能/int tiangandizhi();int jiemian1()

11、;/界面1int jiemian2();int jiemian() system(cls); system(color 9d);/控制程序背景和字体的颜色,均为16进制,9背景颜色,d字体颜色 coutsetw(6) =endl; coutsetw(6) =endl; coutsetw(6) - - endl; coutsetw(6) endl; coutsetw(6) 欢迎进入万年历的页面 endl; coutsetw(6) endl; coutsetw(6) endl; coutsetw(6) endl; coutsetw(6) endl; coutsetw(6) endl; coutse

12、tw(6) *-该万年历有以下功能供您选择-* endl; coutsetw(6) endl; coutsetw(6) *.1.万年历的时间校对系统.* endl; coutsetw(6) *.2.万年历的查询系统.* endl; coutsetw(6) *.0.退出.* endl; coutsetw(6) . endl; coutsetw(6) =WvWvWWvWvW=endl; coutendlendl; cout请输入您要使用的功能的序号(回车键确认):; coutn;switch(n)case 1:yi();break;case 2:er();break;case 0:exit(0);

13、 system(pause); system(cls); return 0; class Clock public: Clock(int a=0,int b=0,int c=0):hour(a),minute(b),second(c) void settime(int a=0,int b=0,int c=0) hour=a; minute=b; second=c; void showtime() cout现在时间为hour:minute:secondendl; coutendlshi;strftime(temp,30,%M,now);istringstream input4(temp);inp

14、ut4fen; strftime(temp,30,%S,now); istringstream input5(temp); input5miao; Clock myclock; myclock.settime(shi,fen,miao); myclock.showtime(); cout是否要调整时间,如果是请按y,按其他键继续返回主菜单endl; coutendl; a=getch(); if(a=y) cout请问是要将现在的时间调大还是调小,如果调大请按m,否者按nendl; do i=getch(); if(i=m) cout请输入要增加小时的个数:; coutb; b*=3600;

15、while(b-) myclock+; cout请输入要增加分钟的个数:; coutc; c*=60; while(c-) myclock+; cout请输入要增加的秒数:; coutd; while(d-) myclock+; myclock.showtime(); system(pause); else if(i=n) coutb; b*=3600; while(b-) myclock-; coutc; c*=60; while(c-) myclock-; coutd; while(d-) myclock-; myclock.showtime(); system(pause); else

16、cout输入有误,请重新输入endl; while(i!=m&i!=n); jiemian(); int er() coutjiemian1()endl; coutjiemian2()endl;int main() coutjiemian()endl;/调用jiemian函数,到达页面 coutyi()endl; system(cls);return 0;int jiemian1() coutendlendl; coutsetw(6) =endl;coutsetw(6) *endl;coutsetw(6) endl;coutsetw(6) (二)现在进入万年历查询系系统 endl;coutse

17、tw(6) endl;coutsetw(6) 该系统有以下功能可供您选择 endl;coutsetw(6) endl;coutsetw(6) =endl; coutendlendlendl;system(pause); system(cls);jiemian2();int jiemian2()coutendl;coutsetw(6) =endl;coutsetw(6) =endl;coutsetw(6) endl;coutsetw(6) 系统功能 endl;coutsetw(6) 1、查询某年的日历 endl;coutsetw(6) 2、查询某年某月的日历 endl;coutsetw(6) 3

18、、查询某年某月某日的信息 endl;coutsetw(6) 4、返回 endl;coutsetw(6) endl;coutsetw(6) =endl;coutendlendl;coutn;switch(n)case 1:first();break;case 2:second();break;case 3:third();break;case 4:jiemian();break; default:cout输入有误,请重新输入endl; while(n4);coutendl;cout点任意键返回主菜单endl;system(pause);system(cls);jiemian(); int fir

19、st()/第一个功能,查询某年的日历ofstream outfile(第一个功能.txt,ios:out);/定义一个文件输出流对象outfile int y,m,w,d,i,day;couty;cout您所查询的内容如下:endl;coutendl;couty年日历endl;other(y);outfiley年日历endl;/输出到文件for(m=1;m=12;m+)int m1,y1;/m1是指月份,y1是指年份 m1=m;y1=y;if(m13)m1+=12;y1-;/在蔡勒公式中,某年的1,2月份要看作是上一年的13,14月份 w=week(y1,m1);/调用week函数,计算该月一

20、号是星期几day=md(y,m);/调用md函数,判断该月有多少天printmonth(m);/调用printmonth函数,输出月份表头outfilem月份endl;/输出到文件printweek();/输出每周表头outfilesetw(8)Sunsetw(8)Monsetw(8)Tuessetw(8)Wedsetw(8)Thurssetw(8)Frisetw(8)Satendl;/输出到文件for(i=0;iw;i+)/若每个月前面有空的,将其空出,w是指每个月的1号是星期几 coutsetw(8) ;outfilesetw(8) ;/输出到文件for(d=1;d=day;d+,w+)/

21、输出该月的日历,day是指每个月的天数 coutsetw(8)d;outfilesetw(8)d;/输出到文件if(w%7=6)coutendl;outfileendl;/输出到文件coutendl;coutendl;coutendl;outfileendlendlendl;/输出到文件outfile.close();/关闭文件return 0;int second()/第二个功能查询某年某月的日历ofstream outfile(第二个功能.txt,ios:out);int y,m,w,d,i,day;coutym;cout您所查询的内容如下:endl;w=week(y,m);day=md(

22、y,m);coutendl;other(y);couty年m月endl;outfiley年m月endl;printweek();outfilesetw(8)Sunsetw(8)Monsetw(8)Tuessetw(8)Wedsetw(8)Thurssetw(8)Frisetw(8)Satendl;/输出到文件for(i=0;iw;i+)coutsetw(8) ;outfilesetw(8) ;for(d=1;d=day;d+,w+)coutsetw(8)d;outfilesetw(8)d;if(w%7=6)/w%7是判断换行不行的,星期日在第一位 ,星期六在最后一位coutendl;outfi

23、leendl;coutendl;outfileendl;return 0;void third()/第三个功能,查询某年某月某日的信息 /couttiangandizhi()endl;ofstream outfile(第三个功能.txt,ios:out);int y,m,d,n;coutymd;cout您所查询的内容如下:endl;coutendl;n=totaldays(y,m,d);/计算指定日期距今天的天数outfile距离今天还有n天endl;coutendl;outfileendl;int month,day;month=(y+y/4+5-42+26*(m+1)/10+d)%7;/蔡

24、勒公式,用于计算星期几 switch (m) case 1: switch (d) case 1: cout这天是 元旦!; break; break; case 2: switch (d) case 2: cout这天是 世界湿地日!; break; case 14: cout这天是 情人节!; break; break; case 3: switch (d) case 3: cout这天是 全国爱耳日!; break; case 5: cout这天是 青年志愿者服务日!; break; case 8: cout这天是 国际妇女节!; break; case 9: cout这天是 保护母亲河

25、日!; break; case 12: cout这天是 中国植树节!; break; case 14: cout这天是 白色情人节,国际警察日!; break; case 15: cout这天是 世界消费者权益日!; break; case 21: cout这天是 世界森林日,世界睡眠日!; break; case 22: cout这天是 世界水日!; break; case 23: cout这天是 世界气象日!; break; case 24: cout这天是 世界防治结核病日!; break; break; case 4: switch (d) case 1: cout这天是 愚人节!; break; case 5: cout这天可能是 清明节!; break; case 7: cout这天是 世界卫生日!; break; case 22:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁