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

news2024/12/22 19:36:35

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 students
    students = []
    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}')
                continue

            student = {
                '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 choice

def insert():
    print('[新增学生]开始!')
    studentId = int(input('请输入学生学号:'))
    name = input('请输入学生的姓名:')
    gender = input('请输入学生的性别:')

    if gender not in ['男', '女']:
        print('性别输入内容不符合要求')
        return

    className = input('请输入学生班级')

    # 使用 一 个 字典将学生信息给聚合起来
    student = {
        'studentId': studentId,
        'name': name,
        'gender': gender,
        'className': className
    }
    global students
    students.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 = 0

    global students
    for stu in students:
        if stu['name'] == name:
            print(f"{stu['studentId']}\t{stu['name']}\t{stu['gender']}\t{stu['className']}")
            count += 1

    print(f'[查找学生] 完毕, 共匹配到{count}条记录')

def delete():
    print('[删除学生] 开始')
    studentId = input('请输入要删除学生的学号:')

    global students
    for 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.coloradmin.cn/o/1551375.html

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

相关文章

STM32硬件I2C通信外设

文章目录 前言I2C硬件介绍10 位地址模式硬件I2C的引脚定义I2C框图主机发送序列图主机接收序列图 硬件I2C读写MPU6050总结 前言 本文主要介绍stm32自带的I2C通信外设,对比与软件模拟I2C,硬件I2C可以自动生成时序,时序的操作更加及时规范&…

【面试经典150 | 动态规划】三角形最小路径和

文章目录 写在前面Tag题目来源解题思路方法一:动态规划 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行…

7、鸿蒙学习-共享包概述

HarmonyOS提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(Harmony Shared Package)动态共享包。 HAR与HSR都是为了实现代码和资源的共享,都可以包含代码、C库、资源和配置文件&#xf…

UI设计案例,B端后台界面设计教程

B端产品是为“组织”提供服务,以业务为中心,追求时效性,在视觉上,内容为王,视觉为功能让步,追求简洁、清晰、克制、理性的视觉风格。B 端产品业务比较复杂,页面内容也会较多,B端界面…

亲历中国智驾大战,吴新宙加入NVIDIA半年后首秀

‍作者 |张祥威 编辑 |德新 吴新宙近日现身NVIDIA GTC,这是其从小鹏汽车离开加入NVIDIA之后的首次公开亮相。 吴目前担任NVIDIA汽车事业部副总裁,全面负责NVIDIA的车载计算产品线DRIVE平台的产品定义以及工程落地工作。吴新宙最广为人知的经历&#xf…

ES学习日记(三)-------第三方插件选择

前言 在学习和使用Elasticsearch的过程中,必不可少需要通过一些工具查看es的运行状态以及数据。如果都是通过rest请求,未免太过麻烦,而且也不够人性化。 目前我了解的比较主流的插件就三个,head,cerebor和elasticHD 1.head 老牌插件,功能…

聊聊低代码产品的应用场景

随着数字化转型的不断深入,企业对于快速开发和迭代软件应用的需求也越来越迫切。而在这样的背景下,低代码产品应运而生,成为了一种热门的技术解决方案。本文将解读低代码产品的定义并探讨其应用场景。 一、低代码产品的定义 低代码产品是一种…

白帽工具箱:在windows上安装部署渗透测试演练系统DVWA

🌟🌌 欢迎来到知识与创意的殿堂 — 远见阁小民的世界!🚀 🌟🧭 在这里,我们一起探索技术的奥秘,一起在知识的海洋中遨游。 🌟🧭 在这里,每个错误都…

Element

1、Element 基本使用 1.1、Element介绍 Element:网站快速成型工具。是饿了么公司前端开发团队提供的一套基于Vue的网站组件库。 使用Element前提必须要有Vue。 组件:组成网页的部件,例如超链接、按钮、图片、表格等等~ Element官网&#…

Java的IDEA的工程管理

模块和包的图标: 举个例子: IDEA中创建包: 如图所示,com.LBJ的意思是在com包中创建子包LBJ 参见: IDEA中项目、模块和包的关系_idea中模块和项目-CSDN博客

北斗短报文+4G应急广播系统:实时监控 自动预警 保护校园安全的新力量

安全无小事,生命重如山。学生是祖国的未来,校园安全是全社会安全工作的一个重要的组成部分。它直接关系到青少年学生能否安健康地成长,关系到千千万万个家庭的幸福安宁和社会稳定。 灾害事故和突发事件频频发生,给学生、教职员工…

C语言中常用的文件操作

本文将介绍常用的关于文件操作函数,如fopen,fclose,fread,fwrite,feek,ftell,rewind以及feof和ferror等文件操作操作函数,还介绍一些用于所有输入输出流的函数如fgetc,fputc,fgets,fputs,fprintf,fscanf等函数,还介绍了sscanf,sprintf函数,fe…

解决VMWare Esxi 6.5.0 导出虚拟机时发生网络错误

解决办法:使用vmware ovftool工具导出。 1 先安装该工具到windows下面,有32位的和64位的 2 用管理员进入命令方式: 进入:c:\windows 进入工具命令当前文件夹(具体看用户的安装路径): cd \p…

【深度解读】出海社交软件云安全战略:关键技术与实践路径

随着中国社交软件企业扬帆出海,面对全球市场的机遇与挑战,确保云环境下的信息安全与合规成为了企业能否成功立足的关键要素。尤其在社交领域,用户数据隐私保护、严格遵守各国法律法规以及防范高级网络攻击的压力日益增大。以下将从技术架构、…

vue3封装Element动态表单组件

1. 封装组件DymanicForm.vue 使用component实现动态组件组件不能直接使用字符串传入,所以根据传入的组件名称找到对应的组件校验规则,可使用rule传入自定义规则,也可以使用封装好的基本规则 示例中使用了checkRequired暴露重置方法和校验方法…

git配置密钥

要配置 Git 密钥,可以按照以下步骤进行操作: 1.生成密钥:首先,在终端或命令提示符中运行以下命令生成密钥对: ssh-keygen -t rsa -b 4096 -C "dengweng-pulse.net"这将生成一个 RSA 密钥对,其中…

面试题:Java虚拟机JVM的组成

1. 基础概念 JVM是什么 Java Virtual Machine Java程序的运行环境(java二进制字节码的运行环境) 好处: 一次编写,到处运行 自动内存管理,垃圾回收机制 JVM由哪些部分组成,运行流程是什么? …

vue.js——学习计划表

1&#xff09;准备工作 ①打开D:\vue\chapter02\ learning_schedule 目录&#xff0c;找到 index.html 文件。 在文件中引 入BootStrap 样式文件&#xff0c;具体代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

tensorflow安装GPU版报错cublasLt64_11.dll缺失

我的报错是&#xff1a; Use tf.config.list_physical_devices(GPU) instead. 2024-03-28 17:01:46.724677: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the follo…

蓝桥杯嵌入式学习笔记(6):IIC程序设计

目录 前言 1. IIC基本原理 2. 电路原理 3. 代码编程 3.1 预备工作 3.2 AT24C02写读功能编写 3.2.1 AT24C02写操作实现 3.2.2 AT24C02读操作实现 3.3 MCP4017写读功能编写 3.3.1 MCP4017写操作实现 3.3.2 MCP4017读操作实现 3.4 main.c编写 3.4.1 头文件引用 3.4.…