C++课程设计.docx
- 文档编号:3947212
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:13
- 大小:618.58KB
C++课程设计.docx
《C++课程设计.docx》由会员分享,可在线阅读,更多相关《C++课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计