2.1.Создание проекта
.docГЛАВА 2. СОЗДАНИЕ
Создание полноценной базы данных заключается в создании таблиц, связей, форм, макросов, запросов, отчетов, меню, справочной системы и инсталляционного пакета.
После анализа предметной области были выделены 8 таблиц, а именно: «Клиенты», «Сотрудники», «Туроператоры», «Паспорт», «Путевки», «Транспорт», «Заявки», «Адрес».
2.1. Создание проекта «Турагентство»
Проект − это уникальный набор процессов, состоящих из скоординированных и управляемых задач, предпринятых для достижения цели.
Проект содержит базу данных, которая состоит из 8-ми таблиц, связанных по ключевым полям. В FoxPro существуют три типа ключевых полей:
Для создания проекта в FoxPro Visual Studio 9.0 после запуска программы и закрытия стартового окна на вкладке File был выбран пункт New. В появившемся окне был выбран пункт Project, а затем нажата кнопка New file. Далее в появившемся окне было введено название проекта и путь сохранения («Turagentstvo» и «C:\Turagentstvo\» соответственно), что представлено на рисунке 2.1. Затем была нажата кнопка Сохранить.
Рисунок 2.1 – Создание проекта
В следующем окне был выбран пункт Data→Databases и нажата кнопка New…, что представлено на рисунке 2.2.
Рисунок 2.2 – Окно Project Manager
В следующем окне была нажата кнопка New Database, в появившеся следом – было выбрано название Turagentstvo и путь её сохранения C:\Turagentstvo\.
В окне Project Manager был выбран пункт Data→Databases→turagentstvo→Tables, а затем New…. В появившемся окне была нажата кнопка New Table. На следющем шаге создания таблицы Клиенты был выбран путь сохранения и название таблицы (klienty и C:\Turagentstvo\). На следующем шаге в окне Table Designer были созданы поля таблицы, которые заполнены соласно таблице 2.1. Ключевые поля были созданы путем выбора «↑Ascending» в выпадающем списке поля Index. Тип индекса был выбран из выпадающего списка поля Type на вкладке Indexes.
Таблица 2.1 – Описание полей таблицы «Клиенты»(« klienty»)
Название |
Тип |
Длинна |
Подпись |
Индекс |
Тип индекса |
id_klienta |
целочисленный (Integer) |
4 |
Код клиента |
↑ |
Primary |
fam |
символьный (Character) |
15 |
Фамилия |
|
|
ima |
символьный (Character) |
15 |
Имя |
|
|
otch |
символьный (Character) |
15 |
Отчество |
|
|
tel |
символьный (Character) |
17 |
Телефон |
|
|
id_adr |
целочисленный (Integer) |
4 |
Код адреса |
↑ |
Regular |
id_pasp |
целочисленный (Integer) |
4 |
Код паспорта |
↑ |
Regular |
После создания полей таблиц была нажата кнопка ОК. Аналогичным образом была создана таблица «Сотрудники»(«sotrudniki»), характеристики полей которой представлены в таблице 2.2.
Таблица 2.2 – Описание полей таблицы «Сотрудники»(«sotrudniki»)
Название |
Тип |
Длинна |
Подпись |
Индекс |
Тип индекса |
id_sotr |
целочисленный (Integer) |
4 |
Код сотрудника |
↑ |
Primary |
fam |
символьный (Character) |
15 |
Фамилия |
|
|
ima |
символьный (Character) |
15 |
Имя |
|
|
otch |
символьный (Character) |
15 |
Отчество |
|
|
tel |
символьный (Character) |
17 |
Телефон |
|
|
id_adr |
целочисленный (Integer) |
4 |
Код адреса |
↑ |
Regular |
id_pasp |
целочисленный (Integer) |
4 |
Код паспорта |
↑ |
Regular |
inn |
символьный (Character) |
10 |
ИНН |
|
|
dol |
символьный (Character) |
25 |
Должность |
|
|
data_trud |
дата (Data) |
8 |
Дата трудоустр. |
|
|
okl |
вещественный (Float) |
10 |
Оклад |
|
|
После создания полей таблиц была нажата кнопка ОК. Аналогичным образом была создана таблица «Туроператоры»(«turoperatory»), характеристики полей которой представлены в таблице 2.3.
Таблица 2.3 – Описание полей таблицы «Туроператоры»(«turoperatory»)
Название |
Тип |
Длинна |
Подпись |
Индекс |
Тип индекса |
id_tur |
целочисленный (Integer) |
4 |
Код туроператора |
↑ |
Primary |
fam |
символьный (Character) |
15 |
Фамилия |
|
|
ima |
символьный (Character) |
15 |
Имя |
|
|
otch |
символьный (Character) |
15 |
Отчество |
|
|
tel |
символьный (Character) |
17 |
Телефон фирмы |
|
|
id_adr |
целочисленный (Integer) |
4 |
Код адреса |
↑ |
Regular |
opis |
заметка (Memo) |
4 |
Описание фирмы |
|
|
После создания полей таблиц была нажата кнопка ОК. Аналогичным образом была создана таблица «Путевки»(«putevky»), характеристики полей которой представлены в таблице 2.4.
Таблица 2.4 – Описание полей таблицы «Путевки»(«putevky»)
Название |
Тип |
Длинна |
Подпись |
Индекс |
Тип индекса |
id_putevky |
целочисленный (Integer) |
4 |
Код путевки |
↑ |
Primary |
id_tur |
целочисленный (Integer) |
4 |
Код туроператора |
↑ |
Regular |
nazvanie |
символьный (Character) |
15 |
Название |
|
|
opisanie |
заметка (Memo) |
4 |
Описание |
|
|
dlit |
целочисленный (Integer) |
17 |
Длительность |
|
|
stoim |
вещественный (Float) |
10 |
Стоимость |
|
|
id_adr |
целочисленный (Integer) |
4 |
Код адреса |
↑ |
Regular |
kol_vo |
целочисленный (Integer) |
4 |
Количество |
|
|
После создания полей таблиц была нажата кнопка ОК. Аналогичным образом была создана таблица «Транспорт»(«transport»), характеристики полей которой представлены в таблице 2.5.
Таблица 2.5 – Описание полей таблицы «Транспорт»(«transport»)
Название |
Тип |
Длинна |
Подпись |
Индекс |
Тип индекса |
id_transport |
целочисл. (Integer) |
4 |
Код транспорта |
↑ |
Primary |
otpravlen |
дата и время (DataTime) |
8 |
Дата и время отпр. |
|
|
id_adr_otpr |
целочисл. (Integer) |
4 |
Код транспорта отпр. |
↑ |
Regular |
pribitie |
дата и время (DataTime) |
8 |
Дата и время приб. |
|
|
id_adr_prib |
целочисл. (Integer) |
4 |
Код транспорта приб. |
↑ |
Regular |
stoim |
вещественный (Float) |
10 |
Стоимость |
|
|
После создания полей таблиц была нажата кнопка ОК. Аналогичным образом была создана таблица «Заявки»(«zaiavky»), характеристики полей которой представлены в таблице 2.6.
Таблица 2.6 – Описание полей таблицы «Заявки»(«zaiavky»)
Название |
Тип |
Длинна |
Подпись |
Индекс |
Тип индекса |
id_zaiavky |
целочисленный (Integer) |
4 |
Код заявки |
↑ |
Primary |
id_klienta |
целочисленный (Integer) |
4 |
Код клиента |
↑ |
Regular |
id_sotr |
целочисленный (Integer) |
4 |
Код сотрудника |
↑ |
Regular |
id_put |
целочисленный (Integer) |
4 |
Код путевки |
↑ |
Regular |
data_oforml |
дата (Data) |
8 |
Дата оформления |
|
|
id_tr_otpr |
целочисленный (Integer) |
4 |
Код трансп. отпр. |
↑ |
Regular |
id_tr_prib |
целочисленный (Integer) |
4 |
Код трансп. приб. |
↑ |
Regular |
stoim |
вещественный (Float) |
10 |
Стоимость |
|
|
После создания полей таблиц была нажата кнопка ОК. Аналогичным образом была создана таблица «Паспорт»(«pasport»), характеристики полей которой представлены в таблице 2.7.
Таблица 2.7 – Описание полей таблицы «Паспорт»(«pasport»)
Название |
Тип |
Длинна |
Подпись |
Индекс |
Тип индекса |
id_pasport |
целочисленный (Integer) |
4 |
Код паспорта |
↑ |
Primary |
seria |
символьный (Character) |
2 |
Серия |
|
|
nomer |
целочисленный (Integer) |
4 |
Номер |
|
|
kem_vidan |
символьный (Character) |
4 |
Кем выдан |
|
|
data_rozd |
дата (Data) |
8 |
Дата рождения |
|
|
id_adr_prop |
вещественный (Float) |
4 |
Код прописки |
↑ |
Regular |
После создания полей таблиц была нажата кнопка ОК. Аналогичным образом была создана таблица «Адрес»(«adres»), характеристики полей которой представлены в таблице 2.8.
Таблица 2.8 – Описание полей таблицы «Адрес»(«adres»)
Название |
Тип |
Длинна |
Подпись |
Индекс |
Тип индекса |
id_adr |
целочисленный (Integer) |
4 |
Код адреса |
↑ |
Primary |
gorod |
символьный (Character) |
15 |
Город |
|
|
ulica |
символьный (Character) |
15 |
Улица |
|
|
dom |
символьный (Character) |
5 |
Дом |
|
|
kv_ofis |
символьный (Character) |
5 |
Квартира/офис |
|
|
После создания таблиц двойным щелчком была открыта таблица «Клиенты» для заполнения данными. Заполненная таблица представлена на рисунке 2.3.
Рисунок 2.3 – Таблица Клиенты
Далее для заполнения двойным щелчком была открыта таблица «Сотрудники». Заполненная таблица представлена на рисунке 2.4.
Рисунок 2.4 – Таблица Сотрудники
Далее для заполнения двойным щелчком была открыта таблица «Туроператор». Заполненная таблица представлена на рисунке 2.5.
Рисунок 2.5 – Таблица Туроператор
Далее для заполнения двойным щелчком была открыта таблица «Путевки». Заполненная таблица представлена на рисунке 2.6.
Рисунок 2.6 – Таблица Путевки
Далее для заполнения двойным щелчком была открыта таблица «Транспорт». Заполненная таблица представлена на рисунке 2.7.
Рисунок 2.7 – Таблица Транспорт
Далее для заполнения двойным щелчком была открыта таблица «Заявки». Заполненная таблица представлена на рисунке 2.8.
Рисунок 2.8 – Таблица Заявки
Далее для заполнения двойным щелчком была открыта таблица «Паспорт». Заполненная таблица представлена на рисунке 2.9.
Рисунок 2.9 – Таблица Паспорт
Далее для заполнения двойным щелчком была открыта таблица «Адрес». Заполненная таблица представлена на рисунке 2.10.
Рисунок 2.10 – Таблица Адрес
Путем перетаскивания ключевого поля типа Primary на одноименное поле типа Regular, были установлены связи между таблицами базы данных. Схема связи представлена на рисунке 2.11.
Рисунок 2.11 – Схема данных
2.2. Создание форм
Для наиболее удобного просмотра имеющейся информации в базе требуется создать формы. Для этого в менеджере проекта Project Manager на вкладке Document был выбран пункт Forms и нажата кнопка New… В открывшемся окне была нажата кнопка New Form. Появившиеся следом окна представлены на рисунке 2.12.
Рисунок 2.12 – Создание формы
В окне Properties в поле Picture был выбран рисунок c:\turagentstvo\form1-2.jpg, далее на форму были помещены следующие объекты: Label – 3 шт., Command Button 2 – шт., Text Box – 2 шт. Их измененные характеристики представлены в таблице 2.9.
Таблица 2.9 – Описание полей объектов формы form1
Выбранный объект |
Название поля |
Значение |
form1 |
Caption |
Турагентство |
Picture |
c:\turagentstvo\form1-2.jpg |
|
Label1 |
Caption |
Логин |
Label2 |
Caption |
Пароль |
Label3 |
Caption |
Вход в систему |
Label1, Label2, Label3 |
BackColor |
177,216,218 |
FontSize |
15 |
|
Command Button1 |
Caption |
Вход |
Command Button2 |
Caption |
Выход |
Command Button1, Command Button2 |
FontSize |
15 |
Text Box1, Text Box2 |
FontSize |
13 |
Полученный результат представлен на рисунке 2.13.
Рисунок 2.13 – Созданная форма «Турагентство» («form1»)
Листинг для кнопок Command Button1 и Command Button2 представлен в таблице 2.10.
Таблица 2.10 – Листинг
Command Button1 |
Command Button2 |
IF ALLTRIM(ThisForm.Edit1.Value) == "User" IF ALLTRIM(ThisForm.Edit2.Value) <> "130493" MESSAGEBOX("Неверный пароль") CLEAR EVENTS thisform.Edit1.value = "" thisform.Edit2.value = "" RETURN 0 ENDIF ELSE MESSAGEBOX ("Неверное имя пользователя") CLEAR EVENTS thisform.Edit1.value = "" thisform.Edit2.value = "" RETURN 0 ENDIF ThisForm.Release DO " C:\Turagentstvo\form2.scx" |
IF MESSAGEBOX("Вы уверены,что хотите выйти?","Выйти") ThisForm.Release() QUIT ELSE ThisForm.Refresh() ENDIF |
При закрытии формы, она была сохранена по адресу C:/Turagentstvo/form1.scx под именем «form1».
Далее аналогично была создана форма «Оглавление» (form2), которая имеет пять объектов Command Button и одного Label. Характеристика полей объектов представлена в таблице 2.11.
Таблица 2.11 – Описание полей объектов формы form2
Выбранный объект |
Название поля |
Значение |
form2 |
Caption |
Оглавление |
Picture |
c:\turagentstvo\form2-2.jpg |
|
Label1 |
Caption |
Оглавление |
FontSize |
15 |
|
Command Button1 |
Caption |
Клиенты |
Command Button2 |
Caption |
Сотрудники |
Command Button3 |
Caption |
Туроператоры |
Command Button4 |
Caption |
Путевки |
Command Button5 |
Caption |
Заявки |
Command Button1, Command Button2, Command Button3, Command Button4, Command Button5 |
FontSize |
15 |
Листинг для кнопок Command Button представлен в таблице 2.12.
Таблица 2.12 – Листинг
Command Button1 |
Command Button2 |
DO " C:\Turagentstvo\form3.scx" |
DO " C:\Turagentstvo\form4.scx" |
Command Button3 |
Command Button4 |
DO " C:\Turagentstvo\form5.scx" |
DO " C:\Turagentstvo\form6.scx" |
Command Button5 |
|
DO " C:\Turagentstvo\form7.scx" |
Следующая форма создавалась путем выбора пункта Documents-Forms в окне Project Manager. Затем после нажатия кнопки New…, в новом окне была нажата кнопка Form Wizard, а затем был выбран пункт One-To-Many Form Wizard и нажата кнопка ОК. Далее была выбрана таблица Заявки и из нее было выбрано поле Код клиента и нажата кнопка Next>, что представлено на рисунке ___.