1.思维导图及学习体会

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

1.2学习体会

一开学就是大作业,我方了。学习数据结构呢其实跟之前学习C的时候感觉没多大差别,最主要的就是从C换成了C++,虽然并没有学过C++,但是还有百度(可还行)。不会就查,查多了,也就懂得多了,毕竟C++跟C差不多。最主要得是,C++真的比C要少写好多行代码。目前学的知识呢,还比较简单,不过接下来要更加努力,别再像上学期那样到课设的时候,还有知识点不会去查书。

2.大作业作业内容

2.1设计日期的ADT类型

ADT Date{
数据对象:D={year,month,day|year,month,day属于ElemType类型}
数据关系:R={<year,month>,<month,day>}
数据操作:
Status InitDate(Date &date, ElemType year, ElemType month,ElemType day);//初始化日期//操作结果:构造三元组date,元素year、month、day分别为年、月、日
string ExpDate(Date date);//初始条件:三元组date存在//操作结果:以字符串的形式输出日期
Status IsLeapyear(ElemType year);//初始条件:三元组date存在//操作结果:若是闰年则返回TRUE,否则返回FALSE
string Week(Date date);//初始条件:三元组date存在//操作结果:返回这个日期是星期几
string MonthInEnglish(Date date);//初始条件:三元组date存在//操作结果:返回月份英文名
void AddDate(Date &date, ElemType days);//初始条件:三元组date存在//操作结果:返回当前日期增加days天的日期
char CompareDate(Date date,Date OtherDate);//初始条件:三元组date存在//操作结果:比较当前日期与OtherDate的逻辑关系
}ADT Date

2.2数据抽象:头文件

Common.h

Date.h

2.3数据封装说明

(1)构造三元组函数

分配动态内存,构造三元组,并判断日期是否合法

(2)格式化日期函数

以字符串的形式输出日期

(3)判断闰年函数

按照公式判断该日期是年份否是闰年,是返回TRUE,反之返回FALSE

(4)返回星期函数

根据公式判断该日期所在的星期,并返回该星期

(5)返回月份英文函数

(6)增加日期函数

输入所加的天数,并返回增加改天数之后的日期

(7)比较函数

判断输入日期与原日期之间的逻辑关系

(8)主函数

int main()
{Date date;//定义一个date的三元组int year, month, day;int days;string newDate;         //增加days天后的日期Date otherDate;string strDate;string strWeek;string str;char op;ifstream infile;infile.open("input.txt", ios::in);ofstream outfile;outfile.open("output.txt", ios::out);while (!infile.eof()){infile >> year >> month >> day;if (!InitDate(date, year, month, day)){strDate = ExpDate(date);cout << strDate << "不是合法日期" << endl << endl;outfile << strDate << "不是合法日期" << endl << endl;continue;}strDate = ExpDate(date);cout << strDate << endl;outfile << strDate  << endl;if (IsLeapyear(year)){cout << year << "是闰年" << endl;outfile << year << "是闰年" << endl;}else{cout << year << "不是闰年" << endl;outfile << year << "不是闰年" << endl;}strWeek = Week(date);cout << strDate << strWeek << endl;outfile << strDate << strWeek << endl;str = MonthInEnglish(date);cout << strDate << "月份是" << str << endl;outfile << strDate << "月份是" << str << endl;cout << "请输入增加天数:";cin >> days;AddDate(date, days);newDate = ExpDate(date);cout << strDate << '+' << days << "是" << newDate << endl;outfile << strDate << '+' << days << "是" << newDate << endl;cout << "请输入与当前日期相比较的日期:";/*cin >> year >> month >> day;while (!InitDate(otherDate, year, month, day));{cout << "请输入正确的日期:" << endl;cin >> year >> month >> day;}*/while (1){cin >> year >> month >> day;if (!InitDate(otherDate, year, month, day)){cout << "请输入正确的日期:" << endl;continue;}elsebreak;}newDate = ExpDate(otherDate);op = CompareDate(date, otherDate);cout << strDate << op << newDate << endl<<endl;outfile << strDate << op << newDate << endl<<endl;}infile.close();outfile.close();system("pause");
}

3.结果展示

输入数据

输出结果

4.调试碰到问题

  • 一开始的时候,输出英文月份的那个函数无法运行,导致整个函数都崩了。去找了一下我函数中的逻辑关系,发现并没有问题,但是一到那个地方程序就崩了,之后又差不多找了半个多小时的代码问题(因为vs那会不太会调试,就没一步步调试了),后来突然get到vs的调试方法,然后从头调试,然后发现就算三元组传递到函数的时候没有&取地址符也会改变三元组中数据的值,就把每个函数都添加了一些临时变量,来存放三元组中的值。然后程序就正确运行了。

转载于:https://www.cnblogs.com/Lay-549/p/10470705.html

