Информационная система по учету автомобилей
Министерство образования Республики Беларусь
Учреждение образования
«Белорусский государственный
университет
информатики и
Кафедра экономической информатики
Инженерно-экономический
факультет
Пояснительная записка
к расчётной работе по курсу
«Объектно-ориентированное проектирование и программирование»
На тему:
«Информационная
система по учету автомобилей»
Выполнил:
Руководитель:
Минск 2011
СОДЕРЖАНИЕ
ВВЕДЕНИЕ…………………………………………………………
- Постановка задачи……………………………………………5
- Спецификация системы……………………………………..5
3. Структура входных и выходных данных………………………………….7
4. Диаграмма
классов…………………………..……………………………
5. Описание
классов………………………………...………………….
6. Алгоритмы по шагам и блок- схемы функций .…………………………13
7. Текст
программы………………………………………………………
8. Результаты
работы………………………………………………………...
ЗАКЛЮЧЕНИЕ……………………………………………………
Список использованной
литературы…………………………………………...
ВВЕДЕНИЕ
Язык С++ , появившийся в начале 80-х годов, не только универсален, как язык Си, но и является средством объектного программирования, новейшей методикой проектирования и реализации программ. Главной целью создателя языка, доктора Бьерна Страустрапа, было оснащение языка С++ конструкциями, позволяющими увеличить производительность труда программистов и облегчить процесс овладения большими программными продуктами.
Среди достоинств языка C++ можно выделить:
- C++ — чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения.
- Поддерживаются различные стили и технологии программирования.
- Высокая совместимость с языком Си, позволяющая использовать весь существующий Си-код (код на Си может быть с минимальными переделками скомпилирован компилятором C++; библиотеки, написанные на Си, обычно могут быть вызваны из C++ непосредственно без каких-либо дополнительных затрат, в том числе и на уровне функций обратного вызова).
- С++ – удобный язык. Он достаточно структурирован, чтобы поддерживать хороший стиль программирования, и вместе с тем не связан жесткими ограничениями.
- В некотором смысле язык Си – самый универсальный, т.к. кроме набора средств, присущих современным языкам программирования высокого уровня (структурность, модульность, определенные типы данных), в него включены средства для программирования практически на уровне ассемблера. Большой набор операторов и средств требуют от программиста осторожности, аккуратности и хорошего знания языка со всеми иго преимуществами и недостатками.
- Предсказуемое выполнение программ является важным достоинством для построения систем реального времени.
- Пользовательские функции-операторы позволяют кратко и ёмко записывать выражения над пользовательскими типами в естественной алгебраической форме.
- Используя шаблоны, возможно создавать обобщённые контейнеры и алгоритмы для разных типов данных, а также специализировать и вычислять на этапе компиляции.
- Автоматический вызов деструкторов объектов при их уничтожении, причём в порядке, обратном вызову конструкторов. Это упрощает и делает более надёжным освобождение ресурсов.
- Эффективность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Ни одна из языковых возможностей, приводящая к дополнительным накладным расходам, не является обязательной для использования — при необходимости язык позволяет обеспечить максимальную эффективность программы.
Отвечая требованиям
современного программирования, C++ делает
акцент на разработке новых типов данных
наиболее полно соответствующих концепциям
выбранной области знаний и задачам приложения.
Класс является ключевым понятием C++. Описание
класса содержит описание данных, требующихся
для представления объектов этого типа
и набор операций для работы с подобными
объектами. Также классы обеспечивают
три самых важных свойства ООП: инкапсуляцию,
наследование и полиморфизм.
- ПОСТАНОВКА ЗАДАЧИ И ОБЗОР МЕТОДОВ
1.1 Задание
Необходимо
организовать Информационную систему
по учету автомобилей. Организовать автостоянки
по районам. Осуществлять поиск автомобилей
на конкретной автостоянке и по всем автостоянкам
по владельцу, по номеру автомобиля, по
маркам автомобиля. Добавление, удаление
автомобилей со стоянок. Данные хранить
в различных файлах. Разработать и использовать
в программе классы контейнеров и итераторов.
Производить обработку исключительных
ситуаций.
1.2
Постановка задачи
Необходимо реализовать
С точки зрения предметной
области, задачи, налагаемые на
систему, сводятся к следующим:
Таким образом, конечная
В связи с этим выделим возможности, реализованные в конечном программном продукте:
- добавление нового автомобиля в список с последующей записью его в файл;
- просмотр всех автомобилей, существующих на данный момент (загрузка из файла);
- удаление автомобилей из файла;
- Добавление новой автостоянки;
- Добавление нового района
- возможность поиска автомобилей , поиск осуществляется по марке машины, её модели или же по владельцу
- обеспечение удобного меню с подразделами;
- выявление ошибок обработки команд, показ информационных сообщений в случае ошибок.
1.3 Обзор методов
Для успешной реализации поставленных задач существует множество методов решения. Среди основных можно выделить:
- Создание программного продукта средствами Microsoft Visual C++ 8.0, используя объектно-ориентированную технологию и язык программирования С++;
- создание полноценной реляционной базы данных средствами Microsoft SQL Server 2005 и др.
Для данного
проекта выбираем созданию продукта
с использованием MS Visual C++ 8.0, т.к. эта
система наиболее полно подходит для реализации
поставленных задач. Конечный продукт
с некоторыми доработками может быть использован
сотрудниками автостоянок без какого-либо
обучения и специальной подготовки, в
то время как использование конечной
реализации в MS SQL Server требует дополнительных
знаний и навыков.
2 СТРУКТУРА ВХОДНЫХ И ВЫХОДНЫХ ДАННЫХ
2.1 Структура входных данных
Входная информация включает в себя данные о автостоянках и автомобилях. Входные данные вводятся с клавиатуры и затем сохранятся в файле.
Структура входных данных о районах включает:
class District // Класс района
{
private:
int id; // идентификатор
char name[30]; // название района
}
Структура входных данных об автостоянках включает:
class Parking // Класс автостоянки
{
private:
int id; // Идентификатор
int district_id; // Идентификатор района
}
Структура входных данных об автомобилях включает:
class Auto // Класс автомобиля
{
private:
int id; // идентификатор
int parking_id; // идентификатор автостоянки
int number; // номер машины
char owner[30]; // имя владельца
char brand[10]; // компания-производитель
char model[10]; // название модели
}
Выходная информация представляет
собой информацию о хранящихся
автомобилях, формируется с использованием
входной информации
- Диаграмма классов
4
ОПИСАНИЕ КЛАССОВ И
СТРУКТУР
В файле «classes.h»
находится описание классов данных о районах,
автостоянках и автомобилях (District, Parking,
Auto). Содержимое классов:
class District // Класс района
{
private:
int id; // идентификатор
char name[30]; // название района
public:
int getId() { return id; } // функции доступа
void setId(int Id) { id = Id; }
char* getName() { return name; }
void setName(char *Name) { strcpy(name, Name); }
_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() { // Запись пробела в текстовый файл

- Информационная система по учету банковских операций
- Информационная система по учету детей МКДОУ ЗАТО Знаменск ДСОВ №9 «Аленький цветочек»
- Информационная система предприятия
- Информационная система «Приемная комиссия»
- Информационная система птицефабрики
- Информационная система распознавания буквы «Ф» построенной на основании нейронной сети
- Информационная система ремонтной мастерской
- Информационная система оценки инновационного потенциала НТО и предприятия и их соотнесение на основе WEB технологий
- Информационная система «Парус 8.х»
- Информационная система по бетоносмесителям
- Информационная система поддержки поставок скоропортящихся продуктов
- Информационная система поддержки работы предприятия ООО «Формула»
- Информационная система «Поликлиника «Добрый доктор»»
- Информационная система поставок для промышленных предприятий