DS博客作业01--日期抽象数据类型设计与实现
1.思维导图及学习体会
1.1第一章绪论知识点思维导图
1.2 学习体会
碎碎念:数据结构与之前的c语言相比,感觉比较抽象,经过这两周的学习和摸索,总体感觉这两周我的学习感受是要比学c热心一点的。这次大作业的完成比较慢,一是要去了解c++的基础知识,再者之前学的c有一些知识点有陌生感了,不过参考同学的代码还是能勉强完成的,但我发现我的问题是还不够熟稔的建工程,希望接下来继续保持学习热心,明天又是美好的一天(手动狗头)。
2.大作业作业内容
2.1 设计日期的ADT类型
ADT Date{
数据对象:
D={year,month,day|year,month,day属于int类型}
数据关系:
R={<year,month>,<month,day>}
数据操作:
Status ISRUNYear(Date date,ofstream &outFile);
//初始条件:date存在
//操作结果:判断是否是闰年
Status ReturnWeek(Date date,ofstream &outFile);
//初始条件:date存在
//操作结果:返回是星期几
string OutDate(Date date);
//初始条件:date存在
//操作结果:控制年月日输出格式为xxxx/xx/xx
String ReturnMonthEnglish(Date date,ofstream &outFile);
//初始条件:date存在
//操作结果:返回月份英文
Status InitDate(Date &date,int year,int month,int day);
//初始条件:date存在
//操作结果:年月日初始化
char Compare(Date date,Date OtherDate);
//初始条件:date存在
//操作结果:比较年月日的大小
Date AddDate(Date date,int days);
//初始条件:date存在
//操作结果:增加对应要增加的天数
}
2.2.数据抽象:头文件)
2.3数据封装说明(每个函数的说明)
构造三元组函数
做法:为年月日申请空间,同时判断年月日是否合法
控制年月日输出格式
做法:把日期转为字符型,同时根据变量i来控制"/"输出
判断是否为闰年
做法:根据计算闰年公式所得
返回星期函数
做法:先根据公式算出年月日对应的星期,再以switch返回
返回月份英文单词
做法:根据 date[1](月份)返回对应单词,与返回星期做法差不多;
比较两个年月日的大小
做法:把年月日以年*1000+月*100+天的形式转为数值,方便比较大小,定义char 型,在返回"<" ">" "="是返回字符型
增加天数
做法:引入Date temp;把年月日赋值给temp[0],temp[1],temp[3],改变temp变量的值,把每月天数定为31,判断天数是否超过31,如果超过,则判断是否为是闰月,相应的如果超过月份超过十二,则年++。
摧毁data
主函数
3.结果展示
4.调试碰到问题
- Q1:在调试结果发现我的控制输出格式日期为 2019/,月日没有。
- A1: 发现return 在for循环里
- Q2:增加天数如果超过该月的月份时,程序运行不了
- A2:没有考虑闰年是天数,参考了同学的做法
引入临时变量