python-面向对象-学生库类的综合练习

# coding:utf-8
# author:我本善良
# create_time:2021/6/1 21:34

'''
学生库

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

    def get_by_id(self,student_id):
        return self.students.get(student_id)

    # 获取所有学生信息
    def get_all_students(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,**student):
        '''
        增加学生
        :param kwargs:  name='小白',age=19,class_number='A',sex='boy'
        :return:
        '''
        check = self.check_user_info(**student)
        if check != True:
            print(check)
            return
        self.__add(**student)



    def adds(self,new_students):
        '''
        批量添加功能
        :return:
        '''
        for student in new_students:
            check = self.check_user_info(**student)
            if check !=True:
                print(check,student.get('name'))
                continue #如果不正常,不允许往下执行
            self.__add(**student)

    #私有函数__add功能
    def __add(self,**student):
        new_id = max(self.students)+1
        self.students[new_id] = student






    def delete(self,student_id):
        '''
        删除函数
        :param student_id:
        :return:
        '''
        if student_id not in self.students:
            print('{} 并不存在'.format(student_id))
        else:
            user_info = self.students.pop(student_id)
            print('学号是{},{}同学的信息已经被删除了'.format(student_id, user_info['name']))

    def deletes(self,ids):
        for id_ in ids:
            if id_  not in self.students:
                print(f'{id_} 不存在学生库中' )
                continue
            students_info = self.students.pop(id_)
            print(f'学号{id_} 学生{students_info["name"]} 已被移除')








    def update(self,studend_id, **kwargs):
        if studend_id not in self.students:
            print('并不存在这个学号:{}'.format(studend_id))

        check = self.check_user_info(**kwargs)
        if check != True:
            print(check)
            return
        self.students[studend_id] = kwargs
        print('同学信息更新完毕')


    def updates(self,update_students):
        for student in update_students:
            id_ = list(student.keys())[0]
            if id_ not in self.students:
                print(f'学号{id_}不存在')
                continue
            user_info = student[id_]
            check = self.check_user_info(**user_info)
            if check != True:
                print(check)
            self.students[id_] = user_info
        print('所有用户信息更新完成')





    def search_user(self,**kwargs):
        values = list(self.students.values())
        key = None
        value = None
        result = []

        if 'name' in kwargs:
            key = 'name'
            value = kwargs[key]
        elif 'sex' in kwargs:
            key = 'sex'
            value = kwargs[key]
        elif 'class_number' in kwargs:
            key = 'class_number'
            value = kwargs[key]
        elif 'age' in kwargs:
            key = 'age'
            value = kwargs[key]
        else:
            print('没有发现搜索的关键字')
            return

        for user in values:
            # if user[key] == value: #绝对查找
            if value in user[key] : #模糊查找,成员运算符
                result.append(user)
        return result

    def check_user_info(self,**kwargs):
        if 'name' not in kwargs:
            return '没有发现学生姓名'
        if 'age' not in kwargs:
            return '缺少学生年龄'
        if 'sex' not in kwargs:
            return '缺少学生性别'
        if 'class_number' not in kwargs:
            return '缺少学生班级'
        return True




students = {
    1:{
        'name':'dewei',
        'age':33,
        'class_number':'A',
        'sex':'boy'
    },
    2:{
        'name':'小幕',
        'age':18,
        'class_number':8,
        'sex':'gril'
    },
    3:{
        'name':'小曼',
        'age':18,
        'class_number':'A',
        'sex':'gril'
    },
    4:{
        'name':'小高',
        'age':18,
        'class_number':'B',
        'sex':'gril'
    },
    5:{
        'name':'小云',
        'age':18,
        'class_number':'B',
        'sex':'girl'

    }
}


if __name__ =='__main__':
    students_info = StudentInfo(students)
    user = students_info.get_by_id(1)
    students_info.add(name='dewei',age=31,class_number='A',sex='boy')
    users = [
        {'name':'xiaoming','age':17,'class_number':'B','sex':'girl'},
        {'name':'xiaoman','age':23,'class_number':'C','sex':'boy'}
    ]
    students_info.adds(users)
    students_info.get_all_students()
    print('--'*50)
    students_info.deletes([7,8])
    students_info.get_all_students()
    students_info.updates([
        {1:{'name':'dewei.zhang','age':18,'class_number':'A','sex':'boy'}},
        {2:{'name':'小幕同学','age':18,'class_number':'A','sex':'girl'}}
    ])
    print('*'*60)
    students_info.get_all_students()
    print('*' * 60)
    result = students_info.search_user(name='d')
    print(result)
    print('*' * 60)
    result = students_info.search_user(name='小')
    print(result)
    print('*' * 60)
    result = students_info.search_user(name='')
    print(result)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值