python 实现简易的学员管理系统

news2024/9/24 21:24:05

在这里插入图片描述

文章目录

  • 前言
  • 基本思路
  • 需求实现
    • 1.实现菜单的功能
    • 2.提示用户输入需要进行的操作,并执行相关操作
    • 3.具体函数功能的实现
      • 增加学员信息
      • 显示所有学员信息
      • 删除学员信息
      • 修改学员信息
      • 查询学员信息
  • 整体代码展示

前言

前面我们已经学习了 python 的输入输出、条件语句、循环、字符串、列表、元组、字典、集合以及函数,那么这篇文章,我将运用前面所学,为大家实现一个简易的学员管理系统。如果大家对这些方面的知识,还没有多少了解,欢迎大家去阅读我的python 学习专栏。

基本思路

首先我们需要制作出来一个菜单,提示用户有哪些功能(增加信息、删除信息、修改信息、查找信息、显示所有学员信息),然后根据用户的选择,我们去执行对应的功能,并且不可能只执行一次操作就结束程序,所以我们需要将整个操作放入循环中,当用户输入退出功能时,再退出程序。

需求实现

1.实现菜单的功能

menu 函数用来实现菜单功能。

def menu():
    print('---欢迎来到学员管理系统---')
    print('-------0.退出系统-------')
    print('-------1.添加学员-------')
    print('-------2.删除学员-------')
    print('-----3.修改学员信息------')
    print('-----4.查找学员信息------')
    print('----5.显示所有学员信息----')
    print('-'*23)

在这里插入图片描述

2.提示用户输入需要进行的操作,并执行相关操作

整个操作需要放入 while 循环中

while True:
    menu()  # 显示菜单
    option = int(input('请输入你要进行的操作:'))  # 提示用户输入
    if option == 0:
        exit(0)  # 这里退出程序比较简单,我们不必另外使用函数
    elif option == 1:
        add_info()
    elif option == 2:
        del_info()
    elif option == 3:
        modify_info()
    elif option == 4:
        search_info()
    elif option == 5:
        print_ifo()

这里退出程序,我们可以使用 exit(0) 函数,也可以使用 break 跳出循环结束程序。然后那些增删改查和显示信息的功能我们就额外使用函数来实现对应功能。

3.具体函数功能的实现

增加学员信息

我们将所有学员的信息存储在列表中,然后列表中的每一个数据以字典的形式存储某个学员的信息。

全局变量 info = [ ] 存储所有学员信息。

这里我们设计时,不存在姓名相同的情况,所以,我们在添加之前需要判断,该学员的信息是否已经存在,如果存在就不执行添加功能,如果不存在就添加学员。

def add_info():
    '''
    先提示用户输入信息,然后在已有信息中查找,如果已存在则结束函数,不存在则添加
    :return:
    '''
    id_info = input('请输入学员学号:')
    name_info = input('请输入学员姓名:')
    tel_info = input('请输入学员电话号:')
    
    dict_info = {}  # 创建一个空字典用来存放单个学员信息
    global info  # 因为需要进行增加操作,所以操作对象是全局变量info
    
    for i in info:
        if i['name'] == name_info:
            print('学员信息已存在,添加失败')
            break
    else:  # 当for循环正常结束的时候,表明不存在该学员,正常添加信息
        dict_info['id'] = id_info
        dict_info['name'] = name_info
        dict_info['tel'] = tel_info
        info.append(dict_info)
        print('添加成功')

在这里插入图片描述

为了查看是否添加成功,我们可以先来实现显示所有学员信息功能。

显示所有学员信息

显示所有学员信息比较简单,就是使用一个循环,然后打印。

def print_ifo():
    for i in info:
        print(f"学员学号:{i['id']}\t学员姓名:{i['name']}\t学员电话:{i['tel']}")

这里注意区别单引号和双引号的使用
在这里插入图片描述

删除学员信息

在删除之前,我们需要判断要删除的学员信息是否存在,如果不存在就结束该功能,存在则删除。

def del_info():
    '''如果要删除的学员信息不存在,则结束函数,如果存在则删除'''
    name_info = input('请输入你要删除的学员信息的姓名')
    global info
    for i in info:
        if i['name'] == name_info:
            info.remove(i)
            print('删除成功')
            break  # 当删除之后可以提前结束循环
    else:
        print('该学员不存在')  # 当循环正常结束的时候,表明不存在要删除的学员的信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改学员信息

再修改学员信息之前,我们同样需要判断该学员信息是否存在,不存在则结束该功能,存在就修改。

def modify_info():
    name_info = input('请输入你要修改的学员信息的姓名:')
    tel_info = input('请输入你要修改的学员的电话信息:')
    global info
    for i in info:
        if i['name'] == name_info:
            i['tel'] = tel_info
            print('修改成功')
            break
    else:
        print('你要修改的学员的信息不存在')

