使用Python编写简单学生管理系统

学完python基础,把学过的知识运用起来做一个简单的学生管理系统

1、需求分析

需求:进入系统显示系统功能界面,功能如下:

① 添加学员信息

② 删除学员信息

③ 修改学员信息

④ 查询学员信息(只查询某个学员)

⑤ 遍历所有学员信息

⑥ 退出系统

系统共6个功能,用户根据自己需求选取

2、功能实现步骤

① 显示功能界面

② 用户输入功能序号

③ 根据用户输入的功能序号,执行不同的功能(函数)

☆ 定义函数

☆ 调用函数

3、模块化的编程思想(面向过程)

模块化的编程思想是最早期的编程思想,其强调==把一个系统分解为若干个功能(步骤)==,每个功能就是一个模块(函数)。当所有功能开发完毕后,功能整合,则系统就完成了。

4、使用Python开发通讯录管理系统

① 显示功能界面

② 提示用户输入要操作的功能编号

③ 根据用户输入的序号执行相关功能 => if...elif...else

④ 如何让程序一直执行下去,而不是选择某个功能后,程序就退出了 => while True

⑤ 根据用户输入的序号,完成系统中的每一个功能

⑥ 扩展功能:把学生信息保存在文件中

直接上耗时两个半小时的源代码
# 定义一个大列表来保存学生信息
students = []# 功能菜单函数
def menu():print('-' * 40)print('    学生管理系统  v1.0')print('1.添加学生信息')print('2.删除学生信息')print('3.修改学生信息')print('4.查询学生信息')print('5.遍历所有学生信息')print('6.保存信息到文件')print('7.退出系统')print('-' * 40)# 添加学生功能函数
def add_student():student = {}# 用字典保存每个学生的信息,然后将它写入students列表student['name'] = input('请输入学生姓名:')student['age'] = int(input('请输入学生年龄:'))student['mobile'] = input('请输入学生电话号码:')students.append(student)print(students)# 删除学生信息功能函数
def del_student():name = input('请输入要删除学生的姓名:')for i in students:if i['name'] == name:students.remove(i)print('删除成功')print(students)breakelse:print('该学生不存在')# 修改学生信息功能函数
def edit_student():name = input('请输入要修改学生的姓名:')for i in students:if i['name'] == name:i['name'] = input('请输入修改后学生的姓名:')i['age'] = int(input('请输入修改后学生的年龄:'))i['mobile'] = int(input('请输入修改后学生的电话:'))print('您要修改的学生信息修改成功')breakelse:print('您要修改的学生信息未找到')# 查询学生的信息功能函数
def find_studet():name = input('请输入要查询学生的姓名:')for i in students:if i['name'] == name:print(i)breakelse:print('很抱歉,没有该学生的信息')# 遍历所有学生的信息的功能函数
def find_all_student():for i in students:print(i)# 保存students数据到data.txt文件功能的函数
def save_data_to_file():global studentsf = open('data.txt', 'w', encoding='utf-8')f.write(str(students))f.close()print('信息保存成功')# 定义函数load_data(),把文件数据加载到程序
def load_data():f = open('data.txt', 'r', encoding='utf-8')content = f.read()  # str类型的字符串# 判断人间是否为空if not content:return  # 终止此循环,不需要在继续加载了else:# 如果代码继续向下执行代表不为空,则进行类型转换global students  # 声明我们接下来使用的变量是全局变量students = eval(content)f.close()# 加载数据文件类容到列表students中
load_data()
while True:menu()num = int(input('请输入编号进行操作:'))if num == 1:  #添加学生信息add_student()elif num == 2:  #删除学生信息find_all_student()del_student()elif num == 3:  #修改学生信息find_all_student()edit_student()elif num == 4:  #查询学生信息find_studet()elif num == 5:  #遍历学生信息find_all_student()elif num == 6:  #保存学生信息save_data_to_file()elif num == 7:  #退出系统print('欢迎下次使用')print('退出系统成功')breakelse:print('输入不合法,请重新输入')
运行结果

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

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

相关文章

【蓝桥杯】蓝桥杯算法复习(一)

😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!&#x1f4…

Vue源码系列讲解——过滤器篇【三】(解析过滤器)

目录 1. 前言 2. 在何处解析过滤器 3. parseFilters函数分析 4. 小结 1. 前言 在上篇文章中我们说了,无论用户是以什么方式使用过滤器,终归是将解析器写在模板中,既然是在模板中,那它肯定就会被解析编译,通过解析用…

【自动化】PyoutuGUI操作键鼠

自动化之PyoutuGUI操作键鼠 文章目录 自动化之PyoutuGUI操作键鼠  👉引言💎一、初始化环境二、键盘鼠标事件三、消息框功能四、案例实战自动登录WPS 五、问题解决 👉引言💎 学习的最大理由是想摆脱平庸,早一天就多一…

EF类和E/F类功率放大器(能量转换器)的波形推导和理想仿真--基于Matlab和ADS

