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

本文分享了使用C++进行日期数据结构设计与实现的学习经历,详细介绍了ADT类型设计、数据抽象与封装,以及包括判断闰年、计算生肖、基姆拉尔森星期计算等实用功能。

1.思维导图及学习体会

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

1476036-20190309151619368-126913389.png

1.2 学习体会

本次大作业使用的是c++语法,作为一个纯正的小白,在未知领域上一点点地摸索,靠着百度和大佬的帮助下渐渐地掌握了一些c++的使用,现在也算是可以使用一些语法。东西好不好,用过才知道!到现在发现c++的使用比C语言简单一点,比如:字符串合并c++用加法,C语言需要使用函数才可以,还有c++读取文件,写入文件的用法也比C简单得多。不过现在对于链表的使用还很不熟练,要好好学习!

2.大作业作业内容

2.1 设计日期的ADT类型

ADT Date{
数据对象:
    D = {year,month,day | year,month,day属于int类型}
数据关系:
    R = {<year,month>,<month,day>}
数据操作:
status readTxt(date &D, int year, int month, int day);
//初始化日期
//操作结果:构造了日期数据结构Date,其中year,month,days分别为Date中的年,月,日
status judgeRight(date &D,ofstream &outline);
//初始条件:date存在
//操作结果:判断日期是否属于正常范围
status leap_year(int year);
//初始条件:date存在
//操作结果:判断该年是否为闰年
string animals(date &D);
//初始条件:date存在
//操作结果:计算年份对应生肖
void CalculateWeekDay(date &D, ofstream &outline);
//初始条件:date存在
//操作结果:基姆拉尔森计算公式根据日期判断星期几
void addDate(date &D, ofstream &outline);
//初始条件:date存在
//操作结果:对于增加天数的计算
void compare(date &D, ofstream &outline);
//初始条件:date存在
//操作结果:比较日期的关系

2.2.数据抽象:

1476036-20190308224018088-315072769.png

2.3数据封装说明

(1)构造日期数据结构函数
做法:动态分配内存,构造三元组D
1476036-20190308225047972-1013897287.png
(2)日期格式
做法:直接输出就?了吧
1476036-20190308230949363-1869381663.png
(3)判断闰年函数
做法:使用算法判断
1476036-20190308231459512-279832257.png
(4)返回年份对应生肖
做法:用公式,对应返回string类型的字符
1476036-20190309151735532-1431968887.png
(5)返回星期函数
做法:使用基姆拉尔森计算公式,根据日期判断星期几
1476036-20190308232952262-1751764377.png
(6)返回月份英文名函数
做法:通过月份和指针数组得到English,然后输出
1476036-20190308233154331-1751697816.png
1476036-20190308233218737-758249811.png
(7)增加日期天数函数
做法:先将天数加在日期的天数上,再判断天数是否超过当月的天数,若超过则减去当月的天数并增加月份或年份,直至天数正常,算法以循环为主
1476036-20190308233328663-781040592.png
1476036-20190308233339964-412358761.png
(8)比较日期关系函数
做法:先判断年,在判断月,最后判断日,一步步判断得到答案
1476036-20190308233521763-1959556324.png
1476036-20190308234945318-1520116558.png
(9)主函数main()
1476036-20190308233826762-47896911.png
1476036-20190308233852816-2093733316.png

3.结果展示

控制台展示:
1476036-20190308234059981-217240144.png
文件夹展示:
1476036-20190308234259726-683753691.png

4.调试碰到问题

- Q:c++如何读写文件夹?
- A:头文件:fstream,使用ifstream。ofstream+定义名字,一个读一个写。
- Q:字符串合并?
- A:使用string定义类型,直接相加。

转载于:https://www.cnblogs.com/yue7521/p/10498737.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值