Автор: Пользователь скрыл имя, 05 Декабря 2011 в 16:04, курсовая работа
Язык С++ , появившийся в начале 80-х годов, не только универсален, как язык Си, но и является средством объектного программирования, новейшей методикой проектирования и реализации программ. Главной целью создателя языка, доктора Бьерна Страустрапа, было оснащение языка С++ конструкциями, позволяющими увеличить производительность труда программистов и облегчить процесс овладения большими программными продуктами.
ВВЕДЕНИЕ……………………………………………………………3
Постановка задачи……………………………………………5
Спецификация системы……………………………………..5
3. Структура входных и выходных данных………………………………….7
4. Диаграмма классов…………………………..……………………………..8
5. Описание классов………………………………...…………………..…....10
6. Алгоритмы по шагам и блок- схемы функций .…………………………13
7. Текст программы…………………………………………………………..15
8. Результаты работы………………………………………………………...34
ЗАКЛЮЧЕНИЕ………………………………………………………………….35
Список использованной литературы…………………………………………...36
_declspec(property(get=
_declspec(property(get=
friend ostream& operator<<(ostream& s, District& d); // Перегрузка операторов ввода/вывода
friend istream& operator>>(istream& s, District& d);
};
class Parking // Класс автостоянки
{
private:
int id; // Идентификатор
int district_id; // Идентификатор района
public:
int getId() { return id; } // функции доступа
void setId(int Id) { id = Id; }
_declspec(property(get=
int getDistrictId() { return district_id; }
void setDistrictId(int Id) { district_id = Id; }
_declspec(property(get=
friend ostream& operator<<(ostream& s, Parking& p); // Перегрузка операторов ввода/вывода
friend istream& operator>>(istream& s, Parking& p);
};
class Auto // Класс автомобиля
{
private:
int id; // идентификатор
int parking_id; // идентификатор автостоянки
int number; // номер машины
char owner[30]; // имя владельца
char brand[10]; // компания-производитель
char model[10]; // название модели
public:
int getId() { return id; } // Функции доступа
void setId(int Id) { id = Id; }
_declspec(property(get=
int getNumber() { return number; }
void setNumber(int Number) { number = Number; }
_declspec(property(get=
int getParkingId() { return parking_id; }
void setParkingId(int Id) { parking_id = Id; }
_declspec(property(get=
char* getOwner() { return owner; }
void setOwner(char *Owner) { strcpy(owner, Owner); }
_declspec(property(get=
char* getBrand() { return brand; }
void setBrand(char *Brand) { strcpy(brand, Brand); }
_declspec(property(get=
char* getModel() { return model; }
void setModel(char *Model) { strcpy(model, Model); }
_declspec(property(get=
friend ostream& operator<<(ostream& s, Auto& a); // Перегрузка операторов ввода/вывода
friend istream& operator>>(istream& s, Auto& a);
};
Класс Stack – разработанный класс
контейнер, реализованный в виде шаблонов
классов, для доступа к элементам списка.
Итератор реализован как отдельный класс.
В классе iterator выполнена перегрузка некоторых
операций, позволяющих манипулировать
узлом. Использование итераторов позволяет
пользователю манипулировать стэком,
при этом детали его реализации остаются
надежно скрытыми .
template<class TYPE>
struct qItem // Структура элементов стэка
{
TYPE data;
qItem *next;
};
template<class TYPE>
class Stack // Класс стэка
{
private:
friend class qIterator<TYPE>; // Дружественный класс итератор
qItem<TYPE> *first; // Указатель на первый элемент
public:
Stack() { first = NULL; }
void push(TYPE); // Вставить элемент
void pop(); // Изъять элемент
TYPE front(); // Получить первый элемент
bool empty(); // Пустой ли стэк
void clean(); // Очистить стэк
};
template<class TYPE>
class qIterator
{
private:
qItem<TYPE> *current;
Stack<TYPE> *qStack;
public:
void toBegin(); // Поставить итератор в начало стэка
qIterator(Stack<TYPE> *value); // Конструктор итератора с аргументов, в качестве стэка
qItem<TYPE>* next(); // Переход на следующий элемент
bool end(); // Последний ли элемент
bool empty(); // Пустой ли стэк
qItem<TYPE>* curr(); // Получить текущий элемент
qItem<TYPE>* operator++(); // Переход на следующий элемент
TYPE operator*(); // Получить текущий элемент
void setNext(qIterator<TYPE> pos); // Функция удаления элемента
};
В файле
“FWriter.h” описан класс для работы с файлами,
который записывает и читает стэки как
бинарно, так и потоково из файлов. Далее
содержимое:
template <class T>
class FWriter // Класс для работы с файлами
{
private:
bool binary; // Открыт бинарный файл
fstream *File; // Потоко файла
public:
FWriter() { binary = false; } // Стандартный конструктор
FWriter(const char *filename, ios_base::openmode mode = ios_base::in | ios_base::out) { Open(filename, mode); } // Конструктор с типом открытия файла
FWriter(fstream
*file) { binary = false; File = file; } //
Передача конструктору потока открытого
файла
bool Open(const char *filename, ios_base::openmode mode = ios_base::in | ios_base::out); // Открытие файла
bool Close(); //
Закрытие фалйа
fstream* getStream() { return File; } // Функция акксессор потока файла
void setStream(fstream *file) { File = file; } // Функция установщик потока файла
void setBinary(bool Binary) { binary = Binary; } // установка бинарного режима
bool CanReadBinary(); // Возможно ли читать файл бинарно
void writeDenlimiter() { // Запись пробела в текстовый файл
Информация о работе Информационная система по учету автомобилей