Информационная система по учету автомобилей

Автор: Пользователь скрыл имя, 05 Декабря 2011 в 16:04, курсовая работа

Описание работы

Язык С++ , появившийся в начале 80-х годов, не только универсален, как язык Си, но и является средством объектного программирования, новейшей методикой проектирования и реализации программ. Главной целью создателя языка, доктора Бьерна Страустрапа, было оснащение языка С++ конструкциями, позволяющими увеличить производительность труда программистов и облегчить процесс овладения большими программными продуктами.

Содержание

ВВЕДЕНИЕ……………………………………………………………3
Постановка задачи……………………………………………5
Спецификация системы……………………………………..5
3. Структура входных и выходных данных………………………………….7
4. Диаграмма классов…………………………..……………………………..8
5. Описание классов………………………………...…………………..…....10
6. Алгоритмы по шагам и блок- схемы функций .…………………………13
7. Текст программы…………………………………………………………..15
8. Результаты работы………………………………………………………...34
ЗАКЛЮЧЕНИЕ………………………………………………………………….35
Список использованной литературы…………………………………………...36

Работа содержит 1 файл

ОтчётБадеев.doc

— 367.50 Кб (Скачать)

      _declspec(property(get=getId, put=setId)) int Id;

      _declspec(property(get=getName, put=setName)) char* Name; 

      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=getId, put=setId)) int Id; 

      int getDistrictId() { return district_id; }

      void setDistrictId(int Id) { district_id = Id; }

      _declspec(property(get=getDistrictId, put=setDistrictId)) int DistrictId; 

      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=getId, put=setId)) int Id; 

      int getNumber() { return number; }

      void setNumber(int Number) { number = Number; }

      _declspec(property(get=getNumber, put=setNumber)) int Number; 

      int getParkingId() { return parking_id; }

      void setParkingId(int Id) { parking_id = Id; }

      _declspec(property(get=getParkingId, put=setParkingId)) int ParkingId; 

      char* getOwner() { return owner; }

      void setOwner(char *Owner) { strcpy(owner, Owner); }

      _declspec(property(get=getOwner, put=setOwner)) char* Owner; 

      char* getBrand() { return brand; }

      void setBrand(char *Brand) { strcpy(brand, Brand); }

      _declspec(property(get=getBrand, put=setBrand)) char* Brand; 

      char* getModel() { return model; }

      void setModel(char *Model) { strcpy(model, Model); }

      _declspec(property(get=getModel, put=setModel)) char* Model; 

      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() { // Запись пробела в текстовый файл

Информация о работе Информационная система по учету автомобилей