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

1.思维导图及学习体会

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

1.2 学习体会

在这两周的学习中,第一周由于复习补考内容没有太用心,但第二周状态还不错,虽然才刚刚接触数据结构,感觉数据结构挺有意思的,但也有很大的难度,需要用心去学,希望自己新学期新气象把,通过这次大作业,第一次用c++就做了个有点大的程序,很多语法都是直接百度或者照搬同学的,但基本都能理解了,C++确实有他的优势,c++还是很值得去学习的一门课。

2.大作业作业内容

2.1 设计日期的ADT类

ADT Date{
数据对象:
                 D = {year,month,day | year,month,day属于int类型}
数据关系:
    R = {<year,month>,<month,day>}
数据操作:
     int InitDate( Date &date ,ElemType year,  ElemType month, ElemType day);
    //初始化日期 
void Leap( ElemType year , ofstream &write);
    //判断是否闰年 
int MonthName( Date date, ofstream &write);
    //返回月份的英文名 
int Week(Date date,ofstream &write); 
    //返回这个日期是星期几 
int Add(Date date,ofstream &write);
void Logic(Date date,ofstream &write);
    //比较当前日期与otherDate的逻辑关系 
int Judge(Date date,ofstream &write); 
    //操作结果:判断是否是合法数据 是返回1 否则返回0 
void Destroy(Date &date);
    //销毁Date  
}ADT Date

2.2.数据抽象:头文件

2.3数据封装说明

(1)构造三元组函数
动态申请内存,分别把3个变量放入数组date中。使用C++独有的new语法,简便。

(2)判断日期是否合法
根据if语句判断输入日期的合法性 分别返回1或0 主函数以循环结构进行接下来的函数运行。

(3)判断是否为闰月
做过多次的题目了。

(4)设计星期函数
通过吉姆拉尔森公式 和数组嵌套实现功能

(5)输出月份英文名函数
很简单啦,将CONST定义的二维数组表示就可以了


(6)返回当前日期增加days天的日期函数
注意进位 和闰年的特殊情况 再次使用闰年判断函数

(7)比较日期间的逻辑关系函数
通过多重与或关系分别进行三级(年月日)的比较最后得出逻辑关系结论。

3.结果展示



4.调试碰到问题

Q1 一开始C++语法基本不会
A1 百度加上同学的博客参考,懂得了大致的格式
Q2一开始最后一次循环会出现两次
A2 改了判断合法性函数 加了个! 原本的函数结束后值为0会再次进入循环。
Q3好多地方感觉可以改进 代码复杂效率低
A3参考同学的算法改进

posted on 2019-03-09 21:25  Miracly  阅读(193)  评论(1编辑  收藏  举报