1.思维导图及学习体会
1.1第一章绪论知识点思维导图
1.2 学习体会
本次大作业要求使用没有学习过的C++语法,对该语法有了初步认识但还需要深入学习,刚开始觉得难度会比较大,但大部分语法和C语言还是相通的,有些甚至比C语言来得简洁。在今后学习中要多多使用C++,更深刻体会它的便利之处。数据结构的难度相比上学期自然时更大的,需要付出更多的努力。
2.大作业作业内容
2.1 设计日期的ADT类型
ADT Date{
数据对象:D={year,month,day|year,month,day属于int类型}
数据关系:R1={<year,month>,<month,day>}
数据操作:
void InitDate(Date &date,int year,int month,int day);
//操作结果:构造了三元组T,对元素Year,month,day赋值
int Judge(Date &date,ofstream &writefile);
//初始条件:三元组T已存在
//操作结果:判断日期是否合法,是,把日期写入文件
int LeapYear(Date &date,ofstream &writefile);
//初始条件:三元组T已存在
//操作结果:判断是否是闰年
void WeekDay(Date date,ofstream &writefile);
//初始条件:三元组T已存在
//操作结果:返回这个日期是星期几
void MonthEnglish(Date date,ofstream &writefile);
//初始条件:三元组T已存在
//操作结果:返回月份的英文名
void AddDay(Date date,ofstream &writefile);
//初始条件:三元组T已存在
//操作结果:返回当前日期增加days天的日期
void Compare(Date date,ofstream &writefile);
//初始条件:三元组T已存在
//操作结果:比较当前日期与otherDate的逻辑关系
}ADT DATE
2.2.数据抽象:头文件
Date.h
2.3数据封装说明
(1)构造日期三元组函数
- 构造三元组date,存放年月日
(2)判断是否是闰年函数
- 判断年份能否被4,100,400整除
(3)判断日期是否合法函数
- 若月份小于1,大于12都是不合法的,其次,天数小于,大于该月的最大天数也是不合法的
(4)返回日期是星期几函数
- 用基姆拉尔森计算公式计算星期几
(5)返回月份的英文
- 用switch语句返回月份英文
(6)返回当前日期增加days天的日期函数
- 天数一天天累加,天数超过该月最大天数,月份加1,天数置为1,若月份大于12,年份加1,月份,天数置为1
(7)比较当前日期与otherDate的逻辑关系函数
- 先按比较年份,接着比较月份,最后比较天数的顺序判断,直到判断出就停止
3.结果展示
4.调试碰到问题
1.对C++语法不熟悉,开始动手的时候有点茫然,不知该从何下手
2.文件打开,读取的时候,文件名input.txt打错了,导致读出乱掉的年份,写入文件out.txt的日期和文件input.txt完全不同,刚开始不知道为什么,觉得那些函数也都没问题,文件读取也没错。后来请教了同学,才发现文件名打错了。