Python實(shí)現(xiàn)信息管理系統(tǒng)
更新時(shí)間:2022年06月05日 10:48:06 作者:凋謝的向日葵
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Python實(shí)現(xiàn)信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
""" 項(xiàng)目名稱 = 'python' 文件名= '學(xué)生信息管理系統(tǒng)' 作者 = '向日葵' """ import time # 管理員登錄 gly_zm = ("admin",["1234"]) # 學(xué)員登錄 st_dict = dict() # 課程數(shù)據(jù) kc_dict = dict() # 選課數(shù)據(jù) xk_dict = dict() # 記錄當(dāng)前登錄的用戶 jl_yh = None # 登錄菜單頁面選項(xiàng) cd_ym = {"1":"gly()", ? ? ? ?# 管理員登錄 ? ? ? ? ?"2":"xs()", ? ? ? ? # 學(xué)生登錄 ? ? ? ? ?"3":"xs_zc()", ? ? ?# 學(xué)生注冊 ? ? ? ? ?"4":"tc()"} ? ? ? ? # 退出 # 管理員首頁選擇 gly_ym = {"1":"gly_zjkc()", ? ? ? # 增加課程 ? ? ? ? ? "2":"gly_ckkc()", ? ? ? # 查看課程 ? ? ? ? ? "3":"gly_cksy()", ? ? ? # 查看學(xué)員 ? ? ? ? ? "4":"dl_cdjm()", ? ? ? ?# 返回登錄頁面 ? ? ? ? ? "5":"tc()"} ? ? ? ? ? ? # 退出 # 管理員選課選項(xiàng) gly_xk = {"1":"gly_zjkc()", ? ? ? ?# 增加課程 ? ? ? ? ? "2":"gly_sckc()", ? ? ? ?# 刪除課程 ? ? ? ? ? "3":"gly_xgkc()", ? ? ? ?# 修改課程 ? ? ? ? ? "4":"gly_sy()"} ? ? ? ? ?# 返回管理員首頁 # 管理員查看學(xué)員 gly_ckxy = {"1":"gly_zjxy()", ? ? ?# 查看指定學(xué)生 ? ? ? ? ? ? "2":"gly_sy()"} ? ? ? ?# 返回管理員首頁 # 學(xué)生首頁選擇 xs_ym = {"1":"xs_grzl()", ? ? ? ? ?# 個(gè)人資料 ? ? ? ? ?"2":"xs_xgmm()", ? ? ? ? ?# 修改密碼 ? ? ? ? ?"3":"xs_ckkc()", ? ? ? ? ?# 查看所有課程 ? ? ? ? ?"4":"xs_yxkc()", ? ? ? ? ?# 查看已選課程 ? ? ? ? ?"5":"dl_cdjm()", ? ? ? ? ?# 返回登錄頁面 ? ? ? ? ?"6":"tc()"} ? ? ? ? ? ? ? # 退出 # 完善資料選擇 xs_ws_zl = {"1":"xs_wszl()", ? ? ? # 完善資料 ? ? ? ? ? ? "2":"xs_sy()"} ? ? ? ? # 學(xué)生首頁 # 學(xué)生選課 xs_xk = {"1":"ks_xk()", ? ? ? ? ? # 開始選課 ? ? ? ? ?"2":"xs_sy()"} ? ? ? ? ? # 學(xué)生首頁 # ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 登錄菜單 ##################################################################################### # 登錄菜單頁面 def dl_cdjm(): ? ? print(" ? ? ? ? ? ? ? 學(xué)生管理系統(tǒng)") ? ? print("*******************************************") ? ? print(" ? ? ? ? ? ? ? ?1、管理員登錄") ? ? print(" ? ? ? ? ? ? ? ?2、學(xué)生登錄") ? ? print(" ? ? ? ? ? ? ? ?3、學(xué)生注冊") ? ? print(" ? ? ? ? ? ? ? ?4、安全退出") ? ? print("*******************************************") ? ? choice = input("輸入你的選項(xiàng)") ? ? 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("賬號或密碼錯(cuò)誤,按任意鍵返回") ? ? ? ? return dl_cdjm() # 學(xué)生登錄 def xs(): ? ? global jl_yh ? ? username = input("請輸入你的賬號") ? ? password = input("請輸入你的密碼") ? ? # 判斷賬號 ? ? if username in st_dict: ? ? ? ? # 判斷密碼 ? ? ? ? if password == st_dict.get(username).get("password"): ? ? ? ? ? ? # 登錄成功,記錄學(xué)員 ? ? ? ? ? ? jl_yh = st_dict.get(username) ? ? ? ? ? ? return xs_sy() ? ? ? ? else: ? ? ? ? ? ? input("賬號或密碼輸入有誤,按任意鍵返回登錄菜單") ? ? ? ? ? ? return dl_cdjm() ? ? else: ? ? ? ? input("賬號不存在,按任意鍵返回登錄菜單") ? ? ? ? return dl_cdjm() # 學(xué)生注冊 def xs_zc(): ? ? # 判斷賬號 ? ? username = input("請輸入你的賬號") ? ? if username in st_dict: ? ? ? ? input("賬號已存在,請重新輸入") ? ? ? ? return xs_zc() ? ? # 判斷密碼 ? ? password = input("請輸入你的密碼") ? ? confirm = input("請確認(rèn)密碼:") ? ? if password != confirm: ? ? ? ? input("兩次密碼不同,請重新輸入") ? ? ? ? return xs_zc() ? ? # 創(chuàng)建用戶注冊 ? ? 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(): ? ? """退出系統(tǒng)""" ? ? input("即將退出,按任意鍵繼續(xù)") ? ? for i in range(3): ? ? ? ? print(f"系統(tǒng)將在{3-i}s退出") ? ? ? ? time.sleep(1) ? ? exit(1) # ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?管理員菜單 ####################################################################################### def gly_sy(): ? ? """管理員首頁""" ? ? print(" ? ? ? ? ?學(xué)員管理系統(tǒng)-管理員首頁") ? ? print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~") ? ? print(" ? ? ? ? ? ? 1. 增加課程") ? ? print(" ? ? ? ? ? ? 2. 查看課程") ? ? print(" ? ? ? ? ? ? 3. 查看學(xué)員") ? ? print(" ? ? ? ? ? ? 4. 返回登錄菜單") ? ? print(" ? ? ? ? ? ? 5. 安全退出") ? ? print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~") ? ? choice = input("請輸入選項(xiàng):") ? ? options = gly_ym.get(choice,"gly_sy()") ? ? return eval(options) # 增加課程 def gly_zjkc(): ? ? name = input("請輸入課程") ? ? if name in kc_dict: ? ? ? ? res = input("課程已存在,請錄入其他課程。按任意鍵繼續(xù)(Q返回首頁)").strip() ? ? ? ? if res.upper() == "Q": ? ? ? ? ? ? return gly_sy() ? ? teacher = input("請輸入課程講師:").strip() ? ? score = input("請輸入課程學(xué)分:").strip() ? ? count = input("請輸入學(xué)習(xí)人數(shù)上限:").strip() ? ? times = input("請輸入課程學(xué)時(shí):").strip() ? ? desc = input("請輸入課程描述:").strip() ? ? clazz = {"name": name, "score": score, "count": count, 'selected': 0, ? ? ? ? ? ? ?"times": times, "desc": desc, "teacher": teacher} ? ? # 注冊課程 ? ? kc_dict[name] = clazz ? ? input("錄入完成,按任意鍵繼續(xù)") ? ? return gly_sy() # 查看課程 def gly_ckkc(): ? ? print("課程名稱\t課程學(xué)時(shí)\t課程學(xué)分\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("請選擇你要?jiǎng)h除的課程名稱") ? ? if name in kc_dict: ? ? ? ? res = input("請確認(rèn)是否刪除課程(Y確認(rèn))") ? ? ? ? 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("請輸入要修改的課程數(shù)據(jù)(score|count|times|desc)") ? ? if choice == "score": ? ? ? ? score = input("請輸入新的學(xué)分") ? ? ? ? kc_dict[name]["score"] = score ? ? elif choice == "count": ? ? ? ? count = input("請輸入新的人數(shù)上限") ? ? ? ? kc_dict[name]["count"] = count ? ? elif choice == "times": ? ? ? ? times = input("請輸入新的課程課時(shí)") ? ? ? ? kc_dict[name]["times"] = times ? ? elif choice == "desc": ? ? ? ? desc = input("請輸入新的課程描述") ? ? ? ? kc_dict[name]["desc"] = desc ? ? input("修改完成,按任意鍵返回查看課程頁面") ? ? return gly_ckkc() # 查看學(xué)員 def gly_cksy(): ? ? print("會員賬號\t聯(lián)系郵箱\t聯(lián)系電話\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所有學(xué)員信息展示完成,(1-查看指定學(xué)員詳細(xì)信息,輸入2-返回管理員首頁)") ? ? return eval(gly_ckxy.get(choice,"gly_sy()")) def gly_zjxy(): ? ? """查看某個(gè)指定會員""" ? ? username = input("請輸入學(xué)員賬號:") ? ? if username in st_dict: ? ? ? ? student = st_dict[username] ? ? ? ? # 展示學(xué)員信息 ? ? ? ? print("***************************************") ? ? ? ? print(f" ? ?學(xué)員賬號:{student.get('username')}") ? ? ? ? print(f" ? ?學(xué)員手機(jī):{student.get('phone')}") ? ? ? ? print(f" ? ?學(xué)員學(xué)分:{student.get('score')}") ? ? ? ? print(f" ? ?學(xué)員學(xué)時(shí):{student.get('times')}") ? ? ? ? print(f" ? ?學(xué)員家庭地址:{student.get('address')}") ? ? ? ? print(f" ? ?學(xué)員郵箱:{student.get('email', '待完善')}") ? ? ? ? print("****************************************") ? ? ? ? input("展示完成,按任意鍵返回學(xué)員列表") ? ? ? ? return gly_cksy() ? ? else: ? ? ? ? res = input("沒有這個(gè)學(xué)員,按任意鍵重新輸入(Q返回管理員首頁)") ? ? ? ? if res.upper() == "Q": ? ? ? ? ? ? return gly_sy() ? ? ? ? return gly_zjxy() # ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 會員菜單 ################################################################################## # 學(xué)生首頁 def xs_sy(): ? ? print(" ? ? ? ? ?學(xué)員管理系統(tǒng)-學(xué)員首頁") ? ? print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~") ? ? print(" ? ? ? ? ? ? ?1. 查看個(gè)人資料") ? ? print(" ? ? ? ? ? ? ?2. 修改登錄密碼") ? ? print(" ? ? ? ? ? ? ?3. 查看所有課程") ? ? print(" ? ? ? ? ? ? ?4. 查看已選課程") ? ? print(" ? ? ? ? ? ? ?5. 返回登錄菜單") ? ? print(" ? ? ? ? ? ? ?6. 安全退出") ? ? print("~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~") ? ? choice = input("請輸入您的選項(xiàng):") ? ? return eval(xs_ym.get(choice,"xs_sy()")) # 查看個(gè)人資料 def xs_grzl(): ? ? """查看個(gè)人資料""" ? ? print("#####################") ? ? print(f" ? 賬號:{jl_yh.get('username')}") ? ? print(f" ? 性別:{jl_yh.get('gender', '待完善')}") ? ? print(f" ? 年齡:{jl_yh.get('age', '待完善')}") ? ? print(f" ? 手機(jī):{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-完善個(gè)人資料;2-返回學(xué)員首頁)") ? ? return eval(xs_ws_zl.get(res,"xs_grzl()")) # 完善資料 def xs_wszl(): ? ? choic = input("請輸入你要修改的項(xiàng)目(phone|reg_no|email|address)") ? ? if choic == "phone": ? ? ? ? phone = input("請輸入你的手機(jī)號") ? ? ? ? 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("即將修改,請確認(rèn)周圍安全,按任意鍵繼續(xù)") ? ? old_password = input("請輸入舊密碼") ? ? if old_password != jl_yh.get("password"): ? ? ? ? input("密碼錯(cuò)誤") ? ? ? ? return dl_cdjm() ? ? new_password = input("請輸入新的密碼") ? ? new_mima = input("請確認(rèn)密碼") ? ? if new_password != new_mima: ? ? ? ? input("兩次密碼輸入不一致,請重新修改") ? ? ? ? return xs_sy() ? ? jl_yh["password"] = new_password ? ? input("密碼修改成功") ? ? return dl_cdjm() # 查看所有課程 def xs_ckkc(): ? ? print("課程名稱\t課程學(xué)時(shí)\t課程學(xué)分\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"}) ? ? ? ? ? ? # 更改課程的選課人數(shù) ? ? ? ? ? ? kc_dict[name]['selected'] = int(kc_dict[name]['selected']) + 1 ? ? ? ? ? ? input("選擇結(jié)束,按任意鍵返回首頁") ? ? ? ? ? ? return xs_sy() ? ? ? ? else: ? ? ? ? ? ? input("課程人數(shù)已滿,請選擇其他課程") ? ? 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課程學(xué)分\t課程學(xué)時(shí)\t已學(xué)課時(shí)\t課程狀態(tài)") ? ? 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-學(xué)習(xí)指定課程;2-返回首頁") ? ? ? ? if res == '1': ? ? ? ? ? ? reso = input("請輸入你要學(xué)的課程") ? ? ? ? ? ? print("正在學(xué)習(xí)中") ? ? ? ? ? ? time.sleep(3) ? ? ? ? ? ? print('學(xué)習(xí)完成') ? ? ? ? ? ? my_classer[reso]['studied'] += 1 ? ? ? ? return xs_sy() ? ? else: ? ? ? ? input("當(dāng)前用戶還沒有選擇任何課程,按任意鍵返回首頁") ? ? ? ? return xs_sy() # 程序運(yùn)行入口 dl_cdjm()
效果圖
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- python學(xué)生信息管理系統(tǒng)(完整版)
- Python實(shí)現(xiàn)GUI學(xué)生信息管理系統(tǒng)
- python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
- python實(shí)現(xiàn)簡易學(xué)生信息管理系統(tǒng)
- python實(shí)現(xiàn)外賣信息管理系統(tǒng)
- python學(xué)生信息管理系統(tǒng)
- python學(xué)生信息管理系統(tǒng)實(shí)現(xiàn)代碼
- python實(shí)現(xiàn)簡單學(xué)生信息管理系統(tǒng)
- python學(xué)生信息管理系統(tǒng)(初級版)
- 使用python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
相關(guān)文章
使用Python簡單的實(shí)現(xiàn)樹莓派的WEB控制
這篇文章主要介紹了使用Python簡單的實(shí)現(xiàn)樹莓派的WEB控制的相關(guān)資料,需要的朋友可以參考下2016-02-02使用Python的Twisted框架編寫非阻塞程序的代碼示例
Twisted是基于異步模式的開發(fā)框架,因而利用Twisted進(jìn)行非阻塞編程自然也是必會的用法,下面我們就來一起看一下使用Python的Twisted框架編寫非阻塞程序的代碼示例:2016-05-05Python基礎(chǔ)教程之正則表達(dá)式基本語法以及re模塊
正則表達(dá)式是可以匹配文本片段的模式,今天的Python就跟大家一起討論一下python中的re模塊,python re模塊感興趣的朋友一起學(xué)習(xí)吧2016-03-03Python序列的推導(dǎo)式實(shí)現(xiàn)代碼
推導(dǎo)式是可以從一個(gè)數(shù)據(jù)序列構(gòu)建另一個(gè)新的數(shù)據(jù)序列(的一種結(jié)構(gòu)體),是python的一種獨(dú)有特性,在python中共有三種推導(dǎo),列表推導(dǎo)式和字典推導(dǎo)式,集合推導(dǎo)式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-07-07