Loading

DS博客作业01--日期抽象数据类型设计与实现

1.思维导图及学习体会

1.1第一章绪论知识点思维导图

1.2 学习体会

通过本章学习和抽象数据类型大作业的完成,对数据分装有了更好的了解,以及自己设计抽象数据类型也有了进一步了解;
再则,本次大作业要求用到c++语法,在此之前在看到c++语法觉得很复杂,但是了解之后,觉得c++在很多方面可以简化
代码量,就如动态申请内存new的使用。而通过大作业的完成,在语法上也有从C到c++的迁移;对于数据结构的学习重要
的还是要靠代码训练,代码量要得到保证,而对于其初步了解感觉其难度相对有提升,所以在这学期学习上要投入更多时间,
更好理解一些抽象的知识点及算法学习。

2.大作业作业内容

2.1 设计日期的ADT类型

ADT DATE{
数据对象:D={year,month,day|year,month,day属于ElemType类型}
数据关系:R={<year,month>,<month,day>}
数据操作:
Status InitDate(DATE &date,ElemType year,ElemType month,ElemType day);
	//操作结果:初始化日期,构造了年月日合成的日期  
string ReturnDate(DATE &date);
	//初始条件:日期date已存在,且年月日满足基本条件
	//操作结果:返回日期的年、月、日
Status JudgeLeapYear(DATE &date);
	//初始条件:日期date已存在,且年月日满足基本条件
	//操作结果:判断是否为闰年 
string JudgeWeek(DATE &date);
	//初始条件:日期date已存在,且年月日满足基本条件
	//操作结果:返回这个日期是星期几 
string ReturnMonthEnglish(DATE &date);
	//初始条件:日期date已存在,且年月日满足基本条件
	//操作结果:返回月份英文单词 
string ReturntheIncreasedDate(DATE &date,int days);
	//初始条件:日期date已存在,且年月日满足基本条件
	//操作结果:返回当前日期增加days天的日期
string ComparisonDate(DATE &date,DATE &otherDays);
	//初始条件:日期date已存在,且年月日满足基本条件
	 //操作结果:比较当前日期与otherDate的逻辑关系
}ADT DATE 

2.2.数据抽象:头文件

2.2.1Date.h

2.2.2Common.h

2.3数据封装说明

(1)构造日期函数

  • 做法:动态申请内存,分别将year,month,day三个变量存入数组date中,同时判断出不符合日期的情况并返回相应的值

(2)返回日期格式函数

  • 做法:运用itoa函数将year,month,day三个整型变量转化为字符型,并用strcat函数将其与'/'连接组成完整的日期格式

(3)判断闰年函数

  • 做法:运用闰年的判断条件进行处理

(4)返回星期几函数

  • 做法:运用基姆拉尔森计算公式算出星期几,在用switch语句返回相应的string类型的星期

(5)返回月份英文单词函数

  • 做法:直接运用switch语句实现

(6)返回当前日期增加days天的日期函数

  • 做法:建立数组存放各个月最大天数,在运用while语句进行逐级运算,超过一个月最大天数及月份增一,月份超过12即年份增一,
    每次循环都要减去判断完每个月的情况的天数,直到days归零退出循环;最后返回增加后日期的string类型

(7)比较当前日期与otherDate的逻辑关系函数

  • 做法:年月日逐级判断大小,并将比较结果的逻辑符赋给str2,最后两个日期和逻辑符依次连接成一个字符串并返回

(8)main函数

  • 做法:做读取文件和写入文件操作,并调用相关设计的函数来实现各步操作




3.结果展示



4.调试碰到问题

  • Q1:在写返回string类型的日期函数时,在将整型转化为字符型上,本来要使用c++语法to_string实现,提示没有定义此函数;
  • A1:查阅资料发现dev c可能版本过低库函数中还没有该函数,所以改用itoa函数实现;
  • Q2:在对文件的实现上,对c++文件的读写不了解;
  • A1:通过查阅资料了解到,在c++中追缴读写模式,只要在文件写入中加入ios::cpp即可实现;
  • Q3:c++入门学习还是比较吃力的,特别是要从c语言进行转变;
  • A3:可以参考晓淞博客中推荐的那个网址中学习;
posted @ 2019-03-07 14:29  August_丶  阅读(388)  评论(0编辑  收藏  举报