Python 测开27期 - WL - 学习笔记 - 作业3

项目简介:随着学校的规模变大,对应的学员回越来越多,相应的管理越来越难。 学员信息管理系统主要是对学员的各种信息进行管理,能够让学员的信息关系变得科学化、系统化和规范化。
知识点:实体类、成员变量属性
方法:输入与输出、异常类
受众:高级测试工程师
作业要求:

  1. 编写学员实体类 Student,对应成员变量包含:学号 id、姓名 name、性别 sex;
  2. 编写学员管理类 StudentManagement ,实现添加学员方法 addStudent();
  3. 编写StudentManagement的main()方法进行学员信息的添加:
    学号:1001,姓名:张三,性别:男。
    学号:1002,姓名:莉丝,性别:女。
    学号:1003,姓名:王武,性别:男。
  4. 编写学员管理类 StudentManagement ,实现删除学员方法 deleteStudent(),根据学员id 删除以下学员:
    学号:1002,姓名:莉丝,性别:女。
  5. 控制台打印字符串界面,提示用户根据编号选择对应功能,界面功能如下:
    1.根据学号查看学员信息 2.添加学员 3.查看所有学员信息
  6. 自定义异常类:添加学员传入参数不合理时抛出自定义异常
list = [[1001, "张三", "男"], [1002, "莉丝", "女"], [1003, "王武", "男"]]
sutdent = []
sutdents = []

class Student:
    def __init__(self, id, name, sex):
        self.id = id
        self.name = name
        self.sex = sex
class StudentManagement:
    def adstu(func):
        def inner(*args, **kwargs):
            print('添加学员信息如下:')
            func(*args, **kwargs)
        return inner
    @adstu
    def addStudent(self):
        for i in range(0, len(list)):
            aa = list[i]
            ss = Student(aa[0], aa[1], aa[2])
            print(f'学号:{ss.id},姓名:{ss.name},性别:{ss.sex}')
            sutdent.append({"id": ss.id, "name": ss.name, "sex": ss.sex})
    def main(self):
        ss = StudentManagement.addStudent(list)
    def destu(func):
        def inners(*args, **kwargs):
            print('要删除的学员信息如下:')
            func(*args, **kwargs)
        return inners
    @destu
    def deleteStudent(self):
        for k in range(0, len(sutdent)):
            if int(sutdent[k]["id"]) == 1002:
                sss = sutdent[k]
                dd = Student(sss["id"], sss["name"], sss["sex"])
                print(f'学号:{dd.id},姓名:{dd.name},性别:{dd.sex}')
                sutdent.pop(k)
                break
            else:
                continue
    def dedadd(func):
        def innerss(*args, **kwargs):
            print('删除后的学员信息如下:')
            func(*args, **kwargs)
        return innerss
    @dedadd
    def new_addn(self):
        for j in range(0, len(sutdent)):
            cc = sutdent[j]
            # print(cc)
            dd = Student(cc["id"], cc["name"], cc["sex"])
            # print(f'dd={dd}')
            print(f'学号:{dd.id},姓名:{dd.name},性别:{dd.sex}')
            sutdents.append({"id": dd.id, "name": dd.name, "sex": dd.sex})
StudentManagement.main(list)
StudentManagement.deleteStudent(sutdent)
StudentManagement.new_addn(sutdent)

控制台交互部分

newlist = [[1001, "张三", "男"], [1002, "莉丝", "女"], [1003, "王武", "男"]]

class Stu_sql:
    def leder_list():
        print('------------欢迎来到学员信息管理系统------------')
        print('            1. 根据学号查看学员信息')
        print('            2. 添加学员')
        print('            3. 根据学号删除学员后,查看所有学员信息')
        print('            4. 查询当前所有学员信息')
        print('            5. 退出系统')
    def addstu():
        id = input('请输入学员编号:')
        name = input('请输入学员姓名:')
        sex = input('请输入学员性别:')
        lis = [id, name, sex]
        newlist.append(lis)
        print(f'添加成功,添加的学员信息为:学号:{id},姓名:{name},性别:{sex}')
    def delstu():
        id = input('请输入想要删除的学员编号:')
        for k in range(0, len(newlist)):
            if int(id) == newlist[k][0]:
                dd = newlist[k]
                print(f'学号:{dd[0]},姓名:{dd[1]},性别:{dd[2]}')
                newlist.pop(k)
                print(f'删除成功,删除的学员信息为:学号:{dd[0]},姓名:{dd[1]},性别:{dd[2]}')
                break
    def lookall():
        if newlist != []:
            for k in range(0, len(newlist)):
                sss = newlist[k]
                print(f'学号:{sss[0]},姓名:{sss[1]},性别:{sss[2]}')
        else:
            print('学员信息为空')
    def lookone(number):
        if newlist != []:
            sss = newlist[int(number)]
            print(f'学号:{sss[0]},姓名:{sss[1]},性别:{sss[2]}')
        else:
            print('学员信息为空')
    def look_list():
        Stu_sql.leder_list()
        number = input('请输入你的选择:')
        if number in [1,2,3,4,5,'1','2','3','4','5']:
            asas = []
            for a in range(0, len(newlist)):
                asas.append(str(newlist[a][0]))
            if number == 1 or number == '1':
                userid = input('请输入想要查找的学员编号:')
                Stu_sql.lookone(number)
            elif number == 2 or number == '2':
                Stu_sql.addstu()
                Stu_sql.lookall()
            elif number == 3 or number == '3':
                Stu_sql.delstu()
                print('删除后的学员信息为:')
                Stu_sql.lookall()
            elif number == 4 or number == '4':
                Stu_sql.lookall()
            elif number == 5 or number == '5':
                print('退出成功')
        else:
            print(f'您的输入错误:{number}')
    def main():
        Stu_sql.look_list()
if __name__ == '__main__':
    try:
        Stu_sql.main()
    except Exception as e:
        print(f'报错信息是{e}')