博客作业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天。

 

posted @ 2019-03-10 19:12  做作业做作业  阅读(268)  评论(0编辑  收藏  举报