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

news2024/9/22 10:02:02

学完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)
            break
    else:
        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('您要修改的学生信息修改成功')
            break
    else:
        print('您要修改的学生信息未找到')


# 查询学生的信息功能函数
def find_studet():
    name = input('请输入要查询学生的姓名:')
    for i in students:
        if i['name'] == name:
            print(i)
            break
    else:
        print('很抱歉,没有该学生的信息')


# 遍历所有学生的信息的功能函数
def find_all_student():
    for i in students:
        print(i)


# 保存students数据到data.txt文件功能的函数
def save_data_to_file():
    global students
    f = 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('退出系统成功')
        break

    else:
        print('输入不合法,请重新输入')
运行结果

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

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

相关文章

专家院士共同参编的《数字空间共同体白皮书》正式启动

数字产业化、产业数字化,促进数字技术和实体经济深度融合,成为数字经济高质量发展的重要路径。数字空间与物理空间双向融合,用数字技术提升企业有限资源的有效配置,构建经济双空间增长模式,是形成企业新质生产力的关键…

JVM基本概念、命令、参数、GC日志总结

原文: 赵侠客 一、前言 NPE(NullPointerException)和OOM(OutofMemoryError)在JAVA程序员中扮演着重要的角色,它也是很多人始终摆脱不掉的梦魇,与NPE不同的是OOM一旦在生产环境中出现就意味着只靠代码已经无…

鸿蒙App语法/结构/注意

注意 默认情况下,应用只能访问有限的系统资源。其他资源权限处理https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/accesstoken-overview-0000001544703857-V3 .1、权限申请使用流程 https://developer.harmonyos.com/cn/docs/documentatio…

【REST2SQL】12 REST2SQL增加Token生成和验证

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…

poetry库:依赖管理和打包工具

这个工具是在群里看见别人说好用的,所以了解一下。 1.poetry初始 官网:https://python-poetry.org/ 项目仓库:https://github.com/python-poetry 或 https://github.com/python-poetry/poetry 教程:https://python-poetry.org/…

Day01-项目介绍及初始化-登录页面(test)

1.人力资源项目介绍 1.1 项目架构和解决方案 1.2 课程安排 1.3 课程具备能力 1.4 课程地址 vue-element-admin文档地址:链接演示地址: 链接人力资源项目演示地址: 链接 2. 拉取项目基础代码 拉取命令 $ git clone https://github.com/P…

河北专升本(C语言编程题)

一:基础算法原理 1. 冒泡排序 原理:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。 以从小到大排序为例,第一轮比较后,所有数中最大的…

【设计】基于web的会员管理系统

1、引言 设计结课作业,课程设计无处下手,网页要求的总数量太多?没有合适的模板?数据库,java,python,vue,html作业复杂工程量过大?毕设毫无头绪等等一系列问题。你想要解决的问题&am…

云计算项目九:K8S安装

K8S安装 Kube-master安装 按照如下配置准备云主机 防火墙相关配置:禁用selinux,禁用swap,且在firewalld-*。上传kubernetes.zip 到跳板机 配置yum仓库(跳板机) 跳板机主机配置k8s软件源服务端 [rootjs ~]# yum -y…

仿射变换下的点位纠偏

点位偏差一直是一个很头疼的问题,但是由于摄像头和实际环境的局限性,我们不得不面对这个问题。对此,使用判别的方式进行一个仿射变换,是一种非常有效的方式,下图中图1是基准图,图2是目标图,图3是…

使用CSS制作动态的环形图/饼图

使用纯 CSS Animation conic-gradient 实现一个环形图。 饼图的实现思路和环形图一样&#xff0c;去掉中间的圆形遮盖 after 伪类元素即可。 一、构建基础样式 构建圆形节点和中间的遮盖元素。 <style>body {background-color: rgb(130, 226, 255);}.circle {top: 16…

GIS之深度学习08:安装GPU环境下的pytorch

环境&#xff1a; cuda&#xff1a;12.1.1 cudnn&#xff1a;12.x pytorch&#xff1a;2.2.0 torchvision&#xff1a;0.17.0 Python&#xff1a;3.8 操作系统&#xff1a;win &#xff08;本文安装一半才发现pytorch与cuda未对应&#xff0c;重新安装了cuda后才开始的&a…

时间服务器

目录 软件介绍 软件安装 准备工作 设置当前时区 修改chronyd配置文件 设置允许哪个客户端可以访问该服务器 设置本地服务器时间为第10层级 时钟层&#xff1a; 实例:配置时间服务器客户端服务端 Serves Client 配置环境&#xff1a; systemctl命令 lsof 命令 语法 选项 lsof输…

JL15-80/11电流继电器 过电流瞬时动作 电磁式结构 80A 一开一闭

JL15电流继电器 系列型号 JL15-1.5/11电流继电器JL15-2.5/11电流继电器 JL15-5/11电流继电器JL15-10/11电流继电器 JL15-15/11电流继电器JL15-20/11电流继电器 JL15-30/11电流继电器JL15-40/11电流继电器 JL15-60/11电流继电器JL15-80/11电流继电器 JL15-100/11电流继电器JL15…

mac本地启动sentinel

启动Sentinel控制台 1&#xff09;下载sentinel控制台jar包 https://github.com/alibaba/Sentinel/releases/download/1.8.6/sentinel-dashboard-1.8.6.jar 2&#xff09;启动sentinel控制台 使用如下命令启动控制台&#xff1a; java -Dserver.port8080 -Dcsp.sentinel.d…

[清爽快捷] Ubuntu上多个版本的cuda切换

做到真正的一行代码搞定&#xff0c;只需要修改对应软链接&#xff0c;就可以轻松实现快捷切换cuda 查看已安装的cuda版本有哪些 一般如果我们都是使用默认位置安装cuda的话&#xff0c;那么其安装路径都是/usr/local。如果要查看该目录下已经安装有哪些版本的cuda&#xff0c…

腾讯面经学习笔记

&#x1f496; 前言 &#x1f469;‍&#x1f3eb; 参考地址 &#x1f496; 操作系统 1. 进程和线程的区别 本质区别 进程是操作系统资源分配的基本单位线程是任务调度和执行的基本单位 开销方面 每个进程都有独立的代码和数据空间&#xff08;程序上下文&#xff09;&#…

git使用教程14-Pycharm版本控制与分支管理

一、版本控制 1、版本控制介绍 &#xff08;1&#xff09;Version Control System 版本控制系统&#xff0c;简称VCS。 &#xff08;2&#xff09;版本控制系统分类&#xff1a; 集中式版本控制工具&#xff1a;SVN 分布式版本控制工具&#xff1a;Git 2、Pycharm 支持的版本…

二分应用的小坑———折半查找

啊!啊!啊!啊!啊!!! 太久没有写代码了 虽热很久没有写代码和博客了&#xff0c;但是功底还是在的 今天打算写一点数据结构的排序部分一点一点落实下来&#xff0c;但是 写着写着卡壳了&#xff0c;以下是没有debug的代码 #include <iostream> #include<bits/stdc.h&g…

PyTorch2.0 环境搭建详细步骤(Nvidia显卡)

Step 1 、查看显卡驱动版本 Step2、下载CUDA 11.7 或者11.8&#xff08;我自己用的这个&#xff09;也行,稍后我会贴出来版本匹配对应表 https://developer.nvidia.com/cuda-toolkit-archive Step3、下载CUDNN cuDNN 9.0.0 Downloads | NVIDIA Developer Step4、安装anconda&…