Лабораторная работа №8. Перечисления в С++, Java и C#.
Цель работы: получить практические навыки работы с перечислимым типом данных в С++, Java и C# и научиться работать с классом Calendar (GregorianCalendar) в Java и классом DateTime в C#.
Изменить программу, созданную на C++ на основе задания лабораторной работы № 4. Добавить в класс индивидуального варианта поле перечислимого типа данных и выполнить поиск объектов по этому полю.
Изменить программу, созданную на Java на основе задания лабораторной работы № 4. Добавить в класс, созданный на основе индивидуального варианта, поле типа Calendar (GregorianCalendar) и поле перечислимого типа данных. Выполнить сортировку объектов по полю типа Calendar (GregorianCalendar) и поиск объектов по полю перечислимого типа данных.
Изменить программу, созданную на C# на основе задания лабораторной работы № 4. Добавить в класс, созданный на основе индивидуального варианта, поле типа DateTime и поле перечислимого типа данных. Выполнить сортировку объектов по полю типа DateTime и поиск объектов по полю перечислимого типа данных.
В листинге 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),
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.