Python函數(shù)實(shí)現(xiàn)“學(xué)生管理系統(tǒng)”案例

一、需求分析

  1. 顯示所有學(xué)生信息
  2. 新建學(xué)生信息
  3. 查詢學(xué)生信息
  4. 修改學(xué)生信息
  5. 刪除學(xué)生信息
  6. 選擇顯示功能
  • 打印平均分
  • 打印及格率
  • 退出操作
  1. 退出系統(tǒng)

二、Python文件

import functools
import os

# 存儲(chǔ)學(xué)生信息
# stu_mesall = {
#     "s001": {"sno": "s001", "name": "張三", "age": 23, "sex": "男", "Python": 45},
#     "s002": {"sno": "s002", "name": "李思", "age": 18, "sex": "女", "Python": 87}
# }
#
# with open("學(xué)生信息.txt", mode="w", encoding="utf-8") as stu_mesalls:
#     stu_mesalls.write(str(stu_mesall))

stu_mesall = {}

# 顯示所有學(xué)生信息
def show_mes():
    print("""
    *********************************************
    歡迎使用【不染學(xué)員管理信息系統(tǒng)】V2.0
        1\. 顯示所有學(xué)生信息
        2\. 新建學(xué)生信息
        3\. 查詢學(xué)生信息
        4\. 修改學(xué)生信息
        5\. 刪除學(xué)生信息
        6\. 選擇顯示功能
        7\. 退出系統(tǒng)
    *********************************************
""")

# 顯示所有學(xué)生信息
def show_all():
    if os.path.exists("學(xué)生信息.txt"):
        with open("學(xué)生信息.txt", mode="r", encoding="utf-8") as file:
            ret = file.read()
            global stu_mesall
            stu_mesall = eval(ret)
    for item in stu_mesall.values():
        print(f"學(xué)號(hào):{item['sno']} | 姓名:{item['name']} | 年齡:{item['age']} | 性別:{item['sex']} | Python成績(jī):{item['Python']}")

# 新建學(xué)生信息
def add_stu():
    stu_sno = input("請(qǐng)輸入您要新建學(xué)生的學(xué)號(hào):")
    if stu_sno in stu_mesall.keys():
        print("""
        *********************************************
            您輸入的學(xué)生學(xué)號(hào)已存在,請(qǐng)輸入以下指令:
                a. 重新輸入學(xué)號(hào)
                0\. 回到主菜單
        *********************************************
        """)
        while True:
            info_help = input("請(qǐng)輸入您要操作的指令:")
            if info_help == 'a':
                add_stu()
            elif info_help == '0':
                return
            else:
                print("輸入有誤,請(qǐng)重新輸入!")
    else:
        stu_name = input("請(qǐng)輸入您要新建學(xué)生的姓名:")
        stu_age = int(input("請(qǐng)輸入您要新建學(xué)生的年齡:"))
        stu_sex = input("請(qǐng)輸入您要新建學(xué)生的性別:")
        stu_py = int(input("請(qǐng)輸入您要新建學(xué)生的Python成績(jī):"))
        stu_mes = {"sno": stu_sno, "name": stu_name, "age": stu_age, "sex": stu_sex, "Python": stu_py}
        stu_mesall[stu_sno] = stu_mes
        with open("學(xué)生信息.txt", mode="w", encoding="utf-8") as stu_mesalls:
            stu_mesalls.write(str(stu_mesall))
        print("添加成功!")
        return

# 查詢學(xué)生信息
def sel_stu():
    stu_sno = input("請(qǐng)輸入您要查詢學(xué)生的學(xué)號(hào):")
    if stu_sno in stu_mesall.keys():
        print(f"學(xué)號(hào):{stu_mesall[stu_sno]['sno']} | 姓名:{stu_mesall[stu_sno]['name']} | 年齡:{stu_mesall[stu_sno]['age']} | 性別:{stu_mesall[stu_sno]['sex']} | Python成績(jī):{stu_mesall[stu_sno]['Python']}")
        return
    else:
        ext_func()

