Python實現信息管理系統

本文實例為大傢分享瞭Python實現信息管理系統的具體代碼,供大傢參考,具體內容如下

"""
項目名稱 = 'python'
文件名= '學生信息管理系統'
作者 = '向日葵'
"""

import time

# 管理員登錄
gly_zm = ("admin",["1234"])

# 學員登錄
st_dict = dict()
# 課程數據
kc_dict = dict()
# 選課數據
xk_dict = dict()

# 記錄當前登錄的用戶
jl_yh = None

# 登錄菜單頁面選項
cd_ym = {"1":"gly()",        # 管理員登錄
         "2":"xs()",         # 學生登錄
         "3":"xs_zc()",      # 學生註冊
         "4":"tc()"}         # 退出

# 管理員首頁選擇
gly_ym = {"1":"gly_zjkc()",       # 增加課程
          "2":"gly_ckkc()",       # 查看課程
          "3":"gly_cksy()",       # 查看學員
          "4":"dl_cdjm()",        # 返回登錄頁面
          "5":"tc()"}             # 退出

# 管理員選課選項
gly_xk = {"1":"gly_zjkc()",        # 增加課程
          "2":"gly_sckc()",        # 刪除課程
          "3":"gly_xgkc()",        # 修改課程
          "4":"gly_sy()"}          # 返回管理員首頁

# 管理員查看學員
gly_ckxy = {"1":"gly_zjxy()",      # 查看指定學生
            "2":"gly_sy()"}        # 返回管理員首頁

# 學生首頁選擇
xs_ym = {"1":"xs_grzl()",          # 個人資料
         "2":"xs_xgmm()",          # 修改密碼
         "3":"xs_ckkc()",          # 查看所有課程
         "4":"xs_yxkc()",          # 查看已選課程
         "5":"dl_cdjm()",          # 返回登錄頁面
         "6":"tc()"}               # 退出

# 完善資料選擇
xs_ws_zl = {"1":"xs_wszl()",       # 完善資料
            "2":"xs_sy()"}         # 學生首頁

# 學生選課
xs_xk = {"1":"ks_xk()",           # 開始選課
         "2":"xs_sy()"}           # 學生首頁


#                                         登錄菜單
#####################################################################################


# 登錄菜單頁面
def dl_cdjm():
    print("               學生管理系統")
    print("*******************************************")
    print("                1、管理員登錄")
    print("                2、學生登錄")
    print("                3、學生註冊")
    print("                4、安全退出")
    print("*******************************************")
    choice = input("輸入你的選項")
    options = cd_ym.get(choice,"dl_cdjm()")
    return eval(options)


# 管理員登錄
def gly():
    username = input("請輸入你的賬號")
    password = input("請輸入你的密碼")
    # 判斷賬號密碼
    if username == gly_zm[0] and password ==  gly_zm[1][0]:
        # 登錄成功
        return gly_sy()
    else:
        input("賬號或密碼錯誤,按任意鍵返回")
        return dl_cdjm()


# 學生登錄
def xs():
    global jl_yh
    username = input("請輸入你的賬號")
    password = input("請輸入你的密碼")
    # 判斷賬號
    if username in st_dict:
        # 判斷密碼
        if password == st_dict.get(username).get("password"):
            # 登錄成功,記錄學員
            jl_yh = st_dict.get(username)
            return xs_sy()
        else:
            input("賬號或密碼輸入有誤,按任意鍵返回登錄菜單")
            return dl_cdjm()
    else:
        input("賬號不存在,按任意鍵返回登錄菜單")
        return dl_cdjm()


# 學生註冊
def xs_zc():
    # 判斷賬號
    username = input("請輸入你的賬號")
    if username in st_dict:
        input("賬號已存在,請重新輸入")
        return xs_zc()

    # 判斷密碼
    password = input("請輸入你的密碼")
    confirm = input("請確認密碼:")
    if password != confirm:
        input("兩次密碼不同,請重新輸入")
        return xs_zc()

    # 創建用戶註冊
    user = {"username": username, "password": password,
            "email": None, "phone": None, "address": None,
            "reg_no": None, "gender": None, "age": None}
    # 添加
    st_dict[username] = user
    input("註冊成功,按任意鍵返回主菜單")
    return dl_cdjm()


# 安全退出
def tc():
    """退出系統"""
    input("即將退出,按任意鍵繼續")
    for i in range(3):
        print(f"系統將在{3-i}s退出")
        time.sleep(1)
    exit(1)

#                                          管理員菜單
#######################################################################################


