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中的元类编程入门指引
Apr 15 Python
使用SAE部署Python运行环境的教程
May 05 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
pip安装Python库时遇到的问题及解决方法
Nov 23 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
python通过opencv实现图片裁剪原理解析
Jan 19 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
python 如何实现遗传算法
Sep 22 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 Python
Jupyter Notebook内使用argparse报错的解决方案
Jun 03 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
PHP安装问题
2006/10/09 PHP
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
phplot生成图片类用法详解
2015/01/06 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
python实现RSA加密(解密)算法
2016/02/17 Python
Python内建模块struct实例详解
2018/02/02 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
Django 内置权限扩展案例详解
2019/03/04 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
学生学习总结的自我评价
2013/10/22 职场文书
经管应届生求职信
2013/11/17 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
工作说明书格式
2014/07/29 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
导游词之无锡东林书院
2019/12/11 职场文书