创作不易,各位看官,点个赞收藏、关注必回关、QAQ、您的点赞是我更新的最大动力!
采用函数式开发(纯粹练下逻辑),后面会逐步升级为函数式编程,模块式开发
第一二版本V1.02 函数式开发 :https://blog.csdn.net/weixin_44238683/article/details/105822475
"""
项目描述:学生选课系统
时间:2020-04-27
版本:v1.01
作者:稳稳c9
需求:
#课程:python,java,PHP,web,unity,UI
#角色划分:管理员不需要注册,会员
#权限划分:
管理员:增删查课程
学生:
注册→ 账户名(账户名存在检测)、密码、
登录→ 跳转选课界面[1.选课 2.查看已选课程]
修改密码→ 输入旧密码、再输入新密码
查看→ 查看已选课程
"""
import os
#课程存储
course_dic = {
"1":{"course":"Python"},
"2":{"course":"Java"},
"3":{"course":"Web"},
"4":{"course":"unity"},
"5":{"course":"UI"}
}
#管理员
admin_dic = {"admin":"123"}
#学生
users_dict = { "1":{"username":"1","password":"1","course":["Python"]}}
while True:
os.system("cls")
#打印主界面菜单
print(" 学生选课系统")
print("◆" * 30)
print(" 1.用户登录[学生/管理员]")
print(" 2.用户注册")
print(" 3.密码修改")
print(" 4.退出系统")
print("◆" * 30)
#提示用户输入选项
choice = input("请输入您的选项:").strip()
#用户登录
if choice == "1":
os.system("cls")
#区分学生与管理员
print("◆" * 30)
print(" 1.学生登录")
print(" 2.管理员登录")
print(" 3.任意键返回上一级")
print(" 测试学生用户:账户密码1 1 ")
print(" 测试管理员:账户密码admin 123 ")
print("◆" * 30)
choice_login = input("请输入您的选项:").strip()
#学生登录
if choice_login == "1":
# 提示用户输入账户密码
username = input("请输入您的账户:")
password = input("请输入您的密码:")
# 判断用户是否存在
if username in users_dict:
# 获取用户储存信息 并且根据账户获取密码
data_password = users_dict.get(username).get("password")
# 判断密码是否正确
if password == data_password:
#跳转学生首页
while True:
print("◆" * 30)
print(" 1.选课")
print(" 2.查看已选课程")
print(" 3.任意键返回上一级")
print("◆" * 30)
#提示学生做出选择
choice_stu = input("请输入您的选项:").strip()
#选课
if choice_stu == "1":
#打印出可选课程信息
print("课程编号\t课程名称")
for key, value in course_dic.items():
print(f"{key}\t\t{value.get('course')}")
#选课
choice_course = input("请输入您的选项:").strip()
#通过用户输入的编号获取课程存储
res = course_dic.get(choice_course).get("course")
#检测用户是否重复选择课程
if res in users_dict.get(username).get('course') :
input("您已选择该课程,请勿重复选择,按任意键返回上一级..")
#用户课程数据没有 该课程
else:
#添加课程
# users_dict.get(username).get('course').append(res)
# users_dict[len(users_dict)] = {
#
# }
users_dict.get(username).get('course').append(res)
input(f"您已成功选择课程:{res}..按任意键返回上一级")
#查看已选课程
elif choice_stu == "2":
#获取用户已选课程数据
user_course = users_dict.get(username).get('course')
print(f"您已选择的课程:{user_course}")
input("按任意键返回上一级")
#返回上一级
else:
break
else:
input("密码错误,按任意键返回主菜单")
continue
else:
input("账户不存在,请先注册,按任意键返回主菜单")
continue
#管理员登录
elif choice_login == "2":
# 提示管理员输入账户密码
username = input("请输入您的账户:")
password = input("请输入您的密码:")
# 判断用户是否存在
if username in admin_dic:
# 获取用户储存信息 并且根据账户获取密码
data_password = admin_dic.get(username)
# 判断密码是否正确
if password == data_password:
#进入管理员页面
while True:
print("◆" * 30)
print(" 1.查看课程")
print(" 2.添加课程")
print(" 3.删除课程")
print(" 4.任意键返回上一级")
print("◆" * 30)
#提醒管理员做出选择
choice_adm = input("请输入您的选项:").strip()
#查看课程 1
if choice_adm == "1":
# 打印出可选课程信息
print("课程编号\t课程名称")
for key, value in course_dic.items():
print(f"{key}\t\t{value.get('course')}")
#添加课程 2
elif choice_adm == "2":
#提示管理员 添加课程名称
add_course = input("请输入需要添加的课程名称: ").strip()
#根据已经存在的课程数量 获取编号建立如"6"
id = str(len(course_dic)+1)
# course_dic[id]["course"] =add_course
course_dic[id] = {
"course":add_course
}
input(f"您已成功添加课程{add_course}.按任意键返回上一级")
#删除课程 3
elif choice_adm == "3":
while True:
#提示管理员 删除课程名
rem_course = input("请输入需要删除的课程编号: ").strip()
if rem_course in course_dic.keys() :
#并且删除用户课程中的信息 TODO
c = course_dic.get(rem_course).get("course")
for d in users_dict.values() :
d.get('course').remove(c)
# 删除系统课程中
course_dic.pop(rem_course)
input("您已经成功删除,按任意键返回上一级.")
break
else:
input("请输入正确的课程编号!..按任意键继续")
continue
#返回上一级 4
else:
break
else:
input("密码错误,按任意键返回主菜单")
continue
else:
input("账户不存在,按任意键返回主菜单")
continue
else:
continue
#用户注册
elif choice == "2":
#提示用户输入想要注册账户名
username = input("请输入您的账户:")
#检测账户名是否已经存在库中
if username in users_dict :
input("对不起,您注册的账户已存在,按任意键返回主菜单")
continue
#账户可用
else:
#提示用户输入密码
password = input("请输入注册账户密码:")
confirm_ps = input("请再一次输入密码:")
#确保两次密码一致
if password == confirm_ps:
#一致后录入注册信息
users_dict[username] = {
"username":username,
"password":password,
"course":[]
}
input("注册成功,按任意键退出")
continue
else:
input("两次密码不一致,按任意键返回主菜单")
continue
#修改密码
elif choice == "3":
username = input("请输入您原来的账户 : ").strip()
password = input("请输入您原来的密码 :").strip()
if username in users_dict: # 检测用户输入的账户是否在 字典中
user = users_dict.get(username) # 根据键获取用户对应的值,
if password in user.get("password"): # get("password")即得到了对应的值
while True:
check_new_password = input("请输入您需要修改的新密码 : ")
check_new_again = input("请再次输入您需要修改的新密码 : ")
if check_new_password == check_new_again:
user["password"] = check_new_password
input("修改完毕。。按任意键返回上一级")
break
else:
input("账户或者密码不存在,按任意键返回上一级")
continue
else:
input("密码错误,按任意键返回上级")
continue
else:
input("账户不存在。。按任意键返回上级")
continue
# 退出系统
elif choice == "4":
import time
for i in [3,2,1]:
time.sleep(1)
print(f"系统将在{i}秒后关闭")
break
#输入错误
else:
input("输入有误。。请重新输入")