def gly_sy():
    """管理員首頁"""
    print("          學員管理系統-管理員首頁")
    print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~")
    print("             1. 增加課程")
    print("             2. 查看課程")
    print("             3. 查看學員")
    print("             4. 返回登錄菜單")
    print("             5. 安全退出")
    print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~")
    choice = input("請輸入選項:")
    options = gly_ym.get(choice,"gly_sy()")
    return eval(options)


# 增加課程
def gly_zjkc():
    name = input("請輸入課程")
    if name in kc_dict:
        res = input("課程已存在,請錄入其他課程。按任意鍵繼續(Q返回首頁)").strip()
        if res.upper() == "Q":
            return gly_sy()

    teacher = input("請輸入課程講師:").strip()
    score = input("請輸入課程學分:").strip()
    count = input("請輸入學習人數上限:").strip()
    times = input("請輸入課程學時:").strip()
    desc = input("請輸入課程描述:").strip()

    clazz = {"name": name, "score": score, "count": count, 'selected': 0,
             "times": times, "desc": desc, "teacher": teacher}
    # 註冊課程
    kc_dict[name] = clazz
    input("錄入完成,按任意鍵繼續")
    return gly_sy()


# 查看課程
def gly_ckkc():
    print("課程名稱\t課程學時\t課程學分\t課程講師\t課程描述")
    for clazz in kc_dict.values():
        print(f"{clazz['name']}\t{clazz['times']}\t{clazz['score']}\
                        \t{clazz['teacher']}\t{clazz['desc']}")

    chonic = input("\n共有上述課程、請選擇(1、增加課程 2、刪除課程 3、修改課程 4、返回首頁):")
    return eval(gly_xk.get(chonic, "gly_ckkc()"))


# 刪除課程
def gly_sckc():
    name = input("請選擇你要刪除的課程名稱")
    if name in kc_dict:
        res = input("請確認是否刪除課程(Y確認)")
        if res.lower() == "y":
            kc_dict.pop(name)
            input("刪除完成")

        return gly_ckkc()
    else:
        res = input("沒有這門課,按任意鍵重新輸入(Q返回課程列表")
        if res.lower() == "q":
            return gly_ckkc()
        return gly_sckc()


# 修改課程
def gly_xgkc():
    name = input("請輸入你要修改的課程名稱")
    choice = input("請輸入要修改的課程數據(score|count|times|desc)")
    if choice == "score":
        score = input("請輸入新的學分")
        kc_dict[name]["score"] = score
    elif choice == "count":
        count = input("請輸入新的人數上限")
        kc_dict[name]["count"] = count
    elif choice == "times":
        times = input("請輸入新的課程課時")
        kc_dict[name]["times"] = times
    elif choice == "desc":
        desc = input("請輸入新的課程描述")
        kc_dict[name]["desc"] = desc

    input("修改完成,按任意鍵返回查看課程頁面")
    return gly_ckkc()


# 查看學員
def gly_cksy():
    print("會員賬號\t聯系郵箱\t聯系電話\t性別")
    for student in st_dict.values():
        print(f"{student['username']}\t{student.get('email', '待完善')}\
        \t{student.get('phone', '待完善')}\t{student.get('gender', '待完善')}\t")

    choice = input("\n所有學員信息展示完成,(1-查看指定學員詳細信息,輸入2-返回管理員首頁)")
    return eval(gly_ckxy.get(choice,"gly_sy()"))


def gly_zjxy():
    """查看某個指定會員"""
    username = input("請輸入學員賬號:")
    if username in st_dict:
        student = st_dict[username]
        # 展示學員信息
        print("***************************************")
        print(f"    學員賬號:{student.get('username')}")
        print(f"    學員手機:{student.get('phone')}")
        print(f"    學員學分:{student.get('score')}")
        print(f"    學員學時:{student.get('times')}")
        print(f"    學員傢庭地址:{student.get('address')}")
        print(f"    學員郵箱:{student.get('email', '待完善')}")
        print("****************************************")
        input("展示完成,按任意鍵返回學員列表")
        return gly_cksy()
    else:
        res = input("沒有這個學員,按任意鍵重新輸入(Q返回管理員首頁)")
        if res.upper() == "Q":
            return gly_sy()
        return gly_zjxy()


#                                         會員菜單
##################################################################################


