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单独区分。

posted @ 2019-03-09 19:20  不凉々少年  阅读(301)  评论(0编辑  收藏  举报