python實現學生管理系統(文件管理)

def print_menue():
    print("----------")
    print("學生管理系統")
    print("1:添加學生")
    print("2:刪除學生")
    print("3:修改學生")
    print("4:查詢學生")
    print("5:顯示所有學生")
    print("6:退出系統")
    print("-----------")


# 列表存儲多個學生字典
student_info = []
# 字典存儲一個學生信息
student_message = {}


def add_info():
    name = input("輸入姓名:")
    tel = input("輸入電話:")
    qq = input("輸入QQ號:")
    global student_message
    student_message["name"] = name
    student_message["tel"] = tel
    student_message["QQ"] = qq
    global student_info
    # 查重
    for i in student_info:
        # 通過i取出列表中的每個元素
        if i["name"] == name and i["tel"] == tel:
            print("信息重複!")
            return
    # 將信息添加到列表中
    student_info.append(student_message)
    print("添加成功!")


def search_info():
    name = input("輸入姓名:")
    flag = 0
    for i in student_info:
        if i["name"] == name:
            print("name:", i["name"])
            print("tel:", i["tel"])
            print("QQ:", i["QQ"])
            flag = 1
        if flag == 0:
            print("未查詢到相關信息!")


def del_info():
    name = input("輸入待刪除人姓名:")
    tel = input("輸入待刪除人電話號碼:")
    # for-else用法
    for i in student_info:
        if i["name"] == name and i["tel"] == tel:
            # remove是按照值刪除
            student_info.remove(i)
            break
    # 此處的else和for對應使用
    # for循環使用break退出後就不執行else了
    else:
        print("未查詢到對應學員!")


def modifty_info():
    name = input("輸入姓名:")
    tel = input("輸入電話號碼:")
    flag = 0
    for i in student_info:
        # 因爲地址一樣所以可以牽連列表內數據一起改動。
        if i["name"] == name and i["tel"] == tel:
            name = input("輸入修改後的姓名:")
            tel = input("輸入修改後的電話號碼:")
            i["name"] = name
            i["tel"] = tel
            print("修改成功")
            break
    else:
        print("查無此人!")


def print_all_info():
    for i in student_info:
        print("name  tel  QQ")
        print("%s  %s  %s" % (i["name"], i["tel"], i["QQ"]))


def load_data():
    file_path = open("./student.txt", "r", encoding="utf8")
    data = file_path.read()
    file_path.close()
    if len(data) == 0:
        return
    # eval可以將字符串還原爲原始數據類型
    # 相當於去掉前後的“,還原爲原始情況
    data = eval(data)
    for i in data:
        student_info.append(i)


def save_data():
    file_path = open("./student.txt", "w", encoding="utf8")
    # 將列表轉化爲字符串存入.txt文件中。
    data = str(student_info)
    file_path.write(data)
    file_path.close()


def main():
    # 程序入口
    # 從文件中讀取數據
    load_data()
    while True:
        print_menue()
        num = int(input("輸入需要的功能:"))
        if num == 1:
            add_info()
        elif num == 2:
            del_info()
        elif num == 3:
            modifty_info()
        elif num == 4:
            search_info()
        elif num == 5:
            print_all_info()
        elif num == 6:
            print("再見!")
            break
        else:
            print("輸入錯誤")
        input("~~~~輸入回車繼續~~~~")
    # 保存數據到文件中
    save_data()


# 程序開始
main()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章