Python入门练习 - 学生管理系统

Python 实现读书管理系统

在这里插入图片描述

"""
实现一个命令行版的读书管理系统
"""
import os.path
import sys# 使用这个全局变量,来管理所有的学生信息
# 这个列表的每个元素都是一个‘字典’,每 个 字典就分别表示了一个同学students = []def save():"""用于存档,将内存保存到文件中:return:"""# 在同一个目录中创建资源文件用于存档信息with open('./resource.txt', 'w', encoding='utf8') as file:for stu in students:file.write(f"{stu['studentId']}\t{stu['name']}\t{stu['gender']}\t{stu['className']}\n")print(f"[存档成功] 共储存了{len(students)}条记录!")def load():"""用于读档:return:"""# 如果存档文件不存在,则直接跳过读档流程if not os.path.exists('./resource.txt'):return# 读档之前要把旧的数据清干净global studentsstudents = []with open('./resource.txt', 'r', encoding='utf8') as file:for line in file:line = line.strip()splitList = line.split('\t')if len(splitList) != 4:print(f'当前格式存在问题, line={line}')continuestudent = {'studentId': splitList[0],'name': splitList[1],'gender': splitList[2],'className': splitList[3]}students.append(student)print(f"[读档成功] 共读取了{len(students)} 条记录")def menu():print('-----------------------------------------')print('       1.新增学生                         ')print('       2.显示学生                         ')print('       3.查找学生                         ')print('       4.删除学生                         ')print('       0.退出程序                         ')print('-----------------------------------------')choice = input(' 请输入您的选择:')return choicedef insert():print('[新增学生]开始!')studentId = int(input('请输入学生学号:'))name = input('请输入学生的姓名:')gender = input('请输入学生的性别:')if gender not in ['男', '女']:print('性别输入内容不符合要求')returnclassName = input('请输入学生班级')# 使用 一 个 字典将学生信息给聚合起来student = {'studentId': studentId,'name': name,'gender': gender,'className': className}global studentsstudents.append(student)# 增加保存操作save()print('[新增学生]完毕!')def display():print('[显示学生] 开始!')for stu in students:print(f"{stu['studentId']}\t{stu['name']}\t{stu['gender']}\t{stu['className']}")print(f'[显示学生] 完毕,共显示了{len(students)}条记录')def find():# 根据学生姓名来查找print('[查找学生] 开始!')name = input('请输入要查找的学生姓名')count = 0global studentsfor stu in students:if stu['name'] == name:print(f"{stu['studentId']}\t{stu['name']}\t{stu['gender']}\t{stu['className']}")count += 1print(f'[查找学生] 完毕, 共匹配到{count}条记录')def delete():print('[删除学生] 开始')studentId = input('请输入要删除学生的学号:')global studentsfor stu in students:if stu['studentId'] == studentId:print(f"删除{stu['name']} 同学的信息!")students.remove(stu)save()print('[删除学生] 结束')def main():"""入口函数:return:"""print('--------------------------------------------')print('            欢迎来到学生管理系统'                )print('--------------------------------------------')load()while True:chioce = menu()if chioce == '1':insert()elif chioce == '2':display()elif chioce == '3':find()elif chioce == '4':delete()elif chioce == '0':print('goodbye!')sys.exit(0)else:print('输入有误,请重新输入')main()

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

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

相关文章

okcc呼叫中心系统如何配置呼入?

在OKCC呼叫中心系统中配置呼入通常包括以下步骤: 登录管理界面:使用管理员账户登录OKCC系统。 创建呼入号码:在系统内添加或选择一个用于呼入的电话号码,并将其与呼入队列关联。 设置呼入队列:配置呼入队列的基本参数…

利用R语言和curl库实现网页爬虫的技术要点解析

R语言简介 R语言是一种自由、跨平台的编程语言和软件环境,专门用于统计计算和数据可视化。它具有丰富的数据处理、统计分析和图形展示功能,被广泛应用于数据科学、机器学习、统计建模等领域。 R语言技术优势 丰富的数据处理功能: R语言拥有…

【C++】静态成员

静态成员在 C 类中是一个重要的概念,它包括静态成员变量和静态成员函数。 一、静态成员变量 1.理论 定义:由关键字static修饰类体中成员,称为类静态成员(static class member)。特点:静态成员变量是类的所…

Python实现猜数字游戏:一次编程旅程

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

Vue3+Element Plus+TS开发企业管理后台(一)

系列文章,讲述一个企业管理后台的前后端设计,持续集成常见的页面功能和服务端设计思路。 效果展示 支持多种布局、主题配色随意切换 侧边菜单背景设置 主题色调切换 移动端完美适配 菜单侧边收起,适合移动端小空间场景。 功能开发计划 #merm…

外包干了4年,技术退步明显。。。。

说一下自己的情况,本科生,19年通过校招进入上海某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

【机器学习】代价函数

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

【LVGL-界面切换】

