Автор: Пользователь скрыл имя, 05 Декабря 2011 в 16:04, курсовая работа
Язык С++ , появившийся в начале 80-х годов, не только универсален, как язык Си, но и является средством объектного программирования, новейшей методикой проектирования и реализации программ. Главной целью создателя языка, доктора Бьерна Страустрапа, было оснащение языка С++ конструкциями, позволяющими увеличить производительность труда программистов и облегчить процесс овладения большими программными продуктами.
ВВЕДЕНИЕ……………………………………………………………3
Постановка задачи……………………………………………5
Спецификация системы……………………………………..5
3. Структура входных и выходных данных………………………………….7
4. Диаграмма классов…………………………..……………………………..8
5. Описание классов………………………………...…………………..…....10
6. Алгоритмы по шагам и блок- схемы функций .…………………………13
7. Текст программы…………………………………………………………..15
8. Результаты работы………………………………………………………...34
ЗАКЛЮЧЕНИЕ………………………………………………………………….35
Список использованной литературы…………………………………………...36
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=
_declspec(property(get=
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(
};
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==
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(reinter
}
else
{
*File >> tmp; // Запись потоково
}
return tmp;
}
template <class T>
void FWriter<T>::WriteStack(Stack<
Информация о работе Информационная система по учету автомобилей