C++语言课程设计报告书 万年历.docx

上传人:b****1 文档编号:3249431 上传时间:2023-05-05 格式:DOCX 页数:32 大小:513.99KB
下载 相关 举报
C++语言课程设计报告书 万年历.docx_第1页
第1页 / 共32页
C++语言课程设计报告书 万年历.docx_第2页
第2页 / 共32页
C++语言课程设计报告书 万年历.docx_第3页
第3页 / 共32页
C++语言课程设计报告书 万年历.docx_第4页
第4页 / 共32页
C++语言课程设计报告书 万年历.docx_第5页
第5页 / 共32页
C++语言课程设计报告书 万年历.docx_第6页
第6页 / 共32页
C++语言课程设计报告书 万年历.docx_第7页
第7页 / 共32页
C++语言课程设计报告书 万年历.docx_第8页
第8页 / 共32页
C++语言课程设计报告书 万年历.docx_第9页
第9页 / 共32页
C++语言课程设计报告书 万年历.docx_第10页
第10页 / 共32页
C++语言课程设计报告书 万年历.docx_第11页
第11页 / 共32页
C++语言课程设计报告书 万年历.docx_第12页
第12页 / 共32页
C++语言课程设计报告书 万年历.docx_第13页
第13页 / 共32页
C++语言课程设计报告书 万年历.docx_第14页
第14页 / 共32页
C++语言课程设计报告书 万年历.docx_第15页
第15页 / 共32页
C++语言课程设计报告书 万年历.docx_第16页
第16页 / 共32页
C++语言课程设计报告书 万年历.docx_第17页
第17页 / 共32页
C++语言课程设计报告书 万年历.docx_第18页
第18页 / 共32页
C++语言课程设计报告书 万年历.docx_第19页
第19页 / 共32页
C++语言课程设计报告书 万年历.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++语言课程设计报告书 万年历.docx

《C++语言课程设计报告书 万年历.docx》由会员分享,可在线阅读,更多相关《C++语言课程设计报告书 万年历.docx(32页珍藏版)》请在冰点文库上搜索。

C++语言课程设计报告书 万年历.docx

C++语言课程设计报告书万年历

淮海工学院计算机工程学院

课程设计报告

设计名称:

C++课程设计

姓名:

白文吉

学号:

2011122453

专业班级:

计算机111班

系(院):

计算机工程学院

设计时间:

2012.6.21-2012.6.28

设计地点:

计算机工程学院机房、教室、学生宿舍、图书馆

成绩:

指导教师评语:

 

签名:

年月日

1.课程设计目的

本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《C++程序设计》课程后进行的一次全面的综合练习。

本课程设计的目的和任务:

(1)巩固和加深学生对C++课程的基本知识的理解和掌握;

(2)掌握C++编程和程序调试的基本技能;(3)利用C++进行简单软件设计的基本思路和方法;(4)提高运用C++解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。

本次课程设计利用《C++程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,使学生能够独立完成所布置的任务。

2.课程设计任务与要求:

要求:

1)设计题目、设计要求以及系统功能需求分析;

2)总体设计:

包括模块说明、模块结构图和系统流程图;

3)详细设计:

包括主要功能模块的算法设计思路以及对应的工作流程图;

4)源程序代码及设计成果:

完整源程序清单和设计成果;

5)总结:

调试分析过程描述:

包括测试数据、测试输出结果以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等)包括课程设计过程中的学习体会与收获、对C++和本次课程设计的认识等内容.;

任务:

年历显示

功能要求:

(1)输入一个年份,输出是在屏幕上显示该年的日历。

假定输入的年份在1940-2040年之间。

(2)输入年月,输出该月的日历。

(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。

3.课程设计说明书

 

概要设计

一、模块说明

在本次课程设计中,我主要设计了四大模块,分别是:

查询某年的日历、查询某年某月的日历、查询某年某月某日的信息以及返回。

在“查询某年某月某日的信息”这一模块中又分了三个小模块:

计算指定日期距今天的天数、计算指定日期是星期几、判断是否是公历节日。

四个大模块分别实现四个个功能,每一个模块都是一个函数,用switch语句调用,第三个模块中的三个小模块,每一个也都是一个函数,并列放在第三个大模块中构成第三个大模块。

为了实现界面操作,还运用了清屏和调用自身函数的方法。

二、模块结构图

 

三、系统流程图

 

详细设计

各功能模块设计思路及流程图:

第一个功能:

设计思路:

要想输出一年的日历,首先得解决输出一个月日历的问题,然后用循环输出十二个月份的。

首先提示由键盘输入要显示的年份,得到年份后开始进入循环,定义月份变量m,并赋初值为1(从一月份开始),第一步,进入md()函数判断月份的天数,然后根据进入week()函数根据年月计算出该月一号是星期几,此处用了蔡勒公式,然后输出月份和每周的表头,由循环空出一号前面空的部分,再由另一个循环,加上前面该月天数的判断,就能输出该月的日历,此时一个月的日历输出完毕,进入第二次循环,输出下一个月的日历,知道十二个月份的日历全部输出,循环结束,第一个功能实现。

流程图:

 

第二个功能

设计思路:

第二个功能是第一个功能的一部分,只需要输出一个月的日历,这是月份不是由1开始,而是由键盘输入的,日历输出方法与第一个功能中的方法相似。

流程图:

 

第三个功能

设计思路:

第三个功能里面其实包含三个小功能,先解决简单的两个。

第一个是判断这一天是星期几,由蔡勒公式计算,得到的余数是从0到6,0对应星期日,其他的正好对应,用switch语句,得到余数后,调用对应的输出语句输出。

第二个是判断是否是公历节日,用if、elseif语句,将月和日的数值与if后面括号里面的对照,判断其是否是公历节日。

第三个是要计算距今天多少天,我采用了一种类似比身高的方法,以元年1月1日为起点,分别计算输入的日期距起点的天数和系统日期距起点的天数,然后两个天数相减,得到的数值即是输入的日期距今天的天数,负数指今天前多少天;而要计算指定日期距元年1月1日的天数,又要分为两部分计算:

第一部分:

计算指定日期是该年的第几天

这个计算再分两块,一块是:

这一天所在月之前的几个月的天数之和;另一块是:

这一天是这个月的第几天,这个就是它的号数;两块相加。

第二部分:

计算指定日期这一年前的所有年份的天数之和

这个计算要用循环,因为有闰年和平年之分,所以每次加之前要先判断是否是闰年,然后确定这年是365天还是366天,最后在累加。

这两部分都算出来后相加。

这就需要将计算指定日期距元年1月1日的天数做成一个函数,然后将计算距今天多少天做成一个函数,在后者中调用前者计算。

流程图:

 

 

4.课程设计成果

第一部分:

源代码

#include

#include//文件输出

#include//清屏

#include//控制宽度

#include//这两个头文件是为了调用系统时间的

#include

usingnamespacestd;

intweek(inty,intm);//计算该月一号是星期几

voidprintweek();//输出每周表头

voidprintmonth(intm);//输出每月表头

intleep(inty);//判断该年是否闰年

intmd(inty,intm);//判断该月有多少天

//以下六个函数是第三个功能里的

intdays1(inty,intm,intd);//计算该天时这一年的第几天

intdays2(inty);//判断该年有多少天

intdays3(inty);//计算从元年到该之年前总天数

inttotaldays(inty,intm,intd);//计算指定日期距今天的天数

intfirst();//实现第一个功能

intsecond();//实现第二个功能

voidthird();//实现第三功能

voidjiemian1();//界面1

voidjiemian2();//界面2

intmain()

{

jiemian1();

return0;

}

voidjiemian1()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

system("pause");

system("cls");

jiemian2();

}

voidjiemian2()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<<"请输入您要使用的功能的序号(回车键确认):

";

intn;

cin>>n;

system("cls");

switch(n)

{

case1:

first();break;

case2:

second();break;

case3:

third();break;

case4:

jiemian1();break;

}

cout<

cout<<"点任意键返回主菜单"<

system("pause");

system("cls");

jiemian2();

}

intfirst()//第一个功能

{

ofstreamoutfile("第一个功能.txt",ios:

:

out);//定义文件流对象

inty,m,w,d,i,day;

cout<<"请输入你要查询的年份:

";

cin>>y;

cout<<"您所查询的内容如下:

"<

cout<

cout<

outfile<

for(m=1;m<=12;m++)

{

intm1,y1;

m1=m;

y1=y;

if(m1<3)

{

m1+=12;

y1--;

}

w=week(y1,m1);//计算该月一号是星期几

day=md(y,m);//判断该月有多少天

printmonth(m);//输出月份表头

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)

{

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<

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)

{

cout<

outfile<

}

}

cout<

outfile<

return0;

}

voidthird()//第三个功能

