Python实现信息管理系统
作者:凋谢的向日葵 发布时间:2022-10-08 22:28:39
标签:python,信息,管理系统
本文实例为大家分享了Python实现信息管理系统的具体代码,供大家参考,具体内容如下
"""
项目名称 = '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" 身份证:{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("即将修改,请确认周围安全,按任意键继续")
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()
效果图
来源:https://blog.csdn.net/weixin_46229151/article/details/104202567


猜你喜欢
- #Pyton中让两个值互换的实现方法#方法一:可以理解为相当于是同时赋值a = 5b = 4a,b = b,aprint(a,b)#方法二:
- Vue学习笔记-3 前言Vue 2.x相比较Vue 1.x而言,升级变化除了实现了Virtual-Dom以外,给使用者最大不适就是移除的组件
- 安装顺序rpm -ivhmysql-community-common-5.7.18-1.el7.x86_64.rpmmysql-commun
- 前言快过年了,又到了公司年底评级的时候了。今年的评级和往常一下,每个人都要填写公司的民主评议表,给各个同事进行评价打分,然后部门收集起来根据
- 自定义一个demo指令Vue自定义指令语法如下:Vue.directive(id, definition)传入的两个参数,id是指指令ID,
- 不多说,直接上代码from hdfs import Clientimport pandas as pdHDFSHOST = "ht
- 卷积和膨胀卷积在深度学习中,我们会碰到卷积的概念,我们知道卷积简单来理解就是累乘和累加,普通的卷积我们在此不做赘述,大家可以翻看相关书籍很好
- 一、model.py1.1 Channel Shuffledef channel_shuffle(x: Tensor, groups: in
- 因为有大家的支持,我们才能做到现在,感谢你们这一路上对我们的支持.在这篇文章中,我们将主要针对MySQL的实用技巧,讲讲面试中相关的问题.1
- 1.API接口:hello world 案例from flask import Flaskfrom flask_restful import
- 前言之前使用 vue2.x + webpack3.x 撸了一个 vue 单页脚手架vue 版 spa 脚手架 有兴趣的同学可以看下,内附详细
- 前言MySQL是关系性数据库中的一种,查询功能强,数据一致性高,数据安全性高,支持二级索引。但性能方面稍逊于非关系性数据库,特别是百万级别以
- 问题最近在做项目的时候, dialog组件回调close里面 一般我都会加个resetFields 重置初始值和校验其他地方都没问题, 在t
- 借鉴:python绘制lost(损失)曲线 加 方差范围直接上效果图: 上代码:import reimport seaborn a
- 大家好,今天我们要讲的是如何使用 Pyecharts 制作动态排名变化图:point_down:制作这样的一个动态图使用到的是 Pyecha
- 机器A: select instance_name from v$instance; select name from v$database
- PDF文件是一种常见的文档格式,但是在编辑和修改时不太方便,因为PDF本质上是一种静态的文档格式。因此,有时候我们需要将PDF文件转换成Wo
- 大家都熟悉迅雷看看里面的电影人气指数这个小图标吧先看看我的效果图再看看迅雷的截图比较好看,是根据电影的人气指数来显示热度,下面我们就来模仿一
- 如何编写一个只在Web服务关闭时执行的程序?如:<SCRIPT LANGUAGE="VBScript"&
- 一、字典的基本操作1.定义字典 字典也是一个列表型的数据结构,字典的数据是用“{ }&rd