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

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徹底不一樣,剛開始不知道爲何,以爲那些函數也都沒問題,文件讀取也沒錯。後來請教了同窗,才發現文件名打錯了。
相關文章
相關標籤/搜索