C++课程设计.docx

上传人:b****3 文档编号:3947212 上传时间:2022-11-26 格式:DOCX 页数:13 大小:618.58KB
下载 相关 举报
C++课程设计.docx_第1页
第1页 / 共13页
C++课程设计.docx_第2页
第2页 / 共13页
C++课程设计.docx_第3页
第3页 / 共13页
C++课程设计.docx_第4页
第4页 / 共13页
C++课程设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C++课程设计.docx

《C++课程设计.docx》由会员分享,可在线阅读,更多相关《C++课程设计.docx(13页珍藏版)》请在冰豆网上搜索。

C++课程设计.docx

C++课程设计

信息科学与技术学院

《程序设计基础》课程设计报告

 

题目名称:

一个万年历系统

学生姓名:

刘文斌

学号:

2012708042

专业班级:

12计双

指导教师:

高攀

 

二零一二年六月十二日

目录

1课程设计题目与要求1

1.1问题描述(功能要求):

1

1.2问题的解决方案:

1

1.3其它要求:

1

2总体设计2

2.1实现的功能2

2.2结构模块分析2

3详细设计3

3.1设计程序流程图3

3.2模块详细设计4

3.2.1判断是否是闰年4

3.2.2输入要查询年份和日期4

3.2.3查询某日期的星期数5

3.2.4日历表的输出7

4运行结果截图8

参考文献:

10

附录:

源程序代码11

 

1课程设计题目与要求

C++题目七:

编写一万年历系统

1.1问题描述(功能要求):

要求:

模仿现实生活中的挂历。

当前页以系统当前日期的月份为准可以显示某年的万年历(显示出日及对应的星期几)。

可以查询某天的星期数。

1.2问题的解决方案:

根据系统功能要求,可以将问题解决分为以下步骤:

(1)分析系统中的各个实体之间的关系及其属性和行为;

(2)根据问题描述,设计系统的类层次;

(3)完成类层次中各个类的描述(包括属性和方法);

(4)完成类中各个成员函数的定义;

(5)完成系统的应用模块;

(6)功能调试;

(7)完成系统总结报告以及系统使用说明书。

1.3其它要求:

(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读

(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)

(3)学生可自动增加新功能模块

 

2总体设计

2.1实现的功能

简易万年历主要实现以下几个功能:

1能够显示实现任一年的日期,包括星期;

2在输入年份后,出现当年的简易万年历;

3能够分21列显示,按照星期形式出现;

4采用图形界面,符合日常使用规范;

5能查询任意天的星期数

2.2结构模块分析

 

万年历分两大部分:

查询输入部分和结果显示部分。

查询输入部分包一个文本框,用于输入年份。

当输入完成后,用户图形界面出现相应年月简易的日历表,并且是以星期的格式出现。

 

3详细设计

3.1设计程序流程图

3.2模块详细设计

3.2.1判断是否是闰年

intDate:

:

isleapyear()

{

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

=0||year%400==0)

return1;

else

return0;

}

在此运用了一个if函数判断是否是闰年,if语句一种可跳过不符合条件的语句,继续下面的语句的执行。

它具有很强的实用性。

在实际的操作中经常会用到的,是一个很重要的知识。

3.2.2输入要查询年份和日期

voidDate:

:

getyear()

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

";

cin>>year;

}

voidDate:

:

getday()

{cout<<"请输入日期:

";

cin>>year;

cin>>month;

cin>>day;

}

在这两个函数的功能主要是输入要查询的年份和日期。

3.2.3查询某日期的星期数

intDate:

:

judgeweek()

{

inttotal=0;//以01年1月1日(星期一)为基点

intn;

total=(year-1)*365+(year-1)/4+(year-1)/400-(year-1)/100;//计算基点到输入年份的天数

n=total%7;

if(n==0)

return0;

else

returnn+1;//返回该年的1月1日为星期几

}

intDate:

:

monthday(inti)

{

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)

return31;

elseif(i==2)

{if(isleapyear())

return29;

elsereturn28;

}

elsereturn30;

}

voidDate:

:

searchday()

