8.7 案例:学生类的设计

我们来写一个比较完整的类,Student类:

练习题

  • 按照要求设计Student类,每一道题都是在上一题的基础上增加方法,例如第X题完成的代码是AABB,那么第X+1题的代码就在AABB的基础上增加方法。不要删除上一题已完成的方法。
    1.添加静态函数isSameClazz (10分) [编程]
    静态函数isSameClazz,接收两个Student对象作为参数,如果这两个对象是同班,返回True,否则返回False。
    静态函数不需要对象就能调用,调用类似这样:
    Student.isSameClazz(st,st2);
    此题需要上一题的带一个整数的构造函数
    <code><div class='codeNewLine'><span class="comments">#测试代码</span></div><div class='codeNewLine'>st=Student(1)</div><div class='codeNewLine'>st.clazz=<span class='string'>"22软件1班"</span></div><div class='codeNewLine'>st2=Student(2)</div><div class='codeNewLine'>st2.clazz=<span class='string'>"22软件2班"</span></div><div class='codeNewLine'><span class='pyFunction'>print</span>(Student.isSameClazz(st,st2))</div><div class='codeNewLine'>st2.clazz=<span class='string'>"22软件1班"</span></div><div class='codeNewLine'><span class='pyFunction'>print</span>(Student.isSameClazz(st,st2)) <span class="comments">#注意用类直接引用静态函数</span></div><div class='codeNewLine'></div></code>
    
    2.设计一个类Student (10分) [编程]
    含有以下属性:
    name #姓名
    id #学号
    gender #性别
    clazz #班级
    major #专业
    3.(*)设计函数isSameClazz,接收一个Student对象作为参数,测试他们是不是同班同学,是的话返回True,否则返回False (10分) [编程]
    特别注意,此函数接受Student对象作为参数,不是String类型的clazz属性!
    st.isSameClazz(st2);例如这样的代码,st和st2都是Student对象,假如他们是同班同学(也就是clazz内容是一样的,clazz是字符串),返回True,否则返回False
    <code><div class='codeNewLine'><span class="comments"># 测试代码</span></div><div class='codeNewLine'>st=Student()</div><div class='codeNewLine'>st.clazz=<span class='string'>"22软件1班"</span></div><div class='codeNewLine'>st2=Student()</div><div class='codeNewLine'>st2.clazz=<span class='string'>"22软件2班"</span></div><div class='codeNewLine'><span class='pyFunction'>print</span>(st.isSameClazz(st2))</div><div class='codeNewLine'>st2.clazz=<span class='string'>"22软件1班"</span></div><div class='codeNewLine'><span class='pyFunction'>print</span>(st2.isSameClazz(st))</div></code>
    
    4.(*)写一个函数isSameMajor,接收一个student参数,测试他们是不是同专业,是的话返回True,否则返回False并打印出测试结果 (10分) [编程]
    参照上一题
    <code><div class='codeNewLine'><span class="comments">#测试代码</span></div><div class='codeNewLine'>st=Student()</div><div class='codeNewLine'>st.major=<span class='string'>"软件"</span></div><div class='codeNewLine'>st2=Student()</div><div class='codeNewLine'>st2.major=<span class='string'>"人工智能"</span></div><div class='codeNewLine'><span class='pyFunction'>print</span>(st.isSameMajor(st2))</div><div class='codeNewLine'>st2.major=<span class='string'>"人工智能"</span></div><div class='codeNewLine'><span class='pyFunction'>print</span>(st2.isSameMajor(st))</div></code>
    
    5.(**)设计没有参数没有返回值的函数checkId,用来检测Id是否为空(id==""),假如为空值,那么打印“id值为空,请设置”,否则打印出id值。 (10分) [编程]
    <code><div class='codeNewLine'><span class="comments"># 测试代码</span></div><div class='codeNewLine'>st=Student()</div><div class='codeNewLine'>st.checkId()</div><div class='codeNewLine'>st.id=<span class='string'>"20231158794"</span></div><div class='codeNewLine'>st.checkId()</div></code>
    
    6.修改构造函数,接受一个参数,参数将赋值到对象的id属性,参数的默认值是100 (10分) [编程]
    <code><div class='codeNewLine'><span class="comments">#测试代码</span></div><div class='codeNewLine'>st=Student(<span class='string'>"12345"</span>)</div><div class='codeNewLine'><span class='pyFunction'>print</span>(st.id) <span class="comments">#应该打印12345</span></div><div class='codeNewLine'></div><div class='codeNewLine'>st=Student()</div><div class='codeNewLine'><span class='pyFunction'>print</span>(st.id)<span class="comments">#应该打印100</span></div></code>