用 python 實現一個簡單的學生管理系統


# -*- coding = utf-8 -*-
# @Time : 2021/10/29 9:08
# @Author : 海綿擺擺嘉心糖
# @File : 03.學生管理系統.py
# @Software : PyCharm

import os

# 定義一個存儲學生的列表
stu_list = []
file_name = "student_info"


def show_meun():
    print("1.添加學生")
    print("2.刪除學生")
    print("3.修改學生信息")
    print("4.查詢單個學生信息")
    print("5.查詢所有的學生信息")
    print("6.保存並退出")


def file_read():
    # 全局變量內部使用 需要全局化 之后 stu_list 在函數內部可以修改
    global stu_list
    # 判斷這個文件是否存在
    if os.path.exists(file_name):
        # 打開這個文件
        f = open(file_name, "r", encoding="utf-8")
        # 讀取文件
        while True:
            # 每次讀一行
            stu_info = f.readline()
            # 判斷文件中是否有數據
            if stu_info:
                # 將數據轉換為字典,追加到 stu_list 中
                stu_list.append(eval(stu_info))
            else:
                break
        f.close()
    else:
        print(f"{file_name}不存在,是否需要創建?")
        while True:
            yn = input("創建請輸入:y 不需要請輸入 n")
            if yn == "y":
                f = open(file_name, "w")
                f.close()
                print("文件創建成功,請重新啟動程序以繼續操作")
                break
            elif yn == "n":
                print("再見!!!")
                break
            else:
                continue


def insert_student():
    name = input("請輸入學生的姓名:")
    for stu in stu_list:
        if stu['name'] == name:
            print(f"{name}已存在")
            return
    age = input(f"請輸入{name}的年齡:")
    sex = input(f"請輸入{name}的性別:")
    # 將學生的信息轉化為字典保存
    stu_dict = {'name': name, 'age': age, 'sex': sex}
    # 將 stu_dict 追加到 stu_list 中
    stu_list.append(stu_dict)


def remove_student():
    name = input("請輸入你所要刪除的學生的名字:")
    for stu in stu_list:
        if stu['name'] == name:
            stu_list.remove(stu)
        else:
            print(f"沒有{name}這個信息")


def updata_student():
    name = input("請輸入你要修改的學生的姓名:")
    for stu in stu_list:
        if stu['name'] == name:
            while True:
                number = int(input("請輸入你要修改的內容:\n0.退出\t1.姓名\t2.年齡\t3.性別"))
                if number == 0:
                    break
                elif number == 1:
                    stu['name'] = input("請輸入你要修改的名字:")
                elif number == 2:
                    stu['age'] = int(input("請輸入你要修改的年齡:"))
                elif number == 3:
                    stu['sex'] = input("請輸入你要修改的性別:")
                else:
                    print("你輸入的信息有誤")
        else:
            print(f"{name}不存在")


def search_student():
    name = input("請輸入你要查詢的學生的姓名:")
    for stu in stu_list:
        if stu['name'] == name:
            print(f"姓名:\t{stu['name']}\n年齡:\t{stu['age']}\n性別:\t{stu['sex']}")
        else:
            print(f"抱歉!沒有{name}")


def show_all_student():
    print("姓名\t年齡\t性別")
    for stu in stu_list:
        print(f"{stu['name']}\t{stu['age']}\t\t{stu['sex']}")
    pass


def save_student():
    f = open(file_name, "w", encoding="utf-8")
    for stu in stu_list:
        f.write(f"{str(stu)}\n")
    f.close()


def load_file():
    pass


def main():
    # 將文件中的學生信息讀取出來放入 stu_list 中
    file_read()
    while True:
        # 首頁選項函數
        show_meun()
        # 按照提示進行操作
        opt = input("請輸入你操作的序號:")
        if opt == "1":
            # 插入學生信息
            insert_student()
        elif opt == "2":
            # 刪除學生信息
            remove_student()
        elif opt == "3":
            # 修改學生信息
            updata_student()
        elif opt == "4":
            # 查詢單個學生信息
            search_student()
        elif opt == "5":
            # 查詢所有學生信息
            show_all_student()
        elif opt == "6":
            # 保存並退出
            save_student()
            break
        else:
            print("你輸入的信息有誤,請重新輸入")
            continue


# 表示只能當前程序執行下面代碼
# 當本文件被其他文件執行,則不會執行這里的代碼
# 起到保護本文件的作用
if __name__ == '__main__':
    main()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM