DS博客作業01--日期抽象數據類型設計與實現


大作業要求

題目:試仿照三元組或復數的抽象數據類型設計一個關於日期的抽象數據類型。

類型名稱:DATE

數據對象:年,月,日。

數據操作:

  • 初始化日期
  • 返回日期的年、月、日
  • 輸出日期格式(可以自己設計格式,如2019/2/25 或者 2019-2-25)
  • 判斷是否閏年
  • 返回這個日期是星期幾
  • 返回月份的英文名
  • 返回當前日期增加days天的日期
  • 比較當前日期與otherDate的邏輯關系
  • 等等,可自己再擴展

實驗要求:

抽象數據類型名為DATE

  • 用C++語法實現,要有&,new,delete,cin,cout等c++語法。
  • 程序應對異常輸入或者出錯必要處理和提示,如月份超過12的數據
  • 建工程文件實現,體現抽象數據類型的數據抽象和數據封裝。
  • 設計測試數據實現功能測試如閏年判斷、返回月份等。測試數據存input.txt文件,運行結果寫入out,txt.如:

測試文件數據,input.txt:

格式如:

  2019 2 26   
  2000 13 9
  2018 9 10   
   ......

上述數據可以自己增加。

運行結果寫入out.txt:

如:

2019/2/26
2019 不是閏年
2019/2/26是星期二
2019/2/26月份是February
2019/2/26+3是2019/3/1
2019/2/26>2018/3/4
2000 13 9 不是合法日期,月份不能超過12
。。。。(其他日期輸出結果)

注意:上述代碼實現后,請把代碼復制到word文件中,上傳課堂派。

1.思維導圖及學習體會(2分)

1.1第一章緒論知識點思維導圖

1.2 學習體會

2.大作業作業內容 (6分)

2.1 設計日期的ADT類型(1分)

參考代碼:q群三元組代碼,用ADT的抽象數據模型描述你的日期數據類型。如

ADT Triplet{
數據對象:D={e1,e2,e3|e1,e2,e3屬於ElemType類型}
數據關系:R1={<e1,e2>,<e2,e3>}
數據操作:
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3); 
    //操作結果:構造了三元組T,元素e1,e2和e3的值分別被賦以參數v1,v2,v3的值。    
Status DestroyTriplet(Triplet &T);  
    //操作結果:三元組T被銷毀。    
Status Get(Triplet T, int i, ElemType &e);  
    //初始條件:三元組T已存在,1<=i<=3。  
    //操作結果:用e返回T的第i元的值  
Status Put(Triplet &T, int i, ElemType e);  
    //初始條件:三元組T已存在,1<=i<=3。  
    //操作結果:改變T的第i元的值為e。  
。。。。。
}ADT Triplet

2.2.數據抽象:頭文件)

截圖展示你的頭文件。頭文件代碼務必加入注釋。

#include "Common.h"  
#define ElemType int   
typedef ElemType * Triplet;//由InitTriplet分配3個元素存儲空間  
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3);  
    //操作結果:構造了三元組T,元素e1,e2和e3的值分別被賦以參數v1,v2,v3的值。  
  
Status DestroyTriplet(Triplet &T);  
    //操作結果:三元組T被銷毀。  
  
Status Get(Triplet T, int i, ElemType &e);  
    //初始條件:三元組T已存在,1<=i<=3。  
    //操作結果:用e返回T的第i元的值  
  。。。。。

2.3數據封裝說明

截圖展示每個運算操作代碼。並文字簡要介紹功能。如

(1)構造三元組函數

做法:動態申請內存,分別把3個變量放入數組T中。

Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3)  
{   //操作結果:構造了三元組T,元素e1,e2和e3的值分別被賦以參數v1,v2,v3的值。  
      
    //T = (ElemType *)malloc(3 * sizeof(ElemType));  
    T=new ElemType[3];
    if(!T) exit(OVERFLOW);  //分配存儲空間失敗  
    T[0] = v1; T[1] = v2; T[2] = v3;  
    return OK;  
} //InitTriplet 

3.結果展示(1分)

截圖展示你的輸入數據及輸出結果。截圖中可以簡要文字描述每種功能

4.調試碰到問題(1分)

描述你調試中碰到問題及解決方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM