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

Содержание:

1.Введение                                                                                                                                               2

2.Постановка задачи                                                                                                                               3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

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

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

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

  5.1 CColum                                                                                                                                              6                                                                                                                                                                                                                                                                                                                                                                   

 5.2 СRecord                                                                                                                                             7            

 5.3 СRow                                                                                                                                                 8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            9

 5.4 CTable                                                                                                                                                9

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

6.1CTable(string&filename)                                                                                                                 9

6.2CTable::AddRow(CRow&rr)                                                                                                          9    

6.3CTable::GetCmp(vector&finded,string nam,string dat)                                                   9

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

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

6.6 CTable::Is()                                                                                                                                      10

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

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

9.Заключение                                                                                                                                            51

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

1.<span Times New Roman"">    

Введение

Язык программирования служит двум связанным междусобой целям: он дает программисту аппарат для задания действий, которые должныбыть выполнены, и формирует концепции, которыми пользуется программист,размышляя о том, что делать. Первой цели идеально отвечает язык, которыйнастолько «близок к машине», что всеми основными машинными аспектамиможно легко и просто оперировать достаточно очевидным для программиста образом.С таким умыслом первоначально задумывался C. Второй цели идеально отвечаетязык, который настолько «близок к решаемой задаче», чтобы концепцииее решения можно было выражать прямо и коротко. С таким умыслом предварительнозадумывались средства, добавленные к C для создания C++.

Связь между языком, на котором мы думаем/программируем,и задачами и решениями, которые мы можем представлять в своем воображении,очень близка. По этой причине ограничивать свойства языка только целямиисключения ошибок программиста в лучшем случае опасно. Как и в случае сестественными языками, есть огромная польза быть по крайней мере двуязычным.Язык предоставляет программисту набор концептуальных инструментов; если они неотвечают задаче, то их просто игнорируют. Например, серьезные ограниченияконцепции указателя заставляют программиста применять вектора и целуюарифметику, чтобы реализовать структуры, указатели и т.п. Хорошеепроектирование и отсутствие ошибок не может гарантироваться чисто за счетязыковых средств.

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

2.<span Times New Roman"">    

Постановказадачи

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

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

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

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.<span Times New Roman"">    

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

<img src="/cache/referats/25743/image002.gif" v:shapes="_x0000_i1025">

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

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

5.1 CColumn

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

class CColum

{

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

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

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

public:

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

   CColumn(string&ss,unsigned int len);

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

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

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

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

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

};

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

5.2 СRecord

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

class СRecord

{

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

   stringdata;                                         //Данные

   unsignedint type;                              // Типполя

public:

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

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

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

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

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

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

};

5.3 CRow

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

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

class CRow

{

   vectorrec;                        // Векторячеек  строке

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

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

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

public:                                                  

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

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

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

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

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

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

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

   Row&operator()(stringss,unsignedinttyp);

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

 void operator=(string dat);

};

5.4 CTable

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

classCTable

{

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

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

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

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

public:

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

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

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

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

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

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

  bool CreateTable(vector&type);          

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

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

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

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

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

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

   void GetCmp(vector&finded,string nam,string dat)

   boolDeleteData(stringnam,stringdat);        //  Удаляет строку приточном совпадением

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

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

};

 

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

6.1CTable(string&filename)

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

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

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

6.2CTable::AddRow(CRow&rr)

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

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

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

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

6.3CTable::GetCmp(vector&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,stringnam,string dat)

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

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

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

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

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

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

6.5 CTable::DeleteData(stringnam,string dat)

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

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

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

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

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

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

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

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

6.6CTable::Is()

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

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

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

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

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

6.Вернуть true;

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

<span Courier New CYR"">

<span Courier New CYR"">

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

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

Добавлять/изменять/удалять названия районов Добавлять/изменять/удалять названия стоянок Добавлять/изменять/удалять названия марок автомобилей Добавлять/изменять/удалять данные о автомобиле Осуществлять поиск автомобилей по владельцу, марке, номеру Осуществлять поиск автомобилей на конкретной стоянке, районе или по всем стоянкам города Для удобства работы предусмотрена подсказка.

<img src="/cache/referats/25743/image003.jpg" v:shapes="_x0000_i1026">

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

<img src="/cache/referats/25743/image004.jpg" v:shapes="_x0000_i1027">

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

<img src="/cache/referats/25743/image005.jpg" v:shapes="_x0000_i1028">

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

9Заключение

  

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

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

— процессор Intel200 МГц;

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

— WINDOWS95/98/NT.

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

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

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

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

2.MFC».           — БХВ-Петербург, 2002г.

3.

4.C++».– Бином, 2004.

<span Courier New"">

еще рефераты
Еще работы по программированию, базе данных