Разработка базы данных Кадры
|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 |
| | | | |(затем в соответствии со |
Страницы: 1, 2, 3, 4, 5, 6, 7
|