Python基础09-学生管理系统

零、文章目录

Python基础09-学生管理系统

1、学员管理系统功能概述

(1)最终效果图

image-20231121095831880

(2)功能概述
  • 需求:进入系统显示系统功能界面,功能如下:
    • 【1】添加学员信息->add_student
    • 【2】删除学员信息->del_student
    • 【3】修改学员信息
    • 【4】查询学员信息
    • 【5】遍历所有学员信息
    • 【6】保存数据到文件
    • 【7】退出系统
  • 系统共7个功能,用户根据自己需求选取
(3)模块化的编程思想(面向过程)
  • 模块化的编程思想是最早期的编程思想,其强调把一个系统分解为若干个功能(步骤),每个功能就是一个模块(函数)。当所有功能开发完毕后,功能整合,则系统就完成了。

2、学员管理系统步骤分析

  • 显示功能界面
  • 用户输入功能序号 => input()
  • 根据用户输入的功能序号,执行不同的功能(函数)
    • 定义函数
    • 调用函数

3、学员管理系统代码实现

(1)显示功能界面
  • 定义函数menu,负责显示系统功能。
def menu():
    print('-' * 40)
    print('欢迎使用学生管理系统V1.0')
    print('【1】添加学员信息')
    print('【2】删除学员信息')
    print('【3】修改学员信息')
    print('【4】查询学员信息')
    print('【5】遍历所有学员信息')
    print('【6】保存数据到文件')
    print('【7】退出系统')
    print('-' * 40)
(2)输入序号,执行不同的功能
  • 使用input获取用户输入序号:
user_num = int(input('请输入您要执行的功能编号:'))
  • 循环输出功能菜单,直至用户手工退出
  • 使用if判断用户要实现的功能
  • 如果用户输入1-7以外的数字,需要提示用户。
# 1、定义一个死循环结构,让代码一直执行下去,直到用户手工退出
while True:
    menu()
    # 3、提示用户输入要执行的功能编号
    user_num = int(input('请输入您要执行的功能编号:'))
    # 4、使用if多分支结构进行条件判断
    if user_num == 1:
        add_student()
    elif user_num == 2:
        del_student()
    elif user_num == 3:
        edit_student()
    elif user_num == 4:
        find_student()
    elif user_num == 5:
        show_students()
    elif user_num == 6:
        save_data_to_file()
    elif user_num == 7:
        print('退出系统成功,感谢您使用学生管理系统V1.0!')
        break
    else:
        print('很抱歉,您的输入有误,请重新输入!')
(4)定义全局列表,保存学员信息
  • 所有功能函数都是操作学员信息,所有存储所有学员信息应该是一个全局变量,数据类型为列表。
# 5、定义一个大列表,将来用于保存所有同学的信息 []
students = []  # 将来数据结构[{}, {}, {}]
  • 后续表结构如下
students = [{'name':'黄道明', 'age':23, 'mobile':'10086'}, {'name':'家浩', 'age':24, 'mobile':'10010'}]
  • 程序初始化的时候,加载文件中的信息
def load_data():
    # 打开文件
    f = open('students.txt', 'r', encoding='utf-8')
    # 读取数据
    content = f.read()  # str字符串类型
    # 判断文件内容是否为空
    if not content:
        return  # 终止此函数,不需要在继续加载了
    else:
        # 如果代码继续向下执行,代表content不为空,则进行类型转换
        global students  # 声明我们接下来要使用的students是全局变量
        students = eval(content)


# 12、加载students.txt中的数据到students列表中
load_data()
(5)封装函数实现功能
# 6、封装一个add_student()方法,用于实现向students中添加学员
def add_student():
    # 提示用户输入要添加的学员信息
    student = {}
    # 字典[键] = 值 => {name:xxx, age:23, mobile:10086}
    student['name'] = input('请输入要添加学员的姓名:')
    student['age'] = int(input('请输入要添加学员的年龄:'))
    student['mobile'] = input('请输入要添加学员的电话:')
    # 把这个字典追加到全局的students列表中
    students.append(student)  # [{}, {}, {}]
    print('恭喜您,学员信息已录入成功!')
    print(students)

