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

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

      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(10, '\n');

                  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(Districts); // Запись имеющихся стэков

      PWriter.WriteStack(Parkings);

      AWriter.WriteStack(Autos); 

      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).DistrictId == (*SelectedD).Id)

                  cout << (*pos).Id << endl; // Вывод подходящих парковок

      }

}

void ShowCars() // Функция, показывающая автомобили в зависимости от автостоянки

{

      for(qIterator<Auto> pos(&Autos); !pos.end(); pos++)

      {

            if((*pos).ParkingId == (*SelectedP).Id) cout << *pos << endl;

      }

}

void FindCars(int mod) // поиск машин: 0 - по всей базе, 2 - по стоянке

{

      system("cls");

      int ans = 0;

      while(ans != '4')

      {

            while(true)

            {

                  cout << "Поиск машин:" << endl;

                  cout << "1) по номеру" << endl;

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