大作业要求
题目:试仿照三元组或复数的抽象数据类型设计一个关于日期的抽象数据类型。
类型名称:DATE
数据对象:年,月,日。
数据操作:
- 初始化日期
- 返回日期的年、月、日
- 输出日期格式(可以自己设计格式,如2019/2/25 或者 2019-2-25)
- 判断是否闰年
- 返回这个日期是星期几
- 返回月份的英文名
- 返回当前日期增加days天的日期
- 比较当前日期与otherDate的逻辑关系
- 等等,可自己再扩展
实验要求:
抽象数据类型名为DATE。
- 用C++语法实现,要有
&,new,delete,cin,cout
等c++语法。 - 程序应对异常输入或者出错必要处理和提示,如月份超过12的数据
- 建工程文件实现,体现抽象数据类型的数据抽象和数据封装。
- 设计测试数据实现功能测试如闰年判断、返回月份等。测试数据存input.txt文件,运行结果写入out,txt.如:
测试文件数据,input.txt:
格式如:
2019 2 26
2000 13 9
2018 9 10
......
上述数据可以自己增加。
运行结果写入out.txt:
如:
2019/2/26
2019 不是闰年
2019/2/26是星期二
2019/2/26月份是February
2019/2/26+3是2019/3/1
2019/2/26>2018/3/4
2000 13 9 不是合法日期,月份不能超过12
。。。。(其他日期输出结果)
注意:上述代码实现后,请把代码复制到word文件中,上传课堂派。
1.思维导图及学习体会(2分)
1.1第一章绪论知识点思维导图
1.2 学习体会
2.大作业作业内容 (6分)
2.1 设计日期的ADT类型(1分)
参考代码:q群三元组代码,用ADT的抽象数据模型描述你的日期数据类型。如
ADT Triplet{
数据对象:D={e1,e2,e3|e1,e2,e3属于ElemType类型}
数据关系:R1={,}
数据操作:
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3);
//操作结果:构造了三元组T,元素e1,e2和e3的值分别被赋以参数v1,v2,v3的值。
Status DestroyTriplet(Triplet &T);
//操作结果:三元组T被销毁。
Status Get(Triplet T, int i, ElemType &e);
//初始条件:三元组T已存在,1<=i<=3。
//操作结果:用e返回T的第i元的值
Status Put(Triplet &T, int i, ElemType e);
//初始条件:三元组T已存在,1<=i<=3。
//操作结果:改变T的第i元的值为e。
。。。。。
}ADT Triplet
2.2.数据抽象:头文件)
截图展示你的头文件。头文件代码务必加入注释。
#include "Common.h"
#define ElemType int
typedef ElemType * Triplet;//由InitTriplet分配3个元素存储空间
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3);
//操作结果:构造了三元组T,元素e1,e2和e3的值分别被赋以参数v1,v2,v3的值。
Status DestroyTriplet(Triplet &T);
//操作结果:三元组T被销毁。
Status Get(Triplet T, int i, ElemType &e);
//初始条件:三元组T已存在,1<=i<=3。
//操作结果:用e返回T的第i元的值
。。。。。
2.3数据封装说明
截图展示每个运算操作代码。并文字简要介绍功能。如
(1)构造三元组函数
做法:动态申请内存,分别把3个变量放入数组T中。
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3)
{ //操作结果:构造了三元组T,元素e1,e2和e3的值分别被赋以参数v1,v2,v3的值。
//T = (ElemType *)malloc(3 * sizeof(ElemType));
T=new ElemType[3];
if(!T) exit(OVERFLOW); //分配存储空间失败
T[0] = v1; T[1] = v2; T[2] = v3;
return OK;
} //InitTriplet
3.结果展示(1分)
截图展示你的输入数据及输出结果。截图中可以简要文字描述每种功能
4.调试碰到问题(1分)
描述你调试中碰到问题及解决方法。