定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。OC

10、 定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。(Objective-C)
1) 不使用@property,手动编写他们的访问器方法(getter和setter),注意内存管理(手动管理内存)
2) 增加一个便利构造器(快速构造器)
3) 使用NSLog输出学生对象时,输出信息格式为:My Name Is XXX Age Is XXX Score Is XXX
4) 对5个学生对象按照成绩—》年龄—》姓名优先级排序(成绩相同按照年龄排序,成绩年龄相同按照姓名排序(5个学生的属性值自己随便设定,姓名不考虑中文,按26个大小字母排序))

第1个回答  推荐于2018-05-17

  Student.h文件

  #import <Foundation/Foundation.h>

@interface Student : NSObject
{
    NSString *name;
    int age;
    float score;
}
-(void)setName:(NSString *)newname;
-(NSString *)name;
-(void)setAge:(int)newage;
-(int)age;
-(void)setScore:(float)newscore;
-(float)score;
-(Student *)initWithName:(NSString *)newname andAge:(int)newage andScore:(float)newscore;
+(Student *)studentWithName:(NSString *)newname andAge:(int)newage andScore:(float)newscore;
-(NSComparisonResult)compareWithScore:(Student *)stu;
-(NSComparisonResult)compareWithAge:(Student *)stu;
-(NSComparisonResult)compareWithName:(Student *)stu;
@end

Student.m文件

      #import "Student.h"

    @implementation Student
    -(void)setName:(NSString *)newname{
        name=newname;
    }
    -(NSString *)name{
        return name;
    }
    -(void)setAge:(int)newage{
        age=newage;
    }
    -(int)age{
        return age;
    }
    -(void)setScore:(float)newscore{
        score=newscore;
    }
    -(float)score{
        return score;
    }
    -(Student *)initWithName:(NSString *)newname andAge:(int)newage andScore:(float)newscore{
        self=[super init];
        if (self) {
            name=newname;
            age=newage;
            score=newscore;
        }
        return self;
    }
    +(Student *)studentWithName:(NSString *)newname andAge:(int)newage andScore:(float)newscore{
        Student *stu=[[Student alloc]initWithName:newname andAge:newage andScore:newscore];
        return stu;
    }
    -(NSComparisonResult)compareWithScore:(Student *)stu{
        NSComparisonResult result1;
        if (self.score>stu.score) {
            return NSOrderedDescending;
        }
        else if (self.score<stu.score){
            return NSOrderedAscending;
        }
        else{
            return NSOrderedSame;
        }
        return result1;
    }
    -(NSComparisonResult)compareWithAge:(Student *)stu{
        NSComparisonResult result2;
        if (self.age>stu.age) {
            return NSOrderedDescending;
        } else if(self.age<stu.age){
            return NSOrderedAscending;
        }
        else{
            return NSOrderedSame;
        }
        return result2;
    }
    -(NSComparisonResult)compareWithName:(Student *)stu{
        return [self.name compare:stu.name];
    }
    -(NSString *)description{
        NSString *str=[NSString stringWithFormat:@"%f,%d,%@",score,age,name];
        return str;
    }

    @end

    测试代码

   Student *stu=[Student new];
        [stu setScore:65.5];
        [stu setAge:21];
        [stu setName:@"zhangsan"];
        Student *stu1=[Student new];
        [stu1 setScore:70.3];
        [stu1 setAge:19];
        [stu1 setName:@"lisi"];
        Student *stu2=[Student new];
        [stu2 setScore:56.5];
        [stu2 setAge:18];
        [stu2 setName:@"wangwu"];
        Student *stu3=[Student new];
        [stu3 setScore:85.6];
        [stu3 setAge:25];
        [stu3 setName:@"mingming"];
        Student *stu4=[Student new];
        [stu4 setScore:95.4];
        [stu4 setAge:20];
        [stu4 setName:@"xionghong"];
        NSArray *stuArr=[NSArray arrayWithObjects:stu,stu1,stu2,stu3,stu4, nil];
        NSArray *sortArr=[stuArr sortedArrayUsingSelector:@selector(compareWithScore:)];
        NSLog(@"按成绩排序后:");
        for (int i=0; i<sortArr.count; i++) {
            Student *a=[sortArr objectAtIndex:i];
            NSLog(@"Myname is %@,age is %d,score is %f",a.name,a.age,a.score);
        }
        NSArray *sortArr1=[stuArr sortedArrayUsingSelector:@selector(compareWithAge:)];
        NSLog(@"按年龄排序后:");{
            for (int i=0; i<sortArr1.count; i++) {
                Student *a=[sortArr1 objectAtIndex:i];
                NSLog(@"Myname is %@,age is %d,score is %f",a.name,a.age,a.score);
            }
        }
        NSArray *sortArr2=[stuArr sortedArrayUsingSelector:@selector(compareWithName:)];
        NSLog(@"按姓名排序后:");{
            for (int i=0; i<sortArr2.count; i++) {
                Student *a=[sortArr2 objectAtIndex:i];
                NSLog(@"Myname is %@,age is %d,score is %f",a.name,a.age,a.score);
            }
        }

本回答被网友采纳
第2个回答  2014-09-27
有答案了嘛...求分享……
第3个回答  2014-09-25
你这是参加培训机构 留的作业吧!!!

编写一个JAVA程序,定义一个学生类Student,属性包含姓名,年龄,性别,根...
编写学生类Student,属性包含姓名,年龄,性别,根据该类分别创建五个学生对象,如下:public class Student {private String name;private int age;private String sex;public Student(String name,int age,String sex){this.name=name;this.age=age;this.sex=sex;}public static void main(String[] ar...

3. 定义一个Student类,包含学生的姓名、学号、年龄和所在院系,定义一个...
} public String getAccedemy() { return accedemy; } public void setAccedemy(String accedemy) { this.accedemy = accedemy; } public void Growth() { age=age+1; } } public class ArrayTest { public static void main(String[] args) { St...

java:定义学生类Student, 其中属性有 name, id, score ,分别表示姓 ...
getNo():获得学号;getName():获得姓名;getSex():获得性别;getAge()获得年龄;getJava():获得Java 课程成绩 (4)根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。*\/ class...

c语言 定义一个学生结构体类,包含学生姓名,性别,年龄和语文课程的成绩...
b; STUDENT *pStudent; printf("please input the first student name:\\r\\n"); scanf("%s", a.name); printf("please input the first student sex:\\r\\n");

java基础知识
5、定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性. 属性(成员变量)需要私有并提供get, set方法, 可以通过构造函数进行初始化。6、使用第5题定义的学生类创建5个对象, 属性可为任意值. 编程对这5个对象按成绩排序, 并将结果输出。7、编写程序拷贝一个文件. 尽量使用效率高的方式。8、UDP协议与...

用C#写,创建五个学生对象给一个学生数组赋值,每个学生属性有学号,姓 ...
namespace Test{ class Program { \/* * *1、封装一个被称为日期TDate类。用这个类存储年、月、日。 * 1)Show()成员函数显示某日期对象的信息,格式为日、月、年。 * 2)可运行在日期上加一天的操作成员函数add()(不考虑年底月底情况)。 * 3)设置日期。 *\/...

java定义一个学生类要求学号,姓名,年龄,三个成员变量
class Student{private int STU_NUM;private String STU_NAME;private int STU_AGE;public Student(int NUM,String NAME){this.STU_NAME=NAME;this.STU_NUM=NUM;}public Student(int NUM,String NAME,int AGE){this.STU_NAME=NAME;this.STU_NUM=NUM;this.STU_AGE=AGE;}} ...

定义一个学生类Student,包括如下属性:学生学号、姓名、年龄、专业、年级...
1、首先,定义一个数据结构student,包含学生的各信息。2、定义两个student类型的变量,保存所有学生的成绩信息和临时变量。3、定义一个自定义函数,输入学生的成绩信息。4、具体实现学生信息的输入,并计算总分。5、主函数中,先定义4个整型变量,保存学生的总数,以及控制循环的变量。6、接着,输入学生...

设计一个学生类Student,记录学生的姓名、学号、数学成绩、英语成绩、计...
line = f.readline().split("\\n")[0] if line == "": break list.append(line)fileName = open('name.txt', 'w', encoding='utf-8')fileNumber = open('number.txt', 'w', encoding='utf-8')fileMath = open('math.txt', 'w', encoding='utf-8')...

定义一个表示学生的类student,包括属性:学号,姓名,性别,年龄;
1、新建一个272.php,如图所示:2、输入php网页的结构(<?php?>),如图所示:3、声明PHP与浏览器交互的文件类型和编码,如图所示:4、使用class关键字,定义一个Student类,代码如图所示:5、给Student类添加成员变量和成员方法,代码如图所示:6、给Student类,创建一个对象,代码:$s1=newStudent()。

相似回答