Автор работы: Пользователь скрыл имя, 21 Мая 2012 в 13:59, дипломная работа
Открытое акционерное общество «Судостроительный завод «Лотос» предназначен для строительства морских буровых стационарных платформ разведки и добычи нефти и строительства судов различного назначения. Предприятие располагает большими техническими возможностями (до 30000 тонн металла в год) и квалифицированными кадрами, аттестовано на класс Речного Регистра, Морского Регистра Судоходства, а также Германского Ллойда.
ОАО «ССЗ «ЛОТОС» предлагает к изготовлению:
технические средства для освоения газовых и нефтяных месторождений на шельфе мирового океана и внутренних морей;
сухогрузные и нефтеналивные суда различного района плавания - морского, речного и смешанного «река – море» (спусковой вес около 15000 т);
вспомогательные суда различного назначения;
1. Введение 3-4
2. Основная часть.
Разработка базы данных «Кадры»
2.1 Описание предметной области 5-8
2.2 Построение инфологической и даталогической модели 9-28
2.3 Проектирование базы данных 29-37
2.4 Разработка приложения 38-43
3. Охрана труда 44-46
4. Заключение 47
5. Библиографический список 48
6. Приложение 49-87
7. Графический материал 88-93
Теперь можно приступить к более тщательному анализу данных и объединению отдельных элементов данных в объекты. Эти объекты станут впоследствии основой для создания таблиц в проектируемой базе данных.
Далее
следует заполнить еще один комплект
рабочих бланков, который поможет
объединить элементы данных в объекты.
В верхней части бланка для
каждого объекта надо перечислить
все объекты связанные с
Для каждого элемента данных, в рабочем бланке объекта, обязательно должны быть указаны тип данных (текстовый, числовой, денежный, Мемо и т.д.) и длина поля, необходимая для их хранения. Должно быть дано краткое описание этого элемента, которое впоследствии будет использоваться при определении таблицы.
Также, в бланке должно быть записано условие на значение, которое будет применяться к соответствующему полю данных. В дальнейшем, можно будет задать эти условия в программных файлах FoxPro, чтобы использовать их для проверки данных.
Опишем
используемые объекты, заполнив рабочий
бланк №2.
РАБОЧИЙ БЛАНК №2 (ОБЪЕКТЫ) | ||||||
Имя объекта: | KADRES | |||||
Краткое описание: | Основные анкетные данные сотрудников | |||||
Связанные объекты: | Имя:
Education additional Language Conviction Family Passport registration Work record card Purpose and moving Qualifications Business trip Holiday |
Связь:
Многие Многие Многие Многие Многие Многие Многие Многие Многие Многие | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Organic number | Числовой (6) | Табельный номер сотрудника | Требуется | |||
Не должны повторяться | ||||||
Insurance number | Текстовый (14) | Страховой номер | NNN-NNN-NNN | |||
Surname | Текстовый (15) | Фамилия | Требуется | |||
Name | Текстовый (15) | Имя | Требуется | |||
Patronymic name | Текстовый (15) | Отчество | Требуется | |||
Sex | Текстовый (15) | Пол | Требуется | |||
М или Ж | ||||||
Date of birth | Дата | Дата рождения | Требуется | |||
Birthplace | Текстовый (47) | Место рождения | Требуется | |||
Nationality | Текстовый (15) | Национальность | Требуется | |||
Social origin | Текстовый (47) | Социальное происхождение | Требуется | |||
Citizenship | Текстовый (30) | Гражданство | Требуется | |||
Education | Текстовый (47) | Образование | Требуется | |||
Education institution | Текстовый (47) | Название учебного заведения | Требуется | |||
Form of training | Текстовый (20) | Форма обучения | Требуется | |||
Year of the ending | Дата (8) | Год окончания | Требуется | |||
Diploma | Текстовый (25) | Диплом (серия) | Требуется | |||
Серия:ХХХХ номер:NNNNNNNN | ||||||
Qualification | Текстовый (47) | Квалификация по диплому | Требуется | |||
Speciality | Текстовый (47) | Специальность по диплому | Требуется | |||
Amount education additional | Числовой (2) | Количество
записей в разделе « |
||||
Kind of hiring | Текстовый (30) | Вид найма | Требуется | |||
Kind of work | Текстовый (30) | Вид работы | Требуется | |||
Scientific degree | Текстовый (30) | Ученая степень | ||||
Scientific rank | Текстовый (30) | Ученое звание | ||||
Narrow speciality | Текстовый (47) | Узкая специальность | ||||
Amount foreign languages | Числовой (2) | Количество записей в разделе «Владение иностранными языками» | ||||
Amount conviction | Числовой (2) | Количество записей в разделе «Наличие судимости» | ||||
Marital status | Текстовый (20) | Семейное положение | Требуется | |||
Amount family | Числовой (2) | Количество записей в разделе «Состав семьи» | ||||
Trade union | Текстовый (40) | Профсоюз | Требуется | |||
Group of inability | Числовой (1) | Группа инвалидности | ||||
Pensioner | Текстовый (1) | Пенсионер ? | Требуется | |||
Д или Н | ||||||
Participant of a war | Текстовый (1) | Участник войны | Требуется | |||
Д или Н | ||||||
Postal index | Числовой (6) | Домашний индекс | Требуется | |||
Region | Текстовый (20) | Район | Требуется | |||
Area | Текстовый (40) | Область | Требуется | |||
Home address | Текстовый (40) | Домашний адрес | Требуется | |||
Telephone number | Текстовый (18) | Домашний телефон | ###-##-## код: ### | |||
Passport | Текстовый (29) | Серия, номер | Требуется | |||
Серия: XXXXXXX-XX номер: ###### | ||||||
Conscription | Текстовый (20) | Воинская обязанность | ||||
Military rank | Текстовый (20) | Воинское звание | ||||
Number | Числовой (12) | Номер ВУС | ||||
Military ticket | Текстовый (23) | Номер военного билета | Серия: XXX
номер: ####### | |||
Validity to military service | Текстовый (47) | Годность к военной службе | ||||
Attitude to booking | Текстовый (47) | Отношение к бронированию | ||||
Mobile instructions | Текстовый (1) | Наличие моб, предписания | Д или Н | |||
Group of thee account | Текстовый(47) | Группа учета | ||||
Category of the account | Текстовый (20) | Категория учета | ||||
Commissioners | Текстовый (47) | Райвоенкомат | ||||
Date started service | Дата | Дата начала срочной службы | ||||
Date close service | Дата | Дата окончания срочной службы | ||||
Date of last | Дата | Дата последнего прохождения мед. Комиссии | ||||
Amount work record cards | Числовой (2) | Количество записей в разделе «Трудовая книжка» | ||||
Amount purpose and moving | Числовой (2) | Количество записей в разделе «Назначения и перемещения» | ||||
Amount qualifying category | Числовой (2) | Количество
записей в разделе « |
||||
Company name | Текстовый (47) | Название учреждения | Требуется | |||
Subdivision | Текстовый (30) | Подразделение | Требуется | |||
Current post | Текстовый (30) | Текущая должность | Требуется | |||
Date of employment | Дата | Дата приема на работу | Требуется | |||
Date closed of a trial period | Дата | Дата окончания испытательного срока | Требуется | |||
Amount business trip | Числовой (2) | Количество
записей в разделе « |
||||
Amount holiday | Числовой (2) | Количество записей в разделе «Отпуска» | ||||
Date of dismissal | Дата | Дата увольнения | Требуется | |||
Reason of dismissal | Текстовый (47) | Причина увольнения | Требуется | |||
Individual number | Текстовый (12) | Индивидуальный номер налогоплательщика | Требуется | |||
Tax bearer series | Текстовый (14) | Серия свидетельства налогоплательщика | Требуется | |||
Tax bearer number | Текстовый (14) | Номер свидетельства налогоплательщика | Требуется | |||
Tax bearer distribution date | Дата | Дата
выдачи свидетельства |
Требуется | |||
Имя объекта: | Education additional | |||||
Краткое описание: | Сведения о дополнительном образовании | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Date begin in education | Дата | Дата поступления в у/з | Требуется | |||
Date of end education | Дата | Дата окончания у/з | Требуется | |||
Additional education | Текстовый (30) | Образование | Требуется | |||
Name education | Текстовый (15) | Название у/з | Требуется | |||
Diploma education | Текстовый (15) | Диплом | Требуется | |||
Form of training additional | Текстовый (15) | Форма обучения | Требуется | |||
Qualification additional | Текстовый (15) | Квалификация | Требуется | |||
Speciality additional | Текстовый (15) | Специальность | Требуется | |||
Имя объекта: | Language | |||||
Краткое описание: | Знание дополнительных иностранных языков | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Other language | Текстовый (20) | Язык | Требуется | |||
Level of possession | Текстовый (30) | Уровень владения | Требуется | |||
Имя объекта: | Conviction | |||||
Краткое описание: | Наличие судимости у сотрудника | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Date of verdict | Дата | Дата вынесения приговора | Требуется | |||
Article | Текстовый (20) | Статья | Требуется | |||
Period | Текстовый (20) | Срок | Требуется | |||
Имя объекта: | Family | |||||
Краткое описание: | Сведения о составе семьи | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Degree of relationship | Текстовый (20) | Степень родства | Требуется | |||
Names | Текстовый (20) | Фамилия, инициалы родственника | Требуется | |||
Date of birth relative | Дата | Дата рождения | Требуется | |||
Expense | Текстовый (20) | На иждивении | Требуется | |||
Имя объекта: | Passport registration | |||||
Краткое описание: | Паспортные данные (прописка) | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
By whom is given | Текстовый (50) | Кем выдан | Требуется | |||
Date of distribution | Дата | Дата выдачи | Требуется | |||
Index | Текстовый (6) | Индекс | Требуется | |||
Area registration | Текстовый (30) | Область | Требуется | |||
Region registration | Текстовый (30) | Район | Требуется | |||
City | Текстовый (30) | Город | Требуется | |||
Point | Текстовый (30) | Населенный пункт | Требуется | |||
Street | Текстовый (30) | Улица | Требуется | |||
House | Текстовый (10) | Дом | Требуется | |||
Corps | Текстовый (10) | Корпус | Требуется | |||
Flat | Текстовый (10) | Квартира | Требуется | |||
Имя объекта: | Work record card | |||||
Краткое описание: | Записи в трудовой книжке | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Date of statement | Дата | Дата постановки | Требуется | |||
Date of dismissal | Дата | Дата увольнения | Требуется | |||
Name of company | Текстовый (20) | Название учреждения | Требуется | |||
A post | Текстовый (20) | Должность | Требуется | |||
Reason card | Текстовый (20) | Причина | Требуется | |||
Basis card | Текстовый (20) | Основание | Требуется | |||
Имя объекта: | Purpose and moving | |||||
Краткое описание: | Сведения о назначениях и перемещениях сотрудника | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Date moving | Дата | Дата | Требуется | |||
Reason moving | Текстовый (20) | Основание | Требуется | |||
Department | Текстовый (20) | Отдел | Требуется | |||
Post | Текстовый (15) | Должность | Требуется | |||
Method of operating | Текстовый (15) | Режим работы | Требуется | |||
Имя объекта: | Qualification | |||||
Краткое описание: | Сведения о квалификационном разряде сотрудника | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Date qualification | Дата | Дата | Требуется | |||
Reason qualification | Текстовый (20) | Основание | Требуется | |||
Qualification | Текстовый (20) | Квалификация | Требуется | |||
Имя объекта: | Business trip | |||||
Краткое описание: | Командировки | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Date started trip | Дата | Дата начала | Требуется | |||
Date closed trip | Дата | Дата окончания | Требуется | |||
Destination | Текстовый (25) | Место назначения | Требуется | |||
Имя объекта: | Holiday | |||||
Краткое описание: | Отпуска | |||||
Связанные объекты: | Имя:
Stuff |
Связь:
Один | ||||
Имя элемента данных | Тип данных | Описание | Условие на значение | |||
Kind of holiday | Текстовый (15) | Вид отпуска | Требуется | |||
Basis holiday | Текстовый (15) | Основание | Требуется | |||
In time with | Дата | За время с | Требуется | |||
In time on | Дата | За время по | Требуется | |||
Date started holiday | Дата | Дата начала | Требуется | |||
Amount | Числовой (3) | Количество дней | Требуется | |||
Date closed holiday | Дата | Дата окончания | Требуется |
Теперь,
после заполнения всех рабочих бланков
для объектов, каждый из них можно
рассматривать в качестве основы
для создания некоторой таблицы.
2.3 Проектирование
базы данных
При проектировании базы данных следует придерживаться правил нормализации таблиц:
Правило 1: Каждое поле любой таблицы должно быть уникальным.
Правило 2: Каждая таблица должна иметь уникальный идентификатор (первичный ключ), который может состоять из одного или нескольких полей таблицы.
Правило 3: Для каждого значения первичного ключа должно быть одно и только одно значение любого из столбцов данных, и это значение должно относиться к объекту таблицы.
Правило 4: Должна иметься возможность изменять значения любого поля (не входящего в первичный ключ), и это не должно повлечь за собой изменение другого поля.[2]
Каждый агрегированный объект будет представлен отдельной таблицей базы данных. Элементы данных будут представлены полями таблиц. Имена таблиц и их полей подберем исходя из имен объектов и элементов данных. В качестве первичного ключа используем табельный номер. Проект базы данных включает в себя 11 таблиц.
Опишем базу данных в
ОПИСАНИЕ ТАБЛИЦ БАЗЫ ДАННЫХ «КАДРЫ» | ||
Имя таблицы: | STUFF.DBF | |
Краткое описание: | Основная таблица базы данных | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
INS_NUM | Текстовый (14) | Страховой номер |
SURNAME | Текстовый (15) | Фамилия |
NAME | Текстовый (15) | Имя |
PATRON | Текстовый (15) | Отчество |
SEX | Текстовый (15) | Пол |
BIRTH_DATE | Дата | Дата рождения |
BIRTHPLACE | Текстовый (47) | Место рождения |
NATIONAL | Текстовый (15) | Национальность |
SOCIAL | Текстовый (47) | Социальное происхождение |
CITIZEN | Текстовый (30) | Гражданство |
EDUCAT | Текстовый (47) | Образование |
NAME_EDU | Текстовый (47) | Название учебного заведения |
FORM_TRAIN | Текстовый (20) | Форма обучения |
YEAR_END | Дата (8) | Год окончания |
DIPLOMA | Текстовый (25) | Диплом (серия) |
QUAL_DIP | Текстовый (47) | Квалификация по диплому |
SPEC_DIP | Текстовый (47) | Специальность по диплому |
EDU_NUM | Числовой (2) | Количество
записей в разделе « |
KIND_HIR | Текстовый (30) | Вид найма |
KIND_WRK | Текстовый (30) | Вид работы |
S_DEGREE | Текстовый (30) | Ученая степень |
S_RANK | Текстовый (30) | Ученое звание |
MAR_SPEC | Текстовый (47) | Узкая специальность |
LANG_NUM | Числовой (2) | Количество записей в разделе «Владение иностранными языками» |
CONV_NUM | Числовой (2) | Количество записей в разделе «Наличие судимости» |
MAR_STATUS | Текстовый (20) | Семейное положение |
FAMIL_NUM | Числовой (2) | Количество записей в разделе «Состав семьи» |
TR_UNION | Текстовый (40) | Профсоюз |
GROUP | Числовой (1) | Группа инвалидности |
PENSIONER | Текстовый (1) | Пенсионер ? |
PARTIC_WAR | Текстовый (1) | Участник войны |
POST_INDEX | Числовой (6) | Домашний индекс |
REGION | Текстовый (20) | Район |
AREA | Текстовый (40) | Область |
ADDRESS | Текстовый (40) | Домашний адрес |
TELEPHONE | Текстовый (18) | Домашний телефон |
PASSPORT | Текстовый (29) | Серия, номер |
CONSCRIPT | Текстовый (20) | Воинская обязанность |
MILIT_RANK | Текстовый (20) | Воинское звание |
NUMBER | Числовой (12) | Номер ВУС |
MIL_TICKET | Текстовый (23) | Номер военного билета |
MIL_VALID | Текстовый (47) | Годность к военной службе |
ATTITUDE | Текстовый (47) | Отношение к бронированию |
MOBILE_INS | Текстовый (1) | Наличие моб, предписания |
GROUP_ACC | Текстовый(47) | Группа учета |
CATEGORY_A | Текстовый (20) | Категория учета |
COMMISSAR | Текстовый (47) | Райвоенкомат |
START_DATE | Дата | Дата начала срочной службы |
CLOSE_DATE | Дата | Дата окончания срочной службы |
LAST_DATE | Дата | Дата последнего прохождения мед. Комиссии |
RECORD_NUM | Числовой (2) | Количество записей в разделе «Трудовая книжка» |
PURPOS_NUM | Числовой (2) | Количество записей в разделе «Назначения и перемещения» |
QUAL_NUM | Числовой (2) | Количество
записей в разделе « |
COMPANY | Текстовый (47) | Название учреждения |
SUBDIVIS | Текстовый (30) | Подразделение |
CUR_POST | Текстовый (30) | Текущая должность |
EMPLOYMENT | Дата | Дата приема на работу |
TRIAL_CLOS | Дата | Дата окончания испытательного срока |
TRIAL_NUM | Числовой (2) | Количество
записей в разделе « |
HOLID_NUM | Числовой (2) | Количество записей в разделе «Отпуска» |
DATE_DIS | Дата | Дата увольнения |
REASON_DIS | Текстовый (47) | Причина увольнения |
INN | Текстовый (12) | Индивидуальный номер налогоплательщика |
SERIES_TAX | Текстовый (14) | Серия свидетельства налогоплательщика |
NUM_TAX | Текстовый (14) | Номер свидетельства налогоплательщика |
DATE_TAX | Дата | Дата выдачи свидетельства налогоплательщика |
Имя таблицы: | EDUCAT.DBF | |
Краткое описание: | Дополнительное образование | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
DATE_BEGIN | Дата | Дата поступления в у/з |
DATE_END | Дата | Дата окончания у/з |
EDUCATION | Текстовый (30) | Образование |
NAME_EDUC | Текстовый (15) | Название у/з |
DIPL | Текстовый (15) | Диплом |
FORM_TR | Текстовый (15) | Форма обучения |
QUALIFIC | Текстовый (15) | Квалификация |
SPECIAL | Текстовый (15) | Специальность |
Имя таблицы: | LANGUAGE.DBF | |
Краткое описание: | Владение иностранными языками | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
OTH_LANG | Текстовый (20) | Язык |
LEVEL | Текстовый (30) | Уровень владения |
Имя таблицы: | CONVICT.DBF | |
Краткое описание: | Наличие судимости | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
DATE_VERD | Дата | Дата вынесения приговора |
ARTICLE | Текстовый (20) | Статья |
PERIOD | Текстовый (20) | Срок |
Имя таблицы: | FAMILY.DBF | |
Краткое описание: | Состав семьи | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
RELATION | Текстовый (20) | Степень родства |
NAMES | Текстовый (20) | Фамилия, инициалы родственника |
DATE_RELAT | Дата | Дата рождения |
EXPENSE | Текстовый (20) | На иждивении |
Имя таблицы: | PASSPORT.DBF | |
Краткое описание: | Паспортные данные | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
EXP_GIVEN | Текстовый (50) | Кем выдан |
DATE_DISTR | Дата | Дата выдачи |
INDEX_P | Текстовый (6) | Индекс |
AREA_P | Текстовый (30) | Область |
REGION_P | Текстовый (30) | Район |
CITY_P | Текстовый (30) | Город |
POINT_P | Текстовый (30) | Населенный пункт |
STREET_P | Текстовый (30) | Улица |
HOUSE_P | Текстовый (10) | Дом |
CORPS_P | Текстовый (10) | Корпус |
FLAT_P | Текстовый (10) | Квартира |
Имя таблицы: | WORKCARD.DBF | |
Краткое описание: | Трудовая книжка | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
DATE_WRK | Дата | Дата постановки |
DATE_DISM | Дата | Дата увольнения |
NAME_WRK | Текстовый (20) | Название учреждения |
POST_WRK | Текстовый (20) | Должность |
REASON_WRK | Текстовый (20) | Причина |
BASIS_WRK | Текстовый (20) | Основание |
Имя таблицы: | MOVING.DBF | |
Краткое описание: | Назначения и перемещения | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
DATE_MOV | Дата | Дата |
REASON_MOV | Текстовый (20) | Основание |
DEPART | Текстовый (20) | Отдел |
POST_MOV | Текстовый (15) | Должность |
METHOD_MOV | Текстовый (15) | Режим работы |
Имя таблицы: | QUALIFIC.DBF | |
Краткое описание: | Квалификационный разряд | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
DATE_QUAL | Дата | Дата |
REASON_QUAL | Текстовый (20) | Основание |
QUALIFICAT | Текстовый (20) | Квалификация |
Имя таблицы: | BUS_TRIP.DBF | |
Краткое описание: | Командировки | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
START_TRP | Дата | Дата начала |
CLOSED_TRP | Дата | Дата окончания |
DESTINAT | Текстовый (25) | Место назначения |
Имя таблицы: | HOLIDAY.DBF | |
Краткое описание: | Отпуска | |
Имя поля | Тип данных | Описание |
ORG_NUM | Числовой (6) | Табельный номер сотрудника |
KIND_HOL | Текстовый (15) | Вид отпуска |
BASIS_HOL | Текстовый (15) | Основание |
WITH_HOL | Дата | За время с |
ON_HOL | Дата | За время по |
D_ST_HOL | Дата | Дата начала |
AMOUNT | Числовой (3) | Количество дней |
D_END_HOL | Дата | Дата окончания |
Итак, спроектировано 11 таблиц базы данных «Кадры». Для удобства работы, 10 из них следует проиндексировать:
таблицу STUFF.DBF по полю ORG_NUM;
таблицу EDUCAT.DBF по полю DATE_BEGIN;
таблицу LANGUAGE.DBF по полю OTH_LANG;
таблицу CONVICT.DBF по полю DATE_VERD;
таблицу FAMILY.DBF по полю DATE_RELAT;
таблицу WORKCARD.DBF по полю DATE_WRK;
таблицу MOVING.DBF по полю DATE_MOV;
таблицу QUALIFIC.DBF по полю DATE_QUAL;
таблицу BUS_TRIP.DBF по полю START_TRP;
таблицу
HOLIDAY.DBF по полю WITH_HOL.
2.4 Разработка приложения
Для создания проекта использовалась СУБД FoxPro 2.6.
В состав проекта входит 28 командных файлов. Можно было бы в качестве процедур объединить их в один файл, но тогда, в дальнейшем, стало было неудобно их изменять. Взаимосвязь командных файлов представлена на рис. 2.4.1 графического материала.
Стартовым
в проекте является файл START.PRG, в котором
устанавливается операционная среда системы,
формируется экран, а также описывается
рабочее меню. В состав рабочего меню входят
горизонтальное BAR-меню и три вертикальных
POPUP-меню:
Данные о сотрудниках | Сервис | Справки | Выход |
В
пункте <Данные о сотрудниках>:
Просмотр |
Редактирование |
Добавление |
Удаление |
В
пункте <Сервис>:
Переиндексация баз |
Инициализация баз |
В
пункте <Справки>:
Краткая справка о сотруднике |
При выборе <Просмотр>, <Редактирование> или <Добавление>, запускаются программные файлы (модули) READ.PRG, WRITE.PRG или NEW.PRG соответственно. Задача этих модулей - запуск R_W.PRG с необходимыми параметрами. В частности задаются переменные edit и type (edit=.t. – редактирование полей разрешено, edit=.f. – редактирование запрещено, type=1 – выводится сообщение «просмотр данных», type=2 – «редактирование данных», type=3 – «добавление данных»). NEW.PRG также должен добавить пустую запись в таблицу STUFF.DBF.
Так
как анкетные данные довольно обширны,
для их отображения пользоваться только
командами BROWSE или CHANGE неудобно. В данном
проекте использовались GET-поля для таблиц
STUFF.DBF, PASSPORT.DBF и BROWSE-окна для остальных.
Описание экранов с GET-полями, а также условия
ввода данных, заложены в модулях WIEV1.PRG,
WIEV2.PRG, WIEV3.PRG, WIEV4.PRG, WIEV5.PRG, которые запускает
R_W.PRG (чтобы не перечислять каждый раз,
назову их WIEVn). В зависимости от значения
переменной edit, в GET-полях разрешено
или запрещено редактирование данных.
Экраны, формируемые этими модулями, кроме
области редактирования данных содержат
в верхней части экрана номер «листа»,
Ф.И.О. сотрудника, вид операции, а в нижней
части экрана - опции управления:
<ВПЕРЕД>
ЛИСТАТЬ <НАЗАД> |
<СЛЕДУЮЩАЯ >
ЗАПИСЬ <ПРЕДЫДУЩАЯ> <НАЙТИ > |
<ПЕЧАТЬ> <ВЫХОД> |
<ВПЕРЕД>
- передает управление
<НАЗАД>
- передает управление
<СЛЕДУЮЩАЯ>
- переходит к следующему
<ПРЕДЫДУЩАЯ> - возвращается к предыдущему сотруднику
Если номер экрана больше 5, то управление передается экрану №1.
Если номер экрана меньше 1, то управление передается экрану №5.
Подобная же схема действует и на выбор следующего или предыдущего сотрудника.
<НАЙТИ>
- позволяет не перебирать
<ПЕЧАТЬ> - выводит на печать все данные о текущем сотруднике.
<ВЫХОД> - возврат в главное меню.
Кроме данных опций, экраны содержат дополнительно опции, позволяющие просмотреть связанную с ними дополнительную информацию. На каждом экране эти опции разные. С правой части от опции - выводится количество записей в разделе.
Все опции описаны LIGHTBAR-меню.
При
выборе некоторой опции происходит
выход из текущего модуля WIEVn с возвращением
списка переменных в модуль R_W.PRG. В соответствии
со значением переменных, управление передается
тому или иному модулю.
Переменная | Значение | Условие на выполнение | Действие | |
Выбрано | не выбрано | |||
up | 1 | 5 | Up=1 | list=list+1
(затем в соответствии со значением list запускается один из модулей WIEV.PRG) |
down | 1 | 5 | Down=1 | list=list-1
(затем в соответствии со значением list запускается один из модулей WIEV.PRG) |
previos | 1 | 5 | Previos=1 | SKIP –1
(затем в соответствии со значением list запускается один из модулей WIEV.PRG (при этом меняется сотрудник)) |
next | 1 | 5 | Next=1 | SKIP 1
(затем в соответствии со значением list запускается один из модулей WIEV.PRG (при этом меняется сотрудник)) |
find | 1 | 5 | Find=1 | DO search.prg WITH orgnum1,
edit
(переменная orgnum1 необходима для связи с ключом, переменная edit разрешает (edit=.t.) или запрещает (edit=.f.) редактирование поля) |
1 | 5 | Print=1 | DO print.prg | |
exit | 1 | 5 | Exit=1 | END DO
(возвращение в вышестоящий модуль и затем в модуль с главным меню START.PRG) |
eduadd | 1 | 5 | Eduadd=1 | DO educat.prg WITH orgnum1, edit |
forlang | 1 | 5 | Forlang=1 | DO language.prg WITH orgnum1, edit |
conv | 1 | 5 | Conv=1 | DO convict.prg WITH orgnum1, edit |
structfam | 1 | 5 | Structfam=1 | DO family.prg WITH orgnum1, edit |
bok | 1 | 5 | Bok=1 | DO workcard.prg WITH orgnum1, edit |
purpos | 1 | 5 | Purpos=1 | DO move.prg WITH orgnum1, edit |
qualcateg | 1 | 5 | Qualcateg=1 | DO qualif.prg WITH orgnum1, edit |
tripsbus | 1 | 5 | Tripsbus=1 | DO bus_trip.prg WITH orgnum1, edit |
holid | 1 | 5 | Holid=1 | DO holiday.prg WITH orgnum1, edit |
pass | 1 | 5 | Pass=1 | DO passport.prg WITH orgnum1, edit |