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:参考博客其他同学的用法,再加百度,比较快地掌握
posted on 2019-03-10 20:12  Salcious  阅读(218)  评论(2编辑  收藏  举报