DS博客作業01--日期抽象數據類型設計與實現
1.思維導圖及學習體會
1.1第一章緒論知識點思維導圖

1.2 學習體會
這次大作業,我以為挺簡單的,因為代碼量總體不大,但實際動手做起來還是挺耗時間的。首先還是對C++的語法不夠熟悉,其次就是自己的編程量還不夠,碰到問題不能夠自己獨立地解決,在修改bug的時候會比較費時間。
這次作業感覺也是一個鍛煉吧,通過這次作業對C++更加有感覺,然后對函數的運用也更熟悉了。這次大作業,我以為挺簡單的,因為代碼量總體不大,但實際動手做起來還是挺耗時間的。首先還是對C++的語法不夠熟悉,其次就是自己的編程量還不夠,碰到問題不能夠自己獨立地解決,在修改bug的時候會比較費時間。熟能生巧,一步步好好練習就行。
2.大作業作業內容
2.1 設計日期的ADT類型
ADT Date{
數據對象:
D={year, month, day|year, month, day屬于int類型}
操作關系:
R={<year, month>,<month, day>}
數據操作:
void InitDate(Date &date, int year, int month, int day);//操作結果:構造日期數據結構Date
Status IsLeapyear(Date date);//操作結果:判斷是不是閏年,是則返回TRUE,否則返回FALSE
string WhichWeek(Date date);//操作結果:返回星期幾
string WhichMonth(Date date);// 操作結果:返回是相應月份的英文名
Date AddDate(Date date, int day);//操作結果:返回增加天數后的日期
char Compare(Date date, Date otherDate);//操作結果:比較日期間的邏輯關系
Status IsLeageldate(Date &date, int year, int month, int day);//操作結果:判斷輸入的日期是否合法
string PrintDate(Date date);//將日期格式化輸出
void DestroyDate(Date date); //銷毀鏈表
};
2.2.數據抽象:頭文件
- date.h
![]()
- common.h
![]()
2.3數據封裝說明
函數的定義
-
InitDate初始化日期
![]()
-
IsLeapyear判斷是不是閏年,是閏年返回TRUE,否則返回FALSE
![]()
-
WhichWeek返回星期幾的函數
![]()
-
WhichMonth返回月份英文名的函數
![]()
-
AddDate增加天數之后的日期函數
![]()
![]()
-
Compare比較兩個日期大小的函數
![]()
-
IsLeageldate判斷日期合不合法,合法返回TRUE,不合法返回FALSE
![]()
-
PrintDate格式化輸出日期
![]()
-
DestroyDate銷毀鏈表
![]()
3.結果展示
-
int.txt
![]()
-
out.txt
![]()

4.調試碰到問題
- 判斷日期合不合法時,黑框刷出一片提示日期不合法的
if日期合不合法條件判斷失誤,加上符號“!”即可 - 在日期合法性判斷那里顯示異常訪問
當時把初始化函數放到判斷合法性函數后面去了,導致非法訪問 - 輸出的日期亂碼
類型轉換出錯導致亂碼,對應改正即可














浙公網安備 33010602011771號