Python实现一个完整学生管理系统

Python实现一个完整学生管理系统

本篇攻略将从以下三个方面分别进行讲解:

  1. 学生管理系统的功能需求
  2. 学生管理系统的设计思路以及实现细节
  3. 学生管理系统代码示例

学生管理系统的功能需求

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

  1. 添加学生信息
  2. 删除学生信息
  3. 修改学生信息
  4. 查询学生信息

其中,学生信息需要至少包含以下内容:

  1. 学号
  2. 姓名
  3. 年龄
  4. 性别
  5. 成绩

学生管理系统的设计思路以及实现细节

数据存储

数据存储是学生管理系统中非常重要的一环,数据存储方式的选择直接影响到系统的性能以及可维护性。

以下是主流的数据存储方式:

  1. 文本文件
  2. 关系型数据库
  3. 非关系型数据库

在本篇攻略中,我们使用文本文件的方式进行数据存储。

系统设计

根据学生管理系统的功能需求,我们可以将学生信息存储在一个文本文件中。每行代表一个学生信息,使用逗号或其他符号将不同字段的信息分隔开来。

以下是学生信息的示例:

001,张三,18,男,90
002,李四,19,女,85
003,王五,20,男,95

在程序运行时,我们读取文本文件中的内容,并将其转化为列表的形式。每一个元素代表一个学生信息,使用字典存储不同字段的值。

以下是学生信息读取和存储的示例代码:

students = []

def read_file():
    with open('students.txt', 'r') as f:
        for line in f.readlines():
            student_info = line.strip().split(',')
            student = {
                'id': student_info[0],
                'name': student_info[1],
                'age': student_info[2],
                'gender': student_info[3],
                'score': student_info[4]
            }
            students.append(student)

def write_file():
    with open('students.txt', 'w') as f:
        for student in students:
            student_info = [
                student['id'], 
                student['name'], 
                student['age'], 
                student['gender'], 
                student['score']
            ]
            line = ','.join(student_info) + '\n'
            f.write(line)

功能实现

  1. 添加学生信息

添加学生信息的方法如下:

def add_student():
    id = input('请输入学号:')
    name = input('请输入姓名:')
    age = input('请输入年龄:')
    gender = input('请输入性别:')
    score = input('请输入成绩:')

    student = {
        'id': id,
        'name': name,
        'age': age,
        'gender': gender,
        'score': score
    }

    students.append(student)

    write_file()

    print('添加成功!')
  1. 删除学生信息

删除学生信息的方法如下:

def remove_student():
    id = input('请输入要删除的学生学号:')

    for index, student in enumerate(students):
        if student['id'] == id:
            students.pop(index)

    write_file()

    print('删除成功!')
  1. 修改学生信息

修改学生信息的方法如下:

def modify_student():
    id = input('请输入要修改的学生学号:')

    for student in students:
        if student['id'] == id:
            print('请选择要修改的信息:')
            print('1.姓名 2.年龄 3.性别 4.成绩')
            choice = int(input('请选择:'))
            if choice == 1:
                name = input('请输入新的姓名:')
                student['name'] = name
                print('修改成功!')
            elif choice == 2:
                age = input('请输入新的年龄:')
                student['age'] = age
                print('修改成功!')
            elif choice == 3:
                gender = input('请输入新的性别:')
                student['gender'] = gender
                print('修改成功!')
            elif choice == 4:
                score = input('请输入新的成绩:')
                student['score'] = score
                print('修改成功!')

    write_file()
  1. 查询学生信息

查询学生信息的方法如下:

def show_student():
    id = input('请输入要查询的学生学号:')

    for student in students:
        if student['id'] == id:
            print('学号:', student['id'])
            print('姓名:', student['name'])
            print('年龄:', student['age'])
            print('性别:', student['gender'])
            print('成绩:', student['score'])
            return

    print('未查询到该学生信息!')

学生管理系统代码示例

完整的学生管理系统代码如下:

students = []

def read_file():
    with open('students.txt', 'r') as f:
        for line in f.readlines():
            student_info = line.strip().split(',')
            student = {
                'id': student_info[0],
                'name': student_info[1],
                'age': student_info[2],
                'gender': student_info[3],
                'score': student_info[4]
            }
            students.append(student)

def write_file():
    with open('students.txt', 'w') as f:
        for student in students:
            student_info = [
                student['id'], 
                student['name'], 
                student['age'], 
                student['gender'], 
                student['score']
            ]
            line = ','.join(student_info) + '\n'
            f.write(line)

def add_student():
    id = input('请输入学号:')
    name = input('请输入姓名:')
    age = input('请输入年龄:')
    gender = input('请输入性别:')
    score = input('请输入成绩:')

    student = {
        'id': id,
        'name': name,
        'age': age,
        'gender': gender,
        'score': score
    }

    students.append(student)

    write_file()

    print('添加成功!')

def remove_student():
    id = input('请输入要删除的学生学号:')

    for index, student in enumerate(students):
        if student['id'] == id:
            students.pop(index)

    write_file()

    print('删除成功!')