# 修改學(xué)生信息
def upd_stu():
    stu_sno = input("請(qǐng)輸入您要修改學(xué)生的學(xué)號(hào):")
    if stu_sno in stu_mesall.keys():
        stu_name = input("請(qǐng)輸入您要修改學(xué)生的姓名:")
        stu_age = int(input("請(qǐng)輸入您要修改學(xué)生的年齡:"))
        stu_sex = input("請(qǐng)輸入您要修改學(xué)生的性別:")
        stu_py = int(input("請(qǐng)輸入您要修改學(xué)生的Python成績(jī):"))
        stu_mes = {"sno": stu_sno, "name": stu_name, "age": stu_age, "sex": stu_sex, "Python": stu_py}
        stu_mesall[stu_sno] = stu_mes
        with open("學(xué)生信息.txt", mode="w", encoding="utf-8") as stu_mesalls:
            stu_mesalls.write(str(stu_mesall))
        print("修改成功!")
        return
    else:
        ext_func()

# 選擇顯示功能
def func_stu():
    print("""
    *********************************************
        歡迎進(jìn)入選擇顯示功能界面,請(qǐng)輸入以下指令:
            a. 統(tǒng)計(jì)平均分
            b. 統(tǒng)計(jì)及格率
            0\. 回到主菜單
    *********************************************
    """)
    while True:
        info_help = input("請(qǐng)輸入您要操作的指令:")
        if info_help == 'a':
            avg_score()
        elif info_help == 'b':
            pass_score()
        elif info_help == '0':
            return
        else:
            print("輸入有誤,請(qǐng)重新輸入!")

# 統(tǒng)計(jì)平均分
def avg_score():
    score_list = [py_score['Python'] for py_score in stu_mesall.values()]
    print(f"學(xué)生的平均分:{functools.reduce(lambda x,y : x + y, score_list) / len(score_list)}")

# 統(tǒng)計(jì)及格率
def pass_score():
    score_list = [py_score['Python'] for py_score in stu_mesall.values()]
    print(f"學(xué)生的及格率為:{len([score for score in score_list if score >= 60]) / len(score_list) * 100}%")

# 刪除學(xué)生信息
def del_stu():
    stu_sno = input("請(qǐng)輸入您要?jiǎng)h除學(xué)生的學(xué)號(hào):")
    if stu_sno in stu_mesall.keys():
        del stu_mesall[stu_sno]
        with open("學(xué)生信息.txt", mode="w", encoding="utf-8") as stu_mesalls:
            stu_mesalls.write(str(stu_mesall))
        print("刪除成功!")
        return
    else:
        ext_func()

# 擴(kuò)展功能
def ext_func():
    print("""
    *********************************************
        您輸入的學(xué)生學(xué)號(hào)不存在,請(qǐng)輸入以下指令:
            a. 重新輸入學(xué)號(hào)
            b. 新建學(xué)生信息
            0\. 回到主菜單
    *********************************************
    """)
    while True:
        info_help = input("請(qǐng)輸入您要操作的指令:")
        if info_help == 'a':
            del_stu()
        elif info_help == 'b':
            add_stu()
        elif info_help == '0':
            return
        else:
            print("輸入有誤,請(qǐng)重新輸入!")

# 主函數(shù)
def main():
    while True:
        show_mes()
        info_inst = input("請(qǐng)輸入您要操作的指令:")
        if info_inst == "1":
            show_all()
        elif info_inst == "2":
            add_stu()
        elif info_inst == "3":
            sel_stu()
        elif info_inst == "4":
            upd_stu()
        elif info_inst == "5":
            del_stu()
        elif info_inst == "6":
            func_stu()
        elif info_inst == "7":
            return
        else:
            print("輸入指令錯(cuò)誤,請(qǐng)重新輸入!")

main()

三、文本文件

{‘s001’: {‘sno’: ‘s001’, ‘name’: ‘張三’, ‘a(chǎn)ge’: 23, ‘sex’: ‘男’, ‘Python’: 45}, ‘s002’: {‘sno’: ‘s002’, ‘name’: ‘李思’, ‘a(chǎn)ge’: 18, ‘sex’: ‘女’, ‘Python’: 87}}

希望本文對(duì)你有所幫助~~如果對(duì)軟件測(cè)試、接口測(cè)試、自動(dòng)化測(cè)試、面試經(jīng)驗(yàn)交流感興趣可以加入我們。642830685,免費(fèi)領(lǐng)取最新軟件測(cè)試大廠面試資料和Python自動(dòng)化、接口、框架搭建學(xué)習(xí)資料!技術(shù)大牛解惑答疑,同行一起交流。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容