{

inttotal=0;

intn;

total=(year-1)*365+(year-1)/4+(year-1)/400-(year-1)/100;

for(intj=1;j

total+=monthday(j);

total+=day;

n=(total-1)%7;

if(n==0)

cout<<"星期一"<

else

cout<<"星期"<

}

3.2.4日历表的输出

voidDate:

:

display()

{

intn=judgeweek();

for(inti=1;i<=12;i++)//总共12个月份

{intt=1;

cout<

cout<<"****************************************"<

for(intj=0;j<7;j++)

cout<

for(intk=1;k

cout<

for(intd=1;d<=monthday(i);d++,t++)

{cout<

if(t==7)

{

cout<

t=0;//控制一行输出到星期日,如果到星期日则重新计数

}

}

n=t%7;

if(n==0)//输出完一个月后,记录这个月的最后一天在哪里,寻找下个月第一天的起始位置

n=7;cout<

}

}

4运行结果截图

开始界面

显示该年的万年历(以2013年为例)

查询某天的星期数(以2013.6.12为例)

5.课程设计总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学生来说掌握程序开发技术是十分重要的,而C++语言又是最常见,功能最强大的一种高级语言,因此做好C++语言课程设计是十分必要的。

通过C++课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做程序设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说数组的灵活应用,循环语句,if语句……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。

我做的是简易万年历的课程设计,虽然是很简单的一个小的程序,但对我来说却是一个很大的困难。

更加是第一次做C++课程设计,所以第一天下午在宿舍做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。

可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。

开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。

又经过几天的努力,终于把程序完成了,尽管程序还是有很多功能上的欠缺和漏洞,可我还是很高兴的。

无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C++语言的一次实践作业,自己进步的证明。

在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。

因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!

参考文献:

1.谭浩强著.《C++面向程序程序设计》.北京:

清华大学出版社,2006.7

2.吴乃陵,况迎辉,李海文著.《VC++程序设计》.北京:

高等教育出版社,2003.8

3.邓宗明,张睿哲,张晓竞,等编著.《VisualC++6.0编程实用技术与案例》

4.李海文,吴乃陵等编《C++程序设计及实践教程》北京:

高等教育出版社,2003.9

5.龚志翔.VisualC++编程实例与技巧集粹[M].北京:

北京期望电子出版社,2004

 

附录:

源程序代码

#include

#include

#include

#include

usingnamespacestd;

classDate

{public:

voidgetyear();//输入想要查询的年份

voidgetday();//输入想要查询的日期

intisleapyear();//判断该年是否为闰年

intjudgeweek();//判断该年的1月1日是星期几

intmonthday(inti);//判断该年每个月的天数

voiddisplay();//输出结果

voidsearchday();//判断具体某天为星期几

private:

intyear;

intmonth;

intday;

};

stringweekday[7]={"一","二","三","四","五","六","日"};//记录星期一到星期日

voidDate:

:

getyear()

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

";

cin>>year;

}

voidDate:

:

getday()

{cout<<"请输入日期:

";

cin>>year;

cin>>month;

cin>>day;

}

intDate:

:

isleapyear()

{

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

=0||year%400==0)

return1;

else

return0;

}

intDate:

:

judgeweek()

{

inttotal=0;//以01年1月1日(星期一)为基点

intn;

total=(year-1)*365+(year-1)/4+(year-1)/400-(year-1)/100;//计算基点到输入年份的天数

n=total%7;

if(n==0)

return0;

else

returnn+1;//返回该年的1月1日为星期几

}

intDate:

:

monthday(inti)

{

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)

return31;

elseif(i==2)

{if(isleapyear())

return29;

elsereturn28;

}

elsereturn30;

}

voidDate:

:

display()

{

intn=judgeweek();

for(inti=1;i<=12;i++)//总共12个月份

{intt=1;

cout<

cout<<"****************************************"<

for(intj=0;j<7;j++)

cout<

for(intk=1;k

cout<

for(intd=1;d<=monthday(i);d++,t++)

{cout<

if(t==7)

{

cout<

t=0;//控制一行输出到星期日,如果到星期日则重新计数

}

}

n=t%7;

if(n==0)//输出完一个月后,记录这个月的最后一天在哪里,寻找下个月第一天的起始位置

n=7;cout<

}

}

voidDate:

:

searchday()

{

inttotal=0;

intn;

total=(year-1)*365+(year-1)/4+(year-1)/400-(year-1)/100;

for(intj=1;j

total+=monthday(j);

total+=day;

n=(total-1)%7;

if(n==0)

cout<<"星期一"<

else

cout<<"星期"<

}

intmain()

{

Datea;

cout<

cout<<"****************************************"<

intchoose;

w:

while(choose!

=0)

{cout<<"1显示该年万年历"<

cout<<"2查询某天对应的星期数"<

cout<<"3退出系统"<

cout<<"请选择1-3进行操作:

";

cin>>choose;

switch(choose)//功能选择

{case1:

a.getyear();a.display();break;

case2:

a.getday();a.searchday();break;

case3:

cout<<"谢谢使用万年历系统,请关闭!

!

!

!

!

"<

default:

cout<<"您输入有误,请重新输入"<

}

}

return0;

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

当前位置:首页 > 党团工作 > 思想汇报心得体会

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

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