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的汉字转GBK码实现代码
Feb 19 Python
详解Python中的序列化与反序列化的使用
Jun 30 Python
django轻松使用富文本编辑器CKEditor的方法
Mar 30 Python
python实现逻辑回归的方法示例
May 02 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
python 中字典嵌套列表的方法
Jul 03 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
详解python statistics模块及函数用法
Oct 27 Python
Django 请求Request的具体使用方法
Nov 11 Python
python如何实现DES加密
Sep 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
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
PHP7 新增功能
2021/03/09 PHP
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
关于Python作用域自学总结
2019/06/10 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
Django数据库迁移常见使用方法
2020/11/12 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
大学生优秀团员事迹材料
2014/01/30 职场文书
反对邪教标语
2014/06/30 职场文书
合作协议书模板
2014/10/10 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
学生自我评语
2015/01/04 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
离婚上诉状范文
2015/05/23 职场文书