"""
conding = utf-8
Version: python3.6.6
Tolls: Pycharm 2019.2.3
项目名称 = '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()"} # 学生首页
# 登录菜单
#####################################################################################
# 登录菜单页面
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("即将修改,请确认周围安全,按任意键继续")
# 查看所有课程
def xs_ckkc():
pass
# 查看已选课程
def xs_yxkc():
pass
# 程序运行入口
dl_cdjm()
来源:CSDN
作者:じò ぴé啁じò ぴé紹
链接:https://blog.csdn.net/weixin_46229151/article/details/104202567