Python实现信息管理系统


Posted in Python onJune 05, 2022

本文实例为大家分享了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()

效果图

Python实现信息管理系统

Python实现信息管理系统

Python实现信息管理系统

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
一个简单的python程序实例(通讯录)
Nov 29 Python
Python使用django获取用户IP地址的方法
May 11 Python
python使用PyCharm进行远程开发和调试
Nov 02 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
Nov 15 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
关于numpy数组轴的使用详解
Dec 05 Python
如何在sublime编辑器中安装python
May 20 Python
python和node.js生成当前时间戳的示例
Sep 29 Python
python数字类型和占位符详情
Mar 13 Python
python实现学员管理系统(面向对象版)
Jun 05 #Python
python实现学生信息管理系统(面向对象)
Jun 05 #Python
Python使用pyecharts控件绘制图表
Jun 05 #Python
Python使用openpyxl模块处理Excel文件
Jun 05 #Python
Python中requests库的用法详解
Jun 05 #Python
Python加密与解密模块hashlib与hmac
Jun 05 #Python
Python日志模块logging用法
Jun 05 #Python
You might like
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
使用python实现baidu hi自动登录的代码
2013/02/10 Python
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Python 实现微信防撤回功能
2019/04/29 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
详解python如何引用包package
2020/06/07 Python
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
药品业务员岗位职责
2014/04/17 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
关于诚信的活动方案
2014/08/18 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
2014年财政工作总结
2014/12/10 职场文书
初中教师个人工作总结
2015/02/10 职场文书
文艺委员竞选稿
2015/11/19 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis