• 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:可以参考晓淞博客中推荐的那个网址中学习;
  • 相关阅读:
    Spring MVC
    Spring
    MyBatis
    Java Listener
    Java Filter
    JSTL
    EL
    pyltp安装
    美团面经-java开发
    oppo面经-java开发
  • 原文地址:https://www.cnblogs.com/vanishzeng/p/10484770.html
Copyright © 2020-2023  润新知