⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 studentroster.java

📁 关于JAVA的代码连接数据库
💻 JAVA
字号:
package GradeManagement.model;

import GradeManagement.ComputeGrade;
import GradeManagement.Persistent;
import java.util.Iterator;

//学生花名册类
class StudentRoster {
  private  Object elementData[];
  private int size = 0;  // 已注册学生数

  //创建一个空花名册,初始容量为10
  public StudentRoster() {
    this(10);
  }

  // 创建一个初始大小的花名册
  public StudentRoster(int initialCapacity) {
    if (initialCapacity < 0)
      throw new IllegalArgumentException("无效大小参数: " + initialCapacity);
    this.elementData = new Object[initialCapacity];
  }

  // 动态调整花名册容量
  public synchronized void ensureCapacity(int minCapacity) {
    int oldCapacity = elementData.length;
    if (minCapacity > oldCapacity) {
      Object oldData[] = elementData;
      int newCapacity = (oldCapacity * 3)/2 + 1;
      if (newCapacity < minCapacity)
        newCapacity = minCapacity;
      elementData = new Object[newCapacity];
      System.arraycopy(oldData, 0, elementData, 0, size);
    }
  }// 方法ensureCapacity结束

  //返回花名册中学生人数
  public synchronized int size() {
    return size;
  }

  //检测花名册中否有学生登记
  public synchronized boolean isEmpty() {
    return size == 0;
  }

  //查找学号为xxx的学生并返回学生对象
  public synchronized Object findById(Object student) {
    for (int i = 0; i < size; i++)
      if (student.equals(elementData[i]))
        return elementData[i];
    return null;
  }

  //查找学号为xxx的学生成功返回下标,失败返回-1
  private synchronized int findByIdPosi(Object student) {
    for (int i = 0; i < size; i++)
      if (student.equals(elementData[i]))
        return i;
    return -1;
  }

  //增加一个学生
  public synchronized boolean addStudent(Object student) {
    ensureCapacity(size + 1);
    elementData[size++] = student;
    return true;
  }

  //删除一个学生
  public synchronized Object deleteStudent(Object student) {
    int pos = findByIdPosi(student);
    if (pos==-1) return null; //此学号不存在,不能删除
    Object oldValue = elementData[pos];
    int numMoved = size - pos - 1;
    if (numMoved > 0)
      System.arraycopy(elementData, pos+1, elementData, pos, numMoved);
    elementData[--size] = null;
    return oldValue;
  } // 方法deleteStudent结束

  // 返回所有学生
  public synchronized Object[] getAllStudent() {
    Object[] result = new Object[size];
    System.arraycopy(elementData, 0, result, 0, size);
    return result;
  } // 方法getAllStudent()结束

  // 清空花名册
  public synchronized void clearRoster() {
    for (int i = 0; i < size; i++)
      elementData[i] = null;
    size = 0;
  }

  //计算全部学生总成绩
  public synchronized int sum() {
    int sum = 0;
    if( !this.isEmpty())
      for( int i=0; i < size; i++)
        sum += ((ComputeGrade)elementData[i]).sum();
    return sum;
  }

   // 计算全体学生平均成绩
  public synchronized int average() {
    if( !this.isEmpty())
      return sum()/size;
    else return -1;
  } // 方法结束

  // 排序
  public synchronized void sort() {
    if( !this.isEmpty())
      for (int pass = 1; pass < size(); pass++) {
           for (int pair = 1; pair < size(); pair++) {
             if (((Comparable)elementData[pair - 1]).compareTo(
                              (Comparable)elementData[pair]) >0 ){
               swap(elementData,pair-1,pair);
             }
           } // 内层for结束
           try{
             Thread.sleep(2);
           } catch (InterruptedException e) {
             e.printStackTrace();
           }
         } // 外层for结束
      // java.util.Arrays.sort(elementData,0,size());
  } // sort方法结束

  private static void swap(Object x[], int a, int b) {
    Object t = x[a];
    x[a] = x[b];
    x[b] = t;
  } // swap方法结束


  //载入所有学生信息
  public synchronized boolean readRecords() {
    for (int i = 0; i < size; i++)
     if (!((Persistent)elementData[i]).readRecord())
       return false;
   return true;
  }

  //保存所有学生信息
  public synchronized boolean writeRecords() {
    for (int i = 0; i < size; i++)
     if(!((Persistent)elementData[i]).writeRecord()) return false;
    return true;
  }

   public synchronized Object getIndex(int index) {
     rangeCheck(index);
     return elementData[index];
   }

  public Iterator iterator() {
    return new Itr();
  }

  public synchronized Object get(int index) {
    rangeCheck(index);
    return elementData[index];
  }

  private synchronized void rangeCheck(int index) {
    if (index<0 || index>=size)
      throw new IndexOutOfBoundsException("Index: "+index+
                                              ",Size: "+size);
  }

  //迭代器类,提供顺序访问学生成绩籍
  private class Itr implements Iterator {
    int cursor = 0;
    int lastRet = -1;

    public boolean hasNext() {
      return cursor != size();
    }

    public Object next() {
      try {
         Object next = get(cursor);
         lastRet = cursor++;
         return next;
      } catch(IndexOutOfBoundsException e) {
         return null;
      }
    }

    public void remove() {}
  } // 内部类Itr结束
} // 类StudentRoster结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -