C万年历实验报告.docx

上传人:b****6 文档编号:5987614 上传时间:2023-01-02 格式: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

C万年历实验报告

《高级语言程序设计》课程设计报告

万年历程序设计

(1)课程设计名称:

C++万年历设计

(2)使用工具软件:

MicrosoftvisualC++

(3)课程设计内容简介

1、以开关语句进行执行功能的选择,这些功能分别是:

A、判断闰年;

B、判断某天是星期几;

C、判断某年的隶属生肖;

D、输出某年的日历;

E、输出某月的日期;

F、退出系统;

2、建立类wnl,定义类的成员函数;

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

boolisleap(intyear);//判断闰年,返回判断结果,用于计算天数

intgetdays(intyear,intmonth,intday);//获取据第一天天数

voidweekdays(intyear,intmonth,intday);//获取星期几

voidprintyear(intyear);//输出年的日历

voidprintyearmonth(intyear,intmonth);//输出某年某月的日历

voidanimal(intyear);//判断某年的生肖

intgetyear(){returnYear;}//返回私有成员的值

intgetmonth(){returnMonth;}

intgetday(){returnDay;}

3、定义私有成员:

intYear,Month,Day;

4、定义类的对象:

_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

#include

#include

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;}//返回私有成员的值

intgetmonth(){returnMonth;}

intgetday(){returnDay;}

private:

intYear,Month,Day;

}_wnl;

voidmain()

{

intchoice,year,month,day;

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

cout<<"设计人:

"<

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

张锦琪\n\n";

loop:

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

╲"<

cout<<"▏判断闰年请按1;▕"<

cout<<"▏判断某天是星期几请按2;▕"<

cout<<"▏判断某年的隶属生肖请按3;▕"<

cout<<"▏输出某年的日历请按4;▕"<

cout<<"▏输出某月的日期请按5;▕"<

cout<<"╲如果您要退出系统请按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:

{

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

";

cin>>year;

_wnl.animal(year);

}break;

case4:

{

cout<<"请输入你要输出的年份xxxx:

";

cin>>year;

_wnl.printyear(year);

}break;

case5:

{

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

";

cin>>year>>month;

_wnl.printyearmonth(year,month);

}break;

default:

cout<<"输入错误"<

}

cout<<"继续查询请输1"<

intx;

cin>>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

printf("%s\n","没有按格式输入");

}

boolwnl:

:

isleap(intyear)

{

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

=0&&year%4==0))

return1;

else

return0;

}

voidwnl:

:

weekdays(intyear,intmonth,intday)

{

if(year>=1000&&year<=9999)

{

if(month<=12&&month>=1)

{

intmax=dayofmonth[month];

if(day>0&&day

{

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

switch(s)

{

case0:

cout<<"Sunday"<

case1:

cout<<"Monday"<

case2:

cout<<"Tuesday"<

case3:

cout<<"Wednesday"<

case4:

cout<<"Thursday"<

case5:

cout<<"Friday"<

case6:

cout<<"Saturday"<

}

}

}

}

else

cout<<"没有按格式输入"<

}

intwnl:

:

getdays(intyear,intmonth,intday)

{

inti,sum=0;

for(i=1;i

{

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

elsesum+=365;

}

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

for(i=1;i

sum+=day;

returnsum;

}

voidwnl:

:

animal(intyear)

{

if(year>=1000&&year<=9999)

{

intn=year%12;

switch(n)

{

case0:

cout<<"该年是猴年"<

case1:

cout<<"该年是鸡年"<

case2:

cout<<"该年是狗年"<

case3:

cout<<"该年是猪年"<

case4:

cout<<"该年是鼠年"<

case5:

cout<<"该年是牛年"<

case6:

cout<<"该年是虎年"<

case7:

cout<<"该年是兔年"<

case8:

cout<<"该年是龙年"<

case9:

cout<<"该年是蛇年"<

case10:

cout<<"该年是马年"<

case11:

cout<<"该年是羊年"<

}

}

else

cout<<"没有按格式输入"<

}

voidwnl:

:

printyear(intyear)

{

if(year>=1000&&year<=9999)

{

cout<<"输入一行输出的月份数:

";

intchoice;

cin>>choice;

ints;

inta[3],b[3];//b数组用来储存每月的天数a数组用来临时储存那一月输出到的日期

cout<<"year:

"<

inti=1;

for(i=1;i<=12/choice;i++)//计算纵向输出几个月

{

for(inth=1;h<=choice;h++)//该循环用于输出横向月份名

{

intm=choice*(i-1)+h;//计算月份

cout<<""<

}

cout<

for(h=1;h<=choice;h++)

cout<<"---------------------";

cout<

for(intj=0;j

{

cout<<"Su"<<"Mo"<<"Tu"<<"We"<<"Th"<<"Fr"<<"Sa"<<"";

}

cout<

for(j=0;j

{

intmonth;

month=choice*(i-1)+j+1;//计算月份

s=getdays(year,month,1);

s=s%7;//获取每月第一天

for(intm=0;m

cout<<"";//输出月前的空

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

b[j]=dayofmonth[month];//月份天数b数组储存一个月的天数

for(inti=1;i<8-s;i++)//从一号开始输出

cout<

(2)<

a[j]=i;//a数组用来储存每一行的日期素材

cout<<"";//两个月份之间的空隙

}

cout<

for(intw=1;w<=5;w++)//一个月最多会在五个星期出现

{

for(j=0;j

{

intw=1;

for(w=1;w<=7;w++,a[j]++)//依次输出日期

{

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

break;

cout<

(2)<

if(w==7)

cout<<"";//输出每两个月之间日期间的空隙

}

for(intn=1;a[j]>b[j],n<=8-w;n++)//月份

cout<<"";

if(a[j]>b[j]&&w!

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

cout<<"";

}

cout<

}

}

}

}

voidwnl:

:

printyearmonth(intyear,intmonth)

{

if(year>=1000&&year<=9999)

{

if(month<=12&&month>=1)

{

cout<<""<

cout<<"----------------------------------------"<

cout<

<<"Wed"<

intnumber=getdays(year,month,1)%7;//第一天就一就相当于有一天了

for(intk=0;k

{cout<

intmax=dayofmonth[month];

for(intj=1;j<=max;j++)

{

cout<

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

cout<

}

cout<

}

}

else

cout<<"没有按格式输入"<

}

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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