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实现爬取千万淘宝商品的方法
Jun 30 Python
python使用xslt提取网页数据的方法
Feb 23 Python
详解Python 数据库的Connection、Cursor两大对象
Jun 25 Python
朴素贝叶斯Python实例及解析
Nov 19 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
Jun 27 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
pandas 对group进行聚合的例子
Dec 27 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 Python
如何利用pygame实现打飞机小游戏
May 30 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
php单件模式结合命令链模式使用说明
2008/09/07 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
python获得一个月有多少天的方法
2015/06/04 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
Django Form常用功能及代码示例
2020/10/13 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
大学生自我鉴定
2013/12/08 职场文书
教师绩效工资方案
2014/02/01 职场文书
高一化学教学反思
2014/02/05 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
全运会口号
2014/06/20 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
员工工作自我评价
2014/09/26 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
2014年学校禁毒工作总结
2014/12/23 职场文书
毕业实习计划书
2015/01/16 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
消夏晚会主持词
2015/06/30 职场文书