课程设计实验报告(万年历)..

上传人:彩*** 文档编号:77200495 上传时间:2022-04-19 格式:DOC 页数:35 大小:749KB
收藏 版权申诉 举报 下载
课程设计实验报告(万年历).._第1页
第1页 / 共35页
课程设计实验报告(万年历).._第2页
第2页 / 共35页
课程设计实验报告(万年历).._第3页
第3页 / 共35页
资源描述:

《课程设计实验报告(万年历)..》由会员分享,可在线阅读,更多相关《课程设计实验报告(万年历)..(35页珍藏版)》请在装配图网上搜索。

1、资料收集于网络如有侵权请联系网站删除谢谢 C+语言程序设计课程设计报告设计题目 :简单万年历专业: 网络工程班级:12 级姓名: 杨茂林学号:121124028联系方式精品文档资料收集于网络如有侵权请联系网站删除谢谢目 录1.32.33.34.35.116.307.338.34精品文档资料收集于网络如有侵权请联系网站删除谢谢简单万年历程序1.1 设计题目描述本程序是一个简单的实现时间系统功能的万年历程序,此程序是为了遵循用户的意愿与指示对用户输入的日期进行简单的处理, 输出所要查询的日期的信息,如:当时的时间,年月日,生肖,天干地支,以及输出所要查询的日期日历并以日历形式排列出来。1.2 设计

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

3、类;由于系统要同步到本地的时间(即为运行时电脑上显示的时间),这里用到了 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);/ 判断该月有多少天v

5、oid other(int year);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

6、jiemian1();/ 界面 1int jiemian2();在 jiemian() ,int md()及 void third() 的实现过程中,我选用了switch-case 套用switch-case 语句;在 int week()函数中,我采用了蔡勒公式用于计算每个月的星期一是多少,其他函数的实现详看源代码。1.3 在这个程序设计中,有好多知识是我以前没有接触过得,这一点还是比较欣慰的吧,例如, system(“ pause”)有着清屏作用,还有就是计算每个月的1 号是星期几的问题以及程序运行后背景与字体颜色的变换要用到 system (“color”, 9b)4.程序流程图精品文档

7、资料收集于网络如有侵权请联系网站删除谢谢开始进入欢迎页面选择相应的系统功能按任意键继续进行1.2.3.万万退年年出历历时时间间校查对询功功能能时万间年校历对三的个实查现询功能的实现显示结果按任意键继续进行精品文档资料收集于网络如有侵权请联系网站删除谢谢万年历时间校对系统的实现显示当地时间是否要进行时间调整按 y按 m调大还是调小要增加的小时的个要增加的分钟的个要增加的秒的个数显示结果时间校对系统结束任意键按 n要减少的小时的个要减少的分钟的个要减少的秒的个数精品文档资料收集于网络如有侵权请联系网站删除谢谢万年历的三个查询系统功能的实现1.23.查查查询询询某某某年年年的某某日月月历的某日日点任

8、意键返回历的日历输入要查询的输入要查询输入要查询年份的年月的年月日显示结果精品文档资料收集于网络如有侵权请联系网站删除谢谢查询系统的第一个功能界面输入要查询的月份输出所要查询的年份的天干地支,生肖,是否为闰年定义月份变量m,并付初始值m=1判断该月天数m+根据年月由蔡勒公式计算出该月1 号是星期几输出月份和每周的表头用循环输出前面空白的部分用循环输出该月的日历m=12第一个功能结束精品文档资料收集于网络如有侵权请联系网站删除谢谢查询系统的第二个功能界面输入要查询的年月输出所要查询的年份的天干地支,生肖,是否为闰年判断该月天数根据年月由蔡勒公式计算出该月1 号是星期几输出月份和每周的表头用循环输

9、出前面空白的部分用循环输出该月的日历第二个功能结束精品文档资料收集于网络如有侵权请联系网站删除谢谢查询系统的第三个功能界面输入要查询的年月日输出所要查询的年份的天干地支,生肖,是否为闰年距今天多少天判断该日期是星期几判断该日期是不是公历节日输入的日期距元年 1蔡勒公式计算,用 switch语句判断是月 1 日的天数系统并用 switch 语句否为公历节日, 并输出的日期距元年 1 月 1判断余数,输出对应的语句日的天数对应的语句第三个功能结束精品文档资料收集于网络如有侵权请联系网站删除谢谢5.程序源代码#include#include/文件输出#include/清屏#include/控制宽度#

