【一起python】使用python实现学生管理系统

请添加图片描述

文章目录

  • 📝前言
  • 🌠主函数man
    • 🌉菜单menu
    • 🌉添加学生信息
    • 🌉展示目前学生信息
    • 🌉查找学生
    • 🌉删除同学信息
    • 🌉退出程序
  • 🌠python完整代码
  • 🚩总结


📝前言

🌠主函数man

def main():"""入口函数"""#通过控制台和用户进行交互print('---------------------------------')print('         欢迎来到学生管理系统       ')print('---------------------------------')while True:#通过 menu 函数调用load 即可choice = menu()if choice == '1':#新增学生insert()elif choice == '2':#显示所有学生show()elif choice == '3':#查找学生find()elif choice == '4':#删除学生delete()elif choice == '0':#退出程序result = exitprint()else:print('无效选择,请重试!')if __name__ == "__main__":main()

在 Python 中,每个脚本文件都有一个特殊的内置变量 name。当一个 Python 文件被直接运行时,name 的值会被设置为 “main”。但是如果这个 Python 文件被当作模块导入到其他程序中,那么 name 的值就会是模块名称。

🌉菜单menu

def menu():print(' 1. 新增学生')print(' 2. 显示学生')print(' 3. 查找学生')print(' 4. 删除学生')print(' 0. 退出程序')choice = input(' 请输入你的选择:')return choice

🌉添加学生信息

def insert():print('[新增学生] 开始!')studentId = input('请输入学生的学号:')name = input('请输入学生的姓名:')gender = input('请输入学生的性别:')if gender not in ('man', 'girl'):print('性别输入的内容不符合要求, 新增失败!')returnclassName = input('请输入学生的班级:')# 使用一个字典把上述的信息给聚合起来.student = {'studentId': studentId,'name': name,'gender': gender,'className': className}global studentsstudents.append(student)# 增加保存操作save()print('[新增学生] 完毕!')

🌉展示目前学生信息

def show():#遍历全局变量的这个列表,把每个学生的信息给打印出来print('[显示学生] 开始!')for s in students:print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")print(f'[显示学生] 完毕!,共显示了 {len(students)} 条数据')

🌉查找学生

def find():#根据学生姓名,来查找print('[查找学生] 开始!')name = input("请输入要查找的同学姓名:")count = 0for s in students:if name == s['name']:print(f'{s['student']}\t{s['name']}\t{s['gender']}\t{s['className']}')count += 1print(f'[查找学生] 结束! 共找到了{count}个匹配的同学!')

🌉删除同学信息

def delete():print('[删除学生] 开始!')studentId = input('请输入要删除的学生学号:')for s in students:if s['studentId'] == studentId:print(f'删除{s['name']}同学的信息!')students.remove(s)save()print('[删除学生] 结束!')

🌉退出程序

def exitprint():print('''  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┃                                   ┃  ┃     你真的要离开学生管理系统吗?       ┃  ┃                                   ┃  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ''')confirm = input("输入 ‘yes’ 确认退出:")if confirm.lower() == 'yes':print('''  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┃                                   ┃  ┃     学生管理系统即将关闭,再见!        ┃  ┃                                   ┃  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ''')sys.exit()  # 直接退出程序else:print("继续使用学生管理系统")

🌠python完整代码

