Рефераты. Автостоянки

Добавление, удаление автомобилей со стоянок.


Для реализации поставленной задачи используется система классов, организующая интерфейс работы с базой данных: добавления, удаления, изменения и получения записей, хранящихся в, базе данных.














































3. Структура выходных и входных данных

Программа использует 4 файла для хранения информации о районах, стоянках, автомобилях и марках машин. Каждый из файлов имеет структуру, представленную ниже:


Смещение в файле

Описание

0х00

Индефикатор файла ( “AM” )

0х02

Количество столбцов

0х03

Номер автоувеличивающегося столбца

0х04

Номер последнего автоувеличения

0x06

Описание полей базы (размер, название)

Область с данными (информация о длине берётся из описания полей).


Для хранения информации о марках машин используется файл models.bas. Структура файла представлена ниже:


 id

 model


“id”- индефикатор марки машины

“model ”- название марки машины


Для хранения информации о районах используется файл districts.bas. Структура файла представлена ниже:


 id

 district


“id”- индефикатор района

“district”- название района


Для хранения информации о стоянках используется файл stations.bas. Структура файла представлена ниже:


id

station

sid

“id”- индефикатор стоянки

“station”- название стоянки

“sid”- индефикатор района, к которому принадлежит стоянка


. Для хранения информации о автомобилях используется файл cars.bas. Структура файла представлена ниже:


id

model

number

owner

cid

did

“id”- индефикатор автомобиля

“ model ”- модель автомобиля

“ number ”- номер автомобиля

“ owner ”- имя владельца автомобиля

“ cid ”- индефикатор стоянки, в котором стоит автомобиль

“ did ”- индефикатор района, в котором стоит автомобиль




4.                                                                                                                                                                                                                                                                                                                  Диаграмма классов


5 Описание классов.

Далее приводится описание 4 основных классов проекта, предназначенных для работы с базой данных, остальные являются стандартными и предназначены для отображения информации.


5.1 CColumn

            Класс предназначен для задания типов столбцов таблицы.

class CColum

{

            string name;                                         // Название поля

            unsigned int length;                               // Длина поля (совпадает с индефикатором типа)

            bool autoit;                                          // Ключ. Показывает, нужно ли автоувеличение

public:

// Конструктор принимает название поля и его тип

            CColumn(string&ss,unsigned int len);

           // Конструктор принимает название поля,его тип и ключ автоувеличения.

            CColumn(string&ss,unsigned int len,int aa);

            bool isauto();                                       // Являтся ли поле автоувеличивающися

            string&getname();                                // Возвращает имя поля

            unsigned int gettype();              // Возвращает тип поля

};

            Следует отметить, что автоувеличение применяется только к целым типам.

5.2 СRecord

                   Класс предназначен для хранения одной ячкейки базы данных. Агрегируется только классом Row.

class СRecord

{

            string name;                                         // Название поля

            string data;                                          // Данные

            unsigned int type;                                 // Тип поля

public:

            void setname(string&nam);                  // Установить имя поля

            void setdata(string&dat);                     // Установить данне

            void settype(unsigned int&typ);            // Установить тип

            string&getname();                                // Получить имя поля

            string&getdata();                                 // Получить данные

            unsigned int gettype();              // Получить тип

};

















5.3 CRow

                        Класс предназначен для хранения и строк данных, полученных в результате поиска

 данных или внесения изменений в таблицу.

class CRow

{

            vector<CRecord>rec;                         // Вектор ячеек  строке

            int flag;                                    //  Флаг для оператора присваивания ( временное хранение )

            string name;                                         //  Имя для оператора присваивания ( временное хранение )

            unsigned int type;                                 // Тип для оператора присваивания ( временное хранение )

public:                                                

            CRow();                                             // Конструктор

            void reset();                                         // Обнуляет строку   

            void setrow(vector<CRecord>&v);     // Вводит строку в виде ячеек

            vector<CRecord>&getrow();              // Вводит строку в виде ячеек

            string operator[](string ss);                   // Возвращает значение по ключу  

            int operator()(string ss);                       // Возвращает тип по ключу

            // Первая часть составного оператора присваивания

            Row&operator()(string ss,unsigned int typ);

  // Вторая часть составного оператора присваивания   

  void operator=(string dat);

};

5.4 CTable

Основной класс проектов. Предназначен для создания интерфейса работы с базой данных. Позволяет создавать базу с любым количеством столбцов, добавлять, удалять, изменять, искать по точной строке и части строки.


class CTable

{

            vector<CColum> types;                                  // Информацию о типах

            string filename;                                     // Название файла, с которым идёт работа

            fpos_t startdata;                                              // Начало области данных в файле

