DS博客作业01--日期抽象数据类型设计与实现
1.思维导图及学习体会
1.1第一章绪论知识点思维导图
1.2 学习体会
- 本周是对数据结构第一章的学习,难度比上学期的C语言更难,而且加上学习的进度又加快了,所以一开始有点接受不了,好在身旁有几位学得比较好的同学可以请教。
- 通过学习,大致了解了数据结构与C的区别,才知道上学期的学习是为了这学期的铺垫,数据结构研究数据以及数据之间的关系,而C语言是应用。两者互相结合。
- 而且通过这次的学习才知道,原来编程也有分好坏,就是一段代码的执行速度还有它的效率,一个好的编程就是数据结构加上一段好的算法。
- 而要更加轻松的学出优秀的算法,就是要通过不断的编程来锻炼自己的能力,这样就可以用更少的时间来写出优秀的算法,更上一层楼。
- 数据结构这门课的重要性就不用多说了,这门课连接着后续的课程和C,如果这门课程没学好,以后的课程就更学不好了,所以不管这课多难,也要把它学好了,为了以后能就好的学习新的知识。
- 还有就是最接近的作业有需要用到C++语言,挺深刻的感受到C++语言比C语言有好用点,比较方便。
2.大作业作业内容
2.1 设计日期的ADT类型
ADT Date{
数据对象:
D = {year,month,day | year,month,day属于int类型}
数据关系:
R = {<year,month>,<month,day>}
数据操作:
Status InitDate(DATE &date,ElemType year,ElemType mouth,ElemType day);
//操作结果:构造日期的结构,year,month,day分别代表年月日。
Status JudgeDate(DATE date,ofstream &writeFile);
//操作结果:判断输入的数据是否合法。
Status leapYear(DATE date);
//操作结果:判断是否为闰年。
Status WitchWeek(DATE date,ofstream &writeFile);
//操作结果:判断输入的日期为星期几。
Status MonthName(DATE date,ofstream &writeFile);
//操作结果:输出输入的月份的英文名。
Status DaysAdd(DATE date,ofstream &writeFile);
//操作结果:计算当前日期增加天数后的日期。
Status CompareDate(DATE date,ofstream &writeFile);
//操作结果:对日期进行比较。
}ADT Date
2.2.数据抽象:头文件
- Status.h
- date.h
2.3数据封装说明
(1)构造三元组函数
做法:动态申请内存,把年月日存入数组date中。
(2)判断数据是否是合法数据函数
做法:对传进的参数进行判断。数据合法返回TRUE,否则返回FALSE。
(3)判断是否是闰年函数
做法:对传进的参数进行判断。数据是闰年返回TRUE,否则返回FALSE。
(4)判断星期几函数
做法:运用公式找出星期几
(5)输出月份英文名函数
做法:运用下标找出月份并输出
(6)返回当前日期增加days天的日期函数
做法:一步步加日期,到达对应天数后月数加一,到达对应月数后,年数加一
(7)比较日期间的逻辑关系函数
做法:先进行年的比较,如果年大之后的就不用比了,再比较月份,如果相同就比较天数
3.结果展示
4.调试碰到问题
- Q1:一开始不知道typedef的用法,为什么要用它,后来问了同学才知道typedef可以自定义名称,可以是比较复杂的名称简化,增加代码的可读性。
- Q2:刚开始写的时候对C++语法一窍不知,还好有同学介绍的网站,进去学习了一下才可以写出代码,不然真的一开始连别人的代码都看不懂。
- Q3:有许多需要用到的函数不懂,比如要打开文件还有写入文件的方式都不懂,后来上网查了一下,才知道需要用到ifstream和ofstream。