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

Автор: Пользователь скрыл имя, 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 Кб (Скачать)

      friend ostream& operator<<(ostream& s, Auto& a); // Перегрузка операторов ввода/вывода

      friend istream& operator>>(istream& s, Auto& a);

};  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Exception.h: 

#include <iostream>

#include <string>

using namespace std; 

class Exception // Класс исключений

{

protected:

      int code; // Код ошибки

      string message; // Сообщение ошибки

public:

      void setCode(int code) {this->code = code;}

      void setMessage(string message) { this->message = message; } 

      int getCode() { return code; }

      string getMessage() { return message; } 

      _declspec(property(get=getCode, put=setCode)) int Code; // Свойства

      _declspec(property(get=getMessage, put=setMessage)) string Message;

      Exception() { code = 0; message = ""; } // Конструкторы

      Exception(int code, string message) { this->code = code; this->message = message; }

};

class ArrayException : public Exception // Класс наследуется от класса исключений

{

public: ArrayException(string mess): Exception(4, mess) {} // Конструктор с установлением кода ошибки

};

class MemoryException  : public Exception

{

public: MemoryException(string mess) : Exception(3, mess) {}

};

class MathException : public Exception

{

public: MathException(string mess) : Exception(2, mess) {}

};

class FileException: public Exception

{

public: FileException(string mess) : Exception(6, mess) {}

};

class OverflowException : public Exception

{

public: OverflowException(string mess) : Exception(5, mess) {}

};  
 
 

FWriter.h:

#include <fstream>

#include <iostream>

using namespace std; 

template<class TYPE>

class Stack; 

template<class TYPE>

class qIterator; 

template<class TYPE>

class qItem; 

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

            if(!binary)

            {

                  if(File==NULL)

                  throw FileException("File is not opened");

                  *File << " ";

            }

      }

      bool isBinary() { return binary; } // Открыт ли бинарно

      bool eof() {  if(File==NULL) throw FileException("File is not opened"); return File->eof(); } // Конец файла

      __declspec(property(get = getStream, put = setStream)) fstream *Stream; // Свойство потока фалйа

      __declspec(property(get = isBinary, put = setBinary)) bool Binary; // Свойство бинарного открытия файла 

      T Read(); // Чтение одного элемента из файла

      int ReadInt(); // Чтение числа из файла

      T* ReadArray(int count); // Чтение массива, размером count, из файла

      Stack<T> ReadStack(); // Прочитать стэк из файла

      void Write(T obj); // Записать объект в файл

      void WriteInt(int obj); // Записать число в файл

      void WriteArray(T *obj, int count); // Записать массив в файл

      void WriteStack(Stack<T> obj); // Записать стэк в файл

};  

FWriter.cpp:

#include "FWriter.h" 

using namespace std; 

template <class T>

bool FWriter<T>::CanReadBinary()

{

      int cur_pos = File->tellg(); // Получение начальной позиции в файле

      File->seekg(0, ios::end); // Переход в конец файла

      int end_pos = File->tellg(); // Получение конечной позиции в фалйе

      File->seekg(cur_pos); // Переход в начало файла 

      return end_pos - cur_pos >= sizeof(T); // Если ещё есть место дл я элемента в файле, то можно читать бинарно

}

template <class T>

T FWriter<T>::Read() // Чтение объекта из файла

{

      if(File==NULL) throw FileException("File is not opened"); // Если файл не открыт, то переход к исключению

      T tmp; 

      if(binary)

      {

            File->read(reinterpret_cast<char*>(&tmp), sizeof(tmp)); // Запись бинарно

      }

      else

      {

            *File >> tmp; // Запись потоково

      }

      return tmp;

}

template <class T>

void FWriter<T>::WriteStack(Stack<T> obj) // функция записи в файл стэка

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