Автор: Пользователь скрыл имя, 05 Декабря 2011 в 16:04, курсовая работа
Язык С++ , появившийся в начале 80-х годов, не только универсален, как язык Си, но и является средством объектного программирования, новейшей методикой проектирования и реализации программ. Главной целью создателя языка, доктора Бьерна Страустрапа, было оснащение языка С++ конструкциями, позволяющими увеличить производительность труда программистов и облегчить процесс овладения большими программными продуктами.
ВВЕДЕНИЕ……………………………………………………………3
Постановка задачи……………………………………………5
Спецификация системы……………………………………..5
3. Структура входных и выходных данных………………………………….7
4. Диаграмма классов…………………………..……………………………..8
5. Описание классов………………………………...…………………..…....10
6. Алгоритмы по шагам и блок- схемы функций .…………………………13
7. Текст программы…………………………………………………………..15
8. Результаты работы………………………………………………………...34
ЗАКЛЮЧЕНИЕ………………………………………………………………….35
Список использованной литературы…………………………………………...36
qIterator(Stack<TYPE> *value); // Конструктор итератора с аргументов, в качестве стэка
qItem<TYPE>* next(); // Переход на следующий элемент
bool end(); // Последний ли элемент
bool empty(); // Пустой ли стэк
qItem<TYPE>* curr(); // Получить текущий элемент
qItem<TYPE>* operator++(); // Переход на следующий элемент
TYPE operator*(); // Получить текущий элемент
void setNext(qIterator<TYPE> pos); // Функция удаления элемента
};
Menu.h:
#include <iostream>
#include <stdlib.h>
#include "classes.h"
#include "conio.h"
#include <queue>
#include <string>
#include "FWriter.cpp"
#include "stack.cpp"
using namespace std;
int TopMenu();
int DistrictMenu();
int ParkingMenu();
int AutoMenu();
Menu.cpp:
#include "menu.h"
char DBName[30];
Stack<District> Districts; qIterator<District> SelectedD(&Districts); // Объявление стэка и итератора районов
Stack<Parking> Parkings; qIterator<Parking> SelectedP(&Parkings); // Объявление стэка и итаратора автостоянок
Stack<Auto> Autos; // Объявление стэка автомобилей
int cinInt(char *message) // Функция ввода числа
{
int tmp = 0;
do
{
fflush(stdin); // Очистка потока stdin
cout << message; // Вывод сообщения на экран
cin >> tmp; // Ввод переменной
if(!cin.good()) // Пока есть ошибки
{
cin.ignore(
cin.clear(); // Очистка потока cin
cout << message; // Вывод сообщения
continue;
} else break;
} while(true);
return tmp;
}
bool SaveBase(char *DBN)
{
char *DistrictsPath = new char[strlen(DBN) + strlen("_ds.bad")]; // Выделение памяти под путь к файлу районов
char *ParkingsPath = new char[strlen(DBN) + strlen("_ps.bad")]; // -//- автостоянок
char *AutosPath = new char[strlen(DBN) + strlen("_as.bad")]; //
-//- автомобилей
strcpy(DistrictsPath, DBN); // Инициализация файла районов
strcpy(ParkingsPath, DBN); // -//- автостоянок
strcpy(AutosPath,
DBN); // -//-
автомобилей
strcat(DistrictsPath, "_ds.bad"); // добавление расширений
strcat(ParkingsPath, "_ps.bad");
strcat(AutosPath, "_as.bad");
FWriter<Parking> PWriter(ParkingsPath, ios::out | ios::binary); // Создание объектов для бинарной записи в файл
FWriter<Auto> AWriter(AutosPath, ios::out | ios::binary);
FWriter<District>
DWriter(DistrictsPath, ios::out | ios::binary);
DWriter.WriteStack(
PWriter.WriteStack(
AWriter.WriteStack(
DWriter.Close(); // Закрытие файлов
PWriter.Close();
AWriter.Close();
return true;
}
template <class T>
void ShowStack(Stack<T> *Q) // Функция вывода стэка на экран
{
for(qIterator<T> pos(Q); !pos.end(); pos++) // объявление итератора и проход по циклу
{
cout << *pos << endl; // Вывод каждого элемента
}
}
template <class T>
int GetNewId(Stack<T> *Q) // Функция получения нового идентификатора в стэке
{
int max = 0;
for(qIterator<T> pos(Q); !pos.end(); pos++) // объявление итератора и проход по циклу
{
if((*pos).Id > max) max = (*pos).Id; // поиск максимального идентификатора
}
return ++max; // возврат идентификатора увеличиного на единицу
}
void AddCar() // Функция ввода новой машины
{
system("cls"); // Очистка экрана
Auto new_A;
cin >> new_A; // Ввод нового автомобиля
new_A.Id = GetNewId(&Autos); // Получение идентификатора
new_A.ParkingId = (*SelectedP).Id;
Autos.push(new_A); // Добавление в стэк
}
template <class T>
void DeleteItem(Stack<T> *Q, int id) // Функция удаления элемента с идентификатором
{
qIterator<T>
pos(Q), pos2(Q); //
Объявления итераторов
for(;!pos.end(); pos++) // проход по циклу
{
if((*pos).Id == id)
{ pos++; pos2.setNext(pos); break; } // Удаление элемента
pos2++;
}
}
template <class T>
void AddItemToStack(Stack<T> *Q, bool genid) // Добавить новый элемент в стэк
{
system("cls"); // Очистка экрана
T new_I;
cin >> new_I; // Ввод нового элемента
if(genid) // Если необходимо, сгенерировать идентификатор для элемена
new_I.Id = GetNewId(Q);
Q->push(new_I); // Вставить новый элемент в стэк
}
void ShowParkings() // Функция, показывающая парковки в зависимости от района
{
for(qIterator<Parking> pos(&Parkings); !pos.end(); pos++) // Проход по парковкам
{
if((*pos).
cout << (*pos).Id << endl; // Вывод подходящих парковок
}
}
void ShowCars() // Функция, показывающая автомобили в зависимости от автостоянки
{
for(qIterator<Auto> pos(&Autos); !pos.end(); pos++)
{
if((*pos).
}
}
void FindCars(int mod) // поиск машин: 0 - по всей базе, 2 - по стоянке
{
system("cls");
int ans = 0;
while(ans != '4')
{
while(true)
{
cout << "Поиск машин:" << endl;
cout << "1) по номеру" << endl;
Информация о работе Информационная система по учету автомобилей