• 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('输入错误,请重新输入')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    3. 实现菜单函数

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

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

    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('新增学生信息成功')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    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}的学生')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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('输入错误')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    5) 显示所有学生信息

    之间遍历列表就好

    def show():
        """
        显示所有学生信息
        :return:
        """
        if len(students) == 0:
            print('没有任何学生的信息')
            return
    
        for student in students:
            print(student)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5. 使用文件保存

    1)打开文件

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

    姓名;性别;年龄;学号;班级;电话
    
    • 1
    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)}条记录成功')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    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('数据已经保存到文件')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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('数据已经保存到文件')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    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)}条记录成功')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
  • 相关阅读:
    期货开户公司的选择和作用
    ShowLibAlias...
    RabbitMQ应用场景
    C# 反射为什么慢?深入解析反射性能问题
    NameNode的HA热备实现
    Win10远程桌面连接黑屏
    第14课 利用openCV快速数豆豆
    海外代理IP如何找到靠谱的?
    国内类似ChatGPT的大模型应用有哪些?发展情况如何了
    PDF怎么翻译成中文?这些方法值得收藏
  • 原文地址:https://blog.csdn.net/weixin_53946852/article/details/126883885