# Python實作範例 - 學生成績管理 ### 開發一個學生成績管理系統,有三個主要功能: 1. 管理學生成績 2. 查詢學生成績 3. 關於 ##### 管理學生成績 有兩個子功能: 1. 新增學生成績:學號、姓名、國文、英文、數學 2. 刪除學生成績:可以輸入學號或姓名來刪除 ##### 查詢學生成績 有兩個子功能: 1. 依學號查詢 2. 顯示全部成績 > 1. 成績查詢皆會自動加總分數 > 2. 子選單需要有回主選單功能 > 3. 主選單需要有離開功能 ### 程式碼 ##### 無函式版: ``` grades = {} # 空的dict(字典) while True: print('===================') print('學生成績管理系統') print('===================') print('1. 管理學生成績') print('2. 查詢學生成績') print('3. 關於') print('4. 離開') cmd = input('==>') if cmd == '1': # 管理學生成績 while True: print('===================') print('子選單: 管理學生成績') print('===================') print('1. 新增學生成績') print('2. 刪除學生成績') print('3. 回主選單') sub_cmd = input('==>') if sub_cmd == '1': # 新增學生成績 num = input('請輸入學號: ') name = input('請輸入姓名: ') mandiran = int(input('請輸入國文成績: ')) # int()轉成數字 math = int(input('請輸入數學成績: ')) english = int(input('請輸入英文成績: ')) # 新增一筆成績 grades[num] = [name, mandiran, math, english] #print(grades) # for 開發時除錯用 print('新增完成!') elif sub_cmd == '2': # 刪除學生成績 num = input('請輸入要刪除成績的學號: ') if num in grades.keys(): del grades[num] print('刪除完成!') else: print('查無此人!') #print(grades) # for 開發時除錯用 elif sub_cmd == '3': # 回主選單 break elif cmd == '2': # 查詢學生成績 while True: print('===================') print('子選單: 查詢學生成績') print('===================') print('1. 依學號查詢') print('2. 顯示全部成績') print('3. 回主選單') sub_cmd = input('==>') if sub_cmd == '1': # 依學號查詢 num = input('請輸入要查詢成績的學號: ') if num in grades.keys(): grade = grades[num] print('學號', num, ', ', grade[0], '的成績: 國文=', grade[1], \ ', 數學=', grade[2], ', 英文=', grade[3], ', 總分: ', \ grade[1] + grade[2] + grade[3]) else: print('查無此人!') elif sub_cmd == '2': # 顯示全部成績 if len(grades) == 0: print('無學生成績資料') else: for num, grade in grades.items(): print('學號', num, ', ', grade[0], '的成績: 國文=', grade[1], \ ', 數學=', grade[2], ', 英文=', grade[3], ', 總分: ', \ grade[1] + grade[2] + grade[3]) elif sub_cmd == '3': # 回主選單 break elif cmd == '3': # 關於 print('學生成績管理系統') print('版本: 0.01') print('日期: 2020-08-01') print('開發者: Aaron Ho') elif cmd == '4': # 離開 break else: print('輸入錯誤!') ``` ##### 函式版 students_system.py ``` grades = {} def student_system(): while True: print('-------------------') print('學生成績管理系統') print('-------------------') print('1. 管理學生成績') print('2. 查詢學生成績') print('3. 結束') c = input('=> ') if c == '1': func_1() elif c == '2': func_2() elif c == '3': break else: print('輸入錯誤!') def func_1(): while True: print('-------------------') print('管理學生成績') print('-------------------') print('1. 新增學生成績') print('2. 刪除學生成績') print('3. 回主功能表') c = input('=> ') if c == '1': add_grade() elif c == '2': del_grade() elif c == '3': break else: print('輸入錯誤!') def func_2(): while True: print('-------------------') print('查詢學生成績') print('-------------------') print('1. 依學號查詢') print('2. 查詢全部成績') print('3. 回主功能表') c = input('=> ') if c == '1': find_grade() elif c == '2': show_grades() elif c == '3': break else: print('輸入錯誤!') def add_grade(): n = input('請輸入學號: ') name = input('請輸入學生姓名: ') mandrain = input('請輸入國文成績: ') math = input('請輸入數學成績: ') english = input('請輸入英文成績: ') grades[n] = [name, mandrain, math, english] print('新增完成!') def del_grade(): n = input('請輸入要刪除的學號: ') if n in grades.keys(): del grades[n] print('刪除完成.') else: print('查無此人.') def find_grade(): n = input('請輸入要查詢的學號: ') if n in grades.keys(): grade = grades[n] print('學號: ', n, ', ', grade[0], '的成績: 國文=', grade[1], ', 數學=', grade[2], ', 英文=', grade[3]) else: print('查無此人.') def show_grades(): if len(grades) == 0: print('無學生成績.') return for n, grade in grades.items(): print('學號: ', n, ', ', grade[0], '的成績: 國文=', grade[1], ', 數學=', grade[2], ', 英文=', grade[3]) ``` main.py ``` import student_system st = student_system st.student_system() ``` #### 練習 1. 請將學生成績管理系統改為類別版本。