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

    1.思维导图及学习体会

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

    1.2 学习体会

    通过本周对于数据结构第一章绪论的学习,大致了解到学习数据结构与学习一门编程语言的区别。数据结构研究数据以及数据之间的关系,而编程语言是应用。在学习难度上看,个人认为学习数据结构要更加吃力。原因在于数据结构要更加的抽象,更加的难以理解,有时候书上的一个概念,需要经过仔细的揣摩才能想明白。再有就是关于时间复杂度与空间复杂度的计算,不是特别的熟练,还需经过进一步的训练加强。在写大作业时,首次在代码中应用了c++的语法,受益匪浅。

    2.大作业作业内容

    2.1 设计日期的ADT类型

    ADT Date{
    数据对象:
        D = {year,month,day | year,month,day属于int类型}
    数据关系:
        R = {<year,month>,<month,day>}
    数据操作:
         Status InitDate( DATE &date, ElemType year, ElemType month, ElemType day);
            //操作结果:构造了日期数据结构Date,year为Date中的年,month月,day日。  
        Status DateDestroy(DATE &date);
            //操作结果:Date被销毁。  
        Status IsLeapyear( ElemType year , ofstream &outFile);
            //操作结果:判断是否是闰年。 
        Status MonthName( DATE date, ofstream &outFile);
            //操作结果:输出月份英文名。 
        Status WeekDay(DATE date, ofstream &outFile); 
            //操作结果:返回星期几。 
        Status AddDays(DATE date, ofstream &outFile);
            //操作结果: 返回当前日期增加days天的日期。 
        Status CmpDate(DATE date, ofstream &outFile);
            //操作结果:返回日期间的逻辑关系。 
        Status DateJudge(DATE date, ofstream &outFile); 
            //操作结果:判断是否是合法数据。是返回TRUE,否则返回FALSE。 
        Status DateJudge(ElemType year,  ElemType month, ElemType day); /*DateJudge函数重载*/
            //操作结果:判断是否是合法数据。是返回TRUE,否则返回FALSE。 
    }ADT Date
    

    2.2.数据抽象:头文件)

    • Status.h

    • Date.h

    2.3数据封装说明

    (1)构造日期数据类型函数

    做法:动态申请内存,把年月日存入数组date中。

    (2)销毁日期数据类型函数

    做法:释放所申请的空间。

    (3)判断是否是闰年函数

    做法:判断是否是闰年并输出。

    (4)输出月份英文名函数

    做法:主要通过下标查找MONTH的方法。

    (5)判断星期几函数

    做法:主要通过下标查找WEEK的方法。

    (6)返回当前日期增加days天的日期函数

    做法:通过遍历递增日期的方法。

    (7)比较日期间的逻辑关系函数

    做法:首先输入待判断的年月日,并对输入数据进行合法性判断。之后进行比较。关于判断符号的选取,采用了下标查找字符串中的字符的方法。

    (8)判断是否是合法数据函数

    做法:直接对传进的参数进行判断。数据合法返回TRUE,否则返回FALSE。

    (9)判断是否是合法数据函数

    做法:是对上一个JudgeDate函数的重载,具体操作基本不变,主要区别在于针对不同的参数达到相同的目的。

    (10)main函数

    3.结果展示

    测试包含了不合法数据

    4.调试碰到问题

    • Q1:在进行ofstream类型参数传递时曾引发头文件错误,并没有发现错误。后来改用了每次函数都开闭out.txt文件的方式勉强达到了预期要求,但导致代码冗长,不是很满意。后来看到了翁凌涛同学的代码,恍然大悟,对ofstream类型形参添加引用后问题迎刃而解。
    • Q2:在后期处理“数据是否合法时”曾纠结是否重新写函数。查阅资料后发现c++语法允许函数名重载。
    • Q3:CSDN博客是个好地方,很多无法自己解决的问题在上面都能找到解决方法。
  • 相关阅读:
    代码希望HTML5初探CSS3新特性小示例
    myeclipse及eclipse的优化
    window7如何提高到最高权限
    大麦茶
    poj3292
    poj3278
    poj3100
    poj3117
    poj3299
    Presto性能调优的五大技巧
  • 原文地址:https://www.cnblogs.com/fanfaniscute/p/10463963.html
Copyright © 2011-2022 走看看