114-2 OOP B組 Week15 實習課練習 Problem1


Submit solution

Points: 100 (partial)
Time limit: 5.0s
Memory limit: 98M

Authors:
Problem type
Allowed languages
Java 19, Java 8

題目說明

  • 請定義一個類別Teacher,繼承Member類別。

  • Teacher繼承自Member,除了擁有Member的所有欄位之外,還需額外定義下列屬性:

屬性名稱 型態 說明
title String 職稱,例如:助理教授副教授,權限設為private
salary int 月薪(單位:元),權限設為private
subjects ArrayList<String> 該教師的開課科目清單,權限設為private
  • 實作方法:

    1. 無參數建構子:

      • 呼叫父類別的無參數建構子。
      • subjects初始化為空的ArrayList<String>
    2. 有參數建構子:

      • 參數帶入所有屬性。
      • 利用 super(...) 將共用屬性傳給父類別處理。
      • subjects初始化為空的ArrayList<String>
    3. public void addSubject(String subject)

      • 如果帶入的subject不存在於subjects中,則將subject加入subjects中。
      • 如果帶入的subject已經存在於subjects中,只要直接輸出錯誤資訊即可,不結束程式。
        • 例如subject計算機程式設計且已經存在於subjects中,則直接輸出:
          科目已存在: 計算機程式設計
    4. public void removeSubject(String subject)

      • 如果帶入的subject存在於subjects中,將subjectsubjects中移除。
      • 如果帶入的subject不存在於subjects中,只要直接輸出錯誤資訊即可,不結束程式。
        • 例如subject計算機程式設計且不存在於subjects中,則直接輸出:
          科目不存在: 計算機程式設計
    5. public String getSubjectListStr()

      • 回傳String,將subjects中所有科目以頓號串接,注意字串的最後一個字元不可以是
      • subjects為空,則回傳"尚無開課科目"
    6. 覆寫 getInfo()

      • 利用super.getInfo()取得父類別的基本屬性並在其後附加教師專屬屬性(職稱月薪開課科目)。
      • 開課科目使用getSubjectListStr()
      • 格式參考範例輸出。
      • 方法開頭加上@Override標註。

範例程式碼:

import java.util.ArrayList;
import java.util.Scanner;

class Member {
    protected String id;
    protected String dept;
    protected String name;
    protected String email;
    protected String phone;

    public Member() {

    }

    public Member(String id, String dept, String name, String email, String phone) {
        this.id = id;
        this.dept = dept;
        this.name = name;
        this.email = email;
        this.phone = phone;
    }

    public String getInfo() {
        return "學號: " + id + "\n科系: " + dept + "\n姓名: " + name + "\n電子郵件: " + email + "\n電話: " + phone;
    }
}

// 定義類別Teacher

public class test {
    public static void main(String[] args) {
        // 完成下方主程式要求
    }
}

主程式要求:

  1. 輸入三行字串。
  2. 第一行為老師的基本資訊,以一個空格" "間隔,依序代表:iddeptnameemailphonetitlesalary
  3. 第二行為老師要新增的科目名稱(一個至多個),以一個空格" "間隔。
  4. 第三行為老師要刪除的科目名稱(一個至多個),以一個空格" "間隔。
  5. 由類別Teacher宣告一個老師物件teacher
  6. 先將多個要新增的科目名稱依序使用teacher.addaddSubject()操作。
  7. 再將多個要新增的科目名稱依序使用teacher.removeSubject()操作。
  8. 最後印出teacher.getInfo()

範例輸入/輸出

範例輸入1

T001 資訊管理學系 王大明 wang@csim.edu.tw 0912-345-678 副教授 72000
資料結構 演算法 計算機組織
演算法

範例輸出1

學號: T001
科系: 資訊管理學系
姓名: 王大明
電子郵件: wang@csim.edu.tw
電話: 0912-345-678
職稱: 副教授
月薪: 72000
開課科目: 資料結構、計算機組織

範例輸入2

T002 電機工程學系 李靜宜 lee@ee.edu.tw 0922-111-222 教授 95000
電路學 電路學 電磁學 訊號與系統
訊號與系統

範例輸出2

科目已存在: 電路學
學號: T002
科系: 電機工程學系
姓名: 李靜宜
電子郵件: lee@ee.edu.tw
電話: 0922-111-222
職稱: 教授
月薪: 95000
開課科目: 電路學、電磁學

範例輸入3

T003 數學系 陳俊豪 chen@math.edu.tw 0933-444-555 助理教授 58000
微積分 線性代數
統計學

範例輸出3

科目不存在: 統計學
學號: T003
科系: 數學系
姓名: 陳俊豪
電子郵件: chen@math.edu.tw
電話: 0933-444-555
職稱: 助理教授
月薪: 58000
開課科目: 微積分、線性代數

範例輸入4

T004 物理學系 林美惠 lin@phys.edu.tw 0944-666-777 講師 45000
普通物理 量子力學
普通物理 量子力學

範例輸出4

學號: T004
科系: 物理學系
姓名: 林美惠
電子郵件: lin@phys.edu.tw
電話: 0944-666-777
職稱: 講師
月薪: 45000
開課科目: 尚無開課科目

範例輸入5

T005 化學系 張世偉 chang@chem.edu.tw 0955-888-999 副教授 68000
有機化學 有機化學 無機化學 分析化學
有機化學 熱力學 分析化學

範例輸出5

科目已存在: 有機化學
科目不存在: 熱力學
學號: T005
科系: 化學系
姓名: 張世偉
電子郵件: chang@chem.edu.tw
電話: 0955-888-999
職稱: 副教授
月薪: 68000
開課科目: 無機化學

範例輸入6

T006 外文學系 吳雅婷 wu@foreign.edu.tw 0966-000-111 教授 88000
英語寫作
日語會話

範例輸出6

科目不存在: 日語會話
學號: T006
科系: 外文學系
姓名: 吳雅婷
電子郵件: wu@foreign.edu.tw
電話: 0966-000-111
職稱: 教授
月薪: 88000
開課科目: 英語寫作

Comments

There are no comments at the moment.