Bull's blog Bull's blog
首页
工作
  • 分类
  • 标签
  • 归档
关于

Bull

首页
工作
  • 分类
  • 标签
  • 归档
关于
  • 马上消费

  • 斗虫

    • 基础课件

      • python基础和条件语句
      • 基础数据类型_改
      • 函数
      • 1 函数练习
      • 32文件操作
      • 3 异常
      • 面向对象
      • 1面向对象案例-学生管理系统
        • 1Python基础练习题
        • 自动化测试理论
        • 2 接口测试基础
        • 3 requests
        • 4 代码
        • 5 简单封装
        • 1 pytest
        • 签名的设计
        • 接口case设计
        • 3 新建一个接口
        • x装饰器语法
        • httprunner2.x工具快速入门
        • httprunner3.x的简介
        • Flask框架
        • 了解任务
        • mock服务
        • UI自动化策略
        • PageObject模式
        • pytest参数化进阶
        • pytest框架生成报告
        • Yaml运用
        • 日志类模板
        • 持续集成
        • jdk配置
        • Linux基础
        • Jenkins主从测试任务
        • conda管理项目环境
        • 面试题-栈结构
        • 面试题-找众数
        • 正交测试法
        • 装饰器
        • 综合面试题_原版
      • RF

    • 天眼查

    • 某米

    • 工作经历
    • 斗虫
    • 基础课件
    wangyang
    2023-09-02
    目录
    1. main.py
    2. student.py
    3.student_manager.py

    1面向对象案例-学生管理系统

    布尔微信:Matongxue_6


    # 函数应用:学生管理系统

    整个系统中有3个程序文件:

    # 1. main.py

    这个文件是系统启动的入口文件,运行这个文件系统才能启动.

    # 导入模块student_manager
    from student_manager import *
    
    if __name__ == "__main__":
        # 启动 学生管理系统
        sm = StudentManager()
        sm.startup()
    
    
    1
    2
    3
    4
    5
    6
    7
    8

    # 2. student.py

    这个文件中定义了学生类.

    class Student:
        """
        定义一个学生类,用来封装学生的4个信息
        """
    
        def __init__(self, id, name, score):
            """
            给对象添加3个属性
            :param id: 学号
            :param name: 姓名
            :param score: 分数
            """
            self.id = id
            self.name = name
            self.score = score
    
        def __str__(self):
            return "%s,%s,%s" % (self.id, self.name, self.score)
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    # 3.student_manager.py

    这个文件中定义了StudentManager类

    • 这个类中定义了一个存储所有学生的字典:students_dict,students_dict字典是用来存储所有的学生对象的
    • 显示菜单的方法以及对学生进行增删改查的方法
    • 把字典中的学生数据学到文件中的方法
    • 从文件中读数据,存储字典中的方法

    代码如下:

    # 导入Student类
    from student import Student
    
    
    class StudentManager:
        """
        定义一个学生管理类,在这个类中定义显示菜单和对学生进行增删改查的方法
        """
    
        def __init__(self):
            # 定义一个类属性, 用来存储系统中的Student对象
            self.students_dict = {}
    
        def startup(self):
            """
            学生管理系统的入口,系统一启动的时候就应该调用这个方法
            """
    
            # 在系统一启动的时候就从文件中读取数据,把数据保存到students_dict中
            self.load_from_file("data.txt")
    
            # 循环1,2,3步骤
            while True:
                # 1.调用StudentManager类中显示菜单的功能
                self.show_menu()
    
                # 2.提示录入菜单编号
                menu_code = int(input("请录入您选择的功能:"))
    
                # 3.根据菜单编号调用对应的功能
                if menu_code == 1:
                    # print("调用 1.添加学生 的功能")
                    self.add_student()
                elif menu_code == 2:
                    # print("调用 2.显示全部 的功能")
                    self.show_all()
                elif menu_code == 3:
                    # print("调用 3.查询学生 的功能")
                    self.find_student()
                elif menu_code == 4:
                    # print("调用 4.修改学生 的功能")
                    self.update_student()
                elif menu_code == 5:
                    # print("调用 5.删除学生 的功能")
                    self.delete_student()
                elif menu_code == 0:
                    print("退出系统")
    
                    # 在退出系统时,把学生列表中的数据都保存到文件中
                    self.save_to_file("data.txt")
                    break
                else:
                    print("录入的菜单编号有误,请重新录入!!!\n")
    
        @staticmethod
        def show_menu():
            """
            显示菜单:
            ******************************
            欢迎使用【学生管理系统】 V1.0
            1.添加学生
            2.显示全部
            3.查询学生
            4.修改学生
            5.删除学生
    
            0.退出系统
            ******************************
            """
            print("*" * 30)
            print("欢迎使用【学生管理系统】 V1.0")
            print("1.添加学生")
            print("2.显示全部")
            print("3.查询学生")
            print("4.修改学生")
            print("5.删除学生")
            print()
            print("0.退出系统")
            print("*" * 30)
    
        def add_student(self):
            """
            添加一个学生
            """
            # 提示并录入学生的3个信息
            id = input("请录入学号:")
            name = input("请录入姓名:")
            score = input("请录入考试分数:")
    
            # 把字典添加到列表中
            if id in self.students_dict.keys():
                print("学生已存在!!!")
                return
    
            else:
                # 把3个信息封装到一个Student对象中
                student = Student(id, name, score)
                self.students_dict[id] = student
    
                # 提示"添加成功!"
                print("添加学生" + id + "成功!\n")
    
            print(self.students_dict)
    
        def show_all(self):
    
            # 判断系统中是否有学生信息
            if len(self.students_dict) <= 0:
                # 如果没有,就提示"系统中还没有学生信息!!!"
                print("系统中还没有学生信息!!!\n")
            else:
                # 如果有
                # 先打印表头,一条线
                print("学号".ljust(14) + "姓名".ljust(15) + "分数".ljust(15))
                print("-" * 45)
                # 4.2 遍历列表,打印每个学生,一个学生打印成干一行
                for student in self.students_dict.values():
                    id = student.id
                    name = student.name
                    score = student.score
                    print(id.ljust(15) + name.ljust(15) + score.ljust(15))
                # 4.3 打印一条线
                print("-" * 45)
    
        def find_student(self):
            """
            查询一个学生
            """
    
            # 提示录入一个姓名
            input_id = input("请录入一个学号:")
            # 遍历列表
            if input_id not in self.students_dict.keys():
                # 如果比较了一遍没有发现有姓名一样的学生,就提示在系统中没有找到此学生
                print("在系统中没有找到此学生!!!\n")
                return
            else:
                # 在系统中得到该学生对象
                student = self.students_dict[input_id]
                # 如果一样就打印
                print("学号".ljust(14) + "姓名".ljust(15) + "分数".ljust(15))
                print("-" * 45)
                id = student.id
                name = student.name
                score = student.score
                print(id.ljust(15) + name.ljust(15) + score.ljust(15))
                print("-" * 45)
    
        def update_student(self):
            """
            修改一个学生
            """
    
            # 1.提示录入一个学号
            input_id = input("请录入一个学号:")
    
            # 判断系统中是否有该学号对应的学生
            if input_id not in self.students_dict.keys():
                # 如果没有找到该学生
                print("在系统中没有找到此学生!!!\n")
                return
            else:
                # 如果找到了就打印该学生
                # 在系统中得到该学生对象
                student = self.students_dict[input_id]
    
                # 获得要修改的信息
                new_name = input('请输入新名字:')
                new_score = input('请输入新分数:')
    
                # 修改学生的姓名和分数
                student.name = new_name
                student.score = new_score
    
                # 提示修改变成功
                print("修改%s成功" % input_id)
    
        def delete_student(self):
            """
            删除一个学生
            """
    
            # 提示录入一个学号
            input_id = input("请录入一个学号:")
    
            # 判断系统中是否有该学号对应的学生
            if input_id not in self.students_dict.keys():
                # 如果没有找到
                print("在系统中没有找到此学生!!!\n")
                return
            else:
                # 如果找到了
                # 删除学生
                del self.students_dict[input_id]
                print("删除成功!!!\n")
    
        def save_to_file(self, file):
            """
            把列表中的数据写到指定的文件中
            :param file: 文件
            """
    
            # 得到字典中的所有学生
            student_list = self.students_dict.values()
    
            # 把所有学生 都写到一个文件中,一个学生写一行
            f = open(file, "w", encoding="UTF-8")
    
            for student in student_list:
    
                # 一个学生写一行
                f.write(str(student)+"\n")
    
            # 关闭文件
            f.close()
    
        def load_from_file(self, file):
            """
            从指定的文件中读取,并返回数据
            :param file:
            :return: 返回从文件中读出来的数据
            """
            f = open(file, "r", encoding="UTF-8")
            for line in f.readlines():
                # 得到一行的字符串,去掉最后的换行符"\n"
                student_info = line[:-1].split(",")
                # 得到学生的3个信息
                id = student_info[0]
                name = student_info[1]
                score = student_info[2]
                # 创建一个学生对象
                student = Student(id, name, score)
                # 在字典中保存学生对象
                self.students_dict[id] = student
    
            # 关闭文件
            f.close()
    
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    #python自动化#自动化入门
    上次更新: 2023/09/05, 02:16:11
    面向对象
    1Python基础练习题

    ← 面向对象 1Python基础练习题→

    最近更新
    01
    aboutforLLM
    09-19
    02
    30.快速实现接口重构测试---deepdiff库使用
    09-21
    03
    概述
    09-07
    更多文章>
    Theme by Vdoing | Copyright © 2018-2025 Evan Xu | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式