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

第六次作业

1.思维导图及学习体会

1.1 思维导图

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

2.3数据封装说明

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

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

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

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

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

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

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

3.结果展示

(1)运行结果

(2)input.txt

(3)out.txt

4.调试碰到问题

Q1:比较两个日期之间的关系时开始将年月日分开进行比较,有很长一段代码而且看着很不清晰。
A1:后来在看了几位同学的代码后,学到了将日期数的比较转化为数字大小的比较,代码精简了很多。

posted @ 2019-03-10 22:48  NOH8  阅读(209)  评论(2编辑  收藏  举报