NTOU-CS C++ Program Design

Instructor:Pei-yih Ting

88/3/15

作業二:簡易成績資料庫

本作業中你要應用基本的類別設計,建構元,以及解構元來設計一個基本的資料庫以存放學生的成績。以下是執行的列印結果,可以說明大部分程式的功能

 


c:>assign2

---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作
4
>>資料庫內沒有任何資料
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作 1
請輸入學生姓名:張三
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作
2
請輸入學生姓名:張三
請輸入成績:76
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作 2
請輸入學生姓名:張三
請輸入成績:96
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作 3
請輸入學生姓名:張三
>>姓名:張三
>>成績:76 96
>>平均成績是:86
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作 1
請輸入學生姓名:李四
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作
3
請輸入學生姓名:李四
>>姓名:李四
>>目前沒有記錄任何資料
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作
2
請輸入學生姓名:李四
請輸入成績:80
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作
3
請輸入學生姓名:王五
>>資料庫內找不到此學生
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作
4
>>姓名:張三
>>成績:76 96
>>平均成績是:86
>>姓名:李四
>>成績:80
>>平均成績是:80
---
請選擇下列:
1:增加一新學生
2:對一學生增加一新成績
3:查詢一學生之所有成績
4:列印顯示所有資料庫中之資料
5:結束操作
5

 


請注意:所有印出提示與資料請與上圖完全相同以利自動測試, 所有冒號都是中文全型冒號, 數字選項為英文半型, 每一次查詢之分段符號為三個減號("---")˙

 

為了降低你的負擔, 請依照下列提示製作你的類別:

  1. 首先製作 GradeT 類別以存放同一個學生的所有成績, 本作業中限定最多可輸入 6 個成績, 如果使用者打算存入第七個成績時系統會列印出下列錯誤訊息
    >>超過個人最多成績筆數無法加入資料庫內
  2. 製作 StudentT 類別以存放某一學生之個人資料, 在此類別中需動態配置一陣列存放學生之姓名, 此外你必須假設學生姓名不超過30個字元, 如此你可以將由鍵盤輸入的字元暫時存放在一個固定長度的暫存記憶體陣列內, 另外此類別內需有一個 GradeT 類別的私有物件來存放此學生的成績。
  3. 製作一 GroupT 的類別來存放所有學生的資料, 並且處理輸入命令的解譯工作, 此類別內應該要用一個指標陣列來存放動態配置的學生物件, 系統最多可存放 100 個學生的資料, 如果使用者要求存入超過 100 個學生, 系統會印出如下的錯誤訊息:
    >>本資料庫只能容納100名學生目前人數已滿
    輸入命令解譯工作由此類別的成員函式 Query() 來負責, 此函式為一無窮迴圈, 直到使用者輸入”結束操作”為止, 程式的主函式 main 應該如下列所示
    viod main()
    {
    }
    此函式為本程式中唯一不屬於任何物件的函式。

 

除以上要求與說明外, 你必須自己加入其它必須的成員變數與成員函式, 程式撰寫時請注意下列各項 C++ 程式設計的一般要點:

  1. 如果成員函式不會更改物件狀態與內容的話, 請使用 const
  2. 儘量運用 initialization list 來架構你的建構元
  3. 不要讓你的資料成員成為 public, 不要讓 private 的成員函式成為 public
  4. 物件所有成員的初始值要在建構元中一併設定完成
  5. 擁有動態配置成員的物件要有適當的解構元

注意事項: