Python基础入门篇【35】--面向对象实例:重构学生信息库

本文通过一个Python面向对象实例,展示了如何重构学生信息库,增加了批量操作和模糊查找功能。首先,将所有方法封装到StudentsInfo类中,接着实现构造函数和各个方法,包括获取所有学生信息、新增、批量新增、删除和批量删除学生,以及按学号和特征模糊查找学生。示例代码详细展示了这些功能的实现过程。
摘要由CSDN通过智能技术生成

前言
作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦

python面向对象实例:重构学生信息库

任务要求:

用面向对象的编程思想重构学生信息库;

添加批量新增学生、批量删除学生的功能;

将查找学生信息功能修改为模糊查找;

参考思路:

第一步:将学生信息库的所有方法封装到一个类StudentsInfo

第二步:新增构造函数,定义属性self.students

第三步:将方法添加self参数(类函数必须包含self参数,且放在第一位),里面用到的students变量也需要添加self.

第四步:批量的方法使用for循环,循环内调用单个的方法即可

第五步:模糊查找使用成员运算符in not in

第六步:实例化对象,调用类中的方法。

参考代码:

# coding:utf-8

'''
   学生信息库
'''

class StudentsInfo(object):
    def __init__(self, students):
        self.students = students

    # 获取全部学生信息
    def get_all(self):
        for id_, value in self.students.items():
            print('学号:{} 姓名:{} 年龄:{} 性别:{} 班级:{}'.format(
                id_, value['name'], value['age'], value['sex'], value['class_number']))
        return self.students

    # 新增学生
    def add(self, **kwargs):
        if 'name' not in kwargs:
            print('缺少学生姓名')
            return
        if 'age' not in kwargs:
            print('缺少学生年龄')
            return
        if 'sex' not in kwargs:
            print('缺少学生性别')
            return
        if 'class_number' not in kwargs:
            print('缺少学生班级')
            return
        id_ = max(self.students.keys()) + 1  # 定义新增的学生学号
        self.students[id_] = kwargs

    # 批量新增学生
    def adds(self, new_students):
        for student in new_students:
            self.add(**student)


    # 删除学生
    def delete(self, student_id):
        if student_id not in self.students.keys():
            print('不存在这个学号{}的学生'.format(student_id))
            return
        self.students.pop(student_id)

    # 批量删除学生
    def deletes(self, *studens_id):
        for student_id in studens_id:
            if student_id not in self.students.keys():
                print('不存在这个学号{}的学生'.format(student_id))
                continue
            else:
                students_info = self.students.pop(student_id)
                print('学号是{},{}同学的信息已经被删除了'.format(student_id, students_info['name']))



    def search_by_id(self, student_id):
        if student_id not in self.students.keys():
            print('不存在这个学号{}的学生'.format(student_id))
            return
        print(self.students[student_id])

    def search(self, **kwargs):
        values = list(self.students.values())
        result = []
        for item in values:
            if 'name' in kwargs:
                if kwargs['name'] in item['name']:
                    result.append(item)
            elif 'age' in kwargs:
                if kwargs['age'] == item['age']:
                    result.append(item)
            elif 'sex' in kwargs:
                if kwargs['sex'] == item['sex']:
                    result.append(item)
            elif 'class_number' in kwargs:
                if kwargs['class_number'] == item['class_number']:
                    result.append(item)
            else:
                return None

        return result


students = {
    1: {'name': 'xiaoming',
        'age': 18,
        'sex': 'boy',
        'class_number': 'A'
        },
    2: {'name': 'xiaobai',
        'age': 19,
        'sex': 'girl',
        'class_number': 'B'
        },
    3: {'name': 'xiaokuai',
        'age': 19,
        'sex': 'boy',
        'class_number': 'A'
        },
    4: {'name': 'xiaoman',
        'age': 20,
        'sex': 'girl',
        'class_number': 'C'
        }
}

new_students = [
    {'name': 'aa',
     'age': 19,
     'sex': 'girl',
     'class_number': 'C'
     },
    {'name': 'bb',
     'age': 19,
     'sex': 'girl',
     'class_number': 'C'
     }
]

if __name__ == '__main__':
    student = StudentsInfo(students=students)
    student.get_all()
    student.add(name='xiaogao', age=18, sex='boy', class_number='B')
    print('新增一个学生后-----')
    student.get_all()
    student.delete(2)
    print('删除一个学生后-----')
    student.get_all()
    print('查询学号为3的学生-----')
    student.search_by_id(3)
    print('查找年龄为18的学生-----')
    print(student.search(age=19))
    student.adds(new_students)
    print('批量新增后-----')
    student.get_all()
    student.deletes(6, 7)
    print('批量删除后-----')
    student.get_all()
    print('模糊查找学生信息-----')
    print(student.search(name='m'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值