2022年课程设计实验报告.. .pdf
《2022年课程设计实验报告.. .pdf》由会员分享,可在线阅读,更多相关《2022年课程设计实验报告.. .pdf(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+课程设计简单万年历制作1 C+语言程序设计课程设计报告设计题目 :简单万年历专业:网络工程班级:12 级姓名:杨茂林学号:121124028 联系方式 : 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 35 页C+课程设计简单万年历制作2 目 录3 2. 设计思想3 3 3 5. 程序源代码11 6. 调试记录30 7. 调试语录33 34 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 35 页C+课程设计简单万年历制作3 简单万年历程序本程序是一个简单的实现时间系统功能
2、的万年历程序,此程序是为了遵循用户的意愿与指示对用户输入的日期进行简单的处理,输出所要查询的日期的信息,如:当时的时间,年月日,生肖,天干地支,以及输出所要查询的日期日历并以日历形式排列出来。设计目标本程序有以下目标要实现:用户可以进行选择, 是要进行万年历时间校对系统还是万年历的查询系统,用户可以随时退出系统;:显示本地时间, 并征询用户的意见是否要进行时间调整,如果进行了时间调整,要输出调整后的时间;:查询某年的万年历,并输出当年的年历,并显示所要查询的年份,显示出一年的日历、当年的天干地支、生肖、并判断是否为闰年;:将的功能具体到月份;: 将的功能具体到日, 并判断出用户所要查询的日期当
3、天是什么节日,以及用户所要查询的节日距今天有多少天;:用户多次进行输入,知道用户满意为止。本程序中,因为要用到万年历的时间校对系统,所以,在设计的时候,我定义了一个时间类: clock 类;由于系统要同步到本地的时间即为运行时电脑上显示的时间,这里用到了struct time 结构体,接下来就是万年历的查询系统功能里面的函数, 这些函数要实现的有指导用户进行操作的选项的界面,有计算该月的 1 号是星期几的函数,有输出每周即每月的表头函数、判断是否为闰年、判断每个月有多少天、 要查询的那天距今天有多少天、 判断所要查询的年份有多少天、计算指定日期距今天有多少天等函数。其中,共含一个主函数文件、三
4、个功能文件、一个功能函数头文件、界面文件以及时钟类文件。其中,功能函数是主要的函数实现部分,时钟类则主要是实现万年历时间系统。在此只涉及部分函数的实现细节,其他函数详看程序源代码:本程序中,我只设计了一个clock 类,类里面有实现时间系统校对功能的私有量,在进行时间校对的过程中, 我选择了重载的方法, 以到达自己想要的结果。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 35 页C+课程设计简单万年历制作4 函数部分的实现则是比较普通的,没有什么特殊的地方。其中有如下函数需要实现:int week(int y,int m);/计算该月
5、一号是星期几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 days2(int y);/判断该年有多少天int days3(int y);/计算从元年到该之年前总天数int totaldays(int y,int m,int d);/计算指定日期距今天的天数int yi();/ 实现万年历的
6、时间校对功能int er();/进入万年历的系统功能int first();/ 实现第一个功能int second();/实现第二个功能void third();/ 实现第三功能/int tiangandizhi(); int jiemian1();/界面 1 int jiemian2(); 在 jiemian(),int md()及 void third()的实现过程中,我选用了switch-case 套用switch-case语句;在 int week()函数中,我采用了蔡勒公式用于计算每个月的星期一是多少,其他函数的实现详看源代码。在这个程序设计中, 有好多知识是我以前没有接触过得,这一
7、点还是比较欣慰的吧,例如, system “pause ” 有着清屏作用,还有就是计算每个月的1 号是星期几的问题以及程序运行后背景与字体颜色的变换要用到system “color” , 9b精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 35 页C+课程设计简单万年历制作5 开始进入欢送页面选择相应的系统功能按任意键继续进行1. 万年历时间校对功能2. 万年历时间查询功能3. 退出时间校对的实现万年历三个查询功能的实现显示结果按任意键继续进行精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第
8、5 页,共 35 页C+课程设计简单万年历制作6 万年历时间校对系统的实现显示当地时间是否要进行时间调整按 y 任意键调大还是调小按 m 要增加的小时的个要增加的分钟的个要增加的秒的个数按 n 要减少的小时的个要减少的分钟的个要减少的秒的个数显示结果时间校对系统结束精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 35 页C+课程设计简单万年历制作7 万年历的三个查询系统功能的实现1. 查询某年的日历2 查询某年某月的日历3. 查询某年某月某日的日历输入要查询的年份输入要查询的年月输入要查询的年月日显示结果点任意键返回精选学习资料 - -
9、 - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 35 页C+课程设计简单万年历制作8 查询系统的第一个功能界面输入要查询的月份输出所要查询的年份的天干地支,生肖,是否为闰年定义月份变量m,并付初始值m=1 判断该月天数根据年月由蔡勒公式计算出该月1 号是星期几输出月份和每周的表头用循环输出前面空白的部分用循环输出该月的日历m=12 m+ 第一个功能结束精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 35 页C+课程设计简单万年历制作9 用循环输出该月的日历第二个功能结束查询系统的第二个功能界面输入要
10、查询的年月输出所要查询的年份的天干地支,生肖,是否为闰年判断该月天数根据年月由蔡勒公式计算出该月1 号是星期几输出月份和每周的表头用循环输出前面空白的部分精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 35 页C+课程设计简单万年历制作10 距今天多少天判断该日期是星期几判断该日期是不是公历节日输入的日期距元年1月 1 日的天数系统的日期距元年1 月 1日的天数蔡勒公式计算,并用 switch 语句判断余数,输出对应的语句用 switch语句判断是否为公历节日, 并输出对应的语句第三个功能结束查询系统的第三个功能界面输入要查询的年月日输
11、出所要查询的年份的天干地支,生肖,是否为闰年精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 35 页C+课程设计简单万年历制作11 #include #include/文件输出#include/清屏#include/控制宽度#include /这两个头文件是为了调用系统时间的#include #include #include using namespace std; int week(int y,int m);/计算该月一号是星期几void printweek();/输出每周表头void printmonth(int m);/ 输出
12、每月表头int leep(int y);/判断该年是否闰年int md(int y,int m);/ 判断该月有多少天void 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();/ 实现
13、第一个功能int second();/实现第二个功能void third();/ 实现第三功能/int tiangandizhi(); int jiemian1();/ 界面 1 int jiemian2(); int jiemian() system(cls); system(color 9d);/控制程序背景和字体的颜色, 均为 16 进制,9 背景颜色,d 字体颜色coutsetw(6) =endl; coutsetw(6) =endl; coutsetw(6) -精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 35 页C+课程
14、设计简单万年历制作12 -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) *.1.万年历的时间校对系统 .* endl; coutsetw(6) *.2.万年历的查询系统.* endl; coutsetw(6) * *.0. 退 出
15、 .* * 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; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 35 页C+课程设计简单万年历制作13 class Clock publ
16、ic: 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,now); istringstream inp
17、ut5(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; while(b-) myclock+; cout请输入要增加分钟的个数:; coutc; c*=
18、60; while(c-) myclock+; cout请输入要增加的秒数: ; coutd; while(d-) myclock+; myclock.showtime(); system(pause); else if(i=n) coutb; b*=3600; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 35 页C+课程设计简单万年历制作15 while(b-) myclock-; coutc; c*=60; while(c-) myclock-; coutd; while(d-) myclock-; myclock.showt
19、ime(); system(pause); else 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; cout
20、setw(6) 二现在进入万年历查询系系统endl; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 35 页C+课程设计简单万年历制作16 coutsetw(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)
21、 =endl; coutsetw(6) endl; coutsetw(6) 系 统 功 能endl; coutsetw(6) 1、 查 询某 年 的 日 历endl; coutsetw(6) 2、查询某年某月的日历endl; coutsetw(6) 3、查询某年某月某日的信息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();bre
22、ak; case 4:jiemian();break; default:cout输入有误,请重新输入 endl; while(n4); coutendl; cout点任意键返回主菜单 endl; system(pause); system(cls); jiemian(); int first()/ 第一个功能,查询某年的日历 ofstream outfile(第一个功能 .txt,ios:out);/定义一个文件输出流对象outfile int y,m,w,d,i,day; couty; cout您所查询的内容如下: endl; coutendl; couty年日历 endl; other(y
23、); 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(y,m);/调用 md 函数,判断该月有多少天printmonth(m);/调用 printmonth 函数,输出月份表头outfilem 月份endl;/输出到文件printweek();/输出每周表头精选学习资料 - - - - - - -
24、 - - 名师归纳总结 - - - - - - -第 17 页,共 35 页C+课程设计简单万年历制作18 outfilesetw(8)Sunsetw(8)Monsetw(8)Tuessetw(8)Wed setw(8)Thurssetw(8)Frisetw(8)Satendl; /输出到文件for(i=0;iw;i+)/ 假设每个月前面有空的,将其空出,w 是指每个月的 1号是星期几 coutsetw(8) ; outfilesetw(8) ;/ 输出到文件 for(d=1;d=day;d+,w+)/ 输出该月的日历, day是指每个月的天数 coutsetw(8)d; outfileset
25、w(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(y,m); coutendl; other(y);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年课程设计实验报告. 2022 课程设计 实验 报告
限制150内