python学生情報管理システム(完全版)


本論文は前の編(pythonプロジェクト:学生情報管理システム(初版))に基づいて改善され、新たな機能が追加される。
主に含まれています
完璧部分:入力ミス;データクエリなどの異常エラーがありません。
新しい機能:ファイルの操作:ファイルの読み書き、テキスト文字列の詳細な解析(全体の解析分解と再編成についてはコード、コメントが追加されています。)
学生情報管理システム(完全版)
学生情報管理項目は、操作画面を持って、各操作を完了することが要求されます。
+−−−−−−−−−−−−−−−−−−−−−−−−−+
|1)学生情報を追加する|
すべての学生の情報を表示します。
|3)学生情報を削除する|
|4)学生情報を修正する|
|5)学生の成績が高い-低いによって学生の情報を表示する|
|6)学生の成績が低い-高い順に学生の情報を表示する|
|7)学生の年齢の高い-低いによって学生の情報を表示する|
|8)学生の年齢の低い-高によって学生の情報を表示する|
|  9)学生情報をファイルに保存する(students.txt)                |
|10)ファイルからデータを読み出す(students.txt)                |
退出:その他任意のボタン<回車>                                  |
+−−−−−−−−−−−−−−−−−−−−−−−−−+   
詳細コードは以下の通りです。

# student_info.py
#         ,       ,       :
# +----------------------+
# | 1)                            |
# | 2)                          |
# | 3)                            |
# | 4)                            |
# | 5)      -                |
# | 6)      -                |
# | 7)      -                |
# | 8)      -                |
# | 9)         (students.txt) |
# | 10)        (students.txt) |
# |   :      <  > |
# +----------------------+          |
 
 
def meun():
 menu_info = '''+----------------------+
| 1)       |
| 2)          |
| 3)       |
| 4)       |
| 5)      -        |
| 6)      -        |
| 7)      -        |
| 8)      -        |
| 9)         (students.txt) |
| 10)        (students.txt) |
|   :      <  > |
+----------------------+
'''
 print(menu_info)
 
 
#         sorted  , key      
def get_age(*l):
 for x in l:
 return x.get("age")
def get_score(*l):
 for x in l:
 return x.get("score")
 
# 1)      
def add_student_info():
 L = []
 while True:
 n = input("     :")
 if not n: #          
 break
 try:
 a = int(input("     :"))
 s = int(input("     :"))
 except:
 print("    ,      ....      ")
 continue
 info = {"name":n,"age":a,"score":s}
 L.append(info)
 print("        !!!")
 return L
 
# 2)         
def show_student_info(student_info):
 if not student_info:
 print("     .....")
 return
 print("  ".center(8),"  ".center(4),"  ".center(4))
 for info in student_info:
 print(info.get("name").center(10),str(info.get("age")).center(4),str(info.get("score")).center(4))
 
# 3)      
def del_student_info(student_info,del_name = ''):
 if not del_name:
 del_name = input("          :")
 for info in student_info:
 if del_name == info.get("name"):
 return info
 raise IndexError("       ,    %s" %del_name)
 
# 4)      
def mod_student_info(student_info):
 mod_name = input("          :")
 for info in student_info:
 if mod_name == info.get("name"):
 a = int(input("     :"))
 s = int(input("     :"))
 info = {"name":mod_name,"age":a,"score":s}
 return info
 raise IndexError("       ,    %s" %mod_name)
 
# 5)      -       
def score_reduce(student_info):
 print("      -   ")
 mit = sorted(student_info ,key = get_score,reverse = True)
 show_student_info(mit)
 
# 6)      -       
def score_rise(student_info):
 print("      -   ")
 mit = sorted(student_info ,key = get_score)
 show_student_info(mit)
 
# 7)      -       
def age_reduce(student_info): 
 print("      -   :")
 mit = sorted(student_info ,key = get_age,reverse = True)
 show_student_info(mit)
 
# 8)      -       
def age_rise(student_info): 
 print("      -   :")
 mit = sorted(student_info ,key = get_age)
 show_student_info(mit)
 
# 9)         (students.txt)
def save_info(student_info):
 try:
 students_txt = open("students.txt","w") #       ,       
 except Exception as e:
 students_txt = open("students.txt", "x") #      ,       
 for info in student_info:
 students_txt.write(str(info)+"
") # , students_txt.close() # 10) (students.txt) def read_info(): old_info = [] try: students_txt = open("students.txt") except: print(" ") # , return while True: info = students_txt.readline() if not info: break # print(info) info = info.rstrip() #  # print(info) info = info[1:-1] # {} # print(info) student_dict = {} # for x in info.split(","): # , # print(x) key_value = [] # ,key_value[0] key,key_value[0] value for k in x.split(":"): # : k = k.strip() #  # print(k) if k[0] == k[-1] and len(k) > 2: # key_value.append(k[1:-1]) #   ' else: key_value.append(int(k)) # print(key_value) student_dict[key_value[0]] = key_value[1] # # print(student_dict) old_info.append(student_dict) # students_txt.close() return old_info def main(): student_info = [] while True: # print(student_info) meun() number = input(" :") if number == '1': student_info = add_student_info() elif number == '2': show_student_info(student_info) elif number == '3': try: student_info.remove(del_student_info(student_info)) except Exception as e: # print(e) elif number == '4': try: student = mod_student_info(student_info) except Exception as e: # print(e) else: # , , student_info.remove(del_student_info(student_info,del_name = student.get("name"))) student_info.append(student) elif number == '5': score_reduce(student_info) elif number == '6': score_rise(student_info) elif number == '7': age_reduce(student_info) elif number == '8': age_rise(student_info) elif number == '9': save_info(student_info) elif number == '10': student_info = read_info() else: break input(" ") main()
管理システムの詳細については『管理システムのテーマ』をクリックして学習してください。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。