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

    1.思维导图及学习体会

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

    1.2 学习体会

    1.开学刚刚上完一节课就要写大作业,的确是有些猝不及防;特别是对于有些语法还是不太熟练,写起大作业来也是有点吃力。
    2.对于数据结构感觉,这门课程相比C语言来说其重点更放在数据、算法上。而且抽象数据类型学起来的确是挺抽象的,需要花时间来理解。
    3.编程过程中慢慢融入C++语法,不得不说的确是比C语言来的更加方便,从而萌生了想用比C++更便捷的语言来编程的想法。

    2.大作业作业内容

    2.1 设计日期的ADT类型

    ADT Date{
    数据对象:
        D={year,month,day | year,month,day属于int类型}
    数据关系:
        R = {<year,month>,<month,day>}
    数据操作:
        void InputDate(int*&date,int year,int month,int day);
        //初始化日期
        //操作结果:构造了year、month、day,三元组。
     
        int JudgeDate(int *date,ofstream &write);
        //初始条件:date存在,文件成功打开。
        //操作结果:判断文件内的日期是否合法,若合法则放回1,不合法则返回0。
    
       void JudgeYear(int *date,ofstream &write);
        //初始条件:date存在,文件成功打开,日期合法。
        //操作结果:判断其年份是平年还是闰年,并将结果写入output,txt文件。
       
       void JudgeWeek(int *date,ofstream &write);
       //初始条件:date存在,文件成功打开,日期合法。
       //操作结果:判断其日期是星期几,并将结果写入outpot.txt文件。
    
       void BackMonth(int *date,ofstream &write);
       //初始条件:date存在,文件成功打开,日期合法。
       //操作结果:将月份的英文单词放回,并写入outpot.txt文件。
    
       void AddDays(int *date,ofstream &write);
       //初始条件:date存在,文件成功打开,日期合法,输入天数正确。
       //操作结果:计算增加xxx天后,的日期是多少,并写入outpot.txt文件。
    
       void CompareDate(int *date,ofstream &write);
       //初始条件:date存在,文件成功打开,日期合法以及输入日期合法。
       //操作结果:与用户输入的日期比较大小,并写入文件。
    
       int SecondJudge(int year,int month,int days);
       //初始条件:输入正确的比较年份日期。
       //操作结果:对比较的日期判断是否合法,合法返回1,不合法则返回0。
    
    } ADT Date
    

    2.2数据抽象:

    2.3数据封装说明

    (1)构造日期函数

    动态申请内存,分别将年月日放入date数组中

    (2)日期合法性判断函数

    这个函数首先对当前年份进行判断是否是闰年,进而确定2月份的天数,接下来判断月份是否在区间【1,12】中,若不是则直接返回0表示非法;若是,则进入下一步的月份天数的判断,判断是否超过当月最大天数,最后将合法日期写入文件,并返回1。

    (3)闰年判断函数

    这个函数比较简单,首先用公式对年份进行闰平年的判断,然后一个分支结构放回不同的结果。

    (4)星期判断函数

    星期判断的函数也比较简单,运用公式,将对应日期的星期算出,在用switch语句选择对应的星期写入文件。

    (5)月份英文返回函数

    直接把月份放入switch语句中选择对应的英文单词,将其写入文件。

    (6)增加天数计算函数

    首先是输入增加的天数,并将其和当前天数合并计算。如果总天数大于当月天数,则进入循环,减去当前天数并月份增加1,判断如果月份超过12则归1,年份加一。一年判断后就要再对下一年判断闰平年,不断循环,直到跳出并写入文件。

    (7)日期比较函数

    首先用户需要输入要比较的日期,用一个while循环兵调用SecondJudge函数对其判断是否合法,然后进入分支结构的一步步判断,先比年份再比月份,最后比号数,并将结果写入文件。

    (8)输入日期合法性判断函数

    此函数主要是用于日期比较函数的输入数据合法性的判断,虽然上面也有一个功能相同的函数,但为了防止出错,便重新定义了一个不含指针的函数对其进行判断,其函数原理与JudgeDate函数相同。

    (9)主函数

    用C++语法打开和关闭文件,定义一个循环结构不断读取input.txt文件内的数据,并写入output.txt文件。

    3.结果展示

    文件input.txt中的数据:

    运行界面:

    文件output.txt中的结果:

    4.调试碰到的问题。

    Q1:首先是C++中文件开闭的操作不知道该如何实现。
    A1:百度搜索C++文件开闭的相关语法(百度找到的语法相对比较零散,并不能完整的掌握整个语法要执行的条件),结合参考同学代码解决此问题。

    Q2:日期比较发现出错,不管输入什么数据都是显示大于当前数据。
    A2:发现分支结构书写错误,没有将相等或者小于时的情况分开考虑,导致出错。不得不说,写代码还是要保持认真,专心,而且需要多加调试。

  • 相关阅读:
    如何测试一个纸杯?
    你对测试最大的兴趣在哪里?为什么
    您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?
    BUG管理工具的跟踪过程(用BugZilla为例子
    说说你对集成测试中自顶向下集成和自底向上集成两个策略的理解,要谈出它们各自的优缺点和主要适应于哪种类型测试
    你认为做好测试计划工作的关键是什么
    单元测试、集成测试、系统测试的侧重点是什么?
    黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!
    Python 运算符
    Python 基础数据类型
  • 原文地址:https://www.cnblogs.com/lxldbk/p/10449611.html
Copyright © 2011-2022 走看看