1.思维导图及学习体会
1.1第一章绪论知识点思维导图
1.2 学习体会
本学期迎来的是概念更加抽象化的数据结构。[叹气.jpg]从课堂派的情况就能看出在这方面的进度并不理想qaq。对于一些比较抽象化的概念的理解还是止步于模仿。课堂上的内容会更偏向于理论化(听着感觉会了系列),而刚开学就来临的大作业还是比较令人头疼的。要一边回忆上学期所学习的c的内容,一边学习c++内容酱。还学习了三元组数据封装,是一种很好的方式,如果用结构体数组或者链表的表达,应该也是比较方便的。这个后期可以自己尝试练习。要及时完成大作业酱
2.大作业作业内容
2.1 设计日期的ADT类型
ADT Date{
数据对象:
D = {year,month,day | year,month,day属于int类型}
数据关系:
R = {<year,month>,<month,day>}
数据操作:
void DataEncap(Date &date,int year,int month,int day);
// 函数功能: 数据封装
// 操作结果: 返回三元组
int WeekDay(Date date);
// 函数功能:判断星期几
// 操作结果:返回对应数字
int IsLeagal(Date date);
// 函数功能:判断日期是否合法
// 操作结果:合法返回OK反之返回NO
int IsLeapYear(Date date);
// 函数功能: 判断是否闰年
// 操作结果: 闰年返回NO反之返回NO
int CompareDate(Date date,Date &newDate);
// 函数功能: 比较日期
// 操作结果: 返回><=对应数字012
Date AddDays(Date date,int mon[],int &addDay);
// 函数功能: 计算增加天数后日期
// 操作结果: 返回三元组
string DateBuild(Date date);
// 函数功能: 连接日期
// 操作结果: 返回字符串
}ADT Date
2.3数据封装说明
(1)构造日期函数
- 利用三元组进行数据封装,&实时更新。
(2)判断日期是否合法
- 利用分支语句,年月日依次判断日期是否合法
(3)判断是否闰年
- 一条语句 返回结果
(4)判断周几
- 判断周几(现成的公式可以现套)返回数字,再由主函数中定义的数组输出
(5)返回增加天数后日期
- 引用算法,传参传入addDay,引用符同步修改(便于后期写入文件)定义新的temp三元组,返回三元组,在主函数中,赋值给addDay,便于写入文件。算法参考百度上的计算方式
(6)比较日期
- 输入日期,同步更新。比较日期,返回相应数字。在主函数当中定义字符组><=,对应输出写入
(7)主函数
3.结果展示
input.txt
output.txt
控制台输出
4. 调试碰到的问题
- Q:在判断是否是闰年的时候,程序在函数中间运行总是停止,导致程序意外终止。
- A:在函数中间插入了一些cout语句,找出症结。发现直接cin数组赋值,导致传参出错,程序输错,纠正后就能正确运行了。
- Q:对于&符号的使用不够熟练
- A:单独写了另外的一个函数,测试了一下&的用法。
- Q:对于c++语法的不够熟练
- A:参考博客其他同学的用法,再加百度,比较快地掌握