快捷搜索: 王者荣耀 脱发

OC学生成绩管理类(二 Classroom教室类)

Classroom.h文件

//
//  Classroom.h
//  练习 类 学生成绩管理
//
//  Created by dllo on 15/11/27.
//  Copyright © 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Student.h"
@interface Classroom : NSObject
{
    // 成员变量
    NSInteger _stuNumber;
    NSString *_classroomName;
    CGFloat _classroomAverageScore;
    NSMutableArray *_studentTable;
}
// 方法
// 自定义初始化方法
- (id)initWithName:(NSString *)name;

// 向班级中添加学生
- (void)addStudent:(Student *)student;

// 输出所有的学生信息
- (void)printAllStudentInfo;

// 返回班级的平均分
- (CGFloat)classroomAverage;

// 按分数降序输出所有信息
- (void)printAllStudentInfoByDescending;

// 输出有没及格的课的学生信息
- (void)printFailStudent;

// 输出成绩在班级平均分一下的同学
- (void)printStudentScoreUnderAverage;
@end

Classroom.m文件
//
//  Classroom.m
//  练习 类 学生成绩管理
//
//  Created by dllo on 15/11/27.
//  Copyright © 2015年 dllo. All rights reserved.
//

#import "Classroom.h"

@implementation Classroom

// 自定义初始化方法
- (id)initWithName:(NSString *)name{
    self = [super init];
    if(self){
        _classroomName = name;
        _classroomAverageScore = 0.0;
        _stuNumber = 0;
        _studentTable = [NSMutableArray arrayWithCapacity:10];
    }
    return self;
}
// 向班级中添加学生
- (void)addStudent:(Student *)student{
    [_studentTable addObject:student];
    _stuNumber++;
}

// 返回班级的平均分
- (CGFloat)classroomAverage{
    _classroomAverageScore = 0;
    for(int i = 0; i < _stuNumber; i++){
        _classroomAverageScore += [[_studentTable[i] score] averageScore];
    }
    
    return _classroomAverageScore /=(_stuNumber * 1.0);
}
// 按学号输出所有的学生信息
- (void)printAllStudentInfo{
    NSLog(@"按学号排序输出所有的信息!");
    // 输出班级的基本信息
    NSLog(@"%@   %ld人 平均分:%0.2f",
          _classroomName,_stuNumber,
          [self classroomAverage]);
    // 冒泡排序
    for(int i = 0; i < _stuNumber - 1 ; i++){
        for(int j = 0; j < _stuNumber - 1 - i; j++){
            if([[_studentTable[j] stuId] compare:[_studentTable[j + 1] stuId]] < 0){
                Student *temp = _studentTable[j];
                _studentTable[j] = _studentTable[j + 1];
                _studentTable[j + 1] = temp;
            }
        }
        // 输出
        [_studentTable[_stuNumber - 1 - i] printInfo];
    }
    // 输出
    [_studentTable[0] printInfo];
}
// 按分数降序输出所有信息
- (void)printAllStudentInfoByDescending{
    NSLog(@"按总分降序输出所有的信息!");
    // 输出班级的基本信息
    NSLog(@"%@   %ld人 平均分:%0.2f",
          _classroomName,_stuNumber,
          [self classroomAverage]);
    // 冒泡排序
    for(int i = 0; i < _stuNumber - 1; i++){
        for(int j = 0; j < _stuNumber - 1 - i; j++){
            if([[_studentTable[j] score] averageScore] > [[_studentTable[j + 1] score] averageScore]){
                Student *temp = _studentTable[j];
                _studentTable[j] = _studentTable[j + 1];
                _studentTable[j + 1] = temp;
            }
        }
        // 输出
        [_studentTable[_stuNumber - 1 - i] printInfo];
    }
    // 输出
    [_studentTable[0] printInfo];
}

// 输出有没及格的课的学生信息
- (void)printFailStudent{
    NSLog(@"有不及格课程的同学有:");
    for(int i = 0;i < _stuNumber; i++){
        if(([[_studentTable[i] score] mathScore] < 60)      ||
           ([[_studentTable[i] score] historyScore] < 60)   ||
           ([[_studentTable[i] score] englishScore] < 60)){
            
            [_studentTable[i] printInfo];
        }
    }
}

// 输出成绩在班级平均分以下的同学
- (void)printStudentScoreUnderAverage{
    NSLog(@"输出成绩在平均分以下的学生");
    for(int i = 0; i < _stuNumber; i++){
        if([[_studentTable[i] score] averageScore] < [self classroomAverage]){
            
            [_studentTable[i] printInfo];
        }
    }
}
@end


经验分享 程序员 微信小程序 职场和发展