10、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);/以下六个函数是第三个功能里的int days1(int y,int m,int d);/ 计算该天时这一年的第几天 int

11、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();int jiemian()system(cls);system(color

12、 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;coutsetw(6) *-该万年历有以下功能供您选择-*endl;coutsetw(6)endl;co

13、utsetw(6) * *.1.万年历的时间校对系统 .* *endl;coutsetw(6) *.2. 万年历的查询系统. * endl;coutsetw(6) * *.0. 退出 .* * endl;coutsetw(6) . endl;coutsetw(6)=WvWvW WvWvW=endl;coutendlendl;cout请输入您要使用的功能的序号(回车键确认) : ; coutn;switch(n)case 1:yi();break;case 2:er();break;case 0:exit(0);system(pause);system(cls);return 0;精品文档资料收

14、集于网络如有侵权请联系网站删除谢谢class Clockpublic: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);input4fen;strftime(temp,30,%S,n

15、ow);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;doi=getch();if(i=m)cout请输入要增加小时的个数:;coutb;b*=3600;while(b-)myclock+;cout请输入要增加分钟的个数:;coutc;c*=

16、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 cout输入有误,请重新输入endl;while(i!=m&i!=n);jiemian();i

17、nt er()coutjiemian1()endl;coutjiemian2()endl;intmain()coutjiemian()endl;/ 调用 jiemian 函数,到达页面 coutyi()endl;system(cls);return 0;int jiemian1()coutendlendl;coutsetw(6)=endl;coutsetw(6)*endl;coutsetw(6) endl;coutsetw(6) (二)现在进入万年历查询系系统 endl;精品文档资料收集于网络如有侵权请联系网站删除谢谢coutsetw(6) endl;coutsetw(6) 该系统有以下功能可

18、供您选择 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、查询某年某月某日的信息 endl;coutsetw(6) 4

19、 、 返 回 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 first()/ 第一个功能,查询某年的日历ofstream ou

