Реферат: Автостоянки
Содержание:
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"">