【Python】学生管理系统

设计思路:

创建全局变量students列表,存储所有学生信息

每个学生的信息输入时保存到临时变量stu字典中,再将字典存入students列表中

进入系统时从文件加载数据,将stu数据写入students中

退出系统时保存数据,将students中的数据以每个字典为一行存入文件

查找、删除学生信息支持模糊查询

默认把存储的文件存入当前目录

import sys
import os

students = []

def save():
    with open('students.txt', 'w', encoding='utf-8') as f:
        for s in students:
            f.write(f"{s['stuID']}\t{s['name']}\t{s['gender']}\n")
        print("存档成功")

def load():
    if not os.path.exists('students.txt'):
        return
    global students
    students = []
    with open('students.txt', 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()     # strip 可以去掉一个字符串首位的空白符
            tokens = line.split('\t')   # 按照 \t 进行切分
            if len(tokens) != 3:
                print(f"当前格式存在问题,line={line}")
                continue
            stu = {
                'stuID': tokens[0],
                'name': tokens[1],
                'gender': tokens[2]
            }
            students.append(stu)
    print(f"读档成功,共读取了{len(students)}条数据")

def insert():
    stuID = input('请输入学生ID:')
    name = input('请输入学生姓名:')
    gender = input('请输入学生性别:')
    if gender != '男' and gender != '女':     #支持模糊查询
        print('输入性别有误,请重新输入')
        return
    stu = {
        'stuID': stuID,
        'name': name,
        'gender': gender
    }
    global students
    students.append(stu)
    print('新增学生完毕')

def show():
    for s in students:
        print(f"{s['stuID']}\t{s['name']}\t{s['gender']}")
    print(f'显示学生完毕,共显示了{len(students)}条学生数据')

def find():
    # 按学生ID或姓名进行查询
    find = input('请输入要查询学生的学号或姓名')
    count = 0
    for s in students:
        if find in s['stuID'] or find in s['name']:
            print(f"{s['stuID']}\t{s['name']}\t{s['gender']}")
            count += 1
    print(f"查询学生结束,共查询到{count}条学生信息")

def delete():
    delete = input('请输入要删除信息的学生学号或姓名:')
    for s in students:
        if delete in s['stuID'] or delete in s['name']:
            print(f"删除{s['name']}同学的信息")
            students.remove(s)
            break
    print("删除学生信息结束")

def menu():
    print('1. 新增学生')
    print('2. 显示学生')
    print('3. 查找学生')
    print('4. 删除学生')
    print('0. exit')
    choice = input('请输入选项:')
    return choice

if __name__ == '__main__':
    load()
    while True:
        choice = menu()
        if choice == '1':
            insert()
        elif choice == '2':
            show()
        elif choice == '3':
            find()
        elif choice == '4':
            delete()
        elif choice == '0':
            save()
            sys.exit(0)
        else:
            print('选择错误,请重新选择')

猜你喜欢

转载自blog.csdn.net/phoenixFlyzzz/article/details/129760961