1.思维导图及学习体会

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

1.2 学习体会

本次大作业要求使用没有学习过的C++语法,对该语法有了初步认识但还需要深入学习,刚开始觉得难度会比较大,但大部分语法和C语言还是相通的,有些甚至比C语言来得简洁。在今后学习中要多多使用C++,更深刻体会它的便利之处。数据结构的难度相比上学期自然时更大的,需要付出更多的努力。

2.大作业作业内容

2.1 设计日期的ADT类型

ADT Date{
数据对象:D={year,month,day|year,month,day属于int类型}
数据关系:R1={<year,month>,<month,day>}
数据操作:
void InitDate(Date &date,int year,int month,int day); 
    //操作结果:构造了三元组T,对元素Year,month,day赋值    
int Judge(Date &date,ofstream &writefile);  
    //初始条件:三元组T已存在
    //操作结果:判断日期是否合法,是,把日期写入文件  
int LeapYear(Date &date,ofstream &writefile);  
    //初始条件:三元组T已存在  
    //操作结果:判断是否是闰年 
void WeekDay(Date date,ofstream &writefile);
    //初始条件:三元组T已存在  
    //操作结果:返回这个日期是星期几
void MonthEnglish(Date date,ofstream &writefile);
    //初始条件:三元组T已存在  
    //操作结果:返回月份的英文名
void AddDay(Date date,ofstream &writefile);
    //初始条件:三元组T已存在  
    //操作结果:返回当前日期增加days天的日期
void Compare(Date date,ofstream &writefile);
    //初始条件:三元组T已存在  
    //操作结果:比较当前日期与otherDate的逻辑关系
}ADT DATE


2.2.数据抽象:头文件

Date.h

2.3数据封装说明

(1)构造日期三元组函数

  • 构造三元组date,存放年月日

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

  • 判断年份能否被4,100,400整除

(3)判断日期是否合法函数

  • 若月份小于1,大于12都是不合法的,其次,天数小于,大于该月的最大天数也是不合法的

(4)返回日期是星期几函数

  • 用基姆拉尔森计算公式计算星期几

(5)返回月份的英文

  • 用switch语句返回月份英文

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

  • 天数一天天累加,天数超过该月最大天数,月份加1,天数置为1,若月份大于12,年份加1,月份,天数置为1

(7)比较当前日期与otherDate的逻辑关系函数

  • 先按比较年份,接着比较月份,最后比较天数的顺序判断,直到判断出就停止

3.结果展示


4.调试碰到问题

1.对C++语法不熟悉,开始动手的时候有点茫然,不知该从何下手
2.文件打开,读取的时候,文件名input.txt打错了,导致读出乱掉的年份,写入文件out.txt的日期和文件input.txt完全不同,刚开始不知道为什么,觉得那些函数也都没问题,文件读取也没错。后来请教了同学,才发现文件名打错了。