C++万年历实验报告文档格式.docx

上传人:b****6 文档编号:18720570 上传时间:2022-12-31 格式:DOCX 页数:17 大小:319.38KB
下载 相关 举报
C++万年历实验报告文档格式.docx_第1页
第1页 / 共17页
C++万年历实验报告文档格式.docx_第2页
第2页 / 共17页
C++万年历实验报告文档格式.docx_第3页
第3页 / 共17页
C++万年历实验报告文档格式.docx_第4页
第4页 / 共17页
C++万年历实验报告文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C++万年历实验报告文档格式.docx

《C++万年历实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《C++万年历实验报告文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

C++万年历实验报告文档格式.docx

_wnl;

5、为类的成员函数填写代码,满足功能实现;

6、运行环境:

控制台应用程序的源程序;

(4)得意之处:

1、可以满足多功能实现,可以循环执行功能;

2、可以选择每行输出的月份数;

3、有欢迎界面;

4、客户输入错误会有提示;

5、使用了C语言的流的形式,判断闰年,提高执行速度;

6、使用I/O流控制头文件iomanip.h控制月份日历的输出,更加整齐;

(5)创意的技术实现

(6)

(7)

(8)

主函数流程

判断某天是周几

判断闰年

获取天数

输出年份

 

(9)课程设计中目前存在的问题:

无法在欢迎页面插入字符画;

(10)设计实践过程中的自我感受

这是我第一次编写如此长的代码,从网上如同大海捞针似的寻找编写方法,看铺天盖地的长代码,还有的程序是错的。

输入的时候,没有小工具。

在看着自己熬通宵打出的代码,一大串的错误,真的有些泄气。

改对了执行输出结果还是错的,只好重新思考算法。

不过通过这次编程我真的学会了好多,比如其他的头文件的功能;

setfil(‘’)设置填充字符;

setw()定义字段长度……也让我真正体会到了编程的作用,爱上了编程。

(11)参考文献:

[1]吕凤翥,《C++语言程序设计》,清华大学出版社。

实验代码:

//万年历

#include<

iostream.h>

stdio.h>

iomanip.h>

intdayofmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

//整形数组用于储存每月的天数

charmonthname[13][5]={"

"

"

Jan"

Feb"

Mar"

Apr"

May"

June"

July"

Aug"

Seb"

Oct"

Nov"

Dec"

};

//字符型数组用于储存月份名第一个数字用于表示字符串数(相当于行)第二个用于表示字符串长度(相当于列)

classwnl

{

public:

voidisleapyear(intyear);

//判断闰年,用于输出判断结果,以流的形式

boolisleap(intyear);

//判断闰年,返回判断结果,用于计算天数

intgetdays(intyear,intmonth,intday);

//获取据第一天天数

voidweekdays(intyear,intmonth,intday);

//获取星期几

voidprintyear(intyear);

//输出年的日历

voidprintyearmonth(intyear,intmonth);

//输出某年某月的日历

voidanimal(intyear);

//判断某年的生肖

intgetyear(){returnYear;

}//返回私有成员的值

private:

}_wnl;

voidmain()

intchoice,year,month,day;

cout<

<

~~欢迎来到万年历查询系统~~"

endl<

endl;

设计人:

天津职业技术师范大学\n\t\t\t设计人:

张锦琪\n\n"

;

loop:

╱请按序号输入您要做的工作:

╲"

▏判断闰年请按1;

▕"

▏判断某天是星期几请按2;

▏判断某年的隶属生肖请按3;

▏输出某年的日历请按4;

▏输出某月的日期请按5;

╲如果您要退出系统请按0;

╱"

cin>

>

choice;

switch(choice)

{

case0:

return;

case1:

cout<

输入一个年份格式如:

xxxx"

cin>

year;

_wnl.isleapyear(year);

break;

case2:

{

cout<

请输入您要查询的天数格式如xxxxxxxx"

cin>

year>

month>

day;

_wnl.weekdays(year,month,day);

}break;

case3:

请输入您要查询的年份格式如xxxx:

_wnl.animal(year);

case4:

请输入你要输出的年份xxxx:

_wnl.printyear(year);

case5:

请输入您要输出的年月,形如xxxxxx:

month;

_wnl.printyearmonth(year,month);

default:

cout<

输入错误"

}

