DS博客作业01--日期抽象数据类型设计与实现
作者:互联网
1.思维导图及学习体会
1.1第一章绪论知识点思维导图
1.2学习体会
从这个学期开始开始学数据结构,先是接触了绪论,主要的题还在认识数据结构加以理解概念和进行简单的操作上,计算一些时间复杂度和空间复杂度,但通过做pta 上的题我发现,这里对数组和链表的要求也很多,我上个学期这方面的基础不好,所以这个学期要之前补这方面的知识。然后就是C++的语法,这个学期要自学,我在这方面也要下功夫。
2大作业作业内容
2.1设计日期的ADT类型
ADT DATE
{
数据对象:
D={year,month,day|year,month,day均为实数} //日期由年月日组成
数据关系:
R={<year,month>,<month,day>|year为年,month为月,day为日}
基本运算:
Status InitDate(DATE &D, int year, int month, int day);
//初始条件:存在日期
//操作结果:构造了三元组DATE,对年,月,日分别赋值,初始化日期 ,判断是否合法
string ReturnDate(DATE D);
//初始条件:存在日期
//操作结果:返回日期,以xxxx-xx-xx的方式返回
Status JudgLeapYear(DATE D);
//初始条件:存在日期
//操作结果:判断是否为闰年,是则返回语句,是闰年,不是则返回语句不是闰年
string GetWeek(DATE D);
//初始条件:存在日期
//操作结果:根据日期,判断该日期是星期几
string GetMonth(Date D);
//初始条件:存在日期
//操作结果:根据日期 ,判断月份,并返回月份的英文
Status AddDate(Date D, int theDay);
//初始条件:存在日期
//操作结果:返回增加天数后的日期
Status CompareDate(Date D);
//初始条件:存在日期
//操作结果:比较日期的大小,根据关系返回日期差
}
2.2数据抽象:头文件
2.3数据封装说明
(1).构造三元组DATE,并进行初始化日期,具有一定的容错提示
做法:先将year,month,day变为D数组的一部分,然后分类,闰年与不是闰年,天数为31,30,28,29 天的,但是思路比较简单。
(2).返回日期格式
做法:直接用cout输入日期
~~~
cout<<year<<" "<<month<<" "<<day<<endl;
~~~
(3).判断是否为闰年
做法:使用了常见的判断闰年的条件
(4).判断该存在日期为星期几
做法:利用基姆拉尔森计算公式,根据年月日,判断为星期几,并使用switch case,返回该星期的英文
(5).返回该日期所在月份的英文
做法:定义字符串函数,用switch case 返回改月份的英文
(6).比较日期的大小,根据关系返回日期差
做法:写两个函数求日期大小,一个传参为输入的年月日,一个传参为DATE,在写一个函数,输入日期,比较大小并通过返回日期差,看出大小。
(7).主函数部分
2.4结果展示
input.txt 文件
输入界面
out.txt 文件
2.5调试碰到问题
Q1:C++语法不清楚,比如文件怎么读入写入和简单的输入输出?
A1:通过询问同学和从网上查找资料。
Q2:在编译过程中会不断循环000是闰年?
A2:把判断日期是否合法中的D[0]改为year等。虽然我不是很懂为什么。
Q3:编译成功后无法读取到文件内容并写入out文件?
A3:第一开始我的input和out文件和我的代码都放在一个文件夹里,后来把他们从文件夹里拿出来后程序就能正常读取文件。
标签:返回,01,闰年,初始条件,日期,抽象数据类型,year,DATE,DS 来源: https://www.cnblogs.com/20000519yxn/p/10501801.html