def modify_student():
    id = input('请输入要修改的学生学号:')

    for student in students:
        if student['id'] == id:
            print('请选择要修改的信息:')
            print('1.姓名 2.年龄 3.性别 4.成绩')
            choice = int(input('请选择:'))
            if choice == 1:
                name = input('请输入新的姓名:')
                student['name'] = name
                print('修改成功!')
            elif choice == 2:
                age = input('请输入新的年龄:')
                student['age'] = age
                print('修改成功!')
            elif choice == 3:
                gender = input('请输入新的性别:')
                student['gender'] = gender
                print('修改成功!')
            elif choice == 4:
                score = input('请输入新的成绩:')
                student['score'] = score
                print('修改成功!')

    write_file()

def show_student():
    id = input('请输入要查询的学生学号:')

    for student in students:
        if student['id'] == id:
            print('学号:', student['id'])
            print('姓名:', student['name'])
            print('年龄:', student['age'])
            print('性别:', student['gender'])
            print('成绩:', student['score'])
            return

    print('未查询到该学生信息!')

def main():
    read_file()

    while True:
        print('1.添加学生信息')
        print('2.删除学生信息')
        print('3.修改学生信息')
        print('4.查询学生信息')
        print('5.退出系统')

        choice = int(input('请选择功能:'))

        if choice == 1:
            add_student()
        elif choice == 2:
            remove_student()
        elif choice == 3:
            modify_student()
        elif choice == 4:
            show_student()
        elif choice == 5:
            break
        else:
            print('请选择正确的功能!')

if __name__ == '__main__':
    main()

上述代码中,我们实现了一个基于文本文件的学生管理系统,您可以在自己的电脑上运行该程序,体验程序的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现一个完整学生管理系统 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例

    下面是针对“Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例”的攻略: 一、背景介绍 在进行数据分析、机器学习等领域的数据处理过程中,经常需要对某个序列中出现次数最多的元素进行筛选,比如电商平台需要知道每个月哪个商品的销量最高,或者社交媒体需要知道哪些话题被讨论得最多等。Python cookbook提供了一些高效的算法来…

    python 2023年6月3日
    00
  • python中requests使用代理proxies方法介绍

    以下是关于Python中requests使用代理proxies方法介绍的攻略: Python中requests使用代理proxies方法介绍 在使用Python requests库发送HTTP请求时,可以使用代理服务器。以下是Python中requests使用代理proxies方法介绍的攻略。 使用HTTP代理 使用HTTP代理时,需要使用proxies参数…

    python 2023年5月15日
    00
  • Python import自定义模块方法

    Python中的import语句可以帮助我们导入其他模块的方法、函数和变量等,以达到代码重用的目的。其中,自定义模块是指用户自行编写的模块。下面就来介绍一下Python导入自定义模块的方式。 自定义模块的创建 在介绍导入自定义模块的方法之前,我们先来看一下如何创建一个自定义模块。以创建一个名为my_module的模块为例,创建步骤如下: 在项目目录下创建一个…

    python 2023年6月3日
    00
  • Python入门教程(九)Python字符串介绍

    Python入门教程(九)Python字符串介绍 在Python中,字符串是一种不可变的数据类型,表示一系列Unicode字符序列。字符串在Python中非常重要,因为它们可以用于许多地方,比如文件处理。本文将介绍Python字符串的基本用法和操作。 字符串的定义 要定义一个字符串,请将文本包装在引号中。Python中支持单引号、双引号和三引号: # 使用单…

    python 2023年5月14日
    00
  • python 简单搭建阻塞式单进程,多进程,多线程服务的实例

    当我们需要开发一个服务时,我们可能需要采用不同的方式来完成这个服务,比如运行一个阻塞式单进程、多进程或者多线程服务。在Python中,我们可以使用不同的库来完成这些任务。 以下是Python搭建阻塞式单进程、多进程和多线程服务的完整攻略。 阻塞式单进程服务 阻塞式单进程服务是指只有一个进程在处理请求,而所有的请求都是按顺序依次处理的。一旦开始处理一个请求,进…

    python 2023年5月18日
    00
  • python的time模块和datetime模块实例解析

    Python的time模块和datetime模块实例解析 Python中的time和datetime模块,都是用来处理日期和时间的模块。time模块主要是用于程序中对时间的计算等操作;datetime模块则是用于更加复杂的时间操作,例如时区转换等。本文将详细讲解time和datetime模块在Python中的应用和方法。 time模块 time模块是Pyth…

    python 2023年6月2日
    00
  • 完美解决Python matplotlib绘图时汉字显示不正常的问题

    针对Python matplotlib绘图时汉字显示不正常的问题,完美解决方案如下。 问题背景 在Python matplotlib绘图时,如果要输出的图表中包含有中文字符,那么有可能会遇到中文字符显示异常的问题,例如显示乱码或者方框替代等。这是因为matplotlib默认的字体库中没有中文字体,因此需要做一些额外的设置才能正常显示中文字符。 解决方案 要解…

    python 2023年6月13日
    00
  • pip报错“ValueError: invalid literal for int() with base 10: ‘1.9’”怎么处理?

    当使用Java的Hibernate框架时,可能会遇到“ObjectNotSerializableException”错误。这个错误通常是由以下原因之一引起的: 对象不可序列化:如果对象不可序列化,则可能会出现此错误。在这种情况下,需要确保对象实现了Serializable接口。 对象包含不可序列化的字段:如果对象包含不可序列化的字段,则可能会出现此错误。在这…

    python 2023年5月4日
    00
合作推广
合作推广
分享本页
返回顶部