【Python 基础篇】Python学生管理系统

news2024/9/21 3:04:06

文章目录

    • 引言
    • 一、系统设计与功能分析
    • 二、系统设计与实现
    • 三、系统应用示例
    • 四、总结

引言

学生管理系统是一个常见的应用程序,它可以帮助学校、教育机构或教师管理学生的信息。本文将介绍如何使用面向对象编程思想,利用Python开发一个学生管理系统。系统具备添加学生、删除学生、修改学生信息、查询学生信息、显示所有学生信息、保存学生信息及退出系统等功能,学生数据存储在文件中。通过本文的学生管理系统示例,你将了解如何使用面向对象编程来构建实用的应用程序。

一、系统设计与功能分析

学生管理系统需要实现以下功能:

  1. 添加学生:向系统中添加新的学生信息,包括学号、姓名、年龄、性别等。

  2. 删除学生:从系统中删除指定学号的学生信息。

  3. 修改学生信息:根据学号,修改学生的姓名、年龄、性别等信息。

  4. 查询学生信息:根据学号或姓名查询学生的详细信息。

  5. 显示所有学生信息:展示系统中所有学生的信息。

  6. 保存学生信息:将学生信息保存到文件中,以便下次程序启动时加载数据。

  7. 退出系统:退出学生管理系统。

二、系统设计与实现

在Python中,可以使用类来表示学生对象,每个学生对象包含学号、姓名、年龄、性别等属性。下面是一个简单的示例代码:

class Student:
    def __init__(self, student_id, name, age, gender):
        self.student_id = student_id
        self.name = name
        self.age = age
        self.gender = gender

    def display_info(self):
        print(f"学号:{self.student_id}")
        print(f"姓名:{self.name}")
        print(f"年龄:{self.age}")
        print(f"性别:{self.gender}")


class StudentManagementSystem:
    def __init__(self):
        self.students = []

    def add_student(self, student):
        self.students.append(student)

    def remove_student(self, student_id):
        for student in self.students:
            if student.student_id == student_id:
                self.students.remove(student)
                print("删除成功!")
                return
        print("未找到学号对应的学生!")

    def modify_student_info(self, student_id, name, age, gender):
        for student in self.students:
            if student.student_id == student_id:
                student.name = name
                student.age = age
                student.gender = gender
                print("修改成功!")
                return
        print("未找到学号对应的学生!")

    def search_student_info(self, keyword):
        for student in self.students:
            if keyword in (student.student_id, student.name):
                student.display_info()

    def display_all_students(self):
        if len(self.students) == 0:
            print("系统中暂无学生信息!")
        else:
            for student in self.students:
                student.display_info()

    def save_students_info(self, filename):
        with open(filename, "w") as file:
            for student in self.students:
                file.write(f"{student.student_id},{student.name},{student.age},{student.gender}\n")
        print("学生信息保存成功!")

    def load_students_info(self, filename):
        self.students = []
        try:
            with open(filename, "r") as file:
                lines = file.readlines()
                for line in lines:
                    student_data = line.strip().split(",")
                    student = Student(student_data[0], student_data[1], int(student_data[2]), student_data[3])
                    self.students.append(student)
            print("学生信息加载成功!")
        except FileNotFoundError:
            print("找不到指定的学生信息文件!")

三、系统应用示例

下面是一个简单的示例代码,演示了如何使用学生管理系统:

system = StudentManagementSystem()

# 加载学生信息
system.load_students_info("students.txt")

while True:
    print("===== 学生管理系统 =====")
    print("1. 添加学生")
    print("2. 删除学生")
    print("3. 修改学生信息")
    print("4. 查询学生信息")
    print("5. 显示所有学生信息")
    print("6. 保存学生信息")
    print("7. 退出系统")
    choice = input("请输入操作编号:")

    if choice == "1":
        student_id = input("请输入学号:")
        name = input("请输入姓名:")
        age = int(input("请输入年龄:"))
        gender = input("请输入性别:")
        student = Student(student_id, name, age, gender)
        system.add_student(student)
        print("添加成功!")

    elif choice == "2":
        student_id = input("请输入要删除的学号:")
        system.remove_student(student_id)

    elif choice == "3":
        student_id = input("请输入要修改的学号:")
        name = input("请输入姓名:")
        age = int(input("请输入年龄:"))
        gender = input("请输入性别:")
        system.modify_student_info(student_id, name, age, gender)

    elif choice == "4":
        keyword = input("请输入要查询的学号或姓名关键字:")
        system.search_student_info(keyword)

    elif choice == "5":
        system.display_all_students()

    elif choice == "6":
        system.save_students_info("students.txt")

    elif choice == "7":
        break

    else:
        print("无效的操作编号,请重新输入!")

print("感谢使用学生管理系统,再见!")

在这里插入图片描述

在这里插入图片描述

四、总结

通过面向对象编程思想,我们成功开发了一个学生管理系统。该系统具备添加、删除、修改、查询和显示学生信息的功能,并支持学生信息的持久化保存。通过适当的类设计和方法定义,我们可以有效地组织和操作学生对象,实现学生信息的管理与操作。这个示例项目可以作为一个基础框架,根据实际需求进行扩展和优化,构建更完善的学生管理系统。通过这个实例,你可以学习到如何使用面向对象编程思想来解决实际问题,并在开发过程中体验到面向对象的优势。祝你在学习和实践中取得进步!

在这里插入图片描述

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

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

相关文章

源码编译 DolphinScheduler 1.3.9 海豚调度,修改Hadoop、Hive组件版本兼容

大前提&#xff1a; maven3 jdk8 环境 maven 私服换成国内镜像&#xff0c;推荐阿里云 maven 镜像 maven-3.6.3\conf\settings.xml <mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name&g…

Android 13(T) - binder阅读(1)- binder driver

1 总览 想要使用binder完成进程间通信&#xff08;IPC&#xff09;或者完成远程过程调用&#xff08;RPC&#xff09;&#xff0c;那么我们需要有如下三个要素&#xff1a; 源&#xff1a;即调用者&#xff08;Client&#xff09;目的&#xff1a;即服务提供者&#xff08;Se…

win10 64位系统下载、安装nodejs(图文教程)

windows电脑下载、安装nodejs是很容易的&#xff0c;参考下面的图文教程&#xff0c;很快就能搞定下载安装. 1&#xff0c;下载nodejs 下载地址&#xff1a;https://nodejs.org/en/download/ 2&#xff0c;安装nodejs 点击安装包&#xff0c;一路下一步 3&#xff0c;验证…

设计模式—责任链模式

一、待解决问题&#xff1a; 减少代码中 if else 语句&#xff0c;降低代码圈复杂度或深度&#xff0c;增强可读性。 1、需求背景&#xff1a; 采购订单创建&#xff0c;需要验证采购员、物料、供应商、供应商的银行账号等信息。如采购员权限到期、或供应商失效等问题&#xff…

python机器学习——机器学习相关概念 特征工程

目录 机器学习特征工程1.特征抽取2.特征处理2.1 归一化&#xff1a;传统精确小数据2.2 标准化&#xff1a;大多数情况 3.数据降维3.1特征选择3.2主成分分析PCA 案例&#xff1a;超市订单分析 机器学习 监督学习&#xff1a;输入数据有特征有标签&#xff0c;即有标准答案 分类&…

chatgpt赋能python:Python求累加求和指南

Python求累加求和指南 Python是一种简单而强大的编程语言&#xff0c;从事编程工作的人大多都对它有一定的了解。它具有开发复杂应用程序的强大功能&#xff0c;同时也可以被用作数据处理和分析等用途。其中一个最常见的任务就是累加求和&#xff0c;今天我们将介绍如何在Pyth…

Redis 集合相关命令

Redis 支持多种数据结构&#xff0c;比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 集合 相关的命令&#xff0c;也就是关于 Sets 相关的命令&#xff0c;如下图。 上图中用红色圈中的部分&#xff0c;就是关于 集合 相关的命令。如果想要在 Redis …

JDBC小记——基础入门

目录 JDBC概念 JDBC入门 1. 导入数据库的驱动jar包 2. 加载驱动jar包 3. 获取连接对象 4. 获取操作对象 5.执行SQL语句 6.释放资源 IDEA连接数据库 结果集对象 登录练习 JDBC概念 Java DataBase Connectivity 即 Java数据库连接 JDBC&#xff0c;其实就是Java定义…

第7章 Scala集合

