|
Лабораторная работа 4 По курсу "Объектноориентированный анализ и проектирование". На тему Контейнеры stl Задание
Лабораторная работа №4
По курсу "Объектно˗ориентированный анализ и проектирование".
На тему «Контейнеры STL» Задание Класс “Счет(Invoice)” с полями: расчетный счет (6 знаков) плательщика, расчетный счет покупателя, перечисляемая сумма, дата. Вывести информацию о суммах, снятых с задаваемого расчетного счета плательщика до задаваемой даты.
Перечень сигнатур методов с комментариями. Invoice:
print() – вывод информации о транзакции
Перегруженные операторы:
Operator- оператор который возвращает true если совпадают id и дата первого меньше чем дата второго;
Operator!= - проверка на неравенство по всем полям;
Operator< - первый критерий id покупателя, второй date;
Operator== проверка на равенство по всем полям;
Operator> первый критерий id покупателя, второй date.
InvoiceMap:
print() – вывод информации о транзакции
Перегруженные операторы:
Operator!= - проверка на неравенство по всем полям;
Operator< - сравнение по date;
Operator== проверка на равенство по всем полям;
Operator> сравнение по date.
Диаграмма классов Листинг: классы, методы, main. Проект Lab4M Source.cpp #include "Header.h" int main()
{
ifstream input;
input.open("inputM.txt");
if (!input.is_open())
{
printf("File error");
return 1;
}
vector buff(6);
map *> Data; while (!input.eof())
{
char rubbish;
input >> buff[0] >> buff[1] >> buff[2]
>> buff[3] >> rubbish >> buff[4] >> rubbish >> buff[5];
auto it = Data.find(buff[1]);
if (it == Data.end())
{
Data.insert(make_pair(buff[1], new set));
it = Data.find(buff[1]);
it->second->insert(InvoiceMap(buff));
}
else
{
it->second->insert(InvoiceMap(buff));
}
} while (true)
{
printf("\nEnter Buyer ID\n ");
cin >> buff[1];
auto it = Data.find(buff[1]);
if (it == Data.end())
{
printf("Incorrect ID\n");
continue;
}
printf("Enter the date (dd.mm.yyyy)\n ");
scanf("%d.%d.%d", &buff[3], &buff[4], &buff[5]);
InvoiceMap BuffToFind = InvoiceMap(buff);
printf(" *Begin*\n");
auto begin = it->second->begin();
auto end = it->second->end();
for (; begin!=end; begin++)
{
if (*begin > BuffToFind )begin->print();
}
printf(" *End*");
}
return 0;
}
Header.срр #include "Header.h" InvoiceMap::InvoiceMap()
{
sellerID = 0;
summ = 0;
date = 0;
} InvoiceMap::InvoiceMap(vector& input)
{
this->sellerID = input[0];
this->summ = input[2];
this->date = input[3] + input[4] * 100 + input[5] * 10000;
} bool InvoiceMap::operator<(const InvoiceMap & other)const
{
return this->date > other.date;
} bool InvoiceMap::operator>(const InvoiceMap & other)const
{
return this->date < other.date;
} bool InvoiceMap::operator==(const InvoiceMap & other)const
{
return this->date == other.date;
} bool InvoiceMap::operator!=(const InvoiceMap & other)const
{
return this->date != other.date;
} bool InvoiceMap::operator<( InvoiceMap & other)
{
return this->date > other.date;
} bool InvoiceMap::operator>( InvoiceMap & other)
{
return this->date < other.date;
}
void InvoiceMap::print()const
{
printf(" %06d %8d %2d.%02d.%04d\n", sellerID, summ, date % 100, (date % 10000) / 100, date / 10000);
return;
}
Header.h #pragma once
#include
#include
#include |
|
|