zoukankan      html  css  js  c++  java
  • 博客作业01--日期抽象数据类型设计与实现

     

     

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

    1.2 学习体会

    寒假就压根没碰c,都在玩,导致之前连工程都忘记怎么建了,头文件啥的。然后现在在努力调整,对于一开始就来的一个大作业是很懵逼的。看到那个抽象数据类型都懵逼了,感觉没学过,不知道从哪里下手,再加上第一周准备补考,导致这份大作业很赶,然后呢现在这个学期的数据结构比上学期的学的更抽象,自己的理解能力比较差,希望能够赶上大家的步伐,然后也借鉴了一大部分同学的代码,因为自己上周补考花的时间太多,导致这周时间很赶,来不及自己独立理解完成这份作业。

    2.大作业

    2.1 设计日期的ADT类型

    ADT Date{ 数据对象: D = {year,month,day | year,month,day属于int类型}

    数据关系: R = {<year,month>,<month,day>}

    数据操作: void NewInformation(int*&date,int year,int month,int day);

    //操作结果:构造三元组,year,month,day对三元组进行赋值。 int Legal(int*date,ofstream& write);

    //初始条件:三元组date存在,文件打开成功。 //操作结果:判断日期是否合法,如果合法在文件output.txt写入正确的格式,如果不合法,在文件output中写入相应的提示。

    void Leap(int*date,ofstream& write);

    //初始条件:三元组date存在,文件打开成功,日期合法。

    //操作结果:判断年份是否是闰年,如果是闰年,在文件output.txt中写入是闰年,反之则写入不是闰年。

    void Week(int*date,ofstream& write);

    //初始条件:三元组date存在,文件打开成功,日期合法。

    //操作结果:在文件output.txt中写入相应的星期。

    void Month(int*date,ofstream& write);

    //初始条件:三元组date存在,文件打开成功,日期合法。

    //操作结果:在文件output.txt中写入相应的月份英文。

    void AddDay(int*date,ofstream& write);

    //初始条件:三元组date存在,文件打开成功,日期合法。

    //操作结果:用户输入需要添加的天数,计算添加天数后的日期,在文件output.txt写入添加前的日期,增加的天数和添加后的日期。

    void Compare(int*date,ofstream& write);

    //初始条件:三元组date存在,文件打开成功,日期合法。

    //操作结果:用户输入要比较的日期,与原日期进行比较,在文件output.txt.中写入结果。 int NewLegal(int*date); //初始条件:三元组date存在。

    // 操作结果:判断日期是否合法,合法返回1,不合法返回0 }ADT Date

    2.2.数据抽象:头文件

    2.3数据封装说明

    1.构造三元组函数

    构造三元组函数creat,引入三个变量储存年月日。

    2.判断日期是否合法

    定义开关变量flag和每月最大天数maxDay,是闰年则flag=1; 然后进行月份的合法判断,再分类讨论月份确定maxDay的值 

    3.判断是否为闰年

    判断是否为闰年并输出到文件。

    4.设计星期函数

    运用基姆拉尔森计算公式计算星期并用switch-case写入文件星期

    2.设计月份英文函数

    读取数组date【1】即月份 运用switch-case写入月份的英文。

    6.计算日期添加函数

    重新定义year,month,day年月日存储原来的年月日,并定义数组存储每个月的天数,输入添加的天数,加到‘日’上面,并判断日是否大于本月的最大天数,大于则加一月,并减去最大天数,然后再判断月份是否>12,大于则加一年,并减去12月最后输出year,month,day。

    7.日期大小比较函数。

    先写入当前日期,再判断新输入的日期年份是否大于原来日期的年份,如果等则判断月份,再相等即判断日期。最后写入文件大小比较结果。

    8.主函数

    在主函数里进行打开文件,写入文件,传参,关闭文件等操作。

    3.结果展示

    4.运行结果

     4.调试遇到问题

    之前卡在如何添加日期然后实现每加一月都重新赋值maxDay,一直没去想到用数组,后面用了数组套数组来解决这个问题,但是还是没去解决闰年的情况,就是2月29天,没有去特殊讨论,感觉挺麻烦,还没来得及去添加,就先暂时当做2月28天。

  • 相关阅读:
    MVC vs SVC
    迪米特原则与接口隔离原则
    依赖倒置原理:依赖、稳定的抽象层
    【调侃】IOC前世今生
    Visual SVN Server启动失败0x8007042a错误
    syntax error, unexpected '['
    navicat将多个表导出为一个sql文件
    我的flashfxp左右界面怎么变成这样了?
    什么是国际顶级域名?
    什么是A记录/CNAME记录/MX记录/TXT记录
  • 原文地址:https://www.cnblogs.com/yvvq/p/10506196.html
Copyright © 2011-2022 走看看