{

ofstreamoutfile("第三个功能.txt",ios:

:

out);

inty,m,d,n;

cout<<"请输入您要查询的年月日:

";

cin>>y>>m>>d;

cout<<"您所查询的内容如下:

"<

cout<

n=totaldays(y,m,d);//计算指定日期距今天的天数

outfile<<"距离今天还有"<

cout<

outfile<

intw1;

w1=(y+y/4+5-42+26*(m+1)/10+d)%7;

switch(w1)

{

case0:

{

cout<<"这一天是星期日"<

outfile<<"这一天是星期日"<

break;

}

case1:

{

cout<<"这一天是星期一"<

outfile<<"这一天是星期一"<

break;

}

case2:

{

cout<<"这一天是星期二"<

outfile<<"这一天是星期二"<

break;

}

case3:

{

cout<<"这一天是星期三"<

outfile<<"这一天是星期三"<

break;

}

case4:

{

cout<<"这一天是星期四"<

outfile<<"这一天是星期四"<

break;

}

case5:

{

cout<<"这一天是星期五"<

outfile<<"这一天是星期五"<

break;

}

case6:

{

cout<<"这一天是星期六"<

outfile<<"这一天是星期六"<

break;

}

}

cout<

outfile<

if(m==1&&d==1)

{

cout<<"这一天是元旦节"<

outfile<<"这一天是元旦节"<

}

elseif(m==2&&d==14)

{

cout<<"这一天是情人节"<

outfile<<"这一天是情人节"<

}

elseif(m==3&&d==8)

{

cout<<"这一天是国际妇女节"<

outfile<<"这一天是国际妇女节"<

}

elseif(m==3&&d==12)

{

cout<<"这一天是中国植树节"<

outfile<<"这一天是中国植树节"<

}

elseif(m==3&&d==14)

{

cout<<"这一天是白色情人节"<

outfile<<"这一天是白色情人节"<

}

elseif(m==3&&d==15)

{

cout<<"这一天是世界消费者权益日"<

outfile<<"这一天是世界消费者权益日"<

}

elseif(m==3&&d==22)

{

cout<<"这一天是世界水日"<

outfile<<"这一天是世界水日"<

}

elseif(m==4&&d==1)

{

cout<<"这一天是愚人节"<

outfile<<"这一天是愚人节"<

}

elseif(m==5&&d==1)

{

cout<<"这一天是国际劳动节"<

outfile<<"这一天是国际劳动节"<

}

elseif(m==5&&d==4)

{

cout<<"这一天是中国青年节"<

outfile<<"这一天是中国青年节"<

}

elseif(m==6&&d==1)

{

cout<<"这一天是国际儿童节"<

outfile<<"这一天是国际儿童节"<

}

elseif(m==7&&d==1)

{

cout<<"这一天是中国共产党诞生日"<

outfile<<"这一天是中国共产党诞生日"<

}

elseif(m==8&&d==1)

{

cout<<"这一天是中国人民解放军建军节"<

outfile<<"这一天是中国人民解放军建军节"<

}

elseif(m==9&&d==10)

{

cout<<"这一天是中国教师节"<

outfile<<"这一天是中国教师节"<

}

elseif(m==10&&d==1)

{

cout<<"这一天是中华人民共和国国庆节"<

outfile<<"这一天是中华人民共和国国庆节"<

}

elseif(m==10&&d==31)

{

cout<<"这一天是万圣节"<

outfile<<"这一天是万圣节"<

}

elseif(m==12&&d==25)

{

cout<<"这一天是圣诞节"<

outfile<<"这一天是圣诞节"<

}

else

{

cout<<"这一天没有公历节日"<

outfile<<"这一天没有公历节日"<

}

cout<

outfile<

}

intweek(inty,intm)

{

intw;

w=(y+y/4+5-42+26*(m+1)/10+1)%7;

return(w);

}

voidprintweek()

{

cout<

<<"Thurs"<

}

voidprintmonth(intm)

{

switch(m)

{

case1:

cout<<"1月份"<

case2:

cout<<"2月份"<

case3:

cout<<"3月份"<

case4:

cout<<"4月份"<

case5:

cout<<"5月份"<

case6:

cout<<"6月份"<

case7:

cout<<"7月份"<

case8:

cout<<"8月份"<

case9:

cout<<"9月份"<

case10:

cout<<"10月份"<

case11:

cout<<"11月份"<

case12:

cout<<"12月份"<

}

}

intleep(inty)

{

if((y%4==0&&y%100!

=0)||y%400==0)

return1;

else

return0;

}

intmd(inty,intm)

{

intd;

switch(m)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

d=31;break;

case4:

case6:

case9:

case11:

d=30;break;

case2:

if(leep(y)==1)d=29;

elsed=28;break;

}

returnd;

}

//以下是第三个功能的函数

intdays1(inty,intm,intd)//计算该天时这一年的第几天(定义部分)

{

inti,sum1=0,day;

for(i=1;i

{

day=md(y,i);

sum1=sum1+day;

}

sum1+=d;

returnsum1;

}

intdays2(inty)

{

intyeardays;

if(leep(y))

yeardays=366;

else

yeardays=365;

returnyeardays;

}

intdays3(inty)//计算从元年到该之年前总天数(定义部分)

{

inti,yeardays;

longsum3=0;

for(i=1;i

{

yeardays=days2(i);

sum3+=yeardays;

}

returnsum3;

}

inttotaldays(inty,intm,intd)//计算指定日期距今天的天数(定义部分)

{

int

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2