Python信息管理系统
凋谢的向日葵 人气:0""" 项目名称 = '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" SFZ:{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("请输入你的SFZ") 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()
效果图
加载全部内容