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

1.思维导图及学习体会

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

1.2 学习体会

碎碎念:数据结构与之前的c语言相比,感觉比较抽象,经过这两周的学习和摸索,总体感觉这两周我的学习感受是要比学c热心一点的。这次大作业的完成比较慢,一是要去了解c++的基础知识,再者之前学的c有一些知识点有陌生感了,不过参考同学的代码还是能勉强完成的,但我发现我的问题是还不够熟稔的建工程,希望接下来继续保持学习热心,明天又是美好的一天(手动狗头)。

2.大作业作业内容

2.1 设计日期的ADT类型

ADT  Date{
     数据对象:
	 D={year,month,day|year,month,day属于int类型}
	 数据关系:
	 R={<year,month>,<month,day>}
	 数据操作:
	 Status ISRUNYear(Date date,ofstream &outFile);
          //初始条件:date存在
        //操作结果:判断是否是闰年 
      Status ReturnWeek(Date date,ofstream &outFile);
        //初始条件:date存在
       //操作结果:返回是星期几 
     string OutDate(Date date);
      //初始条件:date存在
     //操作结果:控制年月日输出格式为xxxx/xx/xx 
     String ReturnMonthEnglish(Date date,ofstream &outFile);
      //初始条件:date存在
     //操作结果:返回月份英文 
     Status InitDate(Date &date,int year,int month,int day);
      //初始条件:date存在
     //操作结果:年月日初始化 
     char Compare(Date date,Date OtherDate); 
      //初始条件:date存在
     //操作结果:比较年月日的大小 
     Date AddDate(Date date,int days);
      //初始条件:date存在
     //操作结果:增加对应要增加的天数 	  
}

2.2.数据抽象:头文件)

2.3数据封装说明(每个函数的说明)

构造三元组函数

做法:为年月日申请空间,同时判断年月日是否合法

控制年月日输出格式

做法:把日期转为字符型,同时根据变量i来控制"/"输出

判断是否为闰年

做法:根据计算闰年公式所得

返回星期函数

做法:先根据公式算出年月日对应的星期,再以switch返回


返回月份英文单词

做法:根据 date[1](月份)返回对应单词,与返回星期做法差不多;


比较两个年月日的大小

做法:把年月日以年*1000+月*100+天的形式转为数值,方便比较大小,定义char 型,在返回"<" ">" "="是返回字符型

增加天数

做法:引入Date temp;把年月日赋值给temp[0],temp[1],temp[3],改变temp变量的值,把每月天数定为31,判断天数是否超过31,如果超过,则判断是否为是闰月,相应的如果超过月份超过十二,则年++。

摧毁data

主函数


3.结果展示

4.调试碰到问题

  • Q1:在调试结果发现我的控制输出格式日期为 2019/,月日没有。
  • A1: 发现return 在for循环里
  • Q2:增加天数如果超过该月的月份时,程序运行不了
  • A2:没有考虑闰年是天数,参考了同学的做法
    引入临时变量

原文地址:https://www.cnblogs.com/ttyppt/p/10460533.html