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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

【机器学习】代价函数

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

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

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

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

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

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

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

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

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

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

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

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

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

2.4 死锁

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

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

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

工业以太网无线网桥

一、功能概述 1.1设备简介 本产品是工业以太网(Profinet、EtherNet/IP、ModbusTCP等)转无线设备,成对使用(一对一),本产品出厂前已经配对好,用户不需要再配对,即插即用。 本产品适…

当下国内共享办公室和国外的有什么不同

共享办公室,也被称为联合办公空间(Coworking Space),是一种为自由职业者、独立承包商、初创企业以及远程工作者提供灵活、共享工作空间的办公模式。这种办公方式起源于美国硅谷,随着远程工作和自由职业的兴起而逐渐流行…

WIFI驱动移植实验: wireless tools 工具测试

一. 简介 前面一篇文章交叉编译了 wireless tools 工具,并移植到开发板文件系统上。文章如下: WIFI驱动移植实验: wireless tools 工具移植-CSDN博客 本文对 所移植的操作 WIFI设备的工具 wireless tools进行测试。确认是否可以使用。 二…

Laravel扩展包的开发

扩展包的开发 1. 创建一个新项目,初始化扩展包配置 首先创建一个全新的Laravel项目: composer create-project --prefer-dist laravel/laravel laravelPkg 接下来,在项目中创建目录package/{your_name}/{your_package_name} mkdir -p pa…

在点集的新知识面前百年集论不堪一击

黄小宁 与x∈R相异(等)的实数均可表为yxδ(增量δ可0也可≠0),因各实数的绝对值都可是表示长度的数故各实数都可是数轴上点的坐标,于是x∈R变换为实数yxδ的几何意义可是:一维空间“管道”g内R…

Python程序设计 循环结构(二)

1.斐波那契数列 编写一个能计算斐波那契数列中第x个数的小程序。斐波那契数列(Fibonacci sequence),又称黄金分割数列、 因数学家莱昂纳多斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为…

Sublime for Mac 使用插件Terminus

1. 快捷键打开命令面板 commandshiftp2. 选择 Package Control: Install Package,然后会出现安装包的列表 3. 在安装终端插件前,我们先装个汉化包,ChineseLocallization,安装完重启 4. 输入 terminus,选择第一个&am…