# 學生首頁
def xs_sy():
    print("          學員管理系統-學員首頁")
    print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~")
    print("              1. 查看個人資料")
    print("              2. 修改登錄密碼")
    print("              3. 查看所有課程")
    print("              4. 查看已選課程")
    print("              5. 返回登錄菜單")
    print("              6. 安全退出")
    print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~")
    choice = input("請輸入您的選項:")
    return eval(xs_ym.get(choice,"xs_sy()"))


# 查看個人資料
def xs_grzl():
    """查看個人資料"""
    print("#####################")
    print(f"   賬號:{jl_yh.get('username')}")
    print(f"   性別:{jl_yh.get('gender', '待完善')}")
    print(f"   年齡:{jl_yh.get('age', '待完善')}")
    print(f"   手機:{jl_yh.get('phone', '待完善')}")
    print(f" 身份證:{jl_yh.get('reg_no', '待完善')}")
    print(f"   郵箱:{jl_yh.get('email', '待完善')}")
    print(f"   地址:{jl_yh.get('address', '待完善')}")
    print("#####################")
    res = input("\n信息展示完成,(1-完善個人資料;2-返回學員首頁)")
    return eval(xs_ws_zl.get(res,"xs_grzl()"))


# 完善資料
def xs_wszl():
    choic = input("請輸入你要修改的項目(phone|reg_no|email|address)")
    if choic == "phone":
        phone = input("請輸入你的手機號")
        jl_yh["phone"] = phone
    elif choic == "reg_no":
        reg_no = input("請輸入你的身份證")
        jl_yh["reg_no"] = reg_no
    elif choic == "email":
        email = input("請輸入你的郵箱")
        jl_yh["email"] = email
    elif choic == "address":
        address = input("請輸入你的地址")
        jl_yh["address"] = address
    input("修改完成,按任意鍵查看")
    return xs_grzl()


# 修改登錄密碼
def xs_xgmm():
    input("即將修改,請確認周圍安全,按任意鍵繼續")
    old_password = input("請輸入舊密碼")
    if old_password != jl_yh.get("password"):
        input("密碼錯誤")
        return dl_cdjm()

    new_password = input("請輸入新的密碼")
    new_mima = input("請確認密碼")
    if new_password != new_mima:
        input("兩次密碼輸入不一致,請重新修改")
        return xs_sy()

    jl_yh["password"] = new_password
    input("密碼修改成功")
    return dl_cdjm()


# 查看所有課程
def xs_ckkc():
    print("課程名稱\t課程學時\t課程學分\t課程講師\t課程描述")
    for clazz in kc_dict.values():
        print(f"{clazz['name']}\t{clazz['times']}\t{clazz['score']}\
                            \t{clazz['teacher']}\t{clazz['desc']}")

    choice = input("\n共有上述課程,請選擇您的操作(1-開始選課;2-返回首頁):")
    return eval(xs_xk.get(choice, "xs_ckkc()"))


# 開始選課
def ks_xk():
    name = input("請輸入要選擇的課程名稱:")
    if name in kc_dict:
        # 開始選課
        if int(kc_dict[name]["selected"]) < int(kc_dict[name]["count"]):
            xk_dict[jl_yh.get("username")][name] = kc_dict[name].copy()
            xk_dict[jl_yh.get("username")][name].update({"studied": 0, "status": "learning"})
            # 更改課程的選課人數
            kc_dict[name]['selected'] = int(kc_dict[name]['selected']) + 1
            input("選擇結束,按任意鍵返回首頁")
            return xs_sy()
        else:
            input("課程人數已滿,請選擇其他課程")
    else:
        res = input("沒有這門課程,按任意鍵重新輸入(Q返回課程列表)")
        if res.lower() == "q":
            return xs_ckkc()
        else:
            return ks_xk()


# 查看已選課程
def xs_yxkc():
    my_classer = xk_dict.get(jl_yh['username'])
    print("課程名稱\t課程學分\t課程學時\t已學課時\t課程狀態")
    if my_classer != None:
        for clazz in my_classer.vaiues():
            print(f"{clazz['name']}\t"
                  f"{clazz['score']}\t"
                  f"{clazz['times']}\t"
                  f"{clazz['studied']}\t"
                  f"{clazz['status']}")
        res = input("1-學習指定課程;2-返回首頁")
        if res == '1':
            reso = input("請輸入你要學的課程")
            print("正在學習中")
            time.sleep(3)
            print('學習完成')
            my_classer[reso]['studied'] += 1
        return xs_sy()
    else:
        input("當前用戶還沒有選擇任何課程,按任意鍵返回首頁")
        return xs_sy()


# 程序運行入口
dl_cdjm()

效果圖

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: