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

时间:2023-02-25 22:36:14

1.思维导图及学习体会
1.1第一章绪论知识点思维导图
DS博客作业01--日期抽象数据类型设计与实现

1.2 学习体会

迷迷糊糊的开始学习便遇到了第一难关——时间复杂度和空间复杂度的计算,搞不懂什么叫做问题规模,开始认为是某段函数计算的次数,听课得知时间复杂度n的计算需要一定的数学逻辑,而求空间复杂度需要抓住临时变量这个问题。经过长假的洗礼,有很多较细的内容以及注意点都忘了,开学的第一次大作业也帮助我重新巩固了c语言的知识,也运用到了一些c++的知识(虽然作用不大),感觉现在写大作业不像往常那么吃力。希望新学期也能接触新的知识。

2.大作业作业内容
设计日期的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);
//操作结果:初始化日期,构造了日期,判断日期合法性  
Status Return_Date(DATE &date);
 //初始条件:日期date建立 
 //操作结果:返回给定格式的日期的年、月、日
Status Judge_LeapYear(DATE &date);
 //初始条件:日期date已存在,且年月日满足基本条件
 //操作结果:判断是否为闰年 
Status Judge_Week(DATE &date);
 //初始条件:日期date已存在,且年月日满足基本条件
 //操作结果:返回这个日期是星期几 
Status Add_day(DATE &date,int days);
 //初始条件:日期date已存在,且年月日满足基本条件
 //操作结果:返回月份英文单词 
Status Return_ThenDate(DATE &date,int days);
 //初始条件:日期date已存在,且年月日满足基本条件
 //操作结果:返回当前日期增加days天的日期,返回存放操作后的日期的OtherDate数组 
Status Compare_Date(DATE &date,DATE &OtherDate);
 //初始条件:日期date已存在,且年月日满足基本条件
 //操作结果:比较当前日期与otherDate的逻辑关系,返回bigger Or smaller代表逻辑关系 
 }ADT DATE

2.2数据抽象:
2.2.1Date.h

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

2.3数据封装说明
(1)主函数 :main.c
DS博客作业01--日期抽象数据类型设计与实现

(2)构造三元组函数

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

(3)返回日期

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

(4)闰年判断函数
DS博客作业01--日期抽象数据类型设计与实现

(5)星期判断函数
DS博客作业01--日期抽象数据类型设计与实现

(6)英文月份返回函数
DS博客作业01--日期抽象数据类型设计与实现

(7)增加天数计算函数

Status Add_day(DATE &date,int days);
{
    int monthDay[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    int Day_Sum;
    Day_Sum=days+date[2];
    for(int i=1;i<12;i++)
    {
        date[1]=i;
        if(date[1]==2)
        {
            if(Judge_LeapYear(date))
            {
                if(Day_Sum>29)
                date[1]++;
                date[0]=Day_Sum-29;
                else
                date[0]=Day_Sum;
            }
            else
            {
                if(Day_Sum>28)
                date[1]++;
                date[0]=Day_Sum-28;
                else
                date[0]=Day_Sum;
            }   
        }
        if(date[1]==12)
        {
            if(Day_Sum>31)
                date[0]+=1;
                date[1]=1;
                date[2]=Day_Sum-31;
                else
                date[0]=Day_Sum;
        }
        if(Day_Sum>monthDay[date[1]-1])
        {
            date[1]++;
            date[0]=Day_Sum-monthDay[date[1]-1];
        }
        else
        date[0]=Day_Sum;
    }
    return date;
}

(8)日期比较函数
DS博客作业01--日期抽象数据类型设计与实现

3.结果展示
文件input.txt中的数据:

运行界面:

文件output.txt中的结果:

4.调试碰到的问题。