LVGL-界面切换 ■ LVGL-界面切换■ 方法一: 删除法■ 方法二: 隐蔽法 ■ LVGL-界面切换 ■ 方法一: 删除法 当用户删除一个父对象时,它所有的子对象也会被一并删除。 可以调用 lv_obj_del 函数,直接删除基础对象&…

PD DRP+OTG 极致简单玩转边充电边传输数据

在USB2.0端口的Data Role里,USB根据数据传输的方向定义了Host/Device/OTG三种角色,其中OTG即可作为Host,也可作为Device,在Type-C中,也有类似的定义,只是名字有了些许修改。 1. DFP (Downstream Facing Po…

MySQL基础语法之判断语句的学习如何将检索数据的返回值赋值给变量,以及如何查看变量

3月25日 条件函数 条件函数 select if(1<0,正确,错误); -- 1<0是条件&#xff0c;当条件正确后&#xff0c;则放回第一个值&#xff0c;正确&#xff0c;如果错误将返回第二个值错误 select ifnull(null,hello world) -- 用于检测数据是否为空值&#xff0c;如果为空值…

__attribute__((optimize(“O0“)))阻止了编译器进行可能的性能改进

在GCC&#xff08;GNU Compiler Collection&#xff09;中&#xff0c;__attribute__((optimize("O0")))是一个函数属性&#xff0c;用于指示编译器在编译该函数时应用特定的优化级别。在这个例子中&#xff0c;O0指示编译器不进行任何优化&#xff0c;并生成最直接的…

纯前端网页播放20路海康威视、大华RTSP视频流,调用双显卡GPU加速

关于网页播放摄像头RTSP视频流&#xff0c;网上有很多免费开源方案&#xff0c;大多数是通过把在服务器端RTSP转码成HLS或者RTMP等前端可以播放的视频流&#xff0c;然后推到前端播放&#xff0c;但是大多数延迟非常高&#xff08;比如&#xff1a;HLS延迟达到十几秒&#xff0…

前端实现浏览器自定义滚动条

前言&#xff1a; 最近有个项目&#xff0c;产品觉得浏览器默认滚动条太丑了。想美化一下&#xff0c;比如自定义颜色&#xff0c;加上圆角&#xff0c;宽高都要更改一下。我查了资料和文档总结了一下 写法&#xff0c;特此记录以便之后使用。 浏览器滚动条api 总结&#xff…

YoloV5改进策略:Neck和Head改进|ECA-Net:用于深度卷积神经网络的高效通道注意力|多种改进方法|附结构图

摘要 本文使用ECA-Net注意力机制加入到YoloV5Neck和Head中。我尝试了多种改进方法&#xff0c;并附上改进结果&#xff0c;方便大家了解改进后的效果&#xff0c;为论文改进提供思路。&#xff08;改进中。。。。&#xff09; 论文&#xff1a;《ECA-Net&#xff1a;用于深度…

RN在android手机剪切图片的操作

之前写过一个React Native调用摄像头画面及拍照和保存图片到相册全流程但是这个仅限于调用摄像头拍照并保存图片,今天再写一个版本的操作,这个博客目前实现的有三点操作: 调用摄像头拍照对照片进行剪切从相册选取图片 功能上面来说有两点: 点击按钮可以对摄像头进行拍照,拍完照…

月入10.5k;36岁生物专业转行网优,选择真的比努力更重要!

张雪峰说&#xff1a;普通家庭的孩子选择专业首要要考虑的是能不能就业&#xff1f;能不能拿到高薪&#xff1f;因为除了你的父母&#xff0c;没人会对你的未来负责。 学历和专业哪个更重要&#xff1f;不同的人往往会有不同的解答&#xff0c;今天故事的主人公H先生毕业于武汉…

1.9 sys模块

python模块之sys模块 定义&#xff1a;针对python解释器相关的变量和方法 import sys #和解释器有关信息 # print(sys.version) #获取Python解释程序的版本信息 #python程序运行版本 # print(sys.maxsize) #能够表示的最大int#9223372036854775807 # print(sys.path)#检索…

2.4 死锁

1 2 3 4 5 6 7 8 9 10 11 12 13

github加速神器!解决github巨慢的问题,并且能够加速下载!另外推荐GitKraken -- 超好用的 Git 可视化工具

FastGithub github加速神器&#xff0c;解决github打不开、用户头像无法加载、releases无法上传下载、git-clone、git-pull、git-push失败等问题。 下载地址&#xff1a; 清华云盘 2 部署方式 2.1 windows-x64桌面 双击运行FastGithub.UI.exe 2.2 windows-x64服务 fastgi…

低代码与数字化转型:重塑企业技术生态的新引擎

随着科技的飞速发展&#xff0c;数字化转型已成为企业发展的重要驱动力。在这一进程中&#xff0c;低代码平台正逐渐崭露头角&#xff0c;以其高效、灵活的特性&#xff0c;助力企业加速数字化转型的步伐。本文将从低代码平台的概念、优势、应用及前景等方面进行探讨&#xff0…