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

1.思维导图及学习体会

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

1.2 学习体会

通过本周对于数据结构第一章绪论的学习,大致了解到学习数据结构与学习一门编程语言的区别。数据结构研究数据以及数据之间的关系,而编程语言是应用。在学习难度上看,个人认为学习数据结构要更加吃力。原因在于数据结构要更加的抽象,更加的难以理解,有时候书上的一个概念,需要经过仔细的揣摩才能想明白。再有就是关于时间复杂度与空间复杂度的计算,不是特别的熟练,还需经过进一步的训练加强。在写大作业时,首次在代码中应用了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 month, ElemType day);
        //操作结果:构造了日期数据结构Date,year为Date中的年,month月,day日。  
    Status DateDestroy(DATE &date);
        //操作结果:Date被销毁。  
    Status IsLeapyear( ElemType year , ofstream &outFile);
        //操作结果:判断是否是闰年。 
    Status MonthName( DATE date, ofstream &outFile);
        //操作结果:输出月份英文名。 
    Status WeekDay(DATE date, ofstream &outFile); 
        //操作结果:返回星期几。 
    Status AddDays(DATE date, ofstream &outFile);
        //操作结果: 返回当前日期增加days天的日期。 
    Status CmpDate(DATE date, ofstream &outFile);
        //操作结果:返回日期间的逻辑关系。 
    Status DateJudge(DATE date, ofstream &outFile); 
        //操作结果:判断是否是合法数据。是返回TRUE,否则返回FALSE。 
    Status DateJudge(ElemType year,  ElemType month, ElemType day); /*DateJudge函数重载*/
        //操作结果:判断是否是合法数据。是返回TRUE,否则返回FALSE。 
}ADT Date

2.2.数据抽象:头文件)

  • Status.h

  • Date.h

2.3数据封装说明

(1)构造日期数据类型函数

做法:动态申请内存,把年月日存入数组date中。

(2)销毁日期数据类型函数

做法:释放所申请的空间。

(3)判断是否是闰年函数

做法:判断是否是闰年并输出。

(4)输出月份英文名函数

做法:主要通过下标查找MONTH的方法。

(5)判断星期几函数

做法:主要通过下标查找WEEK的方法。

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

做法:通过遍历递增日期的方法。

(7)比较日期间的逻辑关系函数

做法:首先输入待判断的年月日,并对输入数据进行合法性判断。之后进行比较。关于判断符号的选取,采用了下标查找字符串中的字符的方法。

(8)判断是否是合法数据函数

做法:直接对传进的参数进行判断。数据合法返回TRUE,否则返回FALSE。

(9)判断是否是合法数据函数

做法:是对上一个JudgeDate函数的重载,具体操作基本不变,主要区别在于针对不同的参数达到相同的目的。

(10)main函数

3.结果展示

测试包含了不合法数据

4.调试碰到问题

  • Q1:在进行ofstream类型参数传递时曾引发头文件错误,并没有发现错误。后来改用了每次函数都开闭out.txt文件的方式勉强达到了预期要求,但导致代码冗长,不是很满意。后来看到了翁凌涛同学的代码,恍然大悟,对ofstream类型形参添加引用后问题迎刃而解。
  • Q2:在后期处理“数据是否合法时”曾纠结是否重新写函数。查阅资料后发现c++语法允许函数名重载。
  • Q3:CSDN博客是个好地方,很多无法自己解决的问题在上面都能找到解决方法。
posted @ 2019-03-03 10:41  super饭团君  阅读(667)  评论(1编辑  收藏  举报