Перечисления в С++, Java и C# (Лабораторная работа № 8), страница 2

                      Student("Иванов", "Иван", oc2, ZAOCH),

                      Student("Петров", "Петр", oc3, ZAOCH) };

   cout << "Список студентов: \n";

   cout << left << setw(12) << "Фамилия" << setw(12)<< "Имя" << setw(12)<< "Рейтинг" <<

           setw(10)<< "Форма обуч"<< endl;

     qsort(st,n,sizeof(Student), compare);

    for(int i = 0; i<n; i++)

        st[i].output();

    float min = st[0].sr_ball();

    for(int i = 0; i<n; i++)

      if (st[i].sr_ball() < min)

         min = st[i].sr_ball();

    cout << "\nСписок студентов с минимальным рейтингом: \n";

    cout << left << setw(12) << "Фамилия" << setw(12)<< "Имя" << setw(12)<< "Рейтинг" <<

           setw(10)<< "Форма обуч"<< endl;

    for(int i = 0; i<n; i++)

    if (st[i].sr_ball() == min)

         st[i].output();

    cout << "\nУкажите фамилию студента: ";

    string fam;

    cin >> fam;

    int fl = 0;

    for(int i = 0; i<n; i++)

     {  string f =st[i].getfam();

        if (f == fam)

         { cout << "Рейтинг студента " << fam << " - " << st[i].sr_ball() << "\n";

           fl = 1;

          }

      }

    if (fl == 0)  cout << "\nНет в списке студента " << fam;

    int pr = 0;

    for (int i = 0; i < n; i++)

            if (st[i].gettypeob() == ZAOCH)

               { pr = 1; break; }

          if (pr == 1)

            { cout << "\nСписок студентов заочников: \n";

              cout << left << setw(12) << "Фамилия" << setw(12)<< "Имя"

                   << setw(12)<< "Рейтинг" << setw(10)<< "Форма обуч" << endl;

               for (int i = 0; i < n; i++)

                  if (st[i].gettypeob() == ZAOCH)

                      st[i].output();

             }

            else cout << "Нет студентов заочников" << endl;

   }

Рисунок 2 – Результат выполнения программы

Пример 2

В листинге 2 представлена программа на Java, в которой  определен класс Student. Класс Student содержит следующую информацию о студенте: фамилия, имя и оценки за экзамены по пяти предметах, форма обучения, дата рождения. Для описания даты рождения студента используется класс Calendar из пакета java.util. Форма обучения описывается переменной перечислимого типа данных. Метод sr_ball() рассчитывает рейтинг студента (средний балл по оценкам). Метод output() выводит информацию о студенте на экран. В классе также имеются: конструктор с параметрами, метод доступа к полю fam (фамилия), метод доступа к полю date (дата рождения) и метод доступа к полю typeob (форма обучения).

В методе main() создается массив объектов класса Student и выполняется его обработка: сортировка студентов по дате рождения, поиск студентов с минимальным рейтингом, поиск рейтинга студента по фамилии и поиск студентов заочников.

Программа включает два файла, которые входят в пакет javaapplication:

-  Student.java – файл с описанием класса Student;

- JavaApplication.java – файл с методом main() .

Для создания программы использовалась среда разработки NetBeans IDE 8.0. На рисунке 3 показан состав проекта программы.

Рисунок 3 – Состав проекта программы