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属于int类型}
数据关系:
R = {<year,month>,<month,day>}
数据操作:
void NewDate(DATE &date,ElemType day,ElemType mouth,ElemType year);
//操作结果:构造三元组,对year,mouth,day赋值
int ScDate(DATE date,ElemType day,ElemType mouth,ElemType year,ofstream &write);
//初始条件:三元组date存在,文件能成功打开
//操作结果:返回年月日,并判断是否合理
int IfRun(DATE date,ofstream &write);
//初始条件: 三元组date存在,文件能成功打开
//操作结果:若是闰年返回1,否则返回0.
int JudgeWeek(DATE date,ElemType day,ElemType mouth,ElemType year,ofstream &write);
//初始条件: 三元组date存在,文件能成功打开
//操作结果:判断输入的日期为星期几。
int EngMouth(DATE date,ofstream &write);
//初始条件: 三元组date存在,文件能成功打开
//操作结果:输出当前日期月份的英语单词
int AddDays(DATE date,ElemType day,ElemType mouth,ElemType year,ofstream &write);
//初始条件: 三元组date存在,文件能成功打开
//操作结果:返回当前日期增加days天的日期.
int CompareDay(DATE date,ofstream &write);
//初始条件: 三元组date存在,文件能成功打开
//操作结果:比较当前日期与otherDate的逻辑关系
}ADT Date
2.2.数据抽象:头文件
2.3数据封装说明
(1)构造日期数据类型函数
做法:动态分配内存空间,将year,month,day存入数组date中
(2)年月日输入函数并判断函数
做法:判断输入的年月日是否合法,否则重新输入
(3)判断是否是闰年函数
做法:简单的判断,输出结果
(4)判断星期几函数
做法:将数组中的数据存入变量,再对变量进行变换,通过数学公式得出结果
(5)输出月份英文名函数
做法:对数组中代表月份的位序进行判断,依次输出
ps:因为后面都一样,就不进行截图!!
(6)返回当前日期增加days天的日期函数
做法:先将数据存放到新定义的变量,再从新定义的变量的day开始加,对月份的day进行判断,依此类推到month和year的增加
(7)比较日期间的逻辑关系函数
做法:输入一个日期,判断是否合法,先比较年,再月,在日。
头文件
3.结果展示
测试文件数据,input.txt:
运行结果写入out.txt:
写入:
输出:
4.调试碰到问题
- 1.对c++的语法可能不太熟悉,需要阅读同学代码或者上网查找。
- 2.代码冗长,算法效率太低,看了范华同学的代码有点启发,在今后作业会加以使用。
- 3.在文件的输入中遇到了很多问题,对于c++文件的语法掌握不牢。