在这里插入图片描述

查询学员信息

当查询到的时候就输出该学员的信息,不存在则提示不存在。

def search_info():
    name_info = input('请输入你要查找的学员信息的姓名:')
    for i in info:
        if i['name'] == name_info:
            print(f"学员学号:{i['id']}\t学员姓名:{i['name']}\t学员电话:{i['tel']}")
            break
    else:
        print("学员信息不存在")

在这里插入图片描述

整体代码展示

info = []  # 以列表的形式存储所有学员信息,每个学员信息以字典的形式存储

def menu():
    print('---欢迎来到学员管理系统---')
    print('-------0.退出系统-------')
    print('-------1.添加学员-------')
    print('-------2.删除学员-------')
    print('-----3.修改学员信息------')
    print('-----4.查找学员信息------')
    print('----5.显示所有学员信息----')
    print('-'*23)

def add_info():
    '''
    先提示用户输入信息,然后在已有信息中查找,如果已存在则结束函数,不存在则添加
    :return:
    '''
    id_info = input('请输入学员学号:')
    name_info = input('请输入学员姓名:')
    tel_info = input('请输入学员电话号:')

    dict_info = {}
    global info
    for i in info:
        if i['name'] == name_info:
            print('学员信息已存在,添加失败')
            break
    else:
        dict_info['id'] = id_info
        dict_info['name'] = name_info
        dict_info['tel'] = tel_info
        info.append(dict_info)
        print('添加成功')

def del_info():
    '''如果要删除的学员信息不存在,则结束函数,如果存在则删除'''
    name_info = input('请输入你要删除的学员信息的姓名')
    global info
    for i in info:
        if i['name'] == name_info:
            info.remove(i)
            print('删除成功')
            break
    else:
        print('该学员不存在')

def modify_info():
    name_info = input('请输入你要修改的学员信息的姓名:')
    tel_info = input('请输入你要修改的学员的电话信息:')
    global info
    for i in info:
        if i['name'] == name_info:
            i['tel'] = tel_info
            print('修改成功')
            break
    else:
        print('你要修改的学员的信息不存在')

def search_info():
    name_info = input('请输入你要查找的学员信息的姓名:')
    for i in info:
        if i['name'] == name_info:
            print(f"学员学号:{i['id']}\t学员姓名:{i['name']}\t学员电话:{i['tel']}")
            break
    else:
        print("学员信息不存在")

def print_ifo():
    for i in info:
        print(f"学员学号:{i['id']}\t学员姓名:{i['name']}\t学员电话:{i['tel']}")



while True:
    menu()
    option = int(input('请输入你要进行的操作:'))
    if option == 0:
        exit(0)
    elif option == 1:
        add_info()
    elif option == 2:
        del_info()
    elif option == 3:
        modify_info()
    elif option == 4:
        search_info()
    elif option == 5:
        print_ifo()

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/731901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面向对象编程主线三

面向对象编程 三、第三阶段 高内聚:类的内部数据操作细节自己完成,不允许外部干涉; 低耦合:仅对外暴露少量的方法用于使用。 封装性的设计思想:把该隐藏的隐藏起来,该暴露的暴露出来。 3.1、面向对象的特…

[物理层]传输方式

传输方式 串行传输与并行传输 穿行传输是指数据是一个比特一个比特依次发送的,在发送端与接收端只用一条数据线路 并行传输是指一次发n个比特,在发送端与接收端需要n条数据线路 在网络中计算机通信通常采用串行传输;而在计算机内部&#x…

Minio在Windows的部署并使用Python来操作桶

什么是Minio? MinIO 是一个开源的对象存储服务器,具有高可用性、高性能和可伸缩性。它兼容 Amazon S3 API,因此可以无缝地替代 Amazon S3 作为对象存储的解决方案。 MinIO 可以让你在自己的基础设施中搭建一个对象存储服务,使你能够存储和…

HTML5+CSS3+JS小实例:背景动态变化的登录界面2.0

实例:背景动态变化的登录界面2.0 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" con…

malloc()与calloc()的辨析

malloc()与calloc()的相同点 两者都是常用的内存分配函数&#xff0c;用于动态分配内存 两者返回值类型都为void*&#xff0c;需要强制转换为所需类型 使用完分配的内存后&#xff0c;都需使用free()函数来释放该内存&#xff0c;防止内存泄漏 malloc()与calloc()的不同点 mal…

你可能不知道现在的Java面试有多卷

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;今年面试实在是太卷了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约…

threejs 音频可视化demo

效果&#xff1a; 在线效果预览&#xff1a;Vite App 源码&#xff1a;https://github.com/developer-wgl/ThreeJsDemo 参考&#xff1a;three.js 音乐可视化_threejs音乐可视化_汉武大帝的博客-CSDN博客

