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

1.思维导图及学习体会

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


1.2 学习体会

这周刚刚学习了数据结构绪论和一部分线性表的知识,因为寒假提前预习了一会儿,在课堂上可以较快理解老师讲的内容。但是在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>}
数据操作:
void NewDate(DATE &date,ElemType day,ElemType mouth,ElemType year);  
	//操作结果:构造三元组,对year,mouth,day赋值 
int ScDate(DATE date,ElemType day,ElemType mouth,ElemType year,ofstream &write);  
	//初始条件:三元组date存在,文件能成功打开 
    //操作结果:返回年月日,并判断是否合理 
int IfRun(DATE date,ofstream &write);   
	//初始条件: 三元组date存在,文件能成功打开 
    //操作结果:若是闰年返回1,否则返回0.   
int JudgeWeek(DATE date,ElemType day,ElemType mouth,ElemType year,ofstream &write);    
	//初始条件: 三元组date存在,文件能成功打开 
    //操作结果:判断输入的日期为星期几。   
int EngMouth(DATE date,ofstream &write);  
	//初始条件: 三元组date存在,文件能成功打开   
    //操作结果:输出当前日期月份的英语单词   
int AddDays(DATE date,ElemType day,ElemType mouth,ElemType year,ofstream &write);  
	//初始条件: 三元组date存在,文件能成功打开 
    //操作结果:返回当前日期增加days天的日期.    
int CompareDay(DATE date,ofstream &write);  
	//初始条件: 三元组date存在,文件能成功打开 
    //操作结果:比较当前日期与otherDate的逻辑关系
  }ADT Date

2.2.数据抽象:头文件


2.3数据封装说明

(1)构造日期数据类型函数

做法:动态分配内存空间,将year,month,day存入数组date中


(2)年月日输入函数并判断函数

做法:判断输入的年月日是否合法,否则重新输入



(3)判断是否是闰年函数

做法:简单的判断,输出结果


(4)判断星期几函数

做法:将数组中的数据存入变量,再对变量进行变换,通过数学公式得出结果


(5)输出月份英文名函数

做法:对数组中代表月份的位序进行判断,依次输出


ps:因为后面都一样,就不进行截图!!

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

做法:先将数据存放到新定义的变量,再从新定义的变量的day开始加,对月份的day进行判断,依此类推到month和year的增加


(7)比较日期间的逻辑关系函数

做法:输入一个日期,判断是否合法,先比较年,再月,在日。


头文件


3.结果展示

测试文件数据,input.txt:

运行结果写入out.txt:

写入:

输出:


4.调试碰到问题

  • 1.对c++的语法可能不太熟悉,需要阅读同学代码或者上网查找。
  • 2.代码冗长,算法效率太低,看了范华同学的代码有点启发,在今后作业会加以使用。
  • 3.在文件的输入中遇到了很多问题,对于c++文件的语法掌握不牢。
posted @ 2019-03-07 20:48  AshinLuoX  阅读(340)  评论(0编辑  收藏  举报