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

在这里插入图片描述

文章目录

  • 前言
  • 基本思路
  • 需求实现
    • 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  # 因为需要进行增加操作,所以操作对象是全局变量infofor i in info:if i['name'] == name_info:print('学员信息已存在,添加失败')breakelse:  # 当for循环正常结束的时候,表明不存在该学员,正常添加信息dict_info['id'] = id_infodict_info['name'] = name_infodict_info['tel'] = tel_infoinfo.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 infofor 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 infofor i in info:if i['name'] == name_info:i['tel'] = tel_infoprint('修改成功')breakelse: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']}")breakelse: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 infofor i in info:if i['name'] == name_info:print('学员信息已存在,添加失败')breakelse:dict_info['id'] = id_infodict_info['name'] = name_infodict_info['tel'] = tel_infoinfo.append(dict_info)print('添加成功')def del_info():'''如果要删除的学员信息不存在,则结束函数,如果存在则删除'''name_info = input('请输入你要删除的学员信息的姓名')global infofor i in info:if i['name'] == name_info:info.remove(i)print('删除成功')breakelse:print('该学员不存在')def modify_info():name_info = input('请输入你要修改的学员信息的姓名:')tel_info = input('请输入你要修改的学员的电话信息:')global infofor i in info:if i['name'] == name_info:i['tel'] = tel_infoprint('修改成功')breakelse: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']}")breakelse: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.hqwc.cn/news/13742.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis - 一篇讲解根据 Key 前缀统计分析内存占用

问题描述 今天遇到一个 Redis 内存打挂了的问题,想看看哪个前缀 Key 占用内存比较大?! 原因分析 我们都知道如果直接用 Keys 参数去做统计很危险,而且也只能统计数量,当然也可以排序去前几名的占用内存 Key 对应的大…

逆转乾坤,反转字符串

本篇博客会讲解力扣“344. 反转字符串”的解题思路,这是题目链接。 这是一道经典题目了。解题思路是:双下标,left指向最左边的字符,right指向最右边的字符,交换2个字符,left向右挪动一格,right向…

细谈容器化技术实现原理--以Docker为例

目录 一、Docker解决了什么 二、容器的发展过程 三、容器基础 3.1. 容器实现的原理: ⚠️原理详解: 3.1.1. Namespace 3.1.2. Cgroups 3.1.3. chroot 四、Volume 4.1. Docker是如何做到把一个宿主机上的目录或者文件,挂载到容器里面…

StarRocks--被 Databricks CEO 提及的数据库

Databricks 介绍 Databricks是一家美国的大数据独角兽公司,由 Apache Spark 的创建者所创立。Databricks 开源了 Delta Lake--基于 Apache Spark 的下一代数据湖存储引擎。Delta Lake 是目前市面上主流的数据湖存储引擎之一,与 Apache Hudi 和 Apache Ic…

MySQL入门必备:Linux中部署MySQL环境的四种方式详解

目录 一、仓库安装 二、本地安装 三、Docker中安装 四、源码安装 一、仓库安装 首先需要下载mysql软件包: 1、进入MySQL官网 2、进入MySQL社区版下载 3、使用yum方式下载MySQL 4、下载对应版本的软件包 5、这里可以不登录直接下载软件包 6、复制下载链接 7、然…

122.将实战网页部署到Netlify

● 本章我们将网站部署到Netlify ● 首先先点击右上角注册一个账号 ● 注册完成之后,点击sites,将我们的网站文件夹拖入 ● 上传成功 ● 之后就可以正常访问啦 ● 我们也可以修改我们的站点名称,让他更加好记

综合评价算法 | Matlab实现基于CRITIC法的综合评价算法

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 综合评价算法 | Matlab实现基于CRITIC法的综合评价算法 研究内容 CRITIC法是一种比熵权法和标准离差法更好的客观赋权法。它是基于评价指标的对比强度和指标之间的冲突性来综合衡量指标的客观权重。考虑指…

Vue3使用echarts仪表盘(gauge)

Documentation - Apache ECharts 可自定义设置以下属性 仪表盘数据源(gaugeData),类型:Gauge[],必传,默认 []容器宽度(width),类型:number | string&#x…

web前端总结(一)HTML标签

1.语法结构&#xff1a; <标签 属性 “值”>内容</标签> <p align "center">标签内容</P> 2.标签 1.标题标签&#xff1a; **标题标签 <h1> - <h6>&#xff08;重要&#xff09;** 为了使网页更具有语义化&#xff0c;我们…

辅助性能优化——长安链性能分析工具原理及用法

如何提升区块链系统性能是很多开发者都会关注的事&#xff0c;但是有些对区块链并非十分熟悉的开发者可能会感到没有头绪。长安链提供了性能分析工具帮助开发者梳理系统耗时&#xff0c;优化系统性能。下面对长安链性能分析工具原理及使用进行介绍。 一、 概述 time_counter.s…

从视频源头到边缘智能:实现端到端AI解决方案的技术挑战与实践

从视频源头到边缘智能&#xff1a;实现端到端AI解决方案的技术挑战与实践 引言端到端AI解决方案打通视频源头采集视频传输和存储边缘计算和盒子设备 SDK示列 引言 随着人工智能技术的快速发展&#xff0c;端到端AI解决方案在各个领域的应用越来越广泛。这些解决方案能够实现从…

DAY41:贪心算法(十)监控二叉树

文章目录 968.监控二叉树思路遍历顺序空节点处理情况列举 最开始的写法debug测试&#xff1a;travelsal的输出多了1 修改版二叉树注意点时间复杂度总结 968.监控二叉树 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及…