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

1.思维导图及学习体会

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

DS博客作业01--日期抽象数据类型设计与实现_第1张图片

1.2 学习体会

比较大的一个感触是C++在一些项目上面确实是比C更加好用的,毕竟c更接近于机器语言。
通过这次大作业的学习,对数据结构大致有了一些了解,对于抽象数据类型的结构的两个特整:数据抽象和数据封装,也有了更好的领悟。

2.大作业作业内容

2.1 设计日期的ADT类型

ADT Date{
数据对象:
    D = {year,month,day | year,month,day属于int类型}
数据关系:
    R = {,}
数据操作:
    Status InitDate(Date &date, int year, int month, int day);
    //初始化日期
    //操作结果:构造了年月日为year, month, day 的Date

    string OutDate(Date date);
    //初始条件:date存在
    //操作结果:将日期以XXXX-XX-XX的string类型返回

    Status IsLeap(Date date);
    //初始条件:date存在
    //操作结果:是闰年返回TRUE。不是返回FALSE

    string WhichDay(Date date);
    //初始条件:date存在
    //操作结果:返回 string 类型的"是星期一", "是星期二"......

    string WhichMonth(Date date);
    //初始条件:date存在
    //操作结果:返回string类型的月份英文名

    Date AddDays(Date date, int days);
    //初始条件:date存在
    //操作结果:返回当前日期增加days天的日期

    char Relation(Date date, Date otherDate);
    //初始结果:date存在,otherDate存在
    //操作结果:返回 '>' '<' 或 '='

}ADT Date

2.2.数据抽象:

DS博客作业01--日期抽象数据类型设计与实现_第2张图片

2.3数据封装说明

(1)构造日期函数

做法:动态申请内存,将year,month,day存入date中
DS博客作业01--日期抽象数据类型设计与实现_第3张图片

(2)返回string类型日期函数

做法:将数字型数据利用函数转化到temp1,然后拼接起来
DS博客作业01--日期抽象数据类型设计与实现_第4张图片

(3)判断闰年函数

做法:很基础的题,,就不多说了,,,
DS博客作业01--日期抽象数据类型设计与实现_第5张图片

(4)判断星期几函数

做法:利用基姆拉尔森计算日期公式计算出星期几,然后将对应的字符串返回就好了
DS博客作业01--日期抽象数据类型设计与实现_第6张图片

(5)返回月份英文名函数

做法:过程很简单,看图就明白了
DS博客作业01--日期抽象数据类型设计与实现_第7张图片

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

做法:先将每个月的不同天数存储起来,将天数加在resultDate[2]也就是天数上,这时的天数可能超出了。然后利用while循环将天数与本月的最大天数进行动态比较,超了就进一。值得一提的是,当年份发生了改变时要对该年的2月份天数重新判断,否则会出错
DS博客作业01--日期抽象数据类型设计与实现_第8张图片

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

做法:转化成整型数直接比较
DS博客作业01--日期抽象数据类型设计与实现_第9张图片

(8)主函数文件操作部分

DS博客作业01--日期抽象数据类型设计与实现_第10张图片

3.结果展示

input.txt 文件

DS博客作业01--日期抽象数据类型设计与实现_第11张图片

输入界面

DS博客作业01--日期抽象数据类型设计与实现_第12张图片

output.txt 文件

DS博客作业01--日期抽象数据类型设计与实现_第13张图片

4.调试碰到问题

Q:C++不是很了解?

A:经学长推荐了一个”菜鸟教程“的网站,感觉很好用,文末附上链接

Q:将整型数转化成string类型时,由于不了解这个类型因而不知道怎么转化?

A:通过百度在CSDN上找到了一个函数能直接转化

菜鸟教程:http://www.runoob.com/cplusplus/cpp-tutorial.html

你可能感兴趣的:(DS博客作业01--日期抽象数据类型设计与实现)