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

Страницы работы

Содержание работы

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

Цель работы: получить практические навыки работы с перечислимым типом данных в С++, Java и C# и научиться работать с классом Calendar (GregorianCalendar) в Java и классом DateTime в C#.

Задание 1

Изменить программу, созданную на C++ на основе задания  лабораторной работы № 4. Добавить в класс индивидуального варианта поле перечислимого типа данных и выполнить поиск объектов по этому полю.

Задание 2

Изменить программу, созданную на Java на основе задания  лабораторной работы № 4. Добавить в класс, созданный на основе индивидуального варианта, поле типа Calendar (GregorianCalendar) и поле перечислимого типа данных. Выполнить сортировку объектов по полю типа Calendar (GregorianCalendar)  и поиск объектов по полю перечислимого типа данных.

Задание 3

Изменить программу, созданную на C# на основе задания  лабораторной работы № 4. Добавить в класс, созданный на основе индивидуального варианта, поле типа DateTime и поле перечислимого типа данных. Выполнить сортировку объектов по полю типа DateTime и поиск объектов по полю перечислимого типа данных.

Пример 1

В листинге 1 представлена программа на С++, в которой определен класс Student. Класс Student содержит следующую информацию о студенте: фамилия, имя, оценки за экзамены по пяти предметах, форма обучения. Форма обучения описывается переменной перечислимого типа данных.Метод sr_ball() рассчитывает рейтинг студента (средний балл по оценкам). Метод output() выводит информацию о студенте на экран. В классе также имеются:  конструктор с параметрами, метод доступа к полю fam (фамилия) и метод доступа к полю typeob (форма обучения).

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

Программа включает три файла:

-  student.h – файл с объявлением класса Student;

-  student.cpp -  файл с определением методов класса Student;

- main.сpp – файл с функцией main() и функцией compare().

Для создания программы использовалась среда разработки Qt Creator 3.0.0 (основан на Qt 5.2.0). На рисунке 1 показан состав проекта программы.

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

Создание проекта в Qt Creator: Файл -> Новый файл или проект … -> Проект без использования Qt -> Простой проект на С++.

Добавление класса в проект: Файл -> Новый файл или проект … -> С++ -> Класс С++.

Компиляция, сборка и выполнение проекта: Сборка -> Запустить.

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

Листинг  1

 // student.h

#ifndef STUDENT_H

#define STUDENT_H

#include <string>

using namespace std;

enum Type

    {   OCH,

        ZAOCH,

        VECH

    };

class Student

 { private:

     string fam;

     string name;

     Type typeob; //форма обучения

     int oc[5]; //оценки

   public:

    Student(string fam, string name,int oc[], Type typeob);

    ~Student();

    string getfam();

    Type gettypeob();

    void output();

    float sr_ball(); //рейтинг - средний балл

 };

#endif // STUDENT_H

// student.cpp

#include "student.h"

#include <iostream>

#include <iomanip>

using namespace std;

Student::Student(string fam, string name,int oc[], Type typeob)

 { this->fam = fam;

   this->name = name;

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

     this->oc[i] = oc[i];

   this->typeob = typeob;

 }

Student::~Student(){ }

string Student::getfam() { return fam;}

Type Student::gettypeob(){ return typeob;}

void Student::output()

 {  string StrMyType[] = {"OCH", "ZAOCH", "VECH"};

    cout << left << setw(12)<< fam;

    cout << setw(12) << name;

    cout << setw(12) << sr_ball();

    cout << setw(12)<< StrMyType[typeob] << endl;

 }

float Student::sr_ball()

 { float ball = 0;

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

      ball = ball + oc[i];

    ball = ball/5;

   return ball;

 }

// main.cpp

#include "student.h"

#include "student.h"

#include <iostream>

#include <iomanip>

#include <string>

#include <cstdlib>

using namespace std;

int compare(const void* s1, const void* s2)

{ if (((Student*)s1)->getfam() < ((Student*)s2)->getfam()) return -1;

    else if (((Student*)s1)->getfam() > ((Student*)s2)->getfam()) return 1;

             else return 0;

 }

int main()

{

    const int n = 3;

    int oc1 [5]= {56, 67, 45, 34, 50};

    int oc2 [5]= {80, 67, 75, 80, 50};

    int oc3 [5]= {56, 67, 45, 34, 50};

    Student st[n] = { Student("Сидоров", "Иван", oc1, OCH),

Похожие материалы

Информация о работе