课程设计万年历的设计Word
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2014年秋季学期
面向对象课程设计
题目:万年历的设计
专业班级:
姓名:
学号:
指导教师:
成绩:
序言
《面向对象的程序设计》是计算机专业一门重要的专业基础课。此次课程设计的目的是以面向对象程序设计语言为基础,通过完成一些具有一定难度的课程设计题目的编写、调试、运行工作,进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。从而提高自我分析问题、解决问题的能力。通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《C++语言程序设计》的基本理论知识,理论联系实际,进一步培养学生综合分析问题、解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握面向对象的程序设计方法。
(6)进一步掌握在集成环境下如何调试程序、修改程序和程序的测试。
目录
摘要 (2)
第一章系统总体设计 (3)
一.理论说明 (3)
二.流程图说明 (4)
1.总体流程说明图 (4)
2.部分流程说明图 (4)
第二章系统详细设计 (7)
一.主要组成部分 (7)
二.源程序 (9)
第三章系统测试 (34)
四软件使用说明书 (40)
一.系统运行环境 (40)
二.系统操作提示 (40)
总结 (41)
参考文献 (42)
致谢 (42)
摘要
万年历作为日常中的小工具,具有多方面的功能,能有效帮助人们记录以及计算时间,在极大程度上帮助人们在日期以及时间方面有最直观的体现。
该设计通过C++的基本知识和技能设计出一个万年历程序,该程序需实现时间和日期的显示以及计算。
一.实现提供时、分、秒组成的时间,并提供时间增加的方法(按秒);
二.实现记录年、月、日的过程,并提供日期增加的方法(按天);
三.通过上述两项,设计出除除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差;
四. 输入年、月、日、时、分、秒,在屏幕上模拟显示一电子计时器,不断输出下一秒的时间和日期,以及格林威治的日期和时间。
该设计不仅体现了普通日历的功能,还加入了电子计时器的部分,使得万年历在原本的基础上有了更大的扩充。
关键字:时间,日期,格林威治时间差,电子计时器
第一章系统总体设计
一.理论说明
关于万年历的基本要求,须体现时间,日期等,所以,定义时间类time,日期类date,完成关于年(year),月(month),日(day),时(hour),分(minute),秒(second)的定义。
1 在计算时间的时候,每达到1秒的时候对second进行加1,然后判断是否达到60秒,达到的话minute就加1,minute到达60hour就加一,同样的方法对hour、day、month和year进行计算。
2在计算日期的时候,在对day计数时,考虑到大小月和闰年,对day 进行加1时,判断是哪一月和是否为闰年。在确定年、月、日之后,使用函数Week()进行对星期几的计算,根据1901年每月1号是星期几可以得出现在是星期几。
在这个程序中,还使用了一个对话框类,使用对话框来对时间日期的设置。在菜单栏里添加一个“设置时间”的选项和一个菜单消息,当点击这个选项就会弹出设置时间日期的对话框,对话框中编辑控件设定了每个值的取值范围,从而对输入错误进行排除。
二.流程图说明
1.总体流程说明图
(图一)
2.部分流程说明图
(1)
是
二月天数是
全年天数
(图二)(2)
(图三)
另:在本程序中共用到三个类,定义时间的time类,定义日期的date类,以及公有继承了time和date的datetime类,此派生类的作用是定义电子时钟的运行方式。在程序中还运用到一些独立的函数,以实现星期以及格林威治时间差等功能。
二、系统详细设计
1. 主要组成部分
该程序主要为了实现日期和时间的显示以及格林威治时间差的计算结果,其中功能时间的显示使用类datetime来实现,功能时差的计算使用类time 和类date来实现。下面分别介绍类time,date的详细设计。
时间类time的具体实现流程:先声明后定义,类time定义为时间基类,其中:成员函数time()主要功能为时分秒赋初值,实现方式为:
函数内定义成员函数
int gethour(){return hour;};
int getminute(){return minute;};
int getsecond(){return second;}返回时分秒的值;
成员函数
void sethour(int nhour){hour=nhour;};
void setminute(int nminute){minute=nminute;};
void setsecond(int nsecond){second=nsecond;};
成员函数~time主要功能为在撤销对象占有的内存之前完成清理工作释放内存,实现方式为:,通过对象调用析构函数完成清理工作。
类time具体实现流程为:
class time{
private:
int hour;
int minute;
int second;
public:
time();
time(int nhour,int nminute,int nsecond);