DS博客作业01--日期抽象数据类型设计与实验相关推荐

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

    1.思维导图及学习体会 1.1第一章绪论知识点思维导图 1.2 学习体会 本次大作业使用的是c++语法,作为一个纯正的小白,在未知领域上一点点地摸索,靠着百度和大佬的帮助下渐渐地掌握了一些c++的使用 ...

  2. DS博客作业03--栈和队列

    DS博客作业03--栈和队列 1.本周学习总结(0--1分) 谈谈你对栈和队列结构的认识及学习体会. 这章有认真预习,但做题还要依靠书,记不住,可能还需要多加练习,在PTA上的题只做了栈的,队列的做得 ...

  3. DS博客作业08--课程总结

    1.当初你是如何做出选择计算机专业的决定的? 当初选择计算机专业是因为比较喜欢电脑,有事没事喜欢慢慢摸索一些关于电脑的乱七八糟的东西.因为接触电脑比较早,所以对电脑的操控什么的都比较熟练.当然我也特别 ...

  4. DS博客作业04--树大作业

    1.树的存储结构 本组采用的树的存储结构为链式结构,选择如图所示的结构体 Name为结点的名称 LevelNum为孩子节点的个数 *Children[20]用来指向不同的孩子结点(类似于二叉树的结构体 ...

  5. DS博客作业07--查找

    1.本周学习总结(0--2分) 1.1.思维导图 1.2谈谈你对查找运算的认识及学习体会. 2.PTA实验作业(6分) 本周要求挑3道题目写设计思路.调试过程.设计思路用伪代码描述.题目选做要求: 原 ...

  6. DS博客作业05--树

    1.本周学习总结 学习体会:树是一种重要的结构在生活上有大量的使用,例如文档和目录都是如此.起初在接触树的时候完全不知道这样一种结构是怎么实现的,对这样一种结构的实现感到神奇.在对二叉树的学习中渐渐对 ...

  7. DS博客作业06--图

    1.本周学习总结 1.思维导图 2.谈谈你对图结构的认识及学习体会. 原本以为树已经够难的了,结果发现觉得太早了.图好难,看不懂.图是由两个集合V和E组成,V指的是顶点的有限集合,E代表两个不同顶点的 ...

  8. DS博客作业02--线性表

    1.本周学习总结 1.1思维导图 1.2.谈谈你对线性表的认识及学习体会. 对于线性表的操作过程,需要对指针操作这一块比较熟悉,因为算法中用到的指针非常多,包括顺序表和链表的建表,LinkList * ...

  9. DS博客大作业--树(李天明组)

    DS博客大作业--树 大作业博客要求 (10分) 1.树的存储结构说明 .树采用的是链式存储结构. .这段代码中定义了两个结构体.第一个是自定义为Name类型的结构体,里面的成员有字符串str和类型为 ...

  10. 数据结构线性表博客作业总结

    作业总结 一.基本要求与评分要求 1.1 基本要求 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 博客作业不规范,没有Markdown语法 - 扣分 泛泛而谈( ...

最新文章

  1. pageHelper插件
  2. java8 b计算时间差_java8-计算时间差的方法
  3. Qt中事件循环机制详解
  4. 数据库:如果MySQl磁盘满了,如何解决!
  5. WinPE作为启动硬盘
  6. 别再问“自媒体怎么做”
  7. 如何写一手好 SQL!!!
  8. 解决2345劫持主页的办法--火绒2345专杀
  9. Markdown - CSND
  10. Java基础编程题50道题
  11. 华工材料力学能用计算机吗,华南理工大学材料力学考研经验分享与资料.pdf
  12. android psp 模拟器卡,手机PSP游戏闪退或卡顿的解决方法
  13. HTML怎么插入一段代码
  14. 计算机行业的最新技术,计算机行业发展空间巨大 三大必然趋势引领发展
  15. 逍遥刘强 - 期货大作手风云录(2015年8月28日)
  16. 英雄联盟手游版(MOBA)游戏体验报告
  17. 失落的帝国攻略java,失落的帝国 --- 吴哥旅游日记(8)
  18. 8051 C 中的sbit
  19. 【高级数据结构】线段树 | 求区间和
  20. ElasticJob定时任务学习总结

热门文章

  1. HDU 2068 RPG 的错排(错排问题,组合数)
  2. C++类成员函数的传参问题
  3. 在Winform中实现半透明遮罩层
  4. Opencv之获取边缘和画轮廓
  5. 智能优化算法:自私羊群优化算法-附代码
  6. 【LeetCode】【数组】题号:*697,相同度的最短连续子数组
  7. python_datetime
  8. 实习踩坑之路:URL传参错误,导致后台查不到数据,但是不报错
  9. java equals重写原则_如何正确的重写equals方法(避免各种陷阱)
  10. 画数轴的步骤_上分助手北师大数学七年级上册第二章有理数第二节数轴详细拆解...