Министерство образования Республики Беларусь
Учреждение образования
Белорусский государственный университет
информатики и радиоэлектроники
Специальность: Маркетинг
КОНТРОЛЬНАЯ РАБОТА 1
по курсу «Объектно-ориентированное программирование
и проектирование»
Вариант № 1
Выполнил:
.
группа №702221с, шифр №21
Адрес: 220039, г. Минск, ул. Чкалова,
дом № 19, квартира № 3 е-мейл cardinal@iptel.by
Контрольная работа № 1
Класс. Объект. Конструкторы. Деструкторы. Массив объектов.
Задание:
Элементом класса является список студентов группы, который включает: фамилию, имя, отчество студента; номер группы(пять цифр и одна буква); средний балл и доход на одного члена семьи. Количество студентов в группе не более 30, но заранее не известно. Определите массив объектов указанного типа(групп не более 25).
Напишите программу представления места в общежитии. Общежитие в первую очередь представляется тем студентам, у кого доход на члена семьи меньше трех минимальных зарплат, затем остальным в порядке уменьшения среднего балла. Количество мест в общежитии задается с клавиатуры.
Выведите общий алфавитный список очерёдности представления мест в общежитие по всем группам.
В состав класса входят следующие функции-члены класса:
- конструктор с параметрами;
- конструктор копирования;
- деструктор;
- функция просмотра текущего состояния объектов PRINTQ.
Краткие теоретические сведения
Листинг программы:
Файл «Student.h»
#include <stdio.h>
#include <conio.h>
#include <string.h>
//информация о номере группы
class GroupNumber
{
public:
int num[5];//цифры номера группы
char ch; //буква в номере группы
};
//класс с информацией об однос студенте
class CStudent
{
char *fam; //фамилия
char *name; //имя
char *otch; //отчество
GroupNumber grNum; //номер группы
double srBall; //средний балл
double dochod; //доход на одного члена семьи
bool is_hostel; //признак, предоставлено ли место в общежитии
//true - предоставлено, false - нет
public:
CStudent();//конструкто по умолчанию
virtual ~CStudent();
CStudent &operator = (const CStudent &); //перегрузка оператора присваивания
void setGroupNumber(int array[], char gr_ch);//устанавливает значения в номер группы
void printGroupNumber();//выводит значение номера группы
void InitStudentData(); //метод для внесения информации об одном студенте
void PrintStudentData();//метод для вывода информации об одном студенте
double getDochod(); //получить значение свойства доход
double getsrBall(); //получить значение свойства средний балл
void setIs_hostel(bool to_give); //установить значение свойства is_hostel
bool getIs_hostel(); //получить значение свойства is_hostel
};
Файл «Student.cpp»
// Student.cpp: implementation of the CStudent class.
//
//////////////////////////////////////////////////////////////////////
#include "Student.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//конструкто по умолчанию
CStudent::CStudent()
{
//инициализация значениями по умолчанию
fam = new char [20];//фамилия
name = new char [20];//имя
otch = new char [20];//отчество
strcpy(fam, "QQQQQQ");
strcpy(name, "QQQQQQ");
strcpy(otch, "QQQQQQ");
//номер группы
for(int i = 0; i < 5; i++)
grNum.num[i] = i;
grNum.ch = 'a';
srBall = 0; //средний балл
dochod = 0; //доход на одного члена семьи
is_hostel = false; //место в общежитии не предоставлено
}
CStudent::~CStudent()
{
}
//////////////////////////////////////////////////////////////////////
// Implementation methods
//////////////////////////////////////////////////////////////////////
//перегрузка оператора присваивания
CStudent &CStudent::operator = (const CStudent & st)
{
if( this != &st) // проверка, не копирование ли объекта в себя
{
// освобождаем память старых строк
delete fam;
delete name;
delete otch;
// выделяем память под новые строки
fam = new char[ strlen(st.fam) ];
name = new char[ strlen(st.name) ];
otch = new char[ strlen(st.otch) ];
//копируем в текущий объект полученные значения
strcpy(fam, st.fam);
strcpy(name, st.name);
strcpy(otch, st.otch);
//присваиваем переданные значения номера группы текущему объекту
for(int i = 0; i < 5; i++)
grNum.num[i] = st.grNum.num[i];
grNum.ch = st.grNum.ch;
srBall = st.srBall; //средний балл
dochod = st.dochod; //доход на одного члена семьи
is_hostel = st.is_hostel; //место в общежитии не предоставлено
}
return *this;
}
//устанавливает значения в номер группы
void CStudent::setGroupNumber(int array[], char gr_ch)
{
//присваиваем переданные значения текущему объекту
for(int i = 0; i < 5; i++)
grNum.num[i] = array[i];
grNum.ch = gr_ch;
}
//выводит значение номера группы
void CStudent::printGroupNumber()
{
//выводится номер группы
printf("\n\ngr. ");
for(int i = 0; i < 5; i++)
printf("%d", grNum.num[i] );
printf("%c", grNum.ch );
}
//метод для внесения информации об одном студенте
void CStudent::InitStudentData()
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.