# -*- coding: utf-8 -*-
import sys#实现一个命令行版本的学生管理系统
import os.path#使用这个全局变量,来管理所有的学生信息
# 这个列表的每一个元素都是一个"字典",每个字典就分别表示一个同学
students = []def save():"""用于存档"""#此处的路径不是以 d: 开头的“绝对路径”,而是相对路径# 此时这个写法的含义就是让 recode.txt 和当前 的 code66.py在同一个目录with open('recode.txt','w',encoding='utf8') as f:for s in students:f.write(f'{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}')print(f'[存档成功] 共存储了 {(len)(students)} 条记录!')def load():"""用于读档"""# 如果存档文件不存在,则直接跳过读档流程# 为了避免读方式打开文件的时候,文件不存在引起的异常if not os.path.exists('recode.txt'):return# 读档的时候要保证先把旧的数据清理干净!global studentsstudents = []with open('recode.txt','r',encoding='utf8') as f:for line in f:#针对这一行数据,按照 \t 进行切分操作#切分之前,要去除末尾的换行\nline = line.strip()#去除字符串两端的空白字符(空格、换行、制表符等)tokens = line.split('\t')#处理后的字符串(line)按照制表符 \t 进行切分,生成一个字符串列表# 1001    Alice    Female  ClassAif len(tokens) != 4:print(f'当前格式存在问题! line = {line}')continuestudent = {'studentId': tokens[0],'name': tokens[1],'gender': tokens[2],'className': tokens[3]}students.append(student)print('f[读档成功] 共读取了 {len(students)} 条记录!')def menu():print(' 1. 新增学生')print(' 2. 显示学生')print(' 3. 查找学生')print(' 4. 删除学生')print(' 0. 退出程序')choice = input(' 请输入你的选择:')return choicedef insert():print('[新增学生] 开始!')studentId = input('请输入学生的学号:')name = input('请输入学生的姓名:')gender = input('请输入学生的性别:')if gender not in ('man', 'girl'):print('性别输入的内容不符合要求, 新增失败!')returnclassName = input('请输入学生的班级:')# 使用一个字典把上述的信息给聚合起来.student = {'studentId': studentId,'name': name,'gender': gender,'className': className}global studentsstudents.append(student)# 增加保存操作save()print('[新增学生] 完毕!')def show():#遍历全局变量的这个列表,把每个学生的信息给打印出来print('[显示学生] 开始!')for s in students:print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")print(f'[显示学生] 完毕!,共显示了 {len(students)} 条数据')def find():#根据学生姓名,来查找print('[查找学生] 开始!')name = input("请输入要查找的同学姓名:")count = 0for s in students:if name == s['name']:print(f'{s['student']}\t{s['name']}\t{s['gender']}\t{s['className']}')count += 1print(f'[查找学生] 结束! 共找到了{count}个匹配的同学!')def delete():print('[删除学生] 开始!')studentId = input('请输入要删除的学生学号:')for s in students:if s['studentId'] == studentId:print(f'删除{s['name']}同学的信息!')students.remove(s)save()print('[删除学生] 结束!')def exitprint():print('''  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┃                                   ┃  ┃     你真的要离开学生管理系统吗?       ┃  ┃                                   ┃  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ''')confirm = input("输入 ‘yes’ 确认退出:")if confirm.lower() == 'yes':print('''  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓  ┃                                   ┃  ┃     学生管理系统即将关闭,再见!        ┃  ┃                                   ┃  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛  ''')sys.exit()  # 直接退出程序else:print("继续使用学生管理系统")def main():"""入口函数"""#通过控制台和用户进行交互print('---------------------------------')print('         欢迎来到学生管理系统       ')print('---------------------------------')while True:#通过 menu 函数调用load 即可choice = menu()if choice == '1':#新增学生insert()elif choice == '2':#显示所有学生show()elif choice == '3':#查找学生find()elif choice == '4':#删除学生delete()elif choice == '0':#退出程序result = exitprint()else:print('无效选择,请重试!')if __name__ == "__main__":main()

🚩总结

请添加图片描述

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

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

相关文章

前缀和_560. 和为 K 的子数组

560. 和为 K 的子数组 #include <unordered_map> class Solution { public:int subarraySum(vector<int>& nums, int k) {int nnums.size();unordered_map<int,int> hs;int sum0,re0;hs[0]1;for(int i0;i<n;i){sumnums[i];if(hs.count(sum-k)) rehs[s…

(转载)Tools for Learning LLVM TableGen

前提 最近在学习有关llvm的东西&#xff0c;其中TableGen占了一部分&#xff0c;所以想特意学习下TableGen相关的语法。这里找到了LLVM官网的一篇介绍TableGen的博客&#xff0c;学习并使用机器翻译为中文。在文章的最后也添加了一些学习TableGen的资源。 原文地址&#xff1…

Python酷库之旅-第三方库Pandas(182)

目录 一、用法精讲 841、pandas.api.types.is_complex函数 841-1、语法 841-2、参数 841-3、功能 841-4、返回值 841-5、说明 841-6、用法 841-6-1、数据准备 841-6-2、代码示例 841-6-3、结果输出 842、pandas.api.types.is_float函数 842-1、语法 842-2、参数 …

CSS基础学习篇——选择器

学习文档连接&#xff1a;CSS层叠样式表 1.全局选择器&#xff1a;* * {margin: 0;padding: 0;font-size: 18px; }2.类&#xff08;clss&#xff09;选择器&#xff0c;以 . 开头 .container {display: flex;justify-content: space-around;align-items: center;width: 1200…

Marin说PCB之电源的Surface Current Density知多少?

小编我是一位资深的国漫迷&#xff0c;像什么仙逆&#xff0c;斗破&#xff0c;斗罗&#xff0c;完美世界&#xff0c;遮天&#xff0c;凡人修仙传&#xff0c;少年歌行等&#xff0c;为了可以看这些视频小编我不惜花费了攒了很多年的私房钱去开了这个三个平台的会员啊&#xf…

Oracle视频基础1.3.3练习

1.3.3 检查数据库启动情况 ps -ef | grep oracle启动数据库 sqlplus /nolog conn / as sysdba修改 fast_start_mttr_target 参数为初始值-50&#xff0c;缺省 scope 和 sid&#xff0c;查看修改结果 show parameter fast; alter system set parameter 250; show parameter fa…