20、tfile(第一个功能 .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 函数,计算该月一号是星期几day=md

21、(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) ;

22、/ 输出到文件for(d=1;d=day;d+,w+)/ 输出该月的日历, 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

23、您所查询的内容如下: endl;w=week(y,m);day=md(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;out

24、filesetw(8)d;if(w%7=6)/w%7是判断换行不行的 ,星期日在第一位,星期六在最后一位coutendl;outfileendl;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;c

25、outendl;outfileendl;int month,day;month=(y+y/4+5-42+26*(m+1)/10+d)%7;/ 蔡勒公式,用于计算星期几 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

26、这天是青年志愿者服务日! ;break;case 8:cout这天是国际妇女节! ;break;case 9:cout这天是保护母亲河日! ;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这

27、天是世界防治结核病日! ;break;break;case 4:switch (d)case 1:cout这天是愚人节! ;break;case 5:cout这天可能是清明节! ;break;case 7:cout这天是世界卫生日! ;break;case 22:cout这天是世界地球日! ;break;case 26:cout这天是世界知识产权日! ;break;break;case 5:switch (d)case 1:cout这天是国际劳动日! ;break;case 3:cout这天是世界哮喘日! ;break;case 4:cout这天是中国青年节! ;break;精品文档资料收集于

28、网络如有侵权请联系网站删除谢谢case 8:cout这天是世界红十字日! ;break;case 12:cout这天是国际护士节! ;break;case 15:cout这天是国际家庭日! ;break;case 17:cout这天是世界电信日! ;break;case 20:cout这天是全国学生营养日! ;break;case 23:cout这天是国际牛奶日! ;break;case 24:cout这天是世界防治结核病日! ;break;break;case 6:switch (d)case 1:cout这天是国际儿童节! ;break;case 5:cout这天是世界环境日! ;brea

29、k;case 6:cout这天是全国爱眼日! ;break;case 17:cout这天是世界防治荒漠化和干旱日!;break;case 23:cout这天是国际奥林匹克日! ;break;case 25:cout这天是全国土地日! ;break;精品文档资料收集于网络如有侵权请联系网站删除谢谢case 26:cout这天是国际禁毒日! ;break;break;case 7:switch (d)case 1:cout这天是 中国共产党诞生日,国际建筑日! ; break;case 7:cout这天是中国人民抗日战争纪念日!;break;case 11:cout这天是世界人口日! ;break

30、;break;case 8:switch (d)case 1:cout这天是中国人民解放军建军节!;break;case 12:cout这天是国际青年节! ;break;break;case 9:switch (d)case 8:cout这天是国际扫盲日! ;break;case 10:cout这天是中国教师节! ;break;case 16:cout这天是中国脑健康日,国际臭氧层保护日。! ;break;case 20:cout这天是全国爱牙日! ;精品文档资料收集于网络如有侵权请联系网站删除谢谢break;case 21:cout这天是世界停火日! ;break;case 27:cout这

31、天是世界旅游日! ;break;break;case 10:switch (d)case 1:cout这天是中华人民共和国国庆节,国际音乐节,;cout国际老年人日! ;break;case 4:cout这天是世界动物日! ;break;case 5:cout这天是世界教师日! ;break;case 8:cout这天是全国高血压日! ;break;case 9:cout这天是世界邮政日! ;break;case 10:cout这天是世界精神卫生日! ;break;case 14:cout这天是世界标准日! ;break;case 15:cout这天是 国际盲人节,世界农村妇女日! ; bre

32、ak;case 16:cout这天是世界粮食日! ;break;case 17:cout这天是国际消除贫困日! ;break;精品文档资料收集于网络如有侵权请联系网站删除谢谢case 24:cout这天是联合国日,世界发展新闻日!;break;case 28:cout这天是中国男性健康日! ;break;case 29:cout这天是国际生物多样性日! ;break;case 31:cout这天是万圣节! ;break;break;case 11:switch (d)case 8:cout这天是中国记者节! ;break;case 9:cout这天是消防宣传日! ;break;case 14:

33、cout这天是世界糖尿病日! ;break;case 17:cout这天是国际大学生节! ;break;case 25:cout这天是国际消除对妇女的暴力日!;break;break;case 12:switch (d)case 1:cout这天是世界艾滋病日! ;break;case 3:cout这天是世界残疾人日! ;break;case 4:精品文档资料收集于网络如有侵权请联系网站删除谢谢cout这天是全国法制宣传日! ;break;case 9:cout这天是世界足球日! ;break;case 25:cout这天是圣诞节! ;break;case 29:cout这天是国际生物多样性!

34、 ;break;break;coutendl;outfileendl;/int tiangandizhi()/class date/public:/int other(int year,int month,int day);/判断本年的干支纪年,生肖,是否闰年。/ private:/bool check();/判断是否输入的日期有误,若有则返回1,否则返回 0。/int year;/int month;/int day;/;int leep(int y)/ 闰年的判断if(y%4=0&y%100!=0)|y%400=0)return 1;elsereturn 0;void other(int

35、year)/判断本年的干支纪年,生肖,是否闰年,星期。string tian_gan10= 甲, 乙, 丙 , 丁, 戊, 己 , 庚,精品文档资料收集于网络如有侵权请联系网站删除谢谢辛,壬, 癸;string di_zhi12= 子, 丑 , 寅 , 卯, 辰 , 巳, 午, 未, 申,酉,戌, 亥;string sheng_xiao32= 鼠 , 牛, 虎, 兔 , 龙, 蛇,马,羊,猴, 鸡,狗,猪;string xing_qi7= 日, 一 , 二 , 三, 四 , 五 , 六;int years=year-1924;/1924甲子年,鼠年, 1 月 1 日是星期二。int n_di_

36、zhi=years%12;/获得不够一个地支周期的天数。int n_tian_gan=years%10;/获得不够一个天干周期的天数。if(n_di_zhi0)n_di_zhi=12+n_di_zhi;if(n_tian_gan0)n_tian_gan=10+n_tian_gan;coutsetw(12)tian_gann_tian_gandi_zhin_di_zhi 年;coutsetw(12)sheng_xiaon_di_zhi年;if(leep(year)coutsetw(12)闰年 ;elsecoutsetw(12)平年 ;coutendl;int week(int y,int m)int w;w=(y+y/4+5-42+26*(m+1)/10+1)%7;return(w);void printweek()coutsetw(8)Sunsetw(8)Monsetw(8)Tuessetw(8)Wedsetw(8)Thurssetw(8)Frisetw(8)Satendl;void printmonth(int m)switch(m)精品文档资料收集于网络如有侵权请联系网站删除谢谢case 1:cout1月份 endl;break;case 2:cout

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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