Методические указания к лабораторным работам
2-й семестр
Порядок выполнения лабораторных работ
Познакомиться с темой и целью лабораторной работы.
Изучить необходимые к выполнению лабораторной работы теоретические сведения и примеры программ.
Познакомиться с общим заданием к лабораторной работе и индивидуальным вариантом задания.
Написать и отладить программу решения задачи индивидуального варианта.
Протестировать работу программы на различных наборах исходных данных.
Продемонстрировать преподавателю работу программы.
Оформить отчет.
Защитить лабораторную работу.
Оборудование, технические средства, инструмент
Лабораторные работы выполняются в компьютерном классе, оснащенном персональными компьютерами. На компьютерах должна быть установлена система программирования, поддерживающая создание программ на С++ (например, Qt Creator, MS Visual C++ Express), система программирования на Java (например, NetBeans) и система программирования на С# (например, MS Visual C# Express).
Требования к оформлению отчета
Отчет по лабораторной работ должен содержать:
титульный лист;
цель работы;
задание к лабораторной работе (общее задание и индивидуальный вариант задания);
состав проекта и листинг программы;
тестовые примеры, иллюстрирующие все варианты работы программы.
Требования к защите лабораторных работ
После оформления отчета, лабораторную работу защищают, т. е. поясняют алгоритм работы программы и отвечают на контрольные вопросы.
Лабораторная работа №8. Перечисления в С++, Java и C#.
Цель работы: получить практические навыки работы с перечислимым типом данных в С++, Java и C#.
Задание 1
Изменить программу, созданную на C++ на основе задания 1 лабораторной работы № 1. Добавить в класс, созданный на основе индивидуального варианта, поле перечислимого типа и организовать работу с ним.
Пример 1
В листинге 1 представлена программа, в которой формируется исходный список студентов, список студентов с минимальным рейтингом, осуществляется поиск информации о рейтинге студента по его фамилии, а также формируется список студентов заочников. Исходный список студентов сортируется по фамилии. В программе используется перечислимый тип данных для задания формы обучения студента.
Для создания программы использовалась среда разработки Qt Creator 3.0 (основан на Qt 5.2.0). На рисунке 1 показан состав проекта программы.
Рисунок 1 – Состав проекта программы
Создание проекта в Qt Creator: Файл -> Новый файл или проект … -> Проект без использования Qt -> Простой проект на С++.
Компиляция, сборка и выполнение проекта: Сборка -> Запустить.
На рисунке 2 показан результат выполнения программы.
Листинг 1
// main.cpp
#include <iostream>
#include <string>
#include <cstdlib>
#include <iomanip>
using namespace std;
enum Type
{ OCH,
ZAOCH,
VECH
};
class Student
{ private:
string fam;
string name;
int grade; //рейтинг
Type typeob;
public:
Student(string fam, string name, int grade,Type typeob);
~Student();
string getfam();
string getname();
int getgrade();
Type gettypeob();
void output();
};
Student::Student(string fam, string name, int grade, Type typeob)
{ this->fam = fam;
this->name = name;
this->grade = grade;
this->typeob = typeob;
}
Student::~Student(){}
void Student::output()
{ string StrMyType[] = {"OCH", "ZAOCH", "VECH"};
cout << left << setw(10)<< fam;
cout << setw(10) << name;
cout << right << setw(4) << grade;
cout << setw(13)<< StrMyType[typeob] << endl;
}
string Student::getfam() { return fam;}
string Student::getname(){ return name;}
int Student::getgrade(){ return grade;}
Type Student::gettypeob(){ return typeob;}
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;
Student st[n] = { Student("Сидоров", "Иван", 80,OCH),
Student("Иванов", "Иван", 60, ZAOCH),
Student("Петров", "Петр", 70,ZAOCH) };
qsort(st,n,sizeof(Student), compare);
cout << "Список студентов: \n";
cout << left << setw(10) << "Фамилия" << setw(10)<< "Имя"
<< setw(10)<< "Рейтинг" << setw(10)<< "Форма обуч" << endl;
for(int i = 0; i<3; i++)
st[i].output();
string fam;
cout << "\nУкажите фамилию студента: "; cin >> fam;
int f = 0; int pr = 0;
for(int i = 0; i<n; i++)
if (st[i].getfam() == fam)
{ cout << "\nРейтинг студента "<< fam <<" - " << st[i].getgrade();
f = 1;
}
if (f == 0) cout << "\nНет в списке студента " << fam << endl;
int min = st[0].getgrade();
for(int i = 0; i<n; i++)
if (st[i].getgrade() < min)
min = st[i].getgrade();
cout << "\nСписок студентов с минимальным рейтингом: \n";
cout << left << setw(10) << "Фамилия" << setw(10)<< "Имя"
<< setw(10)<< "Рейтинг" << setw(10)<< "Форма обуч" << endl;
for(int i = 0; i<n; i++)
if (st[i].getgrade() == min)
st[i].output();
for (int i = 0; i < n; i++)
if (st[i].gettypeob() == ZAOCH)
{ pr = 1; break; }
if (pr == 1)
{ cout << "\nСписок студентов заочников: \n";
cout << left << setw(10) << "Фамилия" << setw(10)<< "Имя"
<< setw(10)<< "Рейтинг" << setw(10)<< "Форма обуч" << endl;
for (int i = 0; i < n; i++)
if (st[i].gettypeob() == ZAOCH)
st[i].output();
}
else cout << "Нет студентов заочников" << endl;
}
Рисунок 2 – Результат выполнения программы