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

1.思维导图和学习体会

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

1476637-20190310133239208-47347306.png

1.2学习体会

  • 这一学期务必得认真学习了,把上学期遗漏的以及不牢固的知识重新温习,这一次开学大作业也是 当头一棒,这学期也会用到一些C++的语法大致就cin 及cout 以及一些函数,第一节课讲了解决一个具体的问题分三个步骤:
  • (1)分析问题,确定数据模型
  • (2)设计相应的算法
  • (3)编写程序,运行并调试程序,直至得到正确的结果
  • 当然前面的作业可能没办法将第二步完成的很好但是相信在一学年之后应该能大致实现这三步骤。
  • 这次大作业个人实现效果不佳,对ADT 的运用还不是很熟练

    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 Return_Date(DATE &date);
     //初始条件:日期date已存在,且年月日满足基本条件
     //操作结果:返回日期的年、月、日
     Status Judge_LeapYear(DATE &date);
     //初始条件:日期date已存在,且年月日满足基本条件
     //操作结果:判断是否为闰年 
     string Judge_Week(DATE &date);
     //初始条件:日期date已存在,且年月日满足基本条件
     //操作结果:返回这个日期是星期几 
     string Return_Month_Name(DATE &date);
     //初始条件:日期date已存在,且年月日满足基本条件
     //操作结果:返回月份英文单词 
     string Return_ThenDate(DATE &date,int days);
     //初始条件:日期date已存在,且年月日满足基本条件
     //操作结果:返回当前日期增加days天的日期
     string Compare_Date(DATE &date,DATE &RandomDay);
     //初始条件:日期date已存在,且年月日满足基本条件
     //操作结果:比较当前日期与otherDate的逻辑关系
     }ADT DATE

2.2数据抽象:头文件

 2.2.1Date.h

  • 1476637-20190310122337202-1828444359.png

    2.2.2Status.h

  • 1476637-20190310122536377-1522948777.png

    2.3数据封装说明

    (1)main函数
  • 运用写入文件的函数将日期写入函数
  • 1476637-20190310123932218-439570140.png
  • 1476637-20190310123956452-1874678882.png
  • 1476637-20190310134829514-19795905.png
  • 1476637-20190310124054264-533795948.png
    (2)构造日期函数
  • new动态申请三个空间存放year,month,day到date数组中,以及判断日期合法性
  • 1476637-20190310122903327-996495598.png
    (3)返回日期函数
  • 运用itoa函数将year,month,day三个整形变量转化为字符型
  • 1476637-20190310123100403-2115756433.png
    (4)判断是否闰年函数
  • 加入判断闰年的条件并返回TRUE or FALSE到main 函数中的if 判断中
  • 1476637-20190310123302075-1213954011.png
    (5)返回当前日期的星期函数
  • 运用基姆拉尔森计算公式算出星期几,并用switch输出相对应的星期
  • 1476637-20190310123606433-291512357.png
    (6)用switch返回当前相对应的月份的英文名称函数
  • 1476637-20190310130222507-1709346962.png
    (7)返回增加days后的日期函数
  • 用while语句逐级运算,超过一个月后最大天数以及月份加一,月份超过最大后年份加一,最后返回字符串类型
  • 1476637-20190310130447321-1978768600.png
    (8)返回当前日期与RandomDay的逻辑关系
  • 逐级判断,最后将两个日期及逻辑符依次组成字符串返回
  • 1476637-20190310131026459-1877423407.png
  • 1476637-20190310131050790-1352200902.png

    3.结果展示

    1476637-20190310134010040-272416747.png
    1476637-20190310140716682-928893848.png
    1476637-20190310140841009-1365993815.png
    1476637-20190310140750889-1682960959.png

    4.调试碰到的问题

  • 有些时候还没从C 当中的输入输出中 脱离出来,不过现在好很多了,比起C的输入输出 C++更加方便 以及一些函数也非常方便快捷,
  • 调试时问题最多的就是 返回值的问题,还有存储变量的选择 是要选择数组呢还是其他的方式

转载于:https://www.cnblogs.com/zrjAIRON/p/10484528.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值