一道不错的综合题

学生类:姓名、年龄、学号、成绩

班级类:班级名称、学生列表

                   显示所有学生

                   根据学号查找学生

                   添加一个学生

                   删除一个学生(学生对象、学号)

                   根据学号升序排序

                   根据成绩降序排序、
学生类
class Student():
    def __init__(self,name,age,sid,score):
        self.name=name;
        self.age=age;
        self.sid=sid;
        self.score=score;
    def __str__(self):
        return '[student name=%s age=%d sid=%d score=%d]'%(self.name,self.age,self.sid,self.score);

    __repr__=__str__;

班级类
class ClassDemo():
    def __init__(self,classname):
        self.classname=classname;
        self._students=[];
        self._student_dict={};


    # 添加学生
    def add_student(self,stu):
        self._students.append(stu);
        self._student_dict[stu.sid]=stu;

    # 显示
    def  show_all_students(self):
        for stu in self._students:
            print(stu);

    # 查找
    def search_student(self,sid):
        if(sid in self._student_dict):
            return self._student_dict[sid];
        return None;

    # 删除
    def del_student(self,sid):
        stu=self.search_student(sid);
        if(stu!=None):
            self._student_dict.pop(sid);
            self._students.remove(stu);
            print('删除成功');
        else:
            print('没有该学生');

    # 根据学号进行升序排序
    def sid_sort(self):
        for i in range(len(self._students)-1,0,-1):
            for j in range(0,i):
                if(self._students[j].sid>self._students[j+1].sid):
                    temp=self._students[j];
                    self._students[j]=self._students[j+1];
                    self._students[j+1]=temp;

    # 根据成绩降序排序
    def score_sort(self):
            for i in range(len(self._students) - 1, 0, -1):
                for j in range(0, i):
                    # 列表中的元素是学生对象
                    # 但是比较的是学生的学号信息
                    if self._students[j].score < self._students[j + 1].score:
                        # 交换两个学生对象的位置
                        temp = self._students[j]
                        self._students[j] = self._students[j + 1]
                        self._students[j + 1] = temp

测试类
from class1.zuoye.day002.disanti.student import Student;
from class1.zuoye.day002.disanti.classdemo import ClassDemo;
def main():
    g = ClassDemo("python1802")

    a=Student('张三',14,1001,55);
    b=Student('李四',16,1005,32);
    c=Student('王五',20,1003,16);

    # 添加学生 ,并显示出来
    g.add_student(a);
    g.add_student(b);
    g.add_student(c);
    g.show_all_students()
    print('============================================');

    # 查找
    print(g.search_student(1005));
    print('============================================')

    # 删除
    g.del_student(1003);
    g.show_all_students();
    print('============================================')

    # 学号排序
    g.sid_sort();
    g.show_all_students();
    print('============================================')

    # 成绩排序
    g.score_sort();
    g.show_all_students();






if __name__ == '__main__':
    main();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值