谈谈——互联网生活中的隐私保护

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Unity VR:Oculus Integration 中 OVRManager 的 Eye Level,Floor Level,Stage 的区别

Oculus Integration 开发包中有个 OVRManager 脚本被挂载到 OVRCameraRig 物体上。OVR Manager 中有个 Tracking Origin Type 参数&#xff0c;它相当于追踪的参考系&#xff0c;参数分为 Eye Level, Floor Level 和 Stage。 VR 设备会对头显进行追踪&#xff0c;于是现实中头显…

VTK8.2.0的配置过程

VTK8.2.0的配置过程 1、官网下载vtk8.2.0的源码2、下载cmake3、使用cmake对源码进行编译4、报错后对cmake作如下修改配置5、使用vs2017打开生成的项目解决方案6、使用vs2017分别编译形成debug和release版本的可执行代码7、CMAKE_INSTALL_PREFIX/plugins/designer 目录下的 QVTK…

有AI助手帮你,刷任何题都不吃力!

Rider如何配置AI助手&#xff1f; 前言&#xff1a;一、选择AI助手二、如何在Rider中配置CodeWhisperer三、使用方法四、分享你的AI解决方案 明明自觉学会了不少知识&#xff0c;可真正开始做题时&#xff0c;却还是出现了“一支笔&#xff0c;一双手&#xff0c;一道力扣&…

RabbitMQ五种工作模式的简单应用

发布订阅模式(三种方式) 发布订阅模式上一篇我们已经介绍了,这里就不做介绍了,想要看的可以点此链接 在SpringBoot中对RabbitMQ三种使用方式_流殇꧂的博客-CSDN博客 Routing(路由模式)(基于注解的方式) 1.创建交换机和消息队列,类型要为direct(不设置也是默认的配置) //路由模式…

通信算法之173: 物理层峰均比PAPT

一. SC-FDMA技术 OFDM技术&#xff0c;能有效克服宽带通信系统中的频率选择性衰落&#xff0c;降低传输符号间干扰。但4G LTE标准&#xff0c;OFDMA只用在其下行传输&#xff0c;上行端采用了单载波频分复用技术&#xff08;single carrier frequency domain multiple access S…

【办公类-19-01】“微信表情”表情包上传,用Python调整各类尺寸、格式

背景需求&#xff1a; 今天学了“微信表情”的表情图上传流程&#xff0c;发现其中有多种尺寸参数&#xff0c;必须完全符合尺寸、格式&#xff0c;才能上传。 以上有PNG、GIF的不同&#xff0c;有50*50,120*120,240*240,750*400四款差异&#xff0c;手动修改太费时了 我想用…

我第一次面试自动化测试就被diss了,人生惨遭滑铁卢…

如果你恰好刚刚进入一家新公司&#xff0c;领导一上来就让你开展自动化测试&#xff0c;作为一名初出茅庐的测试新人&#xff0c;除了手足无措&#xff0c;你只能默默慨叹自己能力尚欠&#xff0c;眼前只会出现一个又一个无从下手的问题&#xff1a; 作为手工测试&#xff0c;…

MySQL的视图和索引(调优)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于MySQL数据库的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.视图是什么&#xff1f; 二.视图…

【周末闲谈】关于计算机的二三事

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 文章目录 前言一、第一台计算机的诞生&#x1f4bb;二、计算机发展历史&#x1f4da;第一代计算机&#x1f4bb;第二代计算机&#x1f4bb;第三代计算机&#x1f4bb;第四代计算机&#x…

国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块

国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块 硬件平台 CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件1.28寸圆形彩色TFT显示屏高清IPS 模块240X240 SPI接口GC9A01 产品介绍 1.28寸圆形IPS彩屏&#xff0c;支持 RGB 65K色显示&#xff0c;显示色彩丰富240X240分辨率…

一篇文章让你搞懂指针和数组笔试题(加深对指针的理解)

指针和数组笔试题解析 下文哦我们直接结合代码进行讲述 一维数组 1 //一维数组 #include<stdio.h> int main() {//一维数组int a[] { 1,2,3,4 };printf("%d\n", sizeof(a));printf("%d\n", sizeof(a 0));printf("%d\n", sizeof(*a))…

【C的葵花宝典进阶篇】之指针进阶(一)

【C语言进阶篇】之指针进阶&#xff08;一&#xff09; 1. 字符指针2. 指针数组2.1 整形指针数组2.2 用指针数组模拟二维数组 3. 数组指针3.1 数组指针的表示方法3.2 深度剖析&数组名和数组名3.3 数组指针的使用3.3.1 在同一函数内直接将数组的地址赋给数组指针3.3.2 数组指…