第7章 Scala集合 7.1 简介 ​ ​ scala.collection.immutable ​ scala.collection.mutable ​ 7.2 数组 ​ 不可变数组 package chapter07object Test01_ImmutableArray {def main(args: Array[String]): Unit {// 1. 创建数组val arr: Array[Int] new Array[Int](10…

【AUTOSAR】AUTOSAR开发工具链(二)----TASKING库的封装

1、集成工程 步骤&#xff1a; 拷贝模块代码&#xff1a; 将源工程的所有模块代码拷贝到库工程&#xff0c;将源工程拷贝一份&#xff0c;并删除不必要的文件作为释放工程&#xff0c;完成结果如下图&#xff1a; 源工程&#xff08;左&#xff09;VS库工程&#xff08;中&am…

[CUDA][Ubuntu]如何卸载cuda和cudnn和nvidia driver

百度有很多牛鬼蛇神的办法&#xff0c;试了一晚上&#xff0c;都不行。 包括&#xff1a;通过安装方式卸载&#xff0c;我tm根本不知道当初这个机器是怎么安装的cuda&#xff0c;我怎么卸载&#xff1f;&#xff1f;&#xff1f; 通过删除文件夹和自带uninstall程序&#xff…

安卓蓝牙协议数据包格式

本文解析蓝牙传输的数据包格式&#xff0c;目的是对蓝牙的各个层次的协议有更深的理解。 bit数据流格式 在讲数据报文之前&#xff0c;必须了解协议中对数据的BIT排序的规定&#xff0c;在协议中规定数据包或者PDU都是以Little Endian format(小端模式)存放&#xff0c;也就是…

数据库信息速递 - 将可观测性带到现代数据堆栈 (译)

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

Layui基础入门

一、引言 1.1 介绍 官网&#xff1a;<https://www.layui.com/ > 这个不维护了 看下面这个 https://www.layuiweb.com/ 在官网首页&#xff0c;可以很方便的下载LayUI LayUI 是一款经典模块化前端 UI 框架&#xff0c;我们只需要定义简单的HTML、CSS、JS即可实现很复杂的前…

小鲜肉语录

马上端午放假了&#xff0c;今天不聊技术&#xff0c;聊点轻松的。 一、 和老公、小鲜肉周末出去玩&#xff0c;路上闲聊。老公提到小鲜肉在他们班成绩大概是第四名。 我说&#xff1a;我小学五年级的时候我们我们班60个人我排第四。你们班不到30个人。这么算你成绩不如我小时候…

Qt编写跨平台的推流工具(支持win/linux/mac/嵌入式linux/安卓等)

一、前言 跨平台的推流工具当属OBS最牛逼&#xff0c;功能也是最强大的&#xff0c;唯一的遗憾就是多路推流需要用到插件&#xff0c;而且CPU占用比较高&#xff0c;默认OBS的规则是将对应画布中的视频画面和设定的音频一起重新编码再推流&#xff0c;意味着肯定占用不少CPU资…

【解决】笔记本电脑wifi无法访问网站的各种情况

本文适用于 mac 以及 windows 等操作系统 场景 手机可以连接wifi&#xff0c;电脑连接却无法访问左下角wifi图标为小地球可以使用app&#xff0c;无法访问网站其他 方式一 Win10任务栏中的网络变成小地球&#xff0c;无WIFI列表显示&#xff0c;应该&#xff1a; winR , 输入…

MATLAB计算程序运行所需的时间

在使用MATLAB进行计算时&#xff0c;用户有时需要了解程序运行所花费的四件&#xff0c;以此来评价程序的执行效率&#xff0c;从而对代码进行优化 可以使用3种方法来得到程序运行所需要的时间 1.使用tic和toc命令 将tic和toc命令相结合来得到程序的运行时间 ①tic命令&…

SAP CAP篇六:为CAP添加Fiori Elements程序(3)

本文目录 本系列之前的文章本篇之前的运行效果修改pom.xml添加新的Dependency更新plugin 添加新的Controller创建index目录添加UiIndexContentProviderFactory.java 添加resources运行结果更新UiIndexContentProviderFactory 代码库 (Gitcode) 本系列之前的文章 本系列之前的文…

文学创作的数学原理——5年文学阅读的思考

作者 | gongyouliu 编辑 | gongyouliu 我从2019年初开始阅读文学作品&#xff0c;到今年差不多5年了&#xff0c;至少也阅读了50本以上的世界名著了&#xff08;如果算「得到」听书上的文学作品&#xff0c;那么至少也有200本以上了&#xff09;&#xff0c;这里面绝大多数都是…