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:后来在看了几位同学的代码后,学到了将日期数的比较转化为数字大小的比较,代码精简了很多。