# 7、封装一个del_student()方法,用于实现从students列表中删除同学信息
# ① 提示用户输入要删除同学的名字 ② 然后在students列表中,进行循环遍历,找是否有删除的同学,找到了就删除,找不到弹出提示没有这个同学信息
def del_student():
    name = input('请输入要删除同学的姓名:')
    for i in students:  # 从students列表中取出每一个字典,然后放入变量i中
        if i['name'] == name:  # 相等就代表找到了这个同学
            # 把这个字典从列表中整体删除
            students.remove(i)
            print('恭喜您,学员信息已成功删除!')
            print(students)
            break
    else:
        print('很抱歉,您要删除的同学信息暂不存在!')

# 8、封装一个edit_student()方法,用于实现编辑students中的同学信息
def edit_student():
    # 提示用户输入要修改学员的姓名
    name = input('请输入您要修改学员的姓名:')
    # 对整个列表students进行遍历
    for i in students:
        if i['name'] == name:
            i['name'] = input('请输入修改后的同学姓名:')
            i['age'] = int(input('请输入修改后的同学年龄:'))
            i['mobile'] = input('请输入修改后的同学电话:')
            print('恭喜您,学员信息已更新成功!')
            print(students)
            break
    else:
        print('很抱歉,您要修改的同学信息暂不存在!')

# 9、定义一个find_student()函数,用于查找同学的信息
def find_student():
    # 提示用户输入要查找的同学名称
    name = input('请输入您要查找的同学姓名:')
    for i in students:
        if i['name'] == name:
            print(i)
            break
    else:
        print('很抱歉,您要查找的同学信息暂不存在!')

# 10、定义一个show_students()函数,用于显示所有学员信息
def show_students():
    for i in students:
        print(i)

# 11、定义一个save_data_to_file()函数,用于保存数据到文件
def save_data_to_file():
    # ① 打开文件
    f = open('students.txt', 'w', encoding='utf-8')
    # ② 读写文件
    f.write(str(students))  # 只能把字符串写入到文件 => [{}, {}, {}] => '[{}, {}, {}]'
    # ③ 关闭文件
    f.close()
    print('恭喜您,信息已成功保存!')

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python基础01-环境搭建与输入输出

零、文章目录 Python基础01-环境搭建与输入输出 1、Python概述 (1)为什么要学习Python 技术趋势:Python自带明星属性,热度稳居编程语言界前三 简单易学:开发代码少,精确表达需求逻辑;33个关…

SDN之Python编程创建多数据中心网络

文章目录 1.拓扑结构2.具体步骤 1.拓扑结构 通过python编程创建一个包含2台核心交换机、4台汇聚交换机、8台边缘交换机和16台主机的网络拓扑,如图示: 2.具体步骤 首先ctrlaltT(或右键)打开终端,在/home/shy/minine…

关于学习计算机的心得与体会

也是隔了一周没有发文了,最近一直在准备期末考试,后来想了很久,学了这么久的计算机,这当中有些收获和失去想和各位正在和我一样在学习计算机的路上的老铁分享一下,希望可以作为你们碰到困难时的良药。先叠个甲&#xf…

Ansys Lumerical | 采用一维光栅的出瞳扩展器的优化

附件下载 联系工作人员获取附件 本文演示了一种仿真方法,并举例说明了使用一维光栅的出瞳扩张器(EPE)系统的优化示例。 在此工作流程中,我们使用 Lumerical 构建光栅模型,并使用 RCWA 求解器模拟其响应。完整的EPE系…

云演CTF Blog

1、啥也搞不了,扫目录。出来个console 2、有显示锁掉了 3、抓包,改返回包 改成true,放包 不好意思,不会了,哈哈哈哈哈哈哈哈哈 你会的话,请告诉我,大佬

MyBatis问题记录

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 原因:标注了MapperScan 在 Spring Boot 中,MapperScan 注解用于扫描 MyBatis Mapper 接口的包路径,并将其注册为 Spring Bean。在一些简单的情况下&…

基于SSM的图书馆预约座位系统的设计与实现(部署+源码+LW)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SSM的图书馆预约座位…

【AI】YOLO学习笔记