CSS flex布局- 最后一个元素占满剩余可用高度转载

效果图 技术要点 height父元素必须有一个设定的高度flex-grow: 1 flex 盒子模型内的该元素将会占据父容器中剩余的空间F12检查最后一行的元素&#xff0c;高度就已经改变了&#xff1b;

基于vue框架的的驾校预约管理系统设计d5tq3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,驾校教练,车辆信息,报名信息,学员信息,考试预约,教学课程,教练评价,考试成绩,练车预约,报修申请,维修信息,课程类型,车辆类型 开题报告内容 基于Vue框架的驾校预约管理系统设计开题报告 一、项目背景与意义 随着驾驶培训行业的快…

shell脚本编写注意细节 ==、=等的区别

文章目录 和的使用主要区别小结 Shell脚本要注意的细节1. 变量引用和空格处理2. [[ ... ]] vs [ ... ]3. 使用-n和-z来检测变量是否为空4. 整数运算和浮点运算5. 避免使用反引号执行命令6. for循环中的命令替换7. 使用trap来清理临时文件8. 避免使用硬编码路径9. 使用-eq、-lt、…

Docker Swarm简介

注意事项 Swarm 模式是用于管理 Docker 守护进程集群的一项高级特性。如果你打算将 Swarm 用作生产运行时环境&#xff0c;那就使用 Swarm 模式。如果你不打算使用 Swarm 进行部署&#xff0c;可改用 Docker Compose。如果正在为 Kubernetes 部署进行开发&#xff0c;可以考虑使…

接口测试及常用接口测试工具(postman/jmeter)详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#…

CVE-2024-51567 CyberPanel upgrademysqlstatus 远程命令执行

该漏洞源于upgrademysqlstatus接口未做身份验证和参数过滤&#xff0c;未授权的攻击者可以通过此接口执行任意命令获取服务器权限&#xff0c;从而造成数据泄露、服务器被接管等严重的后果。 影响版本 CyberPanel v2.3.5CyberPanel v2.3.6 目前官方已有可更新版本&#xff0…

Kaggle “Reducing Commercial Aviation Fatalities” 比赛 生理数据分析

1、背景 Kaggle在2018 年 12 月 20 日举办“Reducing Commercial Aviation Fatalities” 比赛&#xff0c;通过收集飞行员的生理数据&#xff0c;判断飞行员何时会遇到麻烦吗&#xff1f;该比赛主要分析飞行员的问题&#xff0c;因为航班多、时间不固定&#xff0c;飞行员会出…

无套路领取《AI应用开发专栏》

最近有些时间没有更新技术文章了&#xff0c;都在忙着写《AI应用开发入门》专栏&#xff0c;专栏已整理放到了github上&#xff0c;有兴趣的小伙伴可以移步github阅读&#xff0c;地址见文末。 1、为什么写这个文档 之前陆续写了一些零散的AI相关的技术文章&#xff0c;也有不…

Webserver(1.8)操作函数

目录 文件属性操作函数access函数chmod函数chown函数truncate函数 目录操作函数mkdir函数rmdir函数rename函数chdir函数*getcwd函数 目录遍历函数*opendir函数*readdir函数closedir函数 dup、dup2函数dupdup2 fcntl函数 文件属性操作函数 access函数 判断某个文件是否有某个权…

基础IO -- 标准错误输出stderr

目录 1&#xff09;为什么要有 fd 为 2 的 stderr 2&#xff09;使2和1重定向到一个文件中 这里我们谈一下以前只是了解过的stderr 通过两段代码&#xff0c;显然&#xff0c;我们可以知道两个FILE*都是指向显示器的 对于重定向&#xff0c;只有stdout才会将打印的数据重定向…

基于Multisim的四位抢答器设计与仿真

四位选手进行抢答比赛&#xff0c;用基本门电路及集成逻辑器件构成四人抢答器。选手编号分别为1&#xff0c;2&#xff0c;3&#xff0c;4号&#xff0c;用S1&#xff0c;S2&#xff0c;S3&#xff0c;S4四个按钮作为抢答按钮&#xff0c;S0按钮为总清零按钮。当四人中任何一个…

Python毕业设计选题:基于Django+Vue的物资配送管理系统的设计与实现

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录界面 管理员功能界面 申领者管理 后勤处管理 物资信息管理 入库信息管理 …

网安秋招面试

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect 《Web安全》h…

springboot092安康旅游网站的设计与实现(论文+源码)_kaic

毕业设计&#xff08;论文&#xff09; 基于JSP的安康旅游网站的设计与实现 姓  名 学  号 院  系 专  业 指导老师 2021 年 月 教务处制 目 录 目 录 摘 要 Abstract 第一章 绪论 1.1 研究现状 1.2 设…