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的id()函数介绍
Feb 10 Python
python实现zencart产品数据导入到magento(python导入数据)
Apr 03 Python
Python中处理字符串之islower()方法的使用简介
May 19 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
深入解析Python中的上下文管理器
Jun 28 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 Python
new_zeros() pytorch版本的转换方式
Feb 18 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
Feb 20 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
javascript window对象属性整理
2009/10/24 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
ES6学习教程之对象字面量详解
2017/10/09 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
python使用心得之获得github代码库列表
2014/06/25 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
Python threading的使用方法解析
2019/08/28 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
英国足球店:UK Soccer Shop
2017/11/19 全球购物
九九重阳节标语
2014/10/07 职场文书
2014年实验室工作总结
2014/12/03 职场文书
初中教师个人工作总结
2015/02/10 职场文书
国庆节主题班会
2015/08/15 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
springboot用户数据修改的详细实现
2022/04/06 Java/Android
MySQL GTID复制的具体使用
2022/05/20 MySQL