"""
#conding=utf-8
#Version:python3.6.6
#Tolls:Pycharm 2019.2.3
项目名称='python '
文件名= '学生信息管理系统'
时间=' 2020/02/02 0030 17:16'
作者='席世超'
"""
import time
# 管理员数据
admin = ("admin", ["admin"])
# 学员数据
student_dict = dict()
# 课程数据
classes_dict = dict()
# 选课数据
selected_dict = dict()
# 当前登录用户
login_user = None
show_login_index_dict = {'1':'manage_login()', #管理员登录
'2':'student_login()', #登录
'3':'student_register()', #注册
'4':'log_out()'} #退出
#管理员菜单
manage_index_menu_dict = {'1':'add_curriculum()', #增加课程
'2':'see_curriculum()',#查看课程
'3':'see_student()',#查看会员
'4':'show_login_index()',#返回登录菜单
'5':'log_out()'}#安全退出
see_curriculum_dict = {'1':'add_curriculum()',#增加课程
'2':'amend_curriculum()',#修改课程
'3':'del_curriculum()',#删除课程
}
#学生菜单
student_index_menu_dict = {'1':'seemy_data()',
'2':'alter_password()',
'3':'see_all_classer()',
'4':'see_my_classer()',
'5':'student_index_menu()',
'6':'log_out()'}
student_choice_dict = {'1':'my_data_perfection()',
'2':'student_index_menu()'}
def show_login_index():
"""开始登录菜单"""
print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~")
print(" 学生信息管理系统\n")
print(" 1、管理员登录")
print(" 2、登录账号")
print(" 3、注册账号")
print(" 4、安全退出")
print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~")
choice = input("请输入选项")
option = show_login_index_dict.get(choice, 'show_login_index()')
return eval(option)
def manage_login():
"""管理员登录"""
username = input("请输入管理员账号\n").strip()
password = input("请输入管理员密码\n").strip()
if username == admin[0] and password == admin[1][0]:
input("登录成功")
return manage_index_menu()
else:
input("账号或密码不正确,请确认您是否管理员身份,(任意键返回首页)")
show_login_index()
def student_login():
"""学生登录"""
global login_user
username = input("请输入账号\n").strip()
password = input("请输入密码\n").strip()
if username in student_dict:
if password == student_dict.get(username).get('password'):
login_user = student_dict.get(username)
return student_index_menu()
else:
input("您的密码不正确请重新登录")
return show_login_index()
else:
input("您的账号不正确请重新登录")
return show_login_index()
def student_register():
"""学生注册"""
username = input("请输入账号\n").strip()
if username in student_dict:
input("您输入的账号已存在请重新注册")
return show_login_index()
name = input("请输入姓名")
password = input("请输入密码\n").strip()
affirm = input("请再次输入密码\n").strip()
if password != affirm:
input("您的两次密码不一致请重新注册(按任意键返回)")
return show_login_index()
else:
#创建新账户
user = {"username": username, "password": password,"name":name,
"email": None, "phone": None, "address": None,
"reg_no": None, "gender": None, "age": None}
student_dict[username] = user
input("注册成功,返回登录")
selected_dict[username] = dict()
return show_login_index()
def log_out():
"""系统安全退出"""
for i in range(3):
print(f"系统将在{3-i}秒后退出请保存好您的数据")
time.sleep(1)
exit(1)
def manage_index_menu():
"""管理员首页菜单"""
print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~")
print(" 管理员首页\n")
print(" 1、增加课程")
print(" 2、查看课程")
print(" 3、查看会员")
print(" 4、返回登录菜单")
print(" 5、安全退出")
print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~")
choice = input("请输入选项").strip()
option = manage_index_menu_dict.get(choice,'manage_index_menu()')
return eval(option)
def add_curriculum():
"""增加课程"""
name = input("请输入你要添加的课程名\n").strip()
if name in classes_dict:
choice = input("课程以存在请录入其他课程(按任意键继续按“q”键返回上一级)").lower()
if choice == 'q':
return manage_index_menu()
return add_curriculum()
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}
classes_dict[name] = clazz
input("课程录入完成,按任意键返回上一级")
return manage_index_menu()
def see_curriculum():
"""查看课程"""
print("课程名称\t学分\t学时\t讲师\t 课程描述")
print("----------------------------------------")
for i in classes_dict.values():
print(f"{i['name']}\t{i['score']}\t{i['times']}\t"
f"{i['teacher']}\t{i['desc']}\t\n")
print("----------------------------------------")
res = input("1、增加课程|2、修改课程|3、删除课程|任意键返回上一级")
option = see_curriculum_dict.get(res,'manage_index_menu()')
return eval(option)
def amend_curriculum():
"""修改课程"""
choice = input("请输入要修改的课程名")
if choice in classes_dict:
xiugai= input("1、修改人数上限|2、修改课程学分|3、修改课程学时|4、修改课程描述\n"
"请输入对应的编号进行修改")
if xiugai == '1':
count = input("请输入要修改的人数上限")
classes_dict[choice]['count'] = count
return see_curriculum()
elif xiugai == '2':
score = input("请输入要修改的学分")
classes_dict[choice]['score'] = score
return see_curriculum()
elif xiugai == '3':
times = input("请输入要修改的学时")
classes_dict[choice]['times'] = times
return see_curriculum()
elif xiugai == '4':
desc = input("请输入要修改的课程描述")
classes_dict[choice]['desc'] = desc
return see_curriculum()
else:
input("请输入正确的编号按任意键重新输入")
return amend_curriculum()
else:
input("请输入正确的课程名")
return see_curriculum()
def del_curriculum():
"""删除课程"""
name = input("请输入要删除的课程名")
if name in classes_dict:
res = input("是否要删除,请输入y/n").lower()
if res == 'y':
classes_dict.pop(name)
input("删除成功,任意键返回")
return see_curriculum()
elif res == 'n':
return see_curriculum()
else:
input("输入错误任意键返回")
return see_curriculum()
def see_student():
"""查看会员"""
print(" 学号\t姓名\t年龄")
for i in student_dict:
print(f"{student_dict[i]['username']}"
f"\t{student_dict[i]['name']}"
f"\t{student_dict[i]['age']}")
res = input("1、查看单个会员详细信息|任意键返回上一级")
if res == '1':
return see_only_student()
else:
return manage_index_menu()
def see_only_student():
"""查看单个会员"""
username = input("请输入学号")
if username in student_dict:
student = student_dict[username]
print(f"姓名:{student.get('name')}\t"
f"年龄:{student.get('age','待完善')}\t"
f"email:{student.get('email','待完善')}\t")
else:
input("您输入的学生不存在")
return see_only_student()
def student_index_menu():
"""学生首页"""
print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~")
print(" 管理员首页\n")
print(" 1、查看个人资料")
print(" 2、修改登录密码")
print(" 3、查看所有课程")
print(" 4、查看已选课程")
print(" 5、返回登录菜单")
print(" 6、安全退出")
print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~")
choice = input("请输入选项").strip()
option = student_index_menu_dict.get(choice, 'student_index_menu()')
return eval(option)
def seemy_data():
"""查看个人资料"""
print("#####################")
print(f" 账号:{login_user.get('username')}")
print(f" 性别:{login_user.get('gender', '待完善')}")
print(f" 年龄:{login_user.get('age', '待完善')}")
print(f" 手机:{login_user.get('phone', '待完善')}")
print(f" 身份证:{login_user.get('reg_no', '待完善')}")
print(f" 邮箱:{login_user.get('email', '待完善')}")
print(f" 地址:{login_user.get('address', '待完善')}")
print("#####################")
res = input("\n信息展示完成,(1-完善个人资料;2-返回学员首页)")
return eval(student_choice_dict.get(res, "student_index_menu()"))
def my_data_perfection():
"""完善个人资料"""
choice = input("请输入要完善的信息|gender(性别)|age(年龄)|phone(电话)"
"|reg_no(身份证ID)|email(邮箱)|address(家庭住址)")
if choice == 'gender':
gender = input("请输入性别")
login_user['gender'] = gender
elif choice == 'age':
age = input("请输入年龄")
login_user['age'] = age
elif choice == 'phone':
phone = input("请输入电话")
login_user['phone'] = phone
elif choice == 'reg_no':
reg_no = input("请输入身份证ID")
login_user['reg_no'] = reg_no
elif choice == 'email':
email = input("请输入email")
login_user['email'] = email
elif choice == 'address':
address = input("请输入家庭地址")
login_user['address'] = address
input("资料修改完毕按任意键返回查看个人信息")
return seemy_data()
def alter_password():
"""修改密码"""
print("~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~")
print(" 密码修改")
choies_oldpasswd = input("请输入旧密码")
if choies_oldpasswd == login_user['password']:
choies_newpasswd1 = input("请输入新密码")
choies_newpasswd2 = input("请在输入一遍")
if choies_newpasswd1 == choies_newpasswd2:
login_user['password'] = choies_newpasswd2
input("密码修改成功,按任意键返回重新登录")
return student_index_menu()
else:
print("两次密码不对")
return alter_password()
else:
print("旧密码不正确")
alter_password()
def see_all_classer():
"""查看所有课程"""
print("课程名称\t学分\t学时\t讲师\t 课程描述")
print("----------------------------------------")
for i in classes_dict.values():
print(f"{i['name']}\t{i['score']}\t{i['times']}\t"
f"{i['teacher']}\t{i['desc']}\t\n")
print("----------------------------------------")
res = input("1、选课|任意键返回上一级")
if res == '1':
return classer_choice()
else:
return student_index_menu()
def classer_choice():
"""课程选课"""
name1 = input("请输入要选择的课程的名称")
if name1 in classes_dict:
if int(classes_dict[name1]['selected']) < int(classes_dict[name1]['count']):
selected_dict[login_user.get('username')][name1] = classes_dict[name1].copy()
selected_dict[login_user.get("username")][name1].update({"studied": 0, "status": "learning"})
classes_dict[name1]['selected'] = int(classes_dict[name1]['selected']) + 1
input("课程选择结束返回菜单")
return student_index_menu()
else:
input("课程已满,请选择其他课程")
else:
res = input("没有这门课,任意键请重新选择,或者按q键返回菜单")
if res == 'q':
return student_index_menu()
else:
return classer_choice()
def see_my_classer():
"""查看已选课程"""
my_classer = selected_dict.get(login_user['username'])
if my_classer != None:
print("课程名称\t学分\t学时\t已学习(次)\t 学习状态")
print("----------------------------------------")
for classer in my_classer.values():
print(f"{classer['name']}\t"
f"{classer['score']}\t"
f"{classer['times']}\t"
f"{classer['studied']}\t"
f"{classer['status']}")
res = input("1、学习课程|任意键返回首页")
if res == '1':
res1 = input("请输入你要学的课程")
print("正在学习Ing")
time.sleep(3)
print(my_classer)
my_classer[res1]['studied'] += 1
return seemy_data()
else:
input("当前用户还没有选课请返回选课")
return student_index_menu()
#系统运行
show_login_index()
Python学生选课系统函数式开发
最新推荐文章于 2022-10-05 18:39:38 发布