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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建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个大小字母排序))

参考技术A

  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);
           
       

参考技术B 有答案了嘛...求分享…… 参考技术C 你这是参加培训机构 留的作业吧!!!

java定义一个学生类,其中包含姓名、年龄、成绩的属性,之后由键盘输入学生的内容,并将内容保存在文件

定义一个学生类,其中包含姓名、年龄、成绩的属性,之后由键盘输入学生的内容,并将内容保存在文件中,所有的操作要求全部使用反射机制完成,即不能使用通过关键字new创建学生类对象的操作。
我想要代码啊,简单写写就行,火烧眉毛啊

Class Student
private String stuName;
private short stuAge;
private double stuScore;
//get,set方法...略
//toString()将所有信息返回


Class test
public static void main(String args[]) throws Exception
//根据反射机制获取Student类
Class.forName("Student.class");
//键盘输入可以用System.in
//将输入的值设置到Student 对象中
//由于是纯文本可以用BufferdWriter类写到一个文件中

参考技术A 从页面上获得学生内容,然后通过反射来实例化类,通过流写文件,你研究下Class类,这个问题就简单了,

以上是关于定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。OC的主要内容,如果未能解决你的问题,请参考以下文章

python定义一个学生类,包括学号、姓名和出生日期三个属性(数据成员);包括一个用

编写Java程序,用于显示学生的姓名和年龄、专业。

C++关于类的,两个题,大一下

JAVA:编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。

java定义一个学生类,其中包含姓名、年龄、成绩的属性,之后由键盘输入学生的内容,并将内容保存在文件

用java编写一个学生成绩管理系统. //1.学生类 学号 姓名 年龄 语数外三科成绩(三科成绩)?