继续查询请输1"

退出查询请输入字符"

intx;

x;

if(x==1)

gotoloop;

voidwnl:

:

isleapyear(intyear)

if(year>

=1000&

&

year<

=9999)

printf("

%s\n"

year%(year%100?

4:

400)?

no"

yes"

);

//以C语言流的形式判断会更快一些,节省内存

else

没有按格式输入"

boolwnl:

isleap(intyear)

if(year%400==0||(year%100!

=0&

year%4==0))

return1;

else

return0;

weekdays(intyear,intmonth,intday)

if(month<

=12&

=1)

intmax=dayofmonth[month];

if(day>

0&

day<

max)

{

ints=getdays(year,month,day)%7;

switch(s)

{

case0:

Sunday"

case1:

Monday"

case2:

Tuesday"

case3:

Wednesday"

case4:

Thursday"

case5:

Friday"

case6:

Saturday"

}

}

}

else

intwnl:

getdays(intyear,intmonth,intday)

inti,sum=0;

for(i=1;

i<

i++)

if(isleap(i))sum+=366;

elsesum+=365;

if(isleap(year))dayofmonth[2]=29;

i++)sum+=dayofmonth[i];

sum+=day;

returnsum;

animal(intyear)

intn=year%12;

switch(n)

case0:

该年是猴年"

break;

case1:

该年是鸡年"

case2:

该年是狗年"

case3:

该年是猪年"

case4:

该年是鼠年"

case5:

该年是牛年"

case6:

该年是虎年"

case7:

该年是兔年"

case8:

该年是龙年"

case9:

该年是蛇年"

case10:

该年是马年"

case11:

该年是羊年"

printyear(intyear)

输入一行输出的月份数:

intchoice;

ints;

inta[3],b[3];

//b数组用来储存每月的天数a数组用来临时储存那一月输出到的日期

year:

"

inti=1;

for(i=1;

=12/choice;

i++)//计算纵向输出几个月

for(inth=1;

h<

=choice;

h++)//该循环用于输出横向月份名

intm=choice*(i-1)+h;

//计算月份

cout<

monthname[m]<

for(h=1;

h++)

---------------------"

for(intj=0;

j<

j++)

Su"

Mo"

Tu"

We"

Th"

Fr"

Sa"

for(j=0;

j++)//这个循环是为了输出第一行,第一行都是单数,所以提出来输

intmonth;

month=choice*(i-1)+j+1;

s=getdays(year,month,1);

s=s%7;

//获取每月第一天

for(intm=0;

m<

s;

m++)

cout<

//输出月前的空

if(isleap(year))dayofmonth[2]=29;

b[j]=dayofmonth[month];

//月份天数b数组储存一个月的天数

for(inti=1;

8-s;

i++)//从一号开始输出

setw

(2)<

//最后那个空是为了让一位数和两位数对齐

a[j]=i;

//a数组用来储存每一行的日期素材

//两个月份之间的空隙

}

for(intw=1;

w<

=5;

w++)//一个月最多会在五个星期出现

for(j=0;

j++)//输出要求个数的月份

intw=1;

for(w=1;

=7;

w++,a[j]++)//依次输出日期

{

if(a[j]>

b[j])//如果那一行的日期数大于该月最大日期则跳出

break;

cout<

a[j]<

if(w==7)

cout<

//输出每两个月之间日期间的空隙

}

for(intn=1;

a[j]>

b[j],n<

=8-w;

n++)//月份

if(a[j]>

b[j]&

w!

=8)//输出月份结束后的空

//为了美观空一行

printyearmonth(intyear,intmonth)

monthname[month]<

----------------------------------------"

setw(6)<

Sun"

Mon"

Two"

setw(6)

<

Wed"

Thur"

Fri"

Sat"

//我觉得输出这个可以定义一个数组,用循环来做,但这样可能会使执行速度变慢

intnumber=getdays(year,month,1)%7;

//第一天就一就相当于有一天了

for(intk=0;

k<

number;

k++)

{cout<

for(intj=1;

=max;

j;

if((number+j)%7==0)//周六换行

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1