Python综合应用学生管理系统

主要是复习使用,希望大佬提意见

整体结构与核心数据结构

import os

import sys

students = []

上述代码引入了ossys模块,os模块用于处理文件和目录相关操作,sys模块提供了对 Python 解释器相关变量和函数的访问。students列表作为核心数据结构,用于存储所有学生的信息,后续对学生信息的增删改查操作都围绕它展开。

菜单功能实现

def menu():

    """

    显示程序菜单

    """

    print(" 1. 新增学生信息")

    print(" 2. 显示所有同学信息")

    print(" 3. 根据名字查找学生信息")

    print(" 4. 删除学生信息")

    print(" 0. 退出程序")

    choice = input(" 请输入您的选择: ")

    return int(choice)

menu函数负责在控制台打印程序的功能菜单,提示用户输入选择,并将用户输入的字符串转换为整数后返回,以便后续根据不同的选择执行相应的操作。

学生信息新增

def insert():

    print("[新增学生]开始!")

    studentId = 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)

    print("[新增学生] 完毕!")

insert函数实现新增学生信息的功能。它首先通过input函数获取用户输入的学生学号、姓名、性别和班级信息。在获取性别信息后,会检查性别是否为 “男” 或 “女”,若不符合要求则直接提示失败并返回。之后,将学生信息封装成字典,添加到students列表中,并提示新增完毕。

学生信息显示

def show():

    print("[显示学生] 开始!")

    for s in students:

        print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")

    print(f"[显示学生] 完毕! 共显示了 {len(students)} 条记录!")

show函数用于遍历students列表,将每个学生的信息以格式化字符串的形式输出到控制台,并在最后显示学生信息的总条数。

学生信息查找

def find():

    print("[查找学生] 开始!")

    name = input("请输入要查找的同学姓名: ")

    count = 0

    for s in students:

        if name == s['name']:

            print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")

            count += 1

    print(f"[查找学生] 完毕! 共查找到 {count} 条记录!")

find函数根据用户输入的学生姓名,在students列表中遍历查找匹配的学生信息。找到匹配的学生时,输出其详细信息,并统计找到的记录条数,最后提示查找完毕和找到的记录数。

学生信息删除

def delete():

    print("[删除学生] 开始!")

    studentId = input("请输入要删除的同学学号: ")

    count = 0

    for s in students:

        if studentId == s['studentId']:

            print(f"删除 {s['name']} 同学的信息!")

            students.remove(s)

            count += 1

    print(f"[删除学生] 完毕! 共删除 {count} 条记录!")

delete函数依据用户输入的学生学号,在students列表中查找并删除对应的学生信息。找到匹配的学生时,打印删除提示,从列表中移除该学生信息,并统计删除的记录条数,最后提示删除完毕和删除的记录数。

数据存档与读档

def save():

    """

    存档函数

    """

    with open('D:/Python/Test/record.txt', 'w') as f:

        for s in students:

            f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")

    print(f"[存档成功] 共存储了 {len(students)} 条记录!")

def load():

    """

    读档函数

    """

    # 如果存档文件不存在, 则跳过读档环节

    if not os.path.exists('D:/Python/Test/record.txt'):

        return

    # 先清空全局变量里的数据

    global students

    students = []

    with open('D:/Python/Test/record.txt', 'r') as f:

        for line in f:

            # 去除末尾的换行符

            line = line.strip()

            tokens = line.split('\t')

            if len(tokens) < 4:

                print(f"文件格式有误! line={line}")

                continue

            student = {

              'studentId': tokens[0],

                'name': tokens[1],

                'gender': tokens[2],

                'className': tokens[3]

            }

            students.append(student)

    print(f"[读档成功] 共读取了 {len(students)} 条记录!")

save函数用于将students列表中的学生信息存档到指定文件D:/Python/Test/record.txt中,以制表符分隔各信息字段,并在每行末尾添加换行符。load函数则负责从存档文件中读取学生信息,若文件不存在则直接返回;读取时先清空students列表,然后逐行处理文件内容,将每行信息解析成字典并添加到students列表中。

程序入口与主循环

def main():

    load()

    """

    程序的入口函数

    """

    print('+--------------------------+')

    print('|    欢迎来带学生管理系统!     |')

    print('+--------------------------+')

    while True:

        choice = menu()

        if choice == 0:

            sys.exit()

        if choice == 1:

            insert()

            save()

        elif choice == 2:

            show()

        elif choice == 3:

            find()

        elif choice == 4:

            delete()

            save()

        else:

            print('您的输入有误! 请重新输入!')

main() 

main函数作为程序的入口,首先调用load函数读取存档文件中的学生信息。然后进入一个无限循环,在循环中调用menu函数获取用户选择,根据不同的选择调用相应的功能函数,并在新增或删除学生信息后调用save函数保存数据。当用户选择 0 时,调用sys.exit()退出程序。

gitee代码链接:https://gitee.com/downwork50/python_test 

你可能感兴趣的:(Python综合应用学生管理系统)