close

Вход

Забыли?

вход по аккаунту

?

Договор аренды

код для вставкиСкачать
Aвтор: Пикулев А.А. ЧелГУ/специализация "Гражданское право"/Руководитель диплома Камалов О.А.
Русский гуманитарно-технический колледж
"Тантал"
Факультет технической кибернетики
"Утверждаю"
Зав. кафедрой
факультета технической
кибернетики
__________________________
"_____"_____________2001 г.
Дипломная работа
Студента Жучкова М.Ю. рег. номер ___________
Тема: Разработка базы данных "Кадры"
Руководитель: ____________/ /
Рецензент: _______________/ /
Оглавление:
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
1. ВВЕДЕНИЕ
Открытое акционерное общество "Судостроительный завод "Лотос" предназначен для строительства морских буровых стационарных платформ разведки и добычи нефти и строительства судов различного назначения. Предприятие располагает большими техническими возможностями (до 30000 тонн металла в год) и квалифицированными кадрами, аттестовано на класс Речного Регистра, Морского Регистра Судоходства, а также Германского Ллойда.
ОАО "ССЗ "ЛОТОС" предлагает к изготовлению:
технические средства для освоения газовых и нефтяных месторождений на шельфе мирового океана и внутренних морей;
сухогрузные и нефтеналивные суда различного района плавания - морского, речного и смешанного "река - море" (спусковой вес около 15000 т);
вспомогательные суда различного назначения;
суда технического флота.
В данной дипломной работе осуществлена разработка базы данных для отдела кадров.
Автоматизация подсистемы управления кадрами является одной из важнейших частей автоматизации производственно-хозяйственной деятельности предприятия.
Несмотря на определенную унификацию баз данных для управления кадрами судостроительного предприятия такая база имеет определенные специфические отличия, например, разработаны такие поля, которые необходимы для расчета трудоемкости постройки судов и т.д.
Определенная задача состояла в разработке полноты базы, т.е. осуществлена такая архитектура, которая могла бы осуществить как работу поисковых систем для отдела кадров и других отделов предприятия, так и формирование выходной информации, необходимой для функционирования задач подсистемы управления кадрами и сведений для руководства предприятия.
2. ОСНОВНАЯ ЧАСТЬ
Разработка базы данных "Кадры"
2.1 Описание предметной области
Предметной областью называется часть реального мира, представляющая интерес для данного исследования (использования) [1].
Вкратце рассмотрим схему работы отдела кадров. Инспектор отдела кадров заполняет личное дело сотрудника данными. В список анкетных данных входят:
- фамилия;
- имя;
- отчество;
- табельный номер;
- страховой номер;
- пол;
- дата рождения;
- место рождения;
- национальность;
- социальное происхождение;
- гражданство;
- образование;
- название учебного заведения;
- форма обучения;
- год окончания учебного заведения;
- диплом (серия, номер);
- квалификация по диплому;
- специальность по диплому;
- образование (дополнительное);
- вид найма;
- вид работы;
- ученая степень;
- ученое звание;
- узкая специальность;
- владение иностранными языками;
- наличие судимости;
- семейное положение;
- состав семьи;
- состоит ли в профсоюзе;
- имеет ли группу инвалидности;
- является ли пенсионером;
- является ли участником войны;
- домашний почтовый индекс;
- район проживания;
- область;
- домашний адрес;
- домашний телефон;
- паспортные данные (серия, номер, кем выдан, прописка);
- воинская обязанность;
- воинское звание;
- номер военно-учетной специальности;
- военный билет (серия, номер);
- годность к военной службе;
- отношение к бронированию;
- наличие моб. предписания;
- группа учета;
- категория учета;
- к какому райвоенкомату причислен;
- дата начала срочной службы
- дата окончания срочной службы;
- дата последнего прохождения мед. комиссии;
- данные трудовой книжки;
- данные о назначениях и перемещениях;
- квалификационный разряд;
- учреждение;
- подразделение;
- текущая должность;
- дата приема на работу;
- дата окончания испытательного срока;
- информация о командировках;
- информация об отпусках;
- дата увольнения;
- ИНН;
- серия свидетельства налогоплательщика;
- номер свидетельства налогоплательщика;
- дата выдачи свидетельства налогоплательщика.
Периодически инспектор отдела кадров подшивает в дело новые сведения и приказы, касающиеся этого сотрудника. Время от времени сотруднику требуется выдать справки фиксированного содержания на основании данных личного дела (краткая информация о сотруднике и др.).
В разрабатываемом приложение должна иметься возможность добавления нового и удаление старого сотрудника в базе данных, редактирование его анкетных данных. Также должны быть предусмотрены функции поиска данных по фамилии сотрудника, функции формирования и печати справки содержащую краткую информация о сотруднике, печати всех данных о нем, переиндексации и инициализации баз данных.
2.2 Построение инфологической и даталогической модели
Описание предметной области, выполненное без ориентации на используемые в дальнейшем программные и технические средства, называется инфологической моделью [1].
Для того, чтобы база данных адекватно отражала предметную область, проектировщик базы данных должен хорошо представлять себе все нюансы, присущие данной предметной области (ПО), и уметь отобразить их в базе данных. Поэтому прежде чем начинать проектирование базы данных, необходимо как следует разобраться, как функционирует предметная область, для отображения которой создается БД. Предметная область должна быть предварительно описана. Для этого в принципе может использоваться и естественный язык, но его применение имеет много недостатков, основным из которых являются громоздкость описания и неоднозначность его трактовки. Поэтому обычно для этих целей используют искусственные формализованные языковые средства. В связи с этим под инфологической моделью (ИЛМ) понимают описание предметной области, выполненное с использованием специальных языковых средств, не зависящих от используемых в дальнейшем программных средств [1].
Для описания инфологической модели были использованы графические средства. Описание связи "объект-свойство" изображено на рис. 2.2.1 графического материала.
База данных "Кадры" разрабатывается для хранения текстовой информации (хотя для удобства ввода некоторые поля таблиц - числовые), поэтому в приложении не будут применены вычисления введенных оператором данных. Даталогическая модель является моделью логического уровня и представляет собой отображение логических связей между элементами данных безотносительно к их содержанию и среде хранения. Эта модель строится в терминах информационных единиц, допустимых в той конкретной СУБД, в среде которой мы проектируем базу данных [1].
Отделу кадров ОАО "ССЗ "Лотос" необходимо решать следующие задачи:
Регистрация новых сотрудников.
Уточнение данных по существующим сотрудникам.
Удаление сотрудников.
Опишем задачи, заполнив рабочий бланк №1.
В рабочий бланк задачи нужно занести имя каждого элемента данных, его использование и краткое описание этого элемента. При заполнении столбца "Использование" рабочего бланка применяются пять обозначений - I,O,U,D, и C. Это первые буквы слов Input(Ввод), Output(Вывод), Update(Изменения), Delete(Удаление), Calculate(Вычисления). В столбец "Объект" записывается имя объекта.
В качестве имен элементов/объектов подберем краткий английский перевод описания этих элементов/объектов.
РАБОЧИЙ БЛАНК №1 ОПИСАНИЯ ЗАДАЧНаименование задачи:Анкетные данные сотрудниковКраткое описание:Регистрация новых сотрудников.
Уточнение данных по существующим сотрудникам.
Удаление.Список связанных задач:Ввод, изменения, анкетных данных.
Имя элемента данныхИспользованиеОписаниеОбъектOrganic numberI, UТабельный номер сотрудникаStuffInsurance numberI, UСтраховой номерStuffSurnameI, UФамилия StuffNameI, UИмяStuffPatronymic nameI, UОтчествоStuffSexI, UПолStuffDate of birthI, UДата рожденияStuffBirthplaceI, UМесто рожденияStuffNationalityI, UНациональностьStuffSocial originI, UСоциальное происхождениеStuffCitizenshipI, UГражданствоStuffEducationI, UОбразованиеStuffEducation institutionI, UНазвание учебного заведенияStuffForm of trainingI, UФорма обученияStuffYear of the endingI, UГод окончанияStuffDiplomaI, UДиплом (серия)StuffQualificationI, UКвалификация по дипломуStuffSpecialityI, UСпециальность по дипломуStuffAmount education additionalOКоличество записей в разделе "Дополнительное образование"StuffKind of hiringI, UВид наймаStuffKind of workI, UВид работыStuffScientific degreeI, UУченая степеньStuffScientific rankI, UУченое званиеStuffNarrow specialityI, UУзкая специальностьStuffAmount foreign languagesOКоличество записей в разделе "Владение иностранными языками"StuffAmount convictionOКоличество записей в разделе "Наличие судимости"StuffMarital statusI, UСемейное положениеStuffAmount familyOКоличество записей в разделе "Состав семьи"StuffTrade unionI, UПрофсоюзStuffGroup of inabilityI, UГруппа инвалидностиStuffPensionerI, UПенсионер ?StuffParticipant of a warI, UУчастник войныStuffPostal indexI, UДомашний индексStuffRegionI, UРайонStuffAreaI, UОбластьStuffHome addressI, UДомашний адресStuffTelephone numberI, UДомашний телефонStuffPassportI, UСерия, номерStuffConscriptionI, UВоинская обязанностьStuffMilitary rankI, UВоинское званиеStuffNumberI, UНомер ВУСStuffMilitary ticketI, UНомер военного билетаStuffValidity to military serviceI, UГодность к военной службеStuffAttitude to bookingI, UОтношение к бронированиюStuffMobile instructionsI, UНаличие моб, предписанияStuffGroup of thee accountI, UГруппа учетаStuffCategory of the accountI, UКатегория учетаStuffCommissionersI, UРайвоенкоматStuffDate started serviceI, UДата начала срочной службыStuffDate close serviceI, UДата окончания срочной службыStuffDate of lastI, UДата последнего прохождения мед. комиссииStuffAmount work record cardsOКоличество записей в разделе "Трудовая книжка"StuffAmount purpose and movingOКоличество записей в разделе "Назначения и перемещения"StuffAmount qualifying categoryOКоличество записей в разделе "Квалификационный разряд"StuffCompany nameI, UНазвание учрежденияStuffSubdivisionI, UПодразделениеStuffCurrent postI, UТекущая должностьStuffDate of employmentI, UДата приема на работуStuffDate closed of a trial periodI, UДата окончания испытательного срокаStuffAmount business tripOКоличество записей в разделе "Командировки"StuffAmount holidayOКоличество записей в разделе "Отпуска"StuffDate of dismissalI, UДата увольненияStuffReason of dismissalI, UПричина увольненияStuffIndividual numberI, UИндивидуальный номер налогоплательщикаStuffTax bearer series I, UСерия свидетельства налогоплательщикаStuffTax bearer number I, UНомер свидетельства налогоплательщикаStuffTax bearer distribution date I, UДата выдачи свидетельства налогоплательщикаStuffDate begin in educationI, UДата поступления в у/зEducation additionalDate of end educationI, UДата окончания у/зEducation additionalAdditional educationI, UОбразованиеEducation additionalName educationI, UНазвание у/зEducation additionalDiploma educationI, UДипломEducation additionalForm of training additionalI, UФорма обученияEducation additionalQualification additionalI, UКвалификацияEducation additionalSpeciality additionalI, UСпециальностьEducation additionalOther languageI, UЯзыкLanguageLevel of possessionI, UУровень владенияLanguageDate of verdictI, UДата вынесения приговораConvictionArticleI, UСтатьяConvictionPeriodI, UСрокConvictionDegree of relationshipI, UСтепень родстваFamilyNamesI, UФамилия, инициалы родственникаFamilyDate of birth relativeI, UДата рожденияFamilyExpenseI, UНа иждивенииFamilyBy whom is givenI, UКем выданPassport registrationDate of distributionI, UДата выдачиPassport registrationIndexI, UИндексPassportArea registrationI, UОбластьPassport registrationRegion registrationI, UРайонPassport registrationCityI, UГородPassport registrationPointI, UНаселенный пунктPassport registrationStreetI, UУлицаPassport registrationHouseI, UДомPassport registrationCorpsI, UКорпусPassport registrationFlatI, UКвартираPassport registrationDate of statementI, UДата постановкиWork record cardDate of dismissalI, UДата увольненияWork record cardName of companyI, UНазвание учрежденияWork record cardA postI, UДолжностьWork record cardReason cardI, UПричинаWork record cardBasis cardI, UОснованиеWork-record cardDate movingI, UДатаPurpose and movingReason movingI, UОснованиеPurpose and movingDepartmentI, UОтделPurpose and movingPostI, UДолжностьPurpose and movingMethod of operatingI, UРежим работыPurpose and movingDate qualificationI, UДатаQualificationReason qualificationI, UОснованиеQualificationQualificationI, UКвалификацияQualificationDate started tripI, UДата началаBusiness tripDate closed tripI, UДата окончанияBusiness tripDestinationI, UМесто назначенияBusiness tripKind of holidayI, UВид отпускаHolidayBasis holidayI, UОснованиеHolidayIn time withI, UЗа время сHolidayIn time onI, UЗа время поHolidayDate started holidayI, UДата началаHolidayAmountI, UКоличество днейHolidayDate closed holidayI, UДата окончанияHoliday Теперь можно приступить к более тщательному анализу данных и объединению отдельных элементов данных в объекты. Эти объекты станут впоследствии основой для создания таблиц в проектируемой базе данных.
Далее следует заполнить еще один комплект рабочих бланков, который поможет объединить элементы данных в объекты. В верхней части бланка для каждого объекта надо перечислить все объекты связанные с данным. В графе бланка "Связь" указывается тип связи ("один-ко-многим" или "один-к-одному").
Для каждого элемента данных, в рабочем бланке объекта, обязательно должны быть указаны тип данных (текстовый, числовой, денежный, Мемо и т.д.) и длина поля, необходимая для их хранения. Должно быть дано краткое описание этого элемента, которое впоследствии будет использоваться при определении таблицы.
Также, в бланке должно быть записано условие на значение, которое будет применяться к соответствующему полю данных. В дальнейшем, можно будет задать эти условия в программных файлах 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-NNNSurnameТекстовый (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)Диплом (серия)ТребуетсяСерия:ХХХХ номер:NNNNNNNNQualificationТекстовый (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. В соответствии со значением переменных, управление передается тому или иному модулю.
ПеременнаяЗначениеУсловие на выполнениеДействиеВыбраноне выбраноup15Up=1list=list+1
(затем в соответствии со значением list запускается один из модулей WIEV.PRG)down15Down=1list=list-1
(затем в соответствии со значением list запускается один из модулей WIEV.PRG)previos15Previos=1SKIP -1
(затем в соответствии со значением list запускается один из модулей WIEV.PRG (при этом меняется сотрудник))next15Next=1SKIP 1
(затем в соответствии со значением list запускается один из модулей WIEV.PRG (при этом меняется сотрудник))find15Find=1DO search.prg WITH orgnum1, edit
(переменная orgnum1 необходима для связи с ключом, переменная edit разрешает (edit=.t.) или запрещает (edit=.f.) редактирование поля)print15Print=1DO print.prgexit15Exit=1END DO (возвращение в вышестоящий модуль и затем в модуль с главным меню START.PRG)eduadd15Eduadd=1DO educat.prg WITH orgnum1, editforlang15Forlang=1DO language.prg WITH orgnum1, editconv15Conv=1DO convict.prg WITH orgnum1, editstructfam15Structfam=1DO family.prg WITH orgnum1, editbok15Bok=1DO workcard.prg WITH orgnum1, editpurpos15Purpos=1DO move.prg WITH orgnum1, editqualcateg15Qualcateg=1DO qualif.prg WITH orgnum1, edittripsbus15Tripsbus=1DO bus_trip.prg WITH orgnum1, editholid15Holid=1DO holiday.prg WITH orgnum1, editpass15Pass=1DO passport.prg WITH orgnum1, edit Модули BUS_TRIP.PRG, CONVICT.PRG, EDUCAT.PRG, FAMILY.PRG, HOLIDAY.PRG, LANGUAGE.PRG, MOVE.PRG, QUALIF.PRG, WORKCARD.PRG, формируют BROWSE-окна для отображения дополнительной информации. PASSPORT.PRG формирует GET-поля.
Модуль PRINT выводит все анкетные данные сотрудника на печать.
Модуль SEARCH.PRG позволяет выбрать нужного сотрудника. Этот модуль вызывается как из R_W.PRG, так и из REFEREN.PRG.
Чтобы удалить анкетные данные сотрудника(ов) из базы, следует выбрать пункт подменю <Удаление>. При этом запускается модуль DEL_REC.PRG позволяющий нажатием клавиш Ctrl+T пометить к удалению сотрудника(ов). Можно отменить метку, повторно нажав Ctrl+T. Эти действия реализует модуль DL_UNDL.PRG путем пометки к удалению/снятия пометки к удалению во всех таблицах записей, имеющих то же значение ORG_NUM, что и в таблице STUFF.DBF. Затем, после выхода из BROWSE-окна, модуль DEL_REC.PRG упаковывает всю базу "КАДРЫ".
При выборе пункта <Переиндексация базы> меню <Сервис> запускается модуль INDEX.PRG, индексирующий таблицы. Пункт <Инициализация базы> запускает модуль INITIAL.PRG, который выдает запрос "ЭТО действие уничтожит все данные. Вы уверены в его необходимости?" и в случае положительного ответа, удаляет все данные из базы, сохраняя при этом ее логическую структуру.
Для формирования на печать краткой справки сотрудника следует выбрать пункт меню <Справки> => <Краткая справка о сотруднике>. В результате запустится модуль REFEREN.PRG, который для выбора нужного сотрудника передаст управление модулю SEARCH.PRG и затем сформирует справку и отправит ее на печать. Пункт меню <Справки> был создал для того, чтобы, в дальнейшем было удобно добавлять новые модули печати других справок.
Выбор пункта главного меню <Выход> передаст управление модулю END.PRG, который закроет все открытые файлы и завершит работу.
Листинг командных файлов и DOS-распечатки экранов, приведены в приложении.
3. ОХРАНА ТРУДА
Охрана труда - система законодательных актов, постановлений, организационных, санитарных и технических мер, обеспечивающих безопасные для здоровья условия труда на рабочем месте. Научно-технический прогресс внес изменения в условия производственной деятельности работников умственного труда. Их труд стал более интенсивным, напряженным, требующим затрат умственной, эмоциональной и физической энергии. Это имеет прямое отношение и к специалистам, связанным с проектированием, разработкой, эксплуатацией, сопровождением и модернизацией автоматизированных систем управления различного назначения.
На рабочем месте оператора должны быть созданы условия для высокопроизводительного труда. Оператор АРМ испытывает значительную нагрузку, как физическую (сидячее положение, нагрузка на глаза), так и умственную, что приводит к снижению его трудоспособности к концу рабочего дня.
Существуют нормативы, определяющие комфортные условия и предельно допустимые нормы запыленности, температуры воздуха, шума, освещенности. В системе мер, обеспечивающих благоприятные условия труда, большое место отводится эстетическим факторам: оформление производственного интерьера, оборудования, применение функциональной музыки и др., которые оказывают определенное воздействие на организм человека. Важную роль играет окраска помещений, которая должна быть светлой. В данном разделе дипломного проекта рассчитывается необходимая освещенность рабочего места и информационная нагрузка оператора.
Развитию утомляемости на производстве способствуют следующие факторы:
- неправильная эргономическая организация рабочего места, нерациональные зоны размещения оборудования по высоте от пола, по фронту от оси симметрии и т.д.;
- характер протекания труда. Трудовой процесс организован таким образом, что оператор вынужден с первых минут рабочего дня решать наиболее сложные и трудоемкие задачи, в то время как в первые минуты работы функциональная подвижность нервных клеток мозга низка. Важное значение имеет чередование труда и отдыха, смена одних форм работы другими.[4]
Одним из основных вопросов охраны труда является организация рационального освещения производственных помещений и рабочих мест.
Для освещения помещения, в котором работает оператор, используется смешанное освещение, т.е. сочетание естественного и искусственного освещения.
Естественное освещение - осуществляется через окна в наружных стенах здания.
Искусственное освещение - используется при недостаточном естественном освещении и осуществляется с помощью двух систем: общего и местного освещения. Общим называют освещение, светильники которого освещают всю площадь помещения. Местным называют освещение, предназначенное для определенного рабочего места.
Для помещения, где находится рабочее место оператора, используется система общего освещения.
Нормами для данных работ установлена необходимая освещенность рабочего места ЕН=300 лк (для работ высокой точности, когда наименьший размер объекта различения равен 0.3 - 0.5 мм).
Для исключения засветки экранов дисплеев прямыми световыми потоками светильники общего освещения располагают сбоку от рабочего места, параллельно линии зрения оператора и стене с окнами.[5]
Кроме того, необходимо в течение 8-ми часового рабочего дня предусмотреть один часовой перерыв на обед, 5-ти минутные перерывы каждые полчаса и 15-ти минутные перерывы каждые 1.5 - 2 часа. Работу необходимо организовать таким образом, чтобы наиболее сложные задачи решались с 11:00 до 16:00 - в период наибольшей активности человека, а не в начале дня, когда оператор еще не достиг максимальной активности, и не в конце дня, когда уже развивается утомление.
Так как работа оператора не связана с решением крупных логических задач и достаточно однообразна, то рекомендуется по-возможности чередовать виды деятельности.
4. ЗАКЛЮЧЕНИЕ
В данной дипломной работе разработана архитектура базы "Кадры". в результате анализа данных приведены необходимые поля базы данных, их структура и тип. Сведение их в определенные объекты и построение связи между объектами базы.
Показаны определенные правила, по которым проектировалась база данных.
База данных проектировалась в среде СУБД FoxPro 2.6. В связи с этим разработаны 28 командных файлов предназначенные для ведения базы, включающие в себя сервисные функции управления базой данных, ввода и вывода данных. В программные приложения вошли предлагаемые меню для получения определенных справок о сотрудниках.
Спроектированная база данных "Кадры" и программное обеспечение, обслуживающее базу, дает возможность облегчить работу отдела кадров и применять различные поисковые системы для выбора необходимых сведений о сотрудниках, составе и структуре штатов предприятия.
Работа базы на контрольных данных ОАО "ССЗ "Лотос" показала ее работоспособность и эффективность.
5. БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Теоретическое учебное пособие РГТК "Тантал" по дисциплине "Создание и ведение информационного обеспечения".
2. Теоретическое учебное пособие РГТК "Тантал" по дисциплине "Технология разработки программного обеспечения".
3. Попов А. А. "Программирование в среде СУБД FoxPro 2.0.", М. изд. Радио и связь, 1993 г.
4. Сибаров Ю. Б. "Охрана труда в вычислительных центрах" и др., М. Машиностроение, 1990 г.
5. Самгин Э. Б. "Освещение рабочих мест", изд. МИРЭА, 1989 г.
6. ПРИЛОЖЕНИЕ
Распечатка командных файлов
START.PRG
CLEAR
CLEAR MACROS
SET COLOR TO N
SET HELP OFF
SET CLOCK OFF
SET RESOURCE OFF
SET TALK OFF
SET DOHISTORY OFF
SET STATUS OFF
SET BRSTATUS OFF
SET ESCAPE OFF
SET BELL OFF
SET SCOREBOARD OFF
SET CONFIRM ON
SET DATE GERMAN
SET CENTURY ON
SET DELETED ON
SET EXACT ON
SET HOURS TO 24
SET STICKY ON
SET CURSOR ON
SET SAFETY OFF
RELEASE MENU
RELEASE POPUP
RELEASE WINDOW
SET MESSAGE TO SROWS()-1 CENTER
USE stuff.dbf IN a INDEX stuff.idx
USE passport.dbf IN b
USE educat.dbf IN c INDEX educat.idx
USE language.dbf IN d INDEX language.idx
USE convict.dbf IN e INDEX convict.idx
USE family.dbf IN f INDEX family.idx
USE workcard.dbf IN g INDEX workcard.idx
USE moving.dbf IN h INDEX moving.idx
USE qualific.dbf IN i INDEX qualific.idx
USE bus_trip.dbf IN j INDEX bus_trip.idx
USE holiday.dbf IN 11 INDEX holiday.idx
SELECT a
SET COLOR TO W+/B
@ 0, 0, 24, 79 BOX (REPLICATE(CHR(176),9))
DO WHILE .T.
DEFINE MENU MAINMENU COLOR SCHEME 3
DEFINE PAD data OF MAINMENU PROMPT ' Д\<AННЫЕ О СОТРУДНИКАХ ' ;
AT 0,0
DEFINE PAD service OF MAINMENU PROMPT ' \<CЕРВИС ' AT 0,24
DEFINE PAD list OF MAINMENU PROMPT ' СП\<PАВКИ ' AT 0,34
DEFINE PAD exit OF MAINMENU ;
PROMPT ' ВЫ\<XОД ' AT 0,45
ON SELECTION PAD data OF MAINMENU ACTIVATE POPUP dat
ON SELECTION PAD service OF MAINMENU ACTIVATE POPUP serv
ON SELECTION PAD list OF MAINMENU ACTIVATE POPUP lst
ON SELECTION PAD exit OF MAINMENU DO end.prg
DEFINE POPUP dat FROM 1,0 SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF dat PROMPT ' Просмотр'COLOR SCHEME 3
DEFINE BAR 2 OF dat PROMPT '\-'
DEFINE BAR 3 OF dat PROMPT ' Редактирование 'COLOR SCHEME 3
DEFINE BAR 4 OF dat PROMPT '\-'
DEFINE BAR 5 OF dat PROMPT ' Добавление 'COLOR SCHEME 3
DEFINE BAR 6 OF dat PROMPT '\-' DEFINE BAR 7 OF dat PROMPT ' Удаление 'COLOR SCHEME 3
ON SELECTION BAR 1 OF dat DO read.prg
ON SELECTION BAR 3 OF dat DO write.prg
ON SELECTION BAR 5 OF dat DO new.prg
ON SELECTION BAR 7 OF dat DO del_rec.prg
DEFINE POPUP serv FROM 1,24 SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF serv PROMPT ' Переиндексация базы ' ;
COLOR SCHEME 3
DEFINE BAR 2 OF serv PROMPT '\-'
DEFINE BAR 3 OF serv PROMPT ' Инициализация базы' ;
COLOR SCHEME 3
ON SELECTION BAR 1 OF serv DO index.prg
ON SELECTION BAR 3 OF serv DO initial.prg
DEFINE POPUP lst FROM 1,34 SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF lst PROMPT ' Краткая справка о сотруднике ' ;
COLOR SCHEME 3
ON SELECTION BAR 1 OF lst DO referen.prg
SHOW MENU MAINMENU
ACTIVATE MENU MAINMENU
ENDDO
RETURN
READ.PRG
SELECT a
edit=.f.
type=1
DO r_w.prg WITH edit,type
RETURN
WRITE.PRG
SELECT a
edit=.t.
type=2
DO r_w.prg WITH edit,type
RETURN
NEW.PRG
SELECT a
edit=.t.
type=3
APPEND BLANK
DO r_w.prg WITH edit,type
RETURN
DEL_REC.PRG
SELECT a
DEFINE WINDOW win3 FROM 2, 11 TO 23, 69 NOGROW ;
NOFLOAT NOZOOM SHADOW CLOSE ;
TITLE 'Пометьте удаляемые записи [CTRL+T] и нажмите <ESCAPE>' COLOR SCHEME 10
ACTIVATE WINDOW win3
ON KEY LABEL ctrl+t DO dl_undl.prg WITH org_num
SET DELETED OFF
BROWSE NOAPPEND NOMODIFY LOCK 0 FIELDS org_num :H='Таб. N:', ;
surname :H='Фамилия:', name :H='Имя:',patron :H='Отчество:'
ON KEY LABEL ctrl+t
RELEASE WINDOW win3
WAIT 'Удаление помеченных записей' NOWAIT WINDOW
PACK
SELECT b
PACK
SELECT c
PACK
SELECT d
PACK
SELECT e
PACK
SELECT f
PACK
SELECT g
PACK
SELECT h
PACK
SELECT i
PACK
SELECT j
PACK
SELECT 11
PACK
WAIT CLEAR
SET DELETED ON
RETURN
DL_UNDL.PRG
PARAMETER org_num
org_num1=org_num
IF DELETED()=.t.
RECALL
SELECT b
RECALL FOR org_num=org_num1
SELECT c
RECALL FOR org_num=org_num1
SELECT d
RECALL FOR org_num=org_num1
SELECT e
RECALL FOR org_num=org_num1
SELECT f
RECALL FOR org_num=org_num1
SELECT g
RECALL FOR org_num=org_num1
SELECT h
RECALL FOR org_num=org_num1
SELECT i
RECALL FOR org_num=org_num1
SELECT j
RECALL FOR org_num=org_num1
SELECT 11
RECALL FOR org_num=org_num1
ELSE
DELETE
SELECT b
DELETE FOR org_num=org_num1
SELECT c
DELETE FOR org_num=org_num1
SELECT d
DELETE FOR org_num=org_num1
SELECT e
DELETE FOR org_num=org_num1
SELECT f
DELETE FOR org_num=org_num1
SELECT g
DELETE FOR org_num=org_num1
SELECT h
DELETE FOR org_num=org_num1
SELECT i
DELETE FOR org_num=org_num1
SELECT j
DELETE FOR org_num=org_num1
SELECT 11
DELETE FOR org_num=org_num1
ENDIF
SELECT a
RETURN
R_W.PRG
PARAMETER edit,type,up,down,next,previos,find,print,exit,eduadd,forlang, ;
conv,structfam,pass,bok,purpos,qualcateg,tripsbus,holid
list=1
exit=5
SET COLOR TO N/W+
SELECT A
IF RECCOUNT()=0
APPEND BLANK
ENDIF
DEFINE WINDOW win0 FROM 0, 0 TO 2, 79 NOGROW ;
NOFLOAT NOZOOM COLOR W+/N
DEFINE WINDOW win1 FROM 3, 0 TO 24, 79 NOGROW;
NOFLOAT NOZOOM COLOR GR+/B
DO WHILE exit<>1
ACTIVATE WINDOW win0
CLEAR
@ 0,8 SAY ALLTRIM(surname)+' '+ALLTRIM(name)+' '+ALLTRIM(patron)
IF type=1
@ 0,63 SAY 'ПРОСМОТР ДАННЫХ'
ENDIF
IF type=2
@ 0,57 SAY 'РЕДАКТИРОВАНИЕ ДАННЫХ'
ENDIF
IF type=3
@ 0,61 SAY 'ДОБАВЛЕНИЕ ДАННЫХ'
ENDIF
IF list=1
@ 0,0 SAY 'Экран 1'
DO wiev1.prg WITH edit
ENDIF
IF list=2
@ 0,0 SAY 'Экран 2'
DO wiev2.prg WITH edit
ENDIF
IF list=3
@ 0,0 SAY 'Экран 3'
DO wiev3.prg WITH edit
ENDIF
IF list=4
@ 0,0 SAY 'Экран 4'
DO wiev4.prg WITH edit
ENDIF
IF list=5
@ 0,0 SAY 'Экран 5'
DO wiev5.prg WITH edit
ENDIF
IF previos=1
SKIP -1
IF BOF()=.t.
GO BOTTOM
ENDIF
ENDIF
IF next=1
SKIP 1
IF EOF()=.t.
GO TOP
ENDIF
ENDIF
IF down=1
IF list<>1
list=list-1
ELSE
list=5
ENDIF
ENDIF
IF up=1
IF list<>5
list=list+1
ELSE
list=1
ENDIF
ENDIF
IF find=1
DO search.prg
ENDIF
org_num1=org_num
IF eduadd=1
DO educat.prg WITH org_num1,edit
ENDIF
IF forlang=1
DO language.prg WITH org_num1,edit
ENDIF
IF conv=1
DO convict.prg WITH org_num1,edit
ENDIF
IF structfam=1
DO family.prg WITH org_num1,edit
ENDIF
IF pass=1
DO passport.prg WITH org_num1,edit
ENDIF
IF bok=1
DO workcard.prg WITH org_num1,edit
ENDIF
IF purpos=1
DO move.prg WITH org_num1,edit
ENDIF
IF qualcateg=1
DO qualif.prg WITH org_num1,edit
ENDIF
IF tripsbus=1
DO bus_trip.prg WITH org_num1,edit
ENDIF
IF holid=1
DO holiday.prg WITH org_num1,edit
ENDIF
IF print=1
DO print.prg
ENDIF
ENDDO
RELEASE WINDOW win1
RELEASE WINDOW win0
RETURN
WIEV1.PRG
PARAMETER edit
ACTIVATE WINDOW win1
CLEAR
eduadd=5
forlang=5
conv=5
structfam=5
pass=5
bok=5
purpos=5
qualcateg=5
tripsbus=5
holid=5
org_n=org_num
@ 1,1 SAY'Таб. номер:__________________'
@ 2,1 SAY'Страховой номер:_____________'
@ 3,1 SAY'Фамилия:_____________________'
@ 4,1 SAY'Имя:_________________________'
@ 5,1 SAY'Отчество:____________________'
@ 6,1 SAY'Пол:_________________________'
@ 7,1 SAY'Дата рождения:_______________'
@ 8,1 SAY'Место рождения:______________'
@ 9,1 SAY'Национальность:______________'
@ 10,1 SAY'Социальное происхождение:____'
@ 11,1 SAY'Гражданство:_________________'
@ 12,1 SAY'Образование:_________________'
@ 13,1 SAY'Название учебного заведения:_'
@ 14,1 SAY'Форма обучения:______________'
@ 15,1 SAY'Год окончания:_______________'
@ 18,4 SAY'ЛИСТАТЬ'
@ 18,29 SAY'ЗАПИСЬ'
@ 16,0,16,77 BOX
@ 17,26,19,26 BOX
@ 17,52,19,52 BOX
STORE 6 TO org_num,ins_num,surname,name,up,down,next,;
previos,find,print,exit
@ 1,30 GET org_num VALID UN()=.t. ERROR ;
'Такой табельный номер уже существует'SIZE 1,6 WHEN edit=.t. COLOR SCHEME 2
@ 2,30 GET ins_num PICTURE 'NNN-NNN-NNN' SIZE 1,11 ;
WHEN edit=.t. COLOR SCHEME 2
@ 3,30 GET surname SIZE 1,15 WHEN edit=.t. COLOR SCHEME 2
@ 4,30 GET name SIZE 1,15 WHEN edit=.t. COLOR SCHEME 2
@ 5,30 GET patron SIZE 1,15 WHEN edit=.t. COLOR SCHEME 2
@ 6,30 GET sex VALID sex='М'OR sex='Ж'OR sex='м'OR sex='ж' ;
ERROR '[М]ужской или [Ж]енский' SIZE 1,1 ;
WHEN edit=.t. COLOR SCHEME 2
@ 7,30 GET birth_date SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
@ 8,30 GET birthplace SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 9,30 GET national SIZE 1,15 WHEN edit=.t. COLOR SCHEME 2
@ 10,30 GET SOCIAL SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 11,30 GET citizen SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 12,30 GET educat SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 13,30 GET NAME_EDU SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 14,30 GET form_train SIZE 1,20 WHEN edit=.t. COLOR SCHEME 2
@ 15,30 GET year_end SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
STORE "* ВПЕРЕД" TO MPROMPTS
@ 17,14 GET up FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* НАЗАД " TO MPROMPTS
@ 19,14 GET down FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* СЛЕДУЮЩАЯ " TO MPROMPTS
@ 17,38 GET next FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПРЕДЫДУЩАЯ" TO MPROMPTS
@ 18,38 GET previos FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* НАЙТИ " TO MPROMPTS
@ 19,38 GET find FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПЕЧАТЬ" TO MPROMPTS
@ 17,62 GET print FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
STORE "* ВЫХОД" TO MPROMPTS
@ 19,62 GET exit FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
READ CYCLE
IF org_n<>org_num
org_n1=org_num
SELECT 2
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 3
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 4
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 5
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 6
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 7
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 8
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 9
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 10
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 11
REPLACE org_num WITH org_n1 FOR org_num=org_n
SELECT 1
ENDIF
RETURN
FUNCTION un
rec_un=RECNO()
tab_un=org_num
SEEK tab_un
IF RECNO()=rec_un
SKIP
ENDIF
IF tab_un=org_num AND !EOF()
GO rec_un
RETURN .f.
ENDIF
GO rec_un
RETURN
WIEV2.PRG
PARAMETER edit
ACTIVATE WINDOW win1
CLEAR
eduadd=5
forlang=5
conv=5
structfam=5
pass=5
bok=5
purpos=5
qualcateg=5
tripsbus=5
holid=5 @ 1,1 SAY'Диплом:______________________'
@ 2,1 SAY'Квалификация по диплому:_____'
@ 3,1 SAY'Специальность по диплому:_____'
@ 4,30 SAY EDU_NUM COLOR SCHEME 2
@ 5,1 SAY'Вид найма:___________________'
@ 6,1 SAY'Вид работы:__________________'
@ 7,1 SAY'Ученая степень:______________'
@ 8,1 SAY'Ученое звание:_______________'
@ 9,1 SAY'Узкая специальность:_________'
@ 10,30 SAY LANG_NUM COLOR SCHEME 2
@ 11,30 SAY conv_num COLOR SCHEME 2
@ 12,1 SAY'Семейное положение:__________'
@ 13,30 SAY famil_num COLOR SCHEME 2
@ 14,1 SAY'Профсоюз:____________________'
@ 15,1 SAY'Группа инвалидности:_________'
@ 18,4 SAY'ЛИСТАТЬ'
@ 18,29 SAY'ЗАПИСЬ'
@ 16,0,16,77 BOX
@ 17,26,19,26 BOX
@ 17,52,19,52 BOX
STORE 6 TO diploma,qual_dip,spec_dip,eduadd, ;
kind_hir,KIND_WRK,s_degree,s_rank,mar_spec, ;
forlang,conv,mar_status,structfam,tr_union,group, ;
up,down,next,previos,find,print,exit
@ 1,30 GET diploma PICTURE 'серия:XXXX номер:NNNNNNNN' ;
SIZE 1,25 WHEN edit=.t. COLOR SCHEME 2
@ 2,30 GET qual_dip SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 3,30 GET spec_dip SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
STORE "* Образование (дополнит.):____" TO MPROMPTS
@ 4,0 GET eduadd FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
@ 5,30 GET kind_hir SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 6,30 GET KIND_WRK SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 7,30 GET s_degree SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 8,30 GET s_rank SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 9,30 GET mar_spec SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
STORE "* Владение иностран. языками:_" TO MPROMPTS
@ 10,0 GET forlang FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
STORE "* Наличие судимости:__________" TO MPROMPTS
@ 11,0 GET conv FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
@ 12,30 GET mar_status SIZE 1,20 WHEN edit=.t. COLOR SCHEME 2
STORE "* Состав семьи:_______________" TO MPROMPTS
@ 13,0 GET structfam FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
@ 14,30 GET tr_union SIZE 1,40 WHEN edit=.t. COLOR SCHEME 2
@ 15,30 GET group SIZE 1,1 WHEN edit=.t. COLOR SCHEME 2
STORE "* ВПЕРЕД" TO MPROMPTS
@ 17,14 GET up FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* НАЗАД " TO MPROMPTS
@ 19,14 GET down FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* СЛЕДУЮЩАЯ " TO MPROMPTS
@ 17,38 GET next FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПРЕДЫДУЩАЯ" TO MPROMPTS
@ 18,38 GET previos FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* НАЙТИ " TO MPROMPTS
@ 19,38 GET find FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПЕЧАТЬ" TO MPROMPTS
@ 17,62 GET print FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
STORE "* ВЫХОД" TO MPROMPTS
@ 19,62 GET exit FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
READ CYCLE
RETURN
WIEV3.PRG
PARAMETER edit
ACTIVATE WINDOW win1
CLEAR
eduadd=5
forlang=5
conv=5
structfam=5
pass=5
bok=5
purpos=5
qualcateg=5
tripsbus=5
holid=5
@ 1,1 SAY'Пенсионер?:__________________'
@ 2,1 SAY'Участник войны?:_____________'
@ 3,1 SAY'Домашний индекс:_____________'
@ 4,1 SAY'Район:_______________________'
@ 5,1 SAY'Область:_____________________'
@ 6,1 SAY'Домашний адрес:______________'
@ 7,1 SAY'Домашний телефон:____________'
@ 9,1 SAY'Воинская обязанность:________'
@ 10,1 SAY'Воинское звание:_____________'
@ 11,1 SAY'Номер ВУС:___________________'
@ 12,1 SAY'Военный билет:_______________'
@ 13,1 SAY'Годность к военной службе:___'
@ 14,1 SAY'Отношение к бронированию:____'
@ 15,1 SAY'Наличие моб. предписания:____'
@ 18,4 SAY'ЛИСТАТЬ'
@ 18,29 SAY'ЗАПИСЬ'
@ 16,0,16,77 BOX
@ 17,26,19,26 BOX
@ 17,52,19,52 BOX
STORE 6 TO pensioner, ;
partic_war,post_index,region,area,address,telephone, ;
pass,passport,conscript,milit_rank,number,mil_ticket,;
mil_valid,attitude,mobile_ins,up,down,next,previos,find,print,exit
@ 1,30 GET pensioner VALID pensioner='д'OR pensioner='Д'OR ;
pensioner='н'OR pensioner='Н' ERROR 'Только [Д]а или [Н]ет' ;
SIZE 1,1 WHEN edit=.t. COLOR SCHEME 2
@ 2,30 GET partic_war VALID partic_war='д'OR partic_war='Д'OR ;
partic_war='н'OR partic_war='Н' ERROR 'Только [Д]а или [Н]ет' ;
SIZE 1,1 WHEN edit=.t. COLOR SCHEME 2
@ 3,30 GET post_index SIZE 1,6 WHEN edit=.t. COLOR SCHEME 2
@ 4,30 GET region SIZE 1,20 WHEN edit=.t. COLOR SCHEME 2
@ 5,30 GET area SIZE 1,40 WHEN edit=.t. COLOR SCHEME 2
@ 6,30 GET address SIZE 1,40 WHEN edit=.t. COLOR SCHEME 2
@ 7,30 GET telephone PICTURE '###-##-## код: ###' ;
SIZE 1,18 WHEN edit=.t. COLOR SCHEME 2
STORE "* Паспортные данные:__________" TO MPROMPTS
@ 8,0 GET pass FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
@ 8,30 GET passport PICTURE 'серия:XXXXXXX-XX номер ######' ;
SIZE 1,29 WHEN edit=.t. COLOR SCHEME 2
@ 9,30 GET conscript SIZE 1,20 WHEN edit=.t. COLOR SCHEME 2
@ 10,30 GET milit_rank SIZE 1,20 WHEN edit=.t. COLOR SCHEME 2
@ 11,30 GET number SIZE 1,12 WHEN edit=.t. COLOR SCHEME 2
@ 12,30 GET mil_ticket PICTURE 'серия:XXX номер #######' ;
SIZE 1,23 WHEN edit=.t. COLOR SCHEME 2
@ 13,30 GET mil_valid SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 14,30 GET attitude SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 15,30 GET mobile_ins VALID mobile_ins='д'OR mobile_ins='Д' ;
OR mobile_ins='н'OR mobile_ins='Н' ;
ERROR 'Только [Д]а или [Н]ет' SIZE 1,1 WHEN edit=.t. ;
COLOR SCHEME 2
STORE "* ВПЕРЕД" TO MPROMPTS
@ 17,14 GET up FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* НАЗАД " TO MPROMPTS
@ 19,14 GET down FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* СЛЕДУЮЩАЯ " TO MPROMPTS
@ 17,38 GET next FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПРЕДЫДУЩАЯ" TO MPROMPTS
@ 18,38 GET previos FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* НАЙТИ " TO MPROMPTS
@ 19,38 GET find FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПЕЧАТЬ" TO MPROMPTS
@ 17,62 GET print FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
STORE "* ВЫХОД" TO MPROMPTS
@ 19,62 GET exit FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
READ CYCLE
RETURN
WIEV4.PRG
PARAMETER edit
ACTIVATE WINDOW win1
CLEAR
eduadd=5
forlang=5
conv=5
structfam=5
pass=5
bok=5
purpos=5
qualcateg=5
tripsbus=5
holid=5
@ 1,1 SAY'Группа учета:________________'
@ 2,1 SAY'Категория учета:_____________'
@ 3,1 SAY'Райвоенкомат:________________'
@ 4,1 SAY'Дата начала срочной службы:__'
@ 5,1 SAY'Дата окончания срочн. службы:'
@ 6,1 SAY'Дата посл. прохожд. мед. ком:'
@ 7,30 SAY record_num COLOR SCHEME 2
@ 8,30 SAY purpos_num COLOR SCHEME 2
@ 9,30 SAY qual_num COLOR SCHEME 2
@ 10,1 SAY'Учреждение:__________________'
@ 11,1 SAY'Подразделение:_______________'
@ 12,1 SAY'Текущая должность:___________'
@ 13,1 SAY'Дата приема на работу:_______'
@ 14,1 SAY'Дата окончания испыт. срока:_'
@ 15,30 SAY trial_num COLOR SCHEME 2
@ 18,4 SAY'ЛИСТАТЬ'
@ 18,29 SAY'ЗАПИСЬ'
@ 16,0,16,77 BOX
@ 17,26,19,26 BOX
@ 17,52,19,52 BOX
STORE 4 TO group_acc, ;
category_a,commissar,start_date,close_date,last_date,bok,purpos, ;
qualcateg,company,suddivis,cur_post,employment,trial_clos, ;
admission,up,down,next,previos,find,print,exit,tripsbus
@ 1,30 GET group_acc SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 2,30 GET category_a SIZE 1,20 WHEN edit=.t. COLOR SCHEME 2
@ 3,30 GET commissar SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 4,30 GET start_date SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
@ 5,30 GET close_date SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
@ 6,30 GET last_date SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
STORE "* Трудовая книжка:____________" TO MPROMPTS
@ 7,0 GET bok FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
STORE "* Назначения и перемещения:___" TO MPROMPTS
@ 8,0 GET purpos FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
STORE "* Квалификационный разряд:____" TO MPROMPTS
@ 9,0 GET qualcateg FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
@ 10,30 GET company SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 11,30 GET subdivis SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 12,30 GET cur_post SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 13,30 GET employment SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
@ 14,30 GET trial_clos SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
STORE "* Командировки:_______________" TO MPROMPTS
@ 15,0 GET tripsbus FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
STORE "* ВПЕРЕД" TO MPROMPTS
@ 17,14 GET up FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* НАЗАД " TO MPROMPTS
@ 19,14 GET down FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* СЛЕДУЮЩАЯ " TO MPROMPTS
@ 17,38 GET next FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПРЕДЫДУЩАЯ" TO MPROMPTS
@ 18,38 GET previos FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* НАЙТИ " TO MPROMPTS
@ 19,38 GET find FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПЕЧАТЬ" TO MPROMPTS
@ 17,62 GET print FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
STORE "* ВЫХОД" TO MPROMPTS
@ 19,62 GET exit FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
READ CYCLE
RETURN
WIEV5.PRG
PARAMETER edit
ACTIVATE WINDOW win1
CLEAR
eduadd=5
forlang=5
conv=5
structfam=5
pass=5
bok=5
purpos=5
qualcateg=5
tripsbus=5
holid=5
@ 1,30 SAY holid_num COLOR SCHEME 2
@ 2,1 SAY'Дата увольнения:_____________'
@ 3,1 SAY'Причина увольнения:__________'
@ 4,1 SAY'ИНН:_________________________'
@ 5,1 SAY'Серия свидет. налогоплател.:_'
@ 6,1 SAY'Номер свидет. налогоплател.:_'
@ 7,1 SAY'Дата свидет. налогоплател.:__'
@ 18,4 SAY'ЛИСТАТЬ'
@ 18,29 SAY'ЗАПИСЬ'
@ 16,0,16,77 BOX
@ 17,26,19,26 BOX
@ 17,52,19,52 BOX
STORE 6 TO holid,date_dis,reason_d,inn,series_tax,num_tax, ;
date_tax,up,down,next,previos,find,print,exit
STORE "* Отпуска:____________________" TO MPROMPTS
@ 1,0 GET holid FUNCTION MPROMPTS SIZE 1, 30 COLOR SCHEME 11
@ 2,30 GET date_dis SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
@ 3,30 GET reason_dis SIZE 1,47 WHEN edit=.t. COLOR SCHEME 2
@ 4,30 GET inn SIZE 1,12 WHEN edit=.t. COLOR SCHEME 2
@ 5,30 GET series_tax SIZE 1,14 WHEN edit=.t. COLOR SCHEME 2
@ 6,30 GET num_tax SIZE 1,14 WHEN edit=.t. COLOR SCHEME 2
@ 7,30 GET date_tax SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
STORE "* ВПЕРЕД" TO MPROMPTS
@ 17,14 GET up FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* НАЗАД " TO MPROMPTS
@ 19,14 GET down FUNCTION MPROMPTS SIZE 1, 8 COLOR SCHEME 11
STORE "* СЛЕДУЮЩАЯ " TO MPROMPTS
@ 17,38 GET next FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПРЕДЫДУЩАЯ" TO MPROMPTS
@ 18,38 GET previos FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* НАЙТИ " TO MPROMPTS
@ 19,38 GET find FUNCTION MPROMPTS SIZE 1, 12 COLOR SCHEME 11
STORE "* ПЕЧАТЬ" TO MPROMPTS
@ 17,62 GET print FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
STORE "* ВЫХОД" TO MPROMPTS
@ 19,62 GET exit FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
READ CYCLE
RETURN
BUS_TRIP.PRG
PARAMETER org_num1,edit
SELECT j
DEFINE WINDOW win3 FROM 3, 11 TO 20, 68 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 10
DEFINE WINDOW win4 FROM 21, 0 TO 24, 79 NOGROW ;
NOFLOAT NOZOOM COLOR R+/N
IF edit=.t.
ACTIVATE WINDOW win4
@ 0,1 SAY'[Ctrl+T]-удалить запись, [Ctrl+N]-создать новую, [Ctrl+W]-сохранить и выйти'
@ 1,30 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Командировки' LOCK 0 ;
FIELDS start_trp :H='Дата начала:', closed_trp :H='Дата окончания:', ;
destinat :H='Место назначения:'
REPLACE org_num WITH org_num1 FOR org_num=0
ELSE
ACTIVATE WINDOW win4
@ 0,26 SAY'Нажмите [ESC] для выхода'
@ 1,28 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Командировки' NOAPPEND NOMODIFY NODELETE ;
LOCK 0 FIELDS start_trp :H='Дата начала:', closed_trp :H='Дата окончания:', ;
destinat :H='Место назначения:'
ENDIF
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SELECT a
RELEASE WINDOW win4
RELEASE WINDOW win3
REPLACE trial_num WITH f
RETURN
CONVICT.PRG
PARAMETER org_num1,edit
SELECT e
DEFINE WINDOW win3 FROM 3, 5 TO 20, 75 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 10
DEFINE WINDOW win4 FROM 21, 0 TO 24, 79 NOGROW ;
NOFLOAT NOZOOM COLOR R+/N
IF edit=.t.
ACTIVATE WINDOW win4
@ 0,1 SAY'[Ctrl+T]-удалить запись, [Ctrl+N]-создать новую, [Ctrl+W]-сохранить и выйти'
@ 1,30 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Наличие судимости' LOCK 0 ;
FIELDS date_verd :H='Дата вынесения приговора:', article :H='Статья:', ;
period :H='Срок:'
REPLACE org_num WITH org_num1 FOR org_num=0
ELSE
ACTIVATE WINDOW win4
@ 0,26 SAY'Нажмите [ESC] для выхода'
@ 1,28 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Наличие судимости' ;
NOAPPEND NOMODIFY NODELETE LOCK 0 ;
FIELDS date_verd :H='Дата вынесения приговора:', article :H='Статья:', ;
period :H='Срок:'
ENDIF
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SELECT a
RELEASE WINDOW win4
RELEASE WINDOW win3
REPLACE conv_num WITH f
RETURN
EDUCAT.PRG
PARAMETER org_num1,edit
SELECT c
DEFINE WINDOW win3 FROM 3, 0 TO 20, 79 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 10
DEFINE WINDOW win4 FROM 21, 0 TO 24, 79 NOGROW ;
NOFLOAT NOZOOM COLOR R+/N
IF edit=.t.
ACTIVATE WINDOW win4
@ 0,1 SAY'[Ctrl+T]-удалить запись, [Ctrl+N]-создать новую, [Ctrl+W]-сохранить и выйти'
@ 1,30 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3
BROWSE FOR org_num=org_num1 TITLE 'Образование (дополнительно)' LOCK 0 ;
FIELDS date_begin :H='Поступил:',date_end :H='Окончил:', ;
education :H='Образование:',name_educ :H='Название у/з:', ;
dipl :H='Диплом:',form_tr :H='Форма обучения:', ;
qualific :H='Квалификация:',special :H='Специальность:'
REPLACE org_num WITH org_num1 FOR org_num=0
ELSE
ACTIVATE WINDOW win4
@ 0,26 SAY'Нажмите [ESC] для выхода'
@ 1,28 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Образование (дополнительно)' NOAPPEND ;
NOMODIFY NODELETE LOCK 0 FIELDS date_begin :H='Поступил:', ;
date_end :H='Окончил:', education :H='Образование:', ;
name_educ :H='Название у/з:',dipl :H='Диплом:', ;
form_tr :H='Форма обучения:',qualific :H='Квалификация:', ;
special :H='Специальность:'
ENDIF
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SELECT a
RELEASE WINDOW win4
RELEASE WINDOW win3
REPLACE EDU_NUM WITH f
RETURN
FAMILY.PRG
PARAMETER org_num1,edit
SELECT f
DEFINE WINDOW win3 FROM 3, 0 TO 20, 79 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 10
DEFINE WINDOW win4 FROM 21, 0 TO 24, 79 NOGROW ;
NOFLOAT NOZOOM COLOR R+/N
IF edit=.t.
ACTIVATE WINDOW win4
@ 0,1 SAY'[Ctrl+T]-удалить запись, [Ctrl+N]-создать новую, [Ctrl+W]-сохранить и выйти'
@ 1,30 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Состав семьи' LOCK 0 ;
FIELDS relation :H='Степень родства:', names :H='Фамилия, инициалы:', ;
date_relat :H='Дата рождения:', expense :H='На иждивении:'
REPLACE org_num WITH org_num1 FOR org_num=0
ELSE
ACTIVATE WINDOW win4
@ 0,26 SAY'Нажмите [ESC] для выхода'
@ 1,28 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Состав семьи' NOAPPEND NOMODIFY NODELETE ;
LOCK 0 FIELDS relation :H='Степень родства:', ;
names :H='Фамилия, инициалы:', date_relat :H='Дата рождения:', ;
expense :H='На иждивении:'
ENDIF
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SELECT a
RELEASE WINDOW win4
RELEASE WINDOW win3
REPLACE famil_num WITH f
RETURN
HOLIDAY.PRG
PARAMETER org_num1,edit
SELECT 11
DEFINE WINDOW win3 FROM 3, 0 TO 20, 79 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 10
DEFINE WINDOW win4 FROM 21, 0 TO 24, 79 NOGROW ;
NOFLOAT NOZOOM COLOR R+/N
IF edit=.t.
ACTIVATE WINDOW win4
@ 0,1 SAY'[Ctrl+T]-удалить запись, [Ctrl+N]-создать новую, [Ctrl+W]-сохранить и выйти'
@ 1,30 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Отпуска' LOCK 0 ;
FIELDS kind_hol :H='Вид отпуска:', basis_hol :H='Основание:', ;
with_hol :H='За время с',on_hol :H='За время по:', ;
d_st_hol :H='Дата начала:', amount :H='Кол-во дней:', ;
d_en_hol :H='Дата окончания:'
REPLACE org_num WITH org_num1 FOR org_num=0
ELSE
ACTIVATE WINDOW win4
@ 0,26 SAY'Нажмите [ESC] для выхода'
@ 1,28 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Отпуска' NOAPPEND NOMODIFY NODELETE LOCK 0 ;
FIELDS kind_hol :H='Вид отпуска:', basis_hol :H='Основание:', ;
with_hol :H='За время с',on_hol :H='За время по:', d_st_hol :H='Дата начала:', ;
amount :H='Кол-во дней:',d_en_hol :H='Дата окончания:'
ENDIF
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SELECT a
RELEASE WINDOW win4
RELEASE WINDOW win3
REPLACE holid_num WITH f
RETURN
LANGUAGE.PRG
PARAMETER org_num1,edit
SELECT d
DEFINE WINDOW win3 FROM 3, 13 TO 20, 67 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 10
DEFINE WINDOW win4 FROM 21, 0 TO 24, 79 NOGROW ;
NOFLOAT NOZOOM COLOR R+/N
IF edit=.t.
ACTIVATE WINDOW win4
@ 0,1 SAY'[Ctrl+T]-удалить запись, [Ctrl+N]-создать новую, [Ctrl+W]-сохранить и выйти'
@ 1,30 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Владение иностранными языками' LOCK 0 ;
FIELDS oth_lang :H='Язык:', level :H='Уровень владения:'
REPLACE org_num WITH org_num1 FOR org_num=0
ELSE
ACTIVATE WINDOW win4
@ 0,26 SAY'Нажмите [ESC] для выхода'
@ 1,28 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Владение иностранными языками' ;
NOAPPEND NOMODIFY NODELETE LOCK 0 ;
FIELDS oth_lang :H='Язык:', level :H='Уровень владения:'
ENDIF
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SELECT a
RELEASE WINDOW win4
RELEASE WINDOW win3
REPLACE LANG_NUM WITH f
RETURN
MOVE.PRG
PARAMETER org_num1,edit
SELECT h
DEFINE WINDOW win3 FROM 3, 0 TO 20, 79 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 10
DEFINE WINDOW win4 FROM 21, 0 TO 24, 79 NOGROW ;
NOFLOAT NOZOOM COLOR R+/N
IF edit=.t.
ACTIVATE WINDOW win4
@ 0,1 SAY'[Ctrl+T]-удалить запись, [Ctrl+N]-создать новую, [Ctrl+W]-сохранить и выйти'
@ 1,30 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Назначения и перемещения' LOCK 0 ;
FIELDS date_mov :H='Дата:', reason_mov :H='Основание:', depart :H='Отдел:', ;
post_mov :H='Должность:',method_mov :H='Режим работы:'
REPLACE org_num WITH org_num1 FOR org_num=0
ELSE
ACTIVATE WINDOW win4
@ 0,26 SAY'Нажмите [ESC] для выхода'
@ 1,28 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Назначения и перемещения' NOAPPEND NOMODIFY NODELETE LOCK 0 ;
FIELDS date_mov :H='Дата:', reason_mov :H='Основание:', depart :H='Отдел:', ;
post_mov :H='Должность:',method_mov :H='Режим работы:'
ENDIF
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SELECT a
RELEASE WINDOW win4
RELEASE WINDOW win3
REPLACE purpos_num WITH f
RETURN
PASSPORT.PRG
PARAMETER org_num1,edit
SELECT b
LOCATE FOR org_num=org_num1
IF FOUND()=.f.
APPEND BLANK
REPLACE org_num WITH org_num1
ENDIF
DEFINE WINDOW win3 FROM 3, 1 TO 24, 78 NOGROW ;
NOFLOAT NOZOOM SHADOW CLOSE COLOR SCHEME 10 TITLE 'ПАСПОРТНЫЕ ДАННЫЕ'
ACTIVATE WINDOW win3
@ 1,5 SAY'Кем выдан:'
@ 2,5 SAY'Дата выдачи:'
@ 6,5 SAY'Индекс:'
@ 7,5 SAY'Область:'
@ 8,5 SAY'Район:'
@ 9,5 SAY'Город:'
@ 10,5 SAY'Населенный пункт:'
@ 11,5 SAY'Улица:'
@ 12,5 SAY'Дом:'
@ 13,5 SAY'Корпус:'
@ 14,5 SAY'Квартира:'
@ 4,2,16,73 BOX
@ 4,30 SAY ' Адрес прописки '
STORE 5 TO exp_given,date_distr,index_p,area_p,region_p,city_p,point_p,street_p,;
house_p,corps_p,flat_p,end
@ 1,20 GET exp_given SIZE 1,50 WHEN edit=.t. COLOR SCHEME 2
@ 2,20 GET date_distr SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
@ 6,30 GET index_p SIZE 1,6 WHEN edit=.t. COLOR SCHEME 2
@ 7,30 GET area_p SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 8,30 GET region_p SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 9,30 GET city_p SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 10,30 GET point_p SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 11,30 GET street_p SIZE 1,30 WHEN edit=.t. COLOR SCHEME 2
@ 12,30 GET house_p SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
@ 13,30 GET corps_p SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
@ 14,30 GET flat_p SIZE 1,10 WHEN edit=.t. COLOR SCHEME 2
STORE "* ВЫХОД" TO MPROMPTS
@ 18,34 GET end FUNCTION MPROMPTS SIZE 1,5 COLOR SCHEME 11
READ CYCLE
SELECT a
RELEASE WINDOW win3
RETURN
QUALIF.PRG
PARAMETER org_num1,edit
SELECT i
DEFINE WINDOW win3 FROM 3, 10 TO 20, 69 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 10
DEFINE WINDOW win4 FROM 21, 0 TO 24, 79 NOGROW ;
NOFLOAT NOZOOM COLOR R+/N
IF edit=.t.
ACTIVATE WINDOW win4
@ 0,1 SAY'[Ctrl+T]-удалить запись, [Ctrl+N]-создать новую, [Ctrl+W]-сохранить и выйти'
@ 1,30 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Квалификационный разряд' LOCK 0 ;
FIELDS date_qual :H='Дата:', reas_qual :H='Основание:', ;
qualificat :H='Квалификационный разряд:'
REPLACE org_num WITH org_num1 FOR org_num=0
ELSE
ACTIVATE WINDOW win4
@ 0,26 SAY'Нажмите [ESC] для выхода'
@ 1,28 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Квалификационный разряд' NOAPPEND NOMODIFY NODELETE LOCK 0 ;
FIELDS date_qual :H='Дата:', reas_qual :H='Основание:', ;
qualificat :H='Квалификационный разряд:'
ENDIF
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SELECT a
RELEASE WINDOW win4
RELEASE WINDOW win3
REPLACE qual_num WITH f
RETURN
WORKCARD.PRG
PARAMETER org_num1,edit
SELECT g
DEFINE WINDOW win3 FROM 3, 0 TO 20, 79 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 10
DEFINE WINDOW win4 FROM 21, 0 TO 24, 79 NOGROW ;
NOFLOAT NOZOOM COLOR R+/N
IF edit=.t.
ACTIVATE WINDOW win4
@ 0,1 SAY'[Ctrl+T]-удалить запись, [Ctrl+N]-создать новую, [Ctrl+W]-сохранить и выйти'
@ 1,30 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Трудовая книжка' LOCK 0 ;
FIELDS date_wrk :H='Дата пост:', date_dism :H='Дата увольн:', ;
name_wrk :H='Название учреждения:', post_wrk :H='Должность:', ;
reason_wrk :H='Причина:',basis_wrk :H='Основание:'
REPLACE org_num WITH org_num1 FOR org_num=0
ELSE
ACTIVATE WINDOW win4
@ 0,26 SAY'Нажмите [ESC] для выхода'
@ 1,28 SAY'[Ctrl+F]-поиск поля'
ACTIVATE WINDOW win3 BROWSE FOR org_num=org_num1 TITLE 'Трудовая книжка' NOAPPEND NOMODIFY ;
NODELETE LOCK 0 FIELDS date_wrk :H='Дата пост:', ;
date_dism :H='Дата увольн:', name_wrk :H='Название учреждения:', ;
post_wrk :H='Должность:',reason_wrk :H='Причина:', ;
basis_wrk :H='Основание:'
ENDIF
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SELECT a
RELEASE WINDOW win4
RELEASE WINDOW win3
REPLACE record_num WITH f
RETURN
PRINT.PRG
SELECT a
n=alltrim(surname)+' '+alltrim(name)+' '+alltrim(patron)
_peject='after'
SET PRINTER ON
SET CONSOLE OFF
PRINTJOB
? space((80-len(n))/2),n
WAIT "Печать" NOWAIT WINDOW
?
? ' Таб. номер: ',org_num
? ' Страховой номер: ',ins_num
? ' Фамилия: ',surname
? ' Имя: ',name
? ' Отчество: ',patron
? ' Пол: ',sex
? ' Дата рождения: ',birth_date
? ' Место рождения: ',birthplace
? ' Национальность: ',national
? ' Социальное происхождение: ',SOCIAL
? ' Гражданство: ',citizen
? ' Образование: ',educat
? ' Название учебного заведения:',NAME_EDU
? ' Форма обучения: ',form_train
? ' Год окончания: ',year_end
? ' Диплом: ',diploma
? ' Квалификация по диплому: ',qual_dip
? ' Специальность по диплому: ',spec_dip
? ' Вид найма: ',kind_hir
? ' Вид работы: ',KIND_WRK
? ' Ученая степень: ',s_degree
? ' Ученое звание: ',s_rank
? ' Узкая специальность: ',mar_spec
? ' Семейное положение: ',mar_status
? ' Профсоюз: ',tr_union
? ' Группа инвалидности: ',group
? ' Пенсионер?: ',pensioner
? ' Участник войны?: ',partic_war
? ' Домашний индекс: ',post_index
? ' Район: ',region
? ' Область: ',area
? ' Домашний адрес: ',address
? ' Домашний телефон: ',telephone
? ' Воинская обязанность: ',conscript
? ' Воинское звание: ',milit_rank
? ' Номер ВУС: ',number
? ' Военный билет: ',mil_ticket
? ' Годность к военной службе: ',mil_valid
? ' Отношение к бронированию: ',attitude
? ' Наличие моб. предписания: ',mobile_ins
? ' Группа учета: ',group_acc
? ' Категория учета: ',category_a
? ' Райвоенкомат: ',commissar
? ' Дата начала срочной службы: ',start_date
? ' Дата окончания срочн.службы:',close_date
? ' Дата посл. прохождения: ',last_date
? ' Учреждение: ',company
? ' Подразделение: ',subdivis
? ' Текущая должность: ',cur_post
? ' Дата приема на работу: ',employment
? ' Дата окончания испыт. срока:',trial_clos
? ' Дата увольнения: ',date_dis
? ' Причина увольнения: ',reason_dis
? ' ИНН: ',inn
? ' Серия свидет. налогоплател.:',series_tax
? ' Номер свидет. налогоплател.:',num_tax
? ' Дата свидет. налогоплател.: ',date_tax
? SPACE (25),'Образование (дополнит.):',EDU_NUM
org_num1=org_num
EDU_NUM1=EDU_NUM
SELECT c
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO EDU_NUM1
? ' Поступил:',date_begin,' Окончил:',date_end
? ' Название у/з: ',name_educ
? ' Образование: ',education
? ' Диплом: ',dipl
? ' Форма обучения:',form_tr ? ' Квалификация: ',qualific
? ' Специальность: ',special
? REPLICATE(' -',39)
SKIP
NEXT n
SET FILTER TO
SELECT a
? SPACE (25),'Владение иностран. языками:',LANG_NUM
LANG_NUM1=LANG_NUM
SELECT d
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO LANG_NUM1
? ' Язык:',oth_lang,' Уровень владения:',level
SKIP
NEXT n
SET FILTER TO
SELECT a
? SPACE (25),'Наличие судимости:',conv_num
conv_num1=conv_num
SELECT e
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO conv_num1
? ' Дата вынесения приговора: ',date_verd
? ' Статья:',article,' Срок:',period
? REPLICATE(' -',39)
SKIP
NEXT n
SET FILTER TO
SELECT a
? SPACE (25),'Состав семьи:',famil_num
struct_f1=famil_num
SELECT f
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO struct_f1
? ' Дата рождения:',date_relat,' Фамилия, инициалы:',names
? ' Степень родства:',relation, ' На иждивении:',expense
? REPLICATE(' -',39)
SKIP
NEXT n
SET FILTER TO
SELECT a
? SPACE (12),'Паспортные данные:',passport
SELECT b
GO TOP
f=0
LOCATE FOR org_num=org_num1
DO WHILE EOF()=.f.
IF FOUND()=.t.
f=f+1
ENDIF
CONTINUE
ENDDO
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO f
? ' Кем выдан: ',exp_given
? ' Дата выдачи:',date_distr
? SPACE (25),'Прописка:'
? ' Индекс: ',index_p
? ' Область: ',area_p
? ' Район: ',region_p
? ' Город: ',city_p
? ' Населенный пункт:',point_p
? ' Улица: ',street_p
? ' Дом: ',house_p
? ' Корпус: ',corps_p
? ' Квартира: ',flat_p
SKIP
NEXT n
SET FILTER TO
SELECT a
? SPACE (25),'Трудовая книжка:',record_num
record_num1=record_num
SELECT g
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO record_num1
? ' Дата постановки: ',date_wrk,' Дата увольнения:',date_dism
? ' Название учреждения:',name_wrk
? ' Должность: ',post_wrk
? ' Причина: ',reason_wrk
? ' Основание: ',basis_wrk
? REPLICATE(' -',39)
SKIP
NEXT n
SET FILTER TO
SELECT a
? SPACE (25),'Назначения и перемещения:',purpos_num purpos_num1=purpos_num
SELECT h
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO purpos_num1
? ' Дата: ',date_mov,' Основание:',reason_mov
? ' Отдел: ',depart
? ' Должность: ',post_mov
? ' Режим работы:',method_mov
? REPLICATE(' -',39)
SKIP
NEXT n
SET FILTER TO
SELECT a
? SPACE (25),'Квалификационный разряд:',qual_num qual_num1=qual_num
SELECT i
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO qual_num1
? ' Дата: ',date_qual,' Основание:',reas_qual
? ' Квалификация:',qualificat
? REPLICATE(' -',39)
SKIP
NEXT n
SET FILTER TO
SELECT a
? SPACE (25),'Командировки:',trial_num
trips1=trial_num
SELECT j
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO trips1
? ' Дата начала: ',start_trp,' Дата окончания:',closed_trp
? ' Место назначения:',destinat
? REPLICATE(' -',39)
SKIP
NEXT n
SET FILTER TO
SELECT a
? SPACE (25),'Отпуска:',holid_num
holid_num1=holid_num
SELECT 11
SET FILTER TO org_num=org_num1
GO TOP
FOR n=1 TO holid_num1
? ' Вид отпуска: ',kind_hol
? ' Основание: ',basis_hol
? ' За время с: ',with_hol,' За время по: ',on_hol
? ' Дата начала: ',d_st_hol,' Количество дней:',amount
? ' Дата окончания:',d_en_hol
? REPLICATE(' -',39)
SKIP
NEXT n
SET FILTER TO
SELECT a
WAIT CLEAR
ENDPRINTJOB
SET PRINTER OFF
SET CONSOLE ON
RETURN
SEARCH.PRG
DEFINE WINDOW win3 FROM 3, 11 TO 20, 69 NOGROW ;
NOFLOAT NOZOOM SHADOW CLOSE;
TITLE 'Выберите запись и нажмите <ESCAPE>' COLOR SCHEME 10
ACTIVATE WINDOW win3
BROWSE NOAPPEND NOMODIFY NODELETE LOCK 0 FIELDS org_num :H='Таб. N:', ;
surname :H='Фамилия:', name :H='Имя:',patron :H='Отчество:' RELEASE WINDOW win3
RETURN
INDEX.PRG
WAIT "Индексирую таблицы" NOWAIT WINDOW
SELECT a
INDEX ON org_num TO stuff.idx
SELECT c
INDEX ON date_begin TO educat.idx
SELECT d
INDEX ON oth_lang TO language.idx
SELECT e
INDEX ON date_verd TO convict.idx
SELECT f
INDEX ON date_relat TO family.idx
SELECT g
INDEX ON date_wrk TO workcard.idx
SELECT h
INDEX ON date_mov TO moving.idx
SELECT i
INDEX ON date_qual TO qualific.idx
SELECT j
INDEX ON start_trp TO bus_trip.idx
SELECT 11
INDEX ON with_hol TO holiday.idx
WAIT CLEAR
RETURN
INITIAL.PRG
DEFINE WINDOW win3 FROM 7, 10 TO 13, 70 NOGROW ;
NOFLOAT NOZOOM CLOSE COLOR SCHEME 12
ACTIVATE WINDOW win3 @ 0,12 SAY'ЭТО действие уничтожит все данные'
@ 1,13 SAY'Вы уверены в его необходимости?'
STORE 2 TO no,yes
STORE "* НЕТ" TO MPROMPTS
@ 3,19 GET no FUNCTION MPROMPTS SIZE 1, 8
STORE "* ДА" TO MPROMPTS
@ 3,30 GET yes FUNCTION MPROMPTS SIZE 1, 8
READ CYCLE
RELEASE WINDOW win3
IF yes=2
RETURN
ENDIF
WAIT "Инициализация таблиц" NOWAIT WINDOW
SELECT a
ZAP
SELECT b
ZAP
SELECT c
ZAP
SELECT d
ZAP
SELECT e
ZAP
SELECT f
ZAP
SELECT g
ZAP
SELECT h
ZAP
SELECT i
ZAP
SELECT j
ZAP
SELECT 11
ZAP
WAIT CLEAR
RETURN
REFEREN.PRG
SELECT a
DO search.prg
_peject='after'
SET PRINTER ON
SET CONSOLE OFF
PRINTJOB
WAIT "Печать" NOWAIT WINDOW
n=ALLTRIM(company)
? space((80-len(n))/2),n
? ''
? SPACE(28),'О Т Д Е Л К А Д Р О В'
? REPLICATE('-',79)
? SPACE(26),'Краткая справка о сотруднике'
? REPLICATE('-',79)
n=alltrim(surname)+' '+alltrim(name)+' '+alltrim(patron)
? space((80-len(n))/2),n
? ''
d=MONTH(birth_date)
IF d=1
n='января'
ENDIF
IF d=2
n='февраля'
ENDIF
IF d=3
n='марта'
ENDIF
IF d=4
n='апреля'
ENDIF
IF d=5
n='мая'
ENDIF
IF d=6
n='июня'
ENDIF
IF d=7
n='июля'
ENDIF
IF d=8
n='августа'
ENDIF
IF d=9
n='сентября'
ENDIF
IF d=10
n='октября'
ENDIF
IF d=11
n='ноября'
ENDIF
IF d=12
n='декабря'
ENDIF
IF sex='Ж' OR sex='ж'
sx1='Родилась'
sx2='уроженка'
sx3='Окончила'
ELSE
sx1='Родился'
sx2='уроженец'
sx3='Окончил'
ENDIF
? ' ',sx1,DAY(birth_date),n,YEAR(birth_date),'года ,'
? ' ',ALLTRIM(national),',',sx2,ALLTRIM(birthplace),','
? ' имеет',ALLTRIM(citizen),'гражданство .'
? ' ',sx3,ALLTRIM(NAME_EDU),'.'
? ' Семейное положение:',ALLTRIM(mar_status),'.'
? ' В настоящее время работает в должности: ',ALLTRIM(cur_post),','
? ' в подразделении:',ALLTRIM(subdivis),'.'
? ' Домашний адрес:',ALLTRIM(address),',',ALLTRIM(region),'район .'
? ' Домашний телефон:',telephone
? ''
? SPACE(60),DATE(),'г'
SELECT a
WAIT CLEAR
ENDPRINTJOB
SET PRINTER OFF
SET CONSOLE ON
RETURN
END.PRG
CLEAR
CLOSE ALL
QUIT
7. ГРАФИЧЕСКИЙ МАТЕРИАЛ
Рис. 2.2.1. Описание связи "объект-свойство".
Рис. 2.4.1 Взаимосвязь командных файлов в проекте.
1
2
Документ
Категория
Гражданское право
Просмотров
9
Размер файла
430 Кб
Теги
Диплом и связанное с ним
1/--страниц
Пожаловаться на содержимое документа