Автор работы: Пользователь скрыл имя, 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 |