课程设计实验报告万年历.docx
- 文档编号:8969391
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:45
- 大小:440.79KB
课程设计实验报告万年历.docx
《课程设计实验报告万年历.docx》由会员分享,可在线阅读,更多相关《课程设计实验报告万年历.docx(45页珍藏版)》请在冰豆网上搜索。
课程设计实验报告万年历
《C++语言程序设计》
课程设计报告
设计题目:
简单万年历
专业:
网络工程
班级:
12级
姓名:
杨茂林
学号:
121124028
联系方式:
……………………………………………3
2.设计思想……………………………………………3
……………………………………3
…………………………………………3
5.程序源代码…………………………………………11
6.调试记录……………………………………………30
7.调试语录……………………………………………33
…………………………………………………34
简单万年历程序
本程序是一个简单的实现时间系统功能的万年历程序,此程序是为了遵循用户的意愿与指示对用户输入的日期进行简单的处理,输出所要查询的日期的信息,如:
当时的时间,年月日,生肖,天干地支,以及输出所要查询的日期日历并以日历形式排列出来。
设计目标
本程序有以下目标要实现
:
用户可以进行选择,是要进行万年历时间校对系统还是万年历的查询系统,用户可以随时退出系统;
:
显示本地时间,并征询用户的意见是否要进行时间调整,如果进行了时间调整,要输出调整后的时间;
:
查询某年的万年历,并输出当年的年历,并显示所要查询的年份,显示出一年的日历、当年的天干地支、生肖、并判断是否为闰年;
:
将
的功能具体到月份;
:
将
的功能具体到日,并判断出用户所要查询的日期当天是什么节日,以及用户所要查询的节日距今天有多少天;
:
用户多次进行输入,知道用户满意为止。
本程序中,因为要用到万年历的时间校对系统,所以,在设计的时候,我定义了一个时间类:
clock类;由于系统要同步到本地的时间〔即为运行时电脑上显示的时间〕,这里用到了structtime结构体,接下来就是万年历的查询系统功能里面的函数,这些函数要实现的有指导用户进行操作的选项的界面,有计算该月的1号是星期几的函数,有输出每周即每月的表头函数、判断是否为闰年、判断每个月有多少天、要查询的那天距今天有多少天、判断所要查询的年份有多少天、计算指定日期距今天有多少天等函数。
其中,共含一个主函数文件、三个功能文件、一个功能函数头文件、界面文件以及时钟类文件。
其中,功能函数是主要的函数实现部分,时钟类则主要是实现万年历时间系统。
在此只涉及部分函数的实现细节,其他函数详看程序源代码:
本程序中,我只设计了一个clock类,类里面有实现时间系统校对功能的私有量,在进行时间校对的过程中,我选择了重载的方法,以到达自己想要的结果。
函数部分的实现则是比较普通的,没有什么特殊的地方。
其中有如下函数需要实现:
intweek(inty,intm);//计算该月一号是星期几
voidprintweek();//输出每周表头
voidprintmonth(intm);//输出每月表头
intleep(inty);//判断该年是否闰年
intmd(inty,intm);//判断该月有多少天
voidother(intyear);
intdays1(inty,intm,intd);//计算该天时这一年的第几天
intdays2(inty);//判断该年有多少天
intdays3(inty);//计算从元年到该之年前总天数
inttotaldays(inty,intm,intd);//计算指定日期距今天的天数
intyi();//实现万年历的时间校对功能
inter();//进入万年历的系统功能
intfirst();//实现第一个功能
intsecond();//实现第二个功能
voidthird();//实现第三功能
//inttiangandizhi();
intjiemian1();//界面1
intjiemian2();
在jiemian(),intmd()及voidthird()的实现过程中,我选用了switch-case套用switch-case语句;在intweek()函数中,我采用了蔡勒公式用于计算每个月的星期一是多少,其他函数的实现详看源代码。
在这个程序设计中,有好多知识是我以前没有接触过得,这一点还是比较欣慰的吧,例如,system〔“pause”〕有着清屏作用,还有就是计算每个月的1号是星期几的问题以及程序运行后背景与字体颜色的变换要用到system〔“color”,9b〕
#include
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
intweek(inty,intm);//计算该月一号是星期几
voidprintweek();//输出每周表头
voidprintmonth(intm);//输出每月表头
intleep(inty);//判断该年是否闰年
intmd(inty,intm);//判断该月有多少天
voidother(intyear);
//以下六个函数是第三个功能里的
intdays1(inty,intm,intd);//计算该天时这一年的第几天
intdays2(inty);//判断该年有多少天
intdays3(inty);//计算从元年到该之年前总天数
inttotaldays(inty,intm,intd);//计算指定日期距今天的天数
intyi();//实现万年历的时间校对功能
inter();//进入万年历的系统功能
intfirst();//实现第一个功能
intsecond();//实现第二个功能
voidthird();//实现第三功能
//inttiangandizhi();
intjiemian1();//界面1
intjiemian2();
intjiemian()
{
system("cls");
system("color9d");//控制程序背景和字体的颜色,均为16进制,9背景颜色,d字体颜色
cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout<<"请输入您要使用的功能的序号〔回车键确认〕: "; cout< intn; cin>>n; switch(n) { case1: yi();break; case2: er();break; case0: exit(0); } system("pause"); system("cls"); return0; } classClock{ public: Clock(inta=0,intb=0,intc=0): hour(a),minute(b),second(c){} voidsettime(inta=0,intb=0,intc=0){ hour=a; minute=b; second=c; } voidshowtime(){ cout<<"现在时间为"< "< "< cout< voidoperator++(int){ second++; if(second==60){ second=0; minute++;} if(minute==60){ minute=0; hour++;} if(hour==24) hour=0;} voidoperator--(int){ second--; if(second==-1){ second=59; minute--;} if(minute==-1){ minute=59; hour--;} if(hour==-1) hour=23;} private: inthour,minute,second;}; intyi(){ chara,i,temp[30]; intb,c,d,shi,fen,miao; time_tt; time(&t); structtm*now;//tm结构体,得到本地时间 now=localtime(&t); strftime(temp,30,"%H",now); istringstreaminput3(temp); input3>>shi; strftime(temp,30,"%M",now); istringstreaminput4(temp); input4>>fen; strftime(temp,30,"%S",now); istringstreaminput5(temp); input5>>miao; Clockmyclock; myclock.settime(shi,fen,miao); myclock.showtime(); cout<<"是否要调整时间,如果是请按y,按其他键继续返回主菜单"< cout< a=getch(); if(a=='y'){ cout<<"请问是要将现在的时间调大还是调小,如果调大请按m,否者按n"< do{ i=getch(); if(i=='m'){ cout<<"请输入要增加小时的个数: "; cout< cin>>b; b*=3600; while(b--) myclock++; cout<<"请输入要增加分钟的个数: "; cout< cin>>c; c*=60; while(c--) myclock++; cout<<"请输入要增加的秒数: "; cout< cin>>d; while(d--) myclock++; myclock.showtime(); system("pause"); } elseif(i=='n'){ cout<<"请输入要减少小时的个数: "; cin>>b; b*=3600; while(b--) myclock--; cout<<"请输入要减少分钟的个数: "; cin>>c; c*=60; while(c--) myclock--; cout<<"请输入要减少的秒数: "; cin>>d; while(d--) myclock--; myclock.showtime(); system("pause"); } elsecout<<"输入有误,请重新输入"< }while(i! ='m'&&i! ='n'); } jiemian(); } inter(){ cout< cout< } intmain(){ cout< cout< system("cls"); return0; } intjiemian1() { cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< system("pause"); system("cls"); jiemian2(); } intjiemian2() { cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout<<"请输入您要使用的功能的序号〔回车键确认〕: "; intn; do{ cin>>n; switch(n) { case1: first();break; case2: second();break; case3: third();break; case4: jiemian();break; default: cout<<"输入有误,请重新输入"< }}while(n<1||n>4); cout< cout<<"点任意键返回主菜单"< system("pause"); system("cls"); jiemian(); } intfirst()//第一个功能,查询某年的日历 { ofstreamoutfile("第一个功能.txt",ios: : out);//定义一个文件输出流对象outfile inty,m,w,d,i,day; cout<<"请输入你要查询的年份: "; cin>>y; cout<<"您所查询的内容如下: "< cout< cout< other(y); outfile< for(m=1;m<=12;m++) { intm1,y1;//m1是指月份,y1是指年份 m1=m; y1=y; if(m1<3) { m1+=12; y1--; }//在蔡勒公式中,某年的1,2月份要看作是上一年的13,14月份 w=week(y1,m1);//调用week函数,计算该月一号是星期几 day=md(y,m);//调用md函数,判断该月有多少天 printmonth(m);//调用printmonth函数,输出月份表头 outfile< printweek();//输出每周表头 outfile< setw(8)<<"Thurs"< //输出到文件 for(i=0;i { cout< outfile< } for(d=1;d<=day;d++,w++)//输出该月的日历,day是指每个月的天数 { cout< outfile< if(w%7==6) { cout< outfile< } } cout< cout< cout< outfile< } outfile.close();//关闭文件 return0; } intsecond()//第二个功能查询某年某月的日历 { ofstreamoutfile("第二个功能.txt",ios: : out); inty,m,w,d,i,day; cout<<"请输入你要查询的年月: "; cin>>y>>m; cout<<"您所查询的内容如下: "< w=week(y,m); day=md(y,m); cout< other(y); cout< outfile< printweek(); outfile< setw(8)<<"Thurs"< //输出到文件 for(i=0;i { cout< outfile< } for(d=1;d<=day;d++,w++) { cout< outfile< if(w%7==6)//w%7是判断换行不行的,星期日在第一位,星期六在最后一位 { cout< outfile< } } cout< outfile< return0; } voidthird()//第三个功能,查询某年某月某日的信息 { //cout< ofstreamoutfile("第三个功能.txt",ios: : out); inty,m,d,n; cout<<"请输入您要查询的年月日: "; cin>>y>>m>>d; cout<<"您所查询的内容如下: "< cout< n=totaldays(y,m,d);//计算指定日期距今天的天数 outfile<<"距离今天还有"< cout< outfile< intmonth,day; month=(y+y/4+5-42+26*(m+1)/10+d)%7;//蔡勒公式,用于计算星期几 switch(m) { case1: switch(d) { case1: cout<<"这天是元旦! "; break; } b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 实验 报告 万年历