作为经典的图像识别网络模型,学习YOLO的过程也是了解图像识别的发展过程,对于初学者来说,也可以了解所采用算法的来龙去脉,构建解决问题的思路。 1.YOLO V1 论文地址:https://arxiv.org/abs/1506.02640 YOLO&#x…

Spring框架知识总结

目录 1、Spring框架有哪些设计模式? 2、介绍一下Spring框架和SpringBoot框架? 3、介绍一下SpringBoot具有哪些功能模块? 4、Spring用到了什么组件? 5、什么是IoC? 什么是AOP? 6、SpringBoot运行原理&#xff1…

YOLOv8-Seg改进:轻量化卷积设计 | DualConv双卷积魔改v8结构

🚀🚀🚀本文改进: DualConv双卷积魔改v8结构,达到轻量化的同时并能够实现小幅涨点 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg; 2)模型创新,提升分割性能…

性能提升100%、存储节约50%!猕猴桃游戏搭载OceanBase开启云端手游新篇章

近日,武汉灵动在线科技有限公司(以下简称“灵动在线”)与 OceanBase 达成合作,旗下品牌猕猴桃游戏的“游戏用户中心(微信小程序)”和“BI 分析报表业务系统“两大关键业务系统全面接入 OB Cloud 云数据库&a…

1128:图像模糊处理(C语言)

一:题目 二:思路分析 1:输入图像 2.根据题目描述1,得出图像四周的数是不变的,即i 1,in,j1,jm时,图像所表示的数值不变 3根据题目描述2可得,中间的值为四周及…

如何装好Home Assistant,四种方式安装HA OS测试

环境: 1.haos_generic-x86-64-11.1.img 2.Balena Etcher 1.18.11 3.haos_ova-11.1.qcow2 4.Ubuntu20.04 5.KVM 6.Docker version 24.0.5 7.HA OS11.2 8.联想E14笔记本 问题描述: 如何装好Home Assistant,四种方式安装HA OS测试 解决…

黑色翻页时钟HTML源码-倒计时单页翻页时钟

黑色翻页时钟HTML源码-倒计时单页翻页时钟这是一个类似fliqlo的黑色翻页时钟HTML源码,它仅包含一个HTML文件,上传到网站后即可使用。该时钟具有查看当前时间、秒表和倒计时功能,并且可以在页面的右下角进行设置。 红色动态炫酷数字时钟html网…

自动化测试如何管理测试数据

在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。 随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高,…

(2)Linux 操作系统||基本创建与操作

本章将浅谈一下 "操作系统是什么" 的问题,随后通过讲解一些 Linux 下的基本指令,显示目录内容、跳转操作和文件的创建与删除。在讲解的同时我会穿插一些知识点,比如 Linux 隐藏文件、路径等基础知识。 了解操作系统 什么是操作系统…

【腾讯云云上实验室】用向量数据库融合AI技术:构建下一代智能客服平台

文章目录 前言为什么说用好大模型离不开向量数据库呢?AI训练中的向量维度快速检索非结构化数据的利器 --- 向量数据库AI的海马体--腾讯云向量数据库 一、腾讯云向量数据库介绍重磅组合,行业领先智能化能力产品亮点 二、AI技术在智能客服中的作用AI技术在智能客服平…

【Docker】5. Dockerfile 构建和管理容器化应用程序

▒ 目录 ▒ 🛫 导读开发环境 1️⃣ Dockerfile介绍 基本语法 指令 2️⃣ 实战:Python 的 Flask Web 代码 编译运行 发布到服务器 🛬 文章小结📖 参考资料 🛫 导读 开发环境 版本号描述文章日期2023-12-15操作系统…

在vue3的js中将一组数据赋值的问题

代码: if (res.data) { myPrizeList.value res.data console.log(myPrizeList.value,myPrizeList.value) const giftList ref() console.log(JSON.parse(JSON.stringify(myPrizeList.val…

如何预防最新的.locked、.locked1勒索病毒感染您的计算机?

尊敬的读者: 近期,网络安全领域迎来一股新潮——.locked、.locked1勒索病毒的威胁,其先进的加密技术令人生畏。本文将深入剖析.locked、.locked1勒索病毒的阴谋,提供特色数据恢复策略,并揭示锁定恶劣行径的先锋预防手…