            int getfullsize();                                     // Возвращает длину строки

public:

            CTable(string&filename);                                 // Конструктор принимает название файла

             Is();                                                               // Проверяет существование базы

            vector<CColumn> GetCap();                          // Возвращает информацию о типах

            int getrows();                                                   // Возвращает число строк

// Создание базы. Принимает вектор столбцов. Если будет более одного автоувеличивающе-

// гося  столбца, то она применится только к первому

   bool CreateTable(vector<CColumn>&type);          

            bool AddRow(CRow&rr);                              //Добавляет строку

// Осуществляет поиск данных по точному совпадению строки

// Запись, найденных значений идёт в массив finded

            void GetStr(vector<CRow>&finded,string nam,string dat);

// Осуществляет поис данных по вхождению строки

// Запись, найденных значений идёт в массив finded

            void GetCmp(vector<CRow>&finded,string nam,string dat)

            bool DeleteData(string nam,string dat); //  Удаляет строку при точном совпадением

// Изменяет строку c ключом nam и значением dat на rr.

            bool ChangeData(CRow&rr,string nam,string dat);

};

        





6 Алгоритм по шагам

6.1 CTable(string&filename)

1. Сохранения значения переменной filename во внутренней  переменной класса filename.

2. Проверка существования файла filename.

3. Если файл существует, то считать информацию о полях таблицы, начале данных, текущее автоувеличение.


6.2 CTable::AddRow(CRow&rr)

1. Открытие файла, заданного в переменной filename и занесение индефикатора файла в FILE*file.

2. Запись текущего автоувеличения, увеличенного на 1.

3. Смещения в конец файла file.

4. Запись введённой строки rr.                                                                                  

6.3 CTable::GetCmp(vector<CRow>&finded,string nam,string dat)

1. Открытие файла, заданного в переменной filename и занесение индефикатора файла в FILE*file.

2. Смещение на начало данных.

3. Считывание строки из файла и занесение в CRow  ww.

4. Сравнение ww[“nam”] и dat.

5. Если совпадает, то добавить строку в vector<CRow> finded.

6. Если не совпадают, то перейти на пункт 2 (повторить, пока не будет достигнут конец файла).

 

6.4 CTable::ChangeData(CRow&rr,string nam,string dat)

1. Открытие файла, заданного в переменной filename и занесение индефикатора файла в FILE*file.

2. Смещение на начало данных.

3. Считывание строки из файла и занесение в CRow  ww.

4. Сравнение ww[“nam”] и dat.

5. Если совпадают, то сместиться на начало считанной строки и записать строку rr.

6. Если не совпадает, то перейти на пункт 2(повторить, пока не будет достигнут конец файла).

6.5 CTable::DeleteData(string nam,string dat)

1. Открытие файла, заданного в переменной filename и занесение индефикатора в FILE*file.

2. Смещение на начало данных.

3. Считывание строки из файла и занесение в CRow  ww.

4. Сравнение ww[“nam”] и dat.

5. Если совпадают, то считать следующую и записать на месте предыдущей

( действие повторяется, пока не будет конец файла)

6. Файл уменьшить на одну строку.

7. Если строки в пункте 4 не совпали, то перейти на пункт 2(повторить, пока не будет достигнут конец файла).

6.6 CTable::Is()


1. Открытие файла, заданного в переменной filename и занесение индефикатора в FILE*file.

2. Считывание информации по адресу 0x00 в buf

3. Если содержимое buf не равно ‘AM’, то вернуть false.

4. Считывание содержимого по адресу 0x02 в buf

5. Если содержимое равно 0, то вернуть false

6. Вернуть true;

7 Листинг программы




8 Результат работы программы

Программа предназначена для учёта автомобилей на стоянках города, организованных по районам. Программа позволяет:


 

 

 

Рис 1. Общий вид программы

 

 

Рис 2. Окно для поиска автомобилей.

 


Рис 3. Окно для редактирования списка стоянок


9 Заключение

  

Для работы программы необходимо выполнение следующих требований:

            Минимальные требования:  

- процессор Intel 200 МГц;

- оперативная память 64 Мб;

- WINDOWS 95/98/NT.


            Запрещается:

                        -нарушать структуру файлов;

10.Литература.

1.                  MSDN Library – техническая справка для разработчиков программного обеспечения. – MicroSoft Corp., 2004.


2.                  Ю. Тихомиров - «Самоучитель MFC».      - БХВ-Петербург, 2002г.


3.                  Е. Демидович – «Основы алгоритмизации и программирования на си». - Бестпринт, 2003.


4.                   Б. Страуструп – «Язык программирования C++». – Бином, 2004.


























Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.