EF类和E/F类功率放大器(能量转换器)的波形推导和理想仿真–基于Matlab和ADS 参考论文:Modeling and Analysis of Class EF and Class E/F Inverters With Series-Tuned Resonant Networks(2016) 这篇文章的思路和MTT的文章A Generalized Hi…

存储引擎的简介

简介: 1.在mysql存储引擎可以说就是指表的类型,可以称为表处理器,以表的形式存储。 2.他的功能就是接收上层传下来的指令,然后对表中的数据进行提取写入操作。 目的: 为了管理方便,我们把连接管理&#xf…

如何在一个pycharm项目中创建jupyter notebook文件,并切换到conda环境中

1、第一步可以直接在pycharm项目中创建jupyter notebook文件 2、假若想要切换成pytorch环境做实验例子,会发现报这个错误 Jupyter server process exited with code 1 C:\Users\12430\.conda\envs\pytorch3.11\python.exe: No module named jupyter在这里&#xff…

Canvas笔记05:绘制文本,可视化图表中最常用

hello,我是贝格前端工场,最近在学习canvas,分享一些canvas的一些知识点笔记,本期分享canvas绘制文本的知识,欢迎老铁们一同学习,欢迎关注,如有前端项目可以私信贝格。 Canvas绘制文本是指使用H…

【粉丝福利第四期】:《低代码平台开发实践:基于React》(文末送书)

文章目录 前言一、React与低代码平台的结合优势二、基于React的低代码平台开发挑战三、基于React的低代码平台开发实践四、未来展望《低代码平台开发实践:基于React》五、粉丝福利 前言 随着数字化转型的深入,企业对应用开发的效率和灵活性要求越来越高…

PyTorch之完整的神经网络模型训练

简单的示例: 在PyTorch中,可以使用nn.Module类来定义神经网络模型。以下是一个示例的神经网络模型定义的代码: import torch import torch.nn as nnclass MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()# 定义神经…

运维打工人,兼职跑外卖的第二个周末

北京,晴,西南风1级。 前序 今天天气还行,赶紧起来,把衣服都洗洗,准备准备,去田老师吃饭早饭了。 一个甜饼、一个茶叶蛋、3元自助粥花费7.5。5个5挺吉利的。 跑外卖的意义 两个字减肥,记录刚入…

基于最小二乘递推算法的系统参数辨识matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于最小二乘递推算法的系统参数辨识。对系统的参数a1,b1,a2,b2分别进行估计,计算估计误差以及估计收敛曲线&#…

如何在Windows中对硬盘进行分区?这里有详细步骤

本文介绍如何在Windows11、10、8、7、Vista和XP中对硬盘进行分区 如果这个过程听起来比你想象的要复杂一点,不要担心,因为事实并非如此。在Windows中对硬盘进行分区一点也不难,通常只需要几分钟。以下是操作方法。 注意:这些说明适用于Windows 11、Windows 10、Windows 8…

腾讯云轻量应用服务器流量用完了怎么办?

腾讯云轻量服务器流量用完了怎么办?超额流量另外支付流量费,流量价格为0.8元/GB,会自动扣你的腾讯云余额,如果你的腾讯云账号余额不足,那么你的轻量应用服务器会面临停机,停机后外网无法访问,继…

js【详解】Promise

为什么需要使用 Promise ? 传统回调函数的代码层层嵌套,形成回调地狱,难以阅读和维护,为了解决回调地狱的问题,诞生了 Promise 什么是 Promise ? Promise 是一种异步编程的解决方案,本身是一个构…

自然语言处理之语言模型(LM)介绍

自然语言处理(Natural Language Processing,NLP)是人工智能(Artificial Intelligence,AI)的一个重要分支,它旨在使计算机能够理解、解释和生成人类语言。在自然语言处理中,语言模型&…

阿珊详解Vue Router的守卫机制

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【漏洞复现】Salia PLCC cPH2 远程命令执行漏洞(CVE-2023-46359)

0x01 漏洞概述 Salia PLCC cPH2 v1.87.0 及更早版本中存在一个操作系统命令注入漏洞,该漏洞可能允许未经身份验证的远程攻击者通过传递给连接检查功能的特制参数在系统上执行任意命令。 0x02 测绘语句 fofa:"Salia PLCC" 0x03 漏洞复现 ​…

video视频播放

1.列表页面 <template><div><ul><li class"item" v-for"(item,index) in list" :key"index" click"turnPlay(item.videoUrl)"><img :src"item.img" alt""><div class"btn…

套接字编程 --- 一

目录 1. 预备知识 1.1. 端口号 1.2. 认识TCP协议 1.3. 认识UDP协议 1.4. 网络字节序 2. socket 2.1. socket 常见系统调用 2.1.1. socket 系统调用 2.1.2. bind 系统调用 2.1.3. recvfrom 系统调用 2.1.4. sendto系统调用 2.3. 其他相关接口 2.3.1. bzero 2.3.2…

力扣:17. 电话号码的字母组合

力扣&#xff1a;17. 电话号码的字母组合 描述 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输…