Python实现可存储的学生信息管理系统(文件+Excel)

Posted 爱敲代码的三毛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实现可存储的学生信息管理系统(文件+Excel)相关的知识,希望对你有一定的参考价值。

目录


学生信息管理系统

1. 功能汇总

  • 新增学生
  • 显示学生
  • 查找学生
  • 删除学生
  • 修改学生信息
  • 信息持久保存(文件/Excel)

2. 创建函数入口

  • 创建一个全局的列表students保存每个学生的信息

  • 使用自定义菜单函数menu和用户交互

  • 使用 adddeletefindupdateshow 这几个自定义函数完成增删改查显示学生操作

  • 使用sys.exit退出程序

# 这个列表用来保存学生
students = []


def main():
    """
        程序入口
    :return:
    """
    print('---------------------------------------------------------------')
    print('|                                                             |')
    print('|                   欢迎使用学生信息管理系统!                     |')
    print('|                                                             |')
    print('---------------------------------------------------------------')
    while True:
        operation = menu()
        if operation == 1:
            add()
        elif operation == 2:
            delete()
        elif operation == 3:
            find()
        elif operation == 4:
            update()
        elif operation == 5:
            show()
        elif operation == 0:
            sys.exit(0)
        else:
            print('输入错误,请重新输入')

3. 实现菜单函数

菜单函数就是简单打印信息,提示用户输入,并返回输入值给主函数


def menu():
    """
    打印菜单函数
    :return:
    """
    print('1.新增学生信息')
    print('2.删除学生信息')
    print('3.查找学生信息')
    print('4.修改学生信息')
    print('5.显示所有学生信息')
    print('0.退出')
    operation = input('请输入——> ')
    return int(operation)

4. 实现增删改查操作

1)新增功能实现

简单约定一些学生信息,每个学生用一个字典保存

  • 姓名、性别(男、女)、年龄、学号、班级、电话
def add():
    """
    新增学生信息
    :return:
    """
    print('开始新增学生')
    name = input('请输入学生姓名:')
    sex = input('请输入学生性别(男/女):')
    if sex not in ('男', '女'):
        print('性别输入错误,新增失败')
        return
    age = input('请输入年龄:')
    student_id = input('请输入学号:')
    class_id = input('请输入班级:')
    phone = input('请输入电话号码:')

    student = 
        '姓名': name,
        '性别': sex,
        '年龄': age,
        '学号': student_id,
        '班级': class_id,
        '电话': phone
    
    students.append(student)
    print('新增学生信息成功')

2) 删除功能实现

这里通过学号删除学生

def delete():
    """
    删除学生信息
    :return:
    """
    student_id = input('请输入要删除的学生的学号')
    for student in students:
        if student['学号'] == student_id:
            students.remove(student)
            print(f'删除成功,删除的学生信息为student')
            return

    print(f'删除失败,没有找到学号为student_id的学生')

3) 查找功能实现

这里简单实现通过学号和姓名查找

def find():
    """
    查找学生信息
    :return:
    """
    operation = input('通过学号查找(1)/通过姓名查找(2)')
    if operation == '1':
        student_id = input('请输入要查找的学生的学号')
        for student in students:
            if student['学号'] == student_id:
                print(student)
    elif operation == '2':
        name = input('请输入要查找学生的姓名')
        for student in students:
            if student['姓名'] == name:
                print(student)
    else:
        print('输入错误')

4) 修改学生信息

输入学生的学号来修改学生信息

def update():
    """
    修改学生信息
    :return:
    """
    student_id = input('请输入要修改信息的学生的学号')
    for student in students:
        if student['学号'] == student_id:
            print(f'查找到的学生信息为student')
            flag = input('是否要进行修改(y/n)')
            if flag == 'y' or flag == 'Y':
                name = input('请输入学生姓名:')
                sex = input('请输入学生性别(男/女):')
                if sex not in ('男', '女'):
                    print('性别输入错误,新增失败')
                    return
                age = input('请输入年龄:')
                student_id = input('请输入学号:')
                class_id = input('请输入班级:')
                phone = input('请输入电话号码:')
                print(f'信息修改前student')
                student['姓名'] = name
                student['性别'] = sex
                student['年龄'] = age
                student['学号'] = student_id
                student['班级'] = class_id
                student['电话'] = phone
                print(f'信息修改后student')
                return

