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


    第六次作业

    1.思维导图及学习体会

    1.1 思维导图

    1.2 学习体会

    因为假期里面代码的练习量很小,所以开学来上学期的知识遗忘了很多,刚刚开始写大作业的时候很困难,完全没有思路,后来看了几位同学的代码,也百度了很多C++的基础语法,才慢慢把大作业完成。学习了一些C++的语法后,发现真的比C语言方便很多,基本的输入输入和文件的读取写入C++的语法都比C语言的简便,接下来在学习数据结构的同时,也要继续加强对C++语法的学习,提高自己代码的效率。
    

    2.大作业作业内容

    2.1 设计日期的ADT类型

    ADT Date{
    数据对象:D={year,month,day|year,month,day属于ElemType类型}
    数据关系:R1={<year,month>,<month,day>}
    数据操作:
    Status InitDate(Date &D, ElemType year, ElemType month, ElemType day);
     //操作结果:构造了三元组D,日期中的年月日分别为year,month,day。
        
    Status Leapyear(Date D,ofstream &outFile);
    //初始条件:三元组D存在 
    //操作结果:判断是否闰年 
    
    Status JudgeWeek(Date D,ofstream &outFile);
    //初始条件:三元组D存在 
    //操作结果:返回这个日期是星期几
    
    Status MonthNum(Date D,ofstream &outFile);
    //初始条件:三元组D存在 
    //操作结果:返回月份的英文名
    
    Status IncreaseDays(Date D,ofstream &outFile);
    //初始条件:三元组D存在 
    //操作结果:返回当前日期增加days天的日期
    
    Status Compare(Date D,ofstream &outFile);
    //初始条件:三元组D存在 
    //操作结果:比较当前日期与otherDate的逻辑关系
    
    Status JudgeData(Date D,ofstream &outFile);
    //初始条件:三元组D存在 
    //操作结果:判断日期是否合法 
     
    }ADT Date
    

    2.2 数据抽象:头文件)

    Date.h

    2.3数据封装说明

    (1)构造三元组函数:动态申请内存,将变量存入数组中

    (2)判断是否闰年函数:用if判断日期中年份是否为闰年并输出对应结果

    (3)返回这个日期是星期几函数:用公式计算出日期为周几,结果输出并写入文件

    (4)返回月份的英文名函数:将月份英文名存入一个二维数组,然后输出对应英文名

    (5)返回当前日期增加days天的日期函数:通过计算总天数然后不断减去对应月份的天数,来求出增加的月份以及年份

    (6)比较当前日期与otherDate的逻辑关系:通过将日期转换为数字进行比较大小

    (7)判断日期是否合法:月份不得超过12等,其他为非法日期

    3.结果展示

    (1)运行结果

    (2)input.txt

    (3)out.txt

    4.调试碰到问题

    Q1:比较两个日期之间的关系时开始将年月日分开进行比较,有很长一段代码而且看着很不清晰。
    A1:后来在看了几位同学的代码后,学到了将日期数的比较转化为数字大小的比较,代码精简了很多。

  • 相关阅读:
    java源码之HashMap和HashTable的异同
    java源码之HashMap
    进制转换
    java基本数据类型及其包装类
    java实例化对象的五种方法
    20 栈的压入、弹出序列
    19 包含min函数的栈
    18 顺时针打印矩阵(记忆,常忘记)
    16 树的子结构(这题多复习)
    15合并两个排序的链表
  • 原文地址:https://www.cnblogs.com/NOH8xxy/p/10507854.html
Copyright © 2020-2023  润新知