DS作业01--日期抽象数据类型设计与实现

第六次作业

1.思维导图及学习体会

1.1 思维导图

DS作业01--日期抽象数据类型设计与实现

1.2 学习体会

因为假期里面代码的练习量很小,所以开学来上学期的知识遗忘了很多,刚刚开始写大作业的时候很困难,完全没有思路,后来看了几位同学的代码,也百度了很多C++的基础语法,才慢慢把大作业完成。学习了一些C++的语法后,发现真的比C语言方便很多,基本的输入输入和文件的读取写入C++的语法都比C语言的简便,接下来在学习数据结构的同时,也要继续加强对C++语法的学习,提高自己代码的效率。

2.大作业作业内容

2.1 设计日期的ADT类型

ADT Date{
数据对象:D={year,month,day|year,month,day属于ElemType类型}
数据关系:R1={<year,month>,<month,day>}
数据操作:
Status InitDate(Date &D, ElemType year, ElemType month, ElemType day);
//操作结果:构造了三元组D,日期中的年月日分别为year,month,day。 Status Leapyear(Date D,ofstream &outFile);
//初始条件:三元组D存在
//操作结果:判断是否闰年 Status JudgeWeek(Date D,ofstream &outFile);
//初始条件:三元组D存在
//操作结果:返回这个日期是星期几 Status MonthNum(Date D,ofstream &outFile);
//初始条件:三元组D存在
//操作结果:返回月份的英文名 Status IncreaseDays(Date D,ofstream &outFile);
//初始条件:三元组D存在
//操作结果:返回当前日期增加days天的日期 Status Compare(Date D,ofstream &outFile);
//初始条件:三元组D存在
//操作结果:比较当前日期与otherDate的逻辑关系 Status JudgeData(Date D,ofstream &outFile);
//初始条件:三元组D存在
//操作结果:判断日期是否合法 }ADT Date

2.2 数据抽象:头文件)

Date.h

DS作业01--日期抽象数据类型设计与实现

2.3数据封装说明

(1)构造三元组函数:动态申请内存,将变量存入数组中

DS作业01--日期抽象数据类型设计与实现

(2)判断是否闰年函数:用if判断日期中年份是否为闰年并输出对应结果

DS作业01--日期抽象数据类型设计与实现

(3)返回这个日期是星期几函数:用公式计算出日期为周几,结果输出并写入文件

DS作业01--日期抽象数据类型设计与实现

(4)返回月份的英文名函数:将月份英文名存入一个二维数组,然后输出对应英文名

DS作业01--日期抽象数据类型设计与实现

(5)返回当前日期增加days天的日期函数:通过计算总天数然后不断减去对应月份的天数,来求出增加的月份以及年份

DS作业01--日期抽象数据类型设计与实现

(6)比较当前日期与otherDate的逻辑关系:通过将日期转换为数字进行比较大小

DS作业01--日期抽象数据类型设计与实现

(7)判断日期是否合法:月份不得超过12等,其他为非法日期

DS作业01--日期抽象数据类型设计与实现

3.结果展示

(1)运行结果

DS作业01--日期抽象数据类型设计与实现

(2)input.txt

DS作业01--日期抽象数据类型设计与实现

(3)out.txt

DS作业01--日期抽象数据类型设计与实现

4.调试碰到问题

Q1:比较两个日期之间的关系时开始将年月日分开进行比较,有很长一段代码而且看着很不清晰。

A1:后来在看了几位同学的代码后,学到了将日期数的比较转化为数字大小的比较,代码精简了很多。

上一篇:剑指offer四十七之求1+2+3+...+n


下一篇:Dynamics AX 2012 R2 创建一个专用的批处理服务器