5) 显示所有学生信息

之间遍历列表就好

def show():
    """
    显示所有学生信息
    :return:
    """
    if len(students) == 0:
        print('没有任何学生的信息')
        return

    for student in students:
        print(student)

5. 使用文件保存

1)打开文件

实现函数read 每次程序启动就打开文件读取学生信息,做出约定以分号间隔

姓名;性别;年龄;学号;班级;电话
def read():
    """
    读取文件已经保存的学生信息
    :return:
    """
    # 如果没有文件就跳过读取
    if not os.path.exists('students.txt'):
        return

    # 先清空全局的list
    global students
    students = []

    with open('students.txt', 'r', encoding='utf8') as file:
        for line in file:
            # 约定以分号间隔,就以分号分割
            student_list = line.split(';')
            if len(student_list) != 6:
                print(f'这行数据格式错误读取失败line')
                continue
            student = 
                '姓名': student_list[0],
                '性别': student_list[1],
                '年龄': student_list[2],
                '学号': student_list[3],
                '班级': student_list[4],
                '电话': student_list[5]
            
            students.append(student)

        print(f'从文件数据读取len(students)条记录成功')

2) 保存文件

每次退出程序就保存学生信息到文件,实现保存函数save

def save():
    """
    保存功能
    :return:
    """
    with open('students.txt', 'w', encoding='utf8') as file:
        for student in students:
            file.write(student['姓名']+';')
            file.write(student['性别']+';')
            file.write(student['年龄']+';')
            file.write(student['学号']+';')
            file.write(student['班级']+';')
            file.write(student['电话']+'')
        
        print('数据已经保存到文件')

6. 使用Excel保存

想要保存到Excel只需要修改saveread,这里通过xlrdxlwt这两个库操作Excel版本为1.2.0

save保存函数

def save():
    """
    保存功能
    :return:
    """
    # 创建一个excel文件
    work_book = xlwt.Workbook(encoding='utf8')
    # 新建页表
    work_sheet = work_book.add_sheet('学生信息表')
    # 往表中写入数据
    count = 0
    for my_student in students:
        work_sheet.write(count, 0, my_student['姓名'])
        work_sheet.write(count, 1, my_student['性别'])
        work_sheet.write(count, 2, my_student['年龄'])
        work_sheet.write(count, 3, my_student['学号'])
        work_sheet.write(count, 4, my_student['班级'])
        work_sheet.write(count, 5, my_student['电话'])
        count += 1
    # 保存
    work_book.save('student.xls')
    print('数据已经保存到文件')

read读取函数

def read():
    """
    读取文件已经保存的学生信息
    :return:
    """
    # 如果没有文件就跳过读取
    if not os.path.exists('student.xls'):
        return

    # 先清空全局的list
    global students
    students = []

    # 打开Excel文件
    xls_file = xlrd.open_workbook('student.xls')
    # 获取第0页表格
    table = xls_file.sheet_by_index(0)
    # 获取表格总行数
    rows = table.nrows

    for i in range(0, rows):
        student = 
            '姓名': table.cell_value(i, 0),
            '性别': table.cell_value(i, 1),
            '年龄': table.cell_value(i, 2),
            '学号': table.cell_value(i, 3),
            '班级': table.cell_value(i, 4)
        
        students.append(student)

    print(f'从文件数据读取len(students)条记录成功')

以上是关于Python实现可存储的学生信息管理系统(文件+Excel)的主要内容,如果未能解决你的问题,请参考以下文章

c语言编写学生信息管理系统

使用Python中的tkinter模块实现GUI界面的学生信息管理系统

学生信息录入系统

python学生信息管理系统登录权限怎么开启

用python做学生信息管理系统分工是什么

Python 函数封装之"学生信息管理系统"