Python ------ 实现学生管理器

2024-06-04 9255阅读

欢迎各位大佬的到来,今天所要分享的文章是关于如何实现学生管理系统,有需要的朋友可以参考一下,希望可以帮到大家!

文章目录

  • 一、开始界面实现
    • 1. 定义主函数
    • 2. 运用循环,获取用户需求
    • 二、函数实现各个模块功能
      • 1. 添加学生信息
      • 2. 展示学生信息
      • 3. 查找学生信息
      • 4. 删除学生信息
      • 5. 退出程序
      • 三、 把信息存入文件中
        • 1. save() 函数
        • 2. load() 函数
        • 四、整理代码
          • 1. 代码展示
          • 2. 运行过程

            一、开始界面实现

            1. 定义主函数

            定义一个主函数main,在通过定义一个menu函数对学生管理系统的菜单进行打印。

            # 定义menu()函数
            def menu():
                print('1. 新增学生')
                print('2. 显示学生')
                print('3. 查找学生')
                print('4. 删除学生')
                print('0. 退出程序')
            # 定义主函数
            def main():
                print('--------------------------------')
                print('        欢迎来到学生管理系统       ')
                print('-------------------------------')
                menu()
            main()
            

            2. 运用循环,获取用户需求

            1)使用 while True 循环:让菜单一直保持循环,直到用户选择退出操作时才结束循环操作。

            2)变量 choice:获取到的用户需要实现的功能进行存储。

            3)if 循环:使用多个分支循环语句,分别实现各个模块的功能。

            def menu():
                print('1. 新增学生')
                print('2. 显示学生')
                print('3. 查找学生')
                print('4. 删除学生')
                print('0. 退出程序')
                choice = input('请输入你的选择: ')
                return choice
            
            # 定义主函数
            def main():
                print('--------------------------------')
                print('        欢迎来到学生管理系统       ')
                print('-------------------------------')
                while True:
                    choice = menu()
                    if choice == '1':
                        # 新增学生
                        pass
                    elif choice == '2':
                        # 显示学生
                        pass
                    elif choice == '3':
                        # 查找学生
                        pass
                    elif choice == '4':
                        # 删除学生
                        pass
                    elif choice == '0':
                        # 退出程序
                        pass
                    else:
                        print('您的输入有误,请重新输入!')
                        # 需要进入下次循环,让用户输入
                        continue
            

            效果展示:

            Python ------ 实现学生管理器 第1张

            二、函数实现各个模块功能

            下面,就需要完成上述代码所需要实现的各个功能操作

            1. 添加学生信息

            1)studentId,name,gender,className: 分别用来存储学生的学号、姓名、性别、班级的信息。

            2)student: 定义一个字典,用来存储上述全部信息。

            3)append(): 列表添加操作,将当前的字典存入列表,作为列表的一个元素。

            4)students[ ]: 定义了一个列表用来存储所有的学生信息。该列表中的每个元素都属于一个"字典",而每个字典就分别表示一个同学!

            # 使用这个全局变量,来管理所有学生的信息.
            students = []
            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
                }
                # 将上述信息添加到全局变量students列表中
                global students
                students.append(student)
                print('[新增学生] 完毕!')
            

            2. 展示学生信息

            遍历全局变量这个列表,把每个学生的信息进行打印。

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

            3. 查找学生信息

            我们假设根据学生的姓名来进行查找。使用 count 变量完成计数功能操作。

            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}个匹配的同学.')
            

            4. 删除学生信息

            假设按照学生的学号进行删除操作。通过学号来确定该学生属于哪一个“字典”,然后把这个字典从列表中进行删除即完成该操作。

            def delete():
                print('[删除学生] 开始!')
                # 按照学号进行删除
                studentId = input('请输入要删除学生的学号:')
                # 看看这个学号对应的同学是哪个字典,然后把这个字典从列表中进行删除
                for s in students:
                    if studentId == s['studentId']:
                        print(f"删除 {s['name']} 同学的信息!")
                        students.remove(s)
                print('[删除学生] 结束!')
            

            5. 退出程序

            使用内建函数 sys.exit (0) 退出程序即可。

                    elif choice == '0':
                        # 退出程序
                        print('GoodBye!')
                        sys.exit(0)
            

            三、 把信息存入文件中

            由于上述的插入学生信息操作和删除学生信息操作都保存在内存中,一旦我们结束程序,我们插入或删除的信息就全都不见了。为了让我们插入的信息可以一直保存下去,我们就需要定义两个函数:save() 函数和 load() 函数。

            1. save() 函数

            这个函数是用于存档学生信息的。把信息存储在和当前文件同级的目录中。存档的文件定义为文本文件。

            def save():
                # 用于存档
                # 此处的路径不是以d: 开头的"绝对路径",而是"相对路径"
                # 这个写法的含义就是让 record.txt 和当前的文件在同一个目录里.
                with open('record.txt', 'w', encoding='utf8') 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)} 条记录!')
            

            因此,每当我们修改一个数据时,就可以调用 save 函数对这个信息进行保存操作。

            Python ------ 实现学生管理器 第2张

            2. load() 函数

            该函数是用于读取文档的操作。使用此函数,就可以实现当我们关闭程序再次运行程序时,可以读取到上次我们所保存的学生信息。

            1)os.path.exists (): 该内建函数用来判断某一个文件是否存在。

            2)line.strip (): 该功能是去掉一个字符串开头和末尾的空白符。

            空白符包括:空格,换行,回车,制表符等等。

            3)line.split (): 用于将字符串按照指定的分隔符分割成若干个字符串。

            def load():
                # 用于读档
                # 如果存档文件不存在,则直接跳过读档操作
                if not os.path.exists('record.txt'):
                    return
                # 读档的时候要保证先把旧的数据先清理干净!
                global students
                students = []
                with open('record.txt', 'r', encoding='utf8') as f:
                    for line in f:
                        # 针对这一行数据,按照 \t 对其进行切分操作!
                        # 切分之前要去除末尾的换行
                        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)} 条记录!')
            

            四、整理代码

            1. 代码展示

            import os.path
            import sys
            # 使用这个全局变量,来管理所有学生的信息.
            # 这个列表的每个元素都是一个"字典",每个字典就分别表示一个同学!
            students = []
            def save():
                # 用于存档
                with open('record.txt', 'w', encoding='utf8') 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('record.txt'):
                    return
                # 读档的时候要保证先把旧的数据先清理干净!
                global students
                students = []
                with open('record.txt', 'r', encoding='utf8') as f:
                    for line in f:
                        # 针对这一行数据,按照 \t 对其进行切分操作!
                        # 切分之前要去除末尾的换行
                        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)} 条记录!')
            def menu():
                print('1. 新增学生')
                print('2. 显示学生')
                print('3. 查找学生')
                print('4. 删除学生')
                print('0. 退出程序')
                choice = input('请输入你的选择: ')
                return choice
            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)
                # 保存操作
                save()
                print('[新增学生] 完毕!')
            def show():
                # 遍历全局变量这个列表,把每个学生的信息打印出来.
                print('[显示学生] 开始!')
                for s in students:
                    print(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}")
                print(f'[显示学生] 完毕! 共显示了{len(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}个匹配的同学.')
            def delete():
                print('[删除学生] 开始!')
                # 按照学号进行删除
                studentId = input('请输入要删除学生的学号:')
                # 看看这个学号对应的同学是哪个字典,然后把这个字典从列表中进行删除
                for s in students:
                    if studentId == s['studentId']:
                        print(f"删除 {s['name']} 同学的信息!")
                        students.remove(s)
                # 增加保存操作
                save()
                print('[删除学生] 结束!')
            def main():
                # 通过控制台和命令进行交互
                print('--------------------------------')
                print('        欢迎来到学生管理系统       ')
                print('-------------------------------')
                load()
                while True:
                    # 通过 menu 函数打印出菜单项
                    choice = menu()
                    if choice == '1':
                        # 新增学生
                        insert()
                    elif choice == '2':
                        # 显示学生
                        show()
                    elif choice == '3':
                        # 查找学生
                        find()
                    elif choice == '4':
                        # 删除学生
                        delete()
                    elif choice == '0':
                        # 退出程序
                        print('GoodBye!')
                        sys.exit(0)
                    else:
                        print('您的输入有误,请重新输入!')
                        # 需要进入下次循环,让用户输入
                        continue
            main()
            

            2. 运行过程

            Python ------ 实现学生管理器 第3张

            Python ------ 实现学生管理器 第4张

            Python ------ 实现学生管理器 第5张

            以上就是今天所要分享的内容,如果感觉内容不错,记得一键三连噢。创作不易,感谢大家的支持,我们下次再见!ヾ( ̄▽ ̄)ByeBye


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]