DS博客作业01--日期抽象数据类型设计与实现
1.思维导图及学习体会
1.1 第一章绪论知识点思维导图
1.2 学习体会
- 本章学习了数据结构绪论的相关知识,让我们从总体上了解什么是数据结构,掌握算法分析的方法。数据结构是一门基于C语言语法的专业基础课,主要学习用计算机实现数据组织和数据处理的方法,为后续的专业课打下基础。c语言的学习是为了识字,而数据类型的学习就是为了写字,通过数据结构的学习,能使我们更好地构造结构和编写程序,同时增加程序的执行效率,使程序的设计更加完善。
2.大作业作业内容
2.1 设计日期的ADT类型
ADT Date{
数据对象:
D = {year,month,day | year,month,day属于int类型}
数据关系:
R = {<year,month>,<month,day>}
数据操作:
void InitDate(DATE &date,int year,int month,int day);
//操作结果:构造了日期数据结构Date,year为Date中的年,month月,day日
void DestroyDate(DATE date);
//操作结果:销毁Date三元组
int JudgeDate(DATE date,ofstream &outTXT);
//操作结果:判断是否是合法数据
void IsLeapYear(DATE date,ofstream &outTXT);
//操作结果:判断是否是闰年
void WeekDay(DATE date,ofstream &outTXT);
//操作结果:判断是星期几。
void MonthName(DATE date,ofstream &outTXT);
//操作结果:判断月份的英文名。
void AddDays(DATE date, ofstream &outTXT);
//操作结果: 计算增加days天数后的日期
void CompareDate(DATE date, ofstream &outTXT);
//操作结果:比较日期间的逻辑关系
}ADT Date
2.2.数据抽象:头文件
2.3数据封装说明
(1)构造日期数据类型函数
做法:动态申请内存,分别把3个变量放入数组date中。
(2)销毁日期数据类型函数
做法:销毁数组date,释放所申请的空间。
(3)判断是否是合法数据
做法:对日期的合法性进行判断并返回结果。
(4)判断是否为闰年函数
做法:进行闰年的判断并写入文件output。
(5)判断是星期几
做法:运用公式计算星期,并列举星期进行选择写入文件output。
(6)判断月份的英文名
做法:列举月份的英文名进行选择并写入文件output。
(7)计算增加days天数后的日期
做法:对闰年采用了下标查找数组中的数据的方法区分2月,通过循环累计days次逐加的方法计算增加天数后的日期,并写入文件output。
(8)比较日期间的逻辑关系
做法:对闰年采用了下标查找数组中的数据的方法区分2月,对年月日进行单一逐层判断,结果写入文件output。
3.结果展示
4.调试碰到问题
- 在学习C++语言时,区别与C语言的语法都需要反复的调试才能知道正确性,像动态分配空间、输入输出、定义文件指针,所以在这部分需要花点精力去探究。
- 在构建三元组的时候,总是出现导致内存分配失败,后来请教同学后得知指针传入时没有加上&符号,后来发现 int *& date 这种写法是错误的,需要借用 typedef int* DATE 的方法写成“DATE &date”才能运行。
- 在读取数据时采用直接数字读取,但总是出错,后来得知在输入和输出时的格式中,‘/’需要通过ch单独区分。