Программное обеспечение вычислительной техники и автоматизированных систем
Содержание
Введение
. Создание и становление учетно-регистрационной работы в
органах внутренних дел
. Организационная структура ИАКЦ МВД ПМР
. Описание аппаратного и программного обеспечения ИАКЦ
. Аналитический и литературный обзор предметной области
. Проектирование базы данных
.1 Инфологическое проектирование модели базы данных
.2 Логическое проектирование модели базы данных
.3 Физическое проектирование модели базы данных
. Описание структуры программы
Заключение
Список литературы
Приложение А. Руководство пользователя
Приложение Б. Листинг программы
Введение
Производственная практика является составной частью основной
образовательной программы по специальности «Программное обеспечение
вычислительной техники и автоматизированных систем».
Она имеет целью закрепление и углубление знаний, полученных студентами в
процессе теоретического обучения, приобретение необходимых умений, навыков и
опыта практической работы по изучаемой специальности.
При ее прохождении поставлены следующие цели:
- ознакомление с деятельностью организации;
изучение специфики работы учреждения;
изучение передового опыта работы специалистов учреждения;
изучение структуры организации в данном учреждении;
углубление и закрепление собственных знаний, полученных в процессе
обучения;
выработка навыков принятия решений и реализация решений в практической
деятельности;
- расширение технического кругозора и подготовка к самостоятельной
профессиональной деятельности на основе знаний и умений, полученных на
протяжении всего периода обучения;
выполнение индивидуального задания, связанного с конкретной
производственной задачей.
1. Создание и становление
учетно-регистрационной работы в органах внутренних дел
ИНФОРМАЦИОННО-АНАЛИТИЧЕСКИЙ КОНТРОЛЬНЫЙ ЦЕНТР (ИАКЦ), подразделение
Главного Организационно-инспекторского Управления Штаба МВД ПМР. Образован как
Информационный центр (ИЦ) МВД в 1993 году с целью улучшения системы сбора,
обработки, хранения информации, объединения данных, поступающих из
Информационно-аналитических отделений (ИАО) горрайорганов республики и создания
единой информационной структуры в системе МВД ПМР.
В 2004 году преобразован в соответствии с Решением Коллегии МВД ПМР в
Информационно-аналитический Контрольный центр МВД ПМР.
В системе органов внутренних дел ИАКЦ - головная организация в области
обеспечения статистической, оперативно-справочной, розыскной,
криминалистической информацией. В каждом городском и районном отделе внутренних
дел ПМР работают информационно-аналитические отделения. Они осуществляют сбор и
обработку первичной информации о преступлениях и административных
правонарушениях в республике, и передают её в электронном виде по специальным
каналам связи для дальнейшей обработки, хранения и систематизации в ИАКЦ.
2. Организационная структура ИАКЦ МВД ПМР
В структуру ИАКЦ входят следующие отделы: отдел программного обеспечения
(ОПО) и информационно-аналитический отдел (ИАО), который включает в себя группу
учета (ГУ), группу спецпроверок, инспектора разрешительной системы, инспектора
контроля баз данных.
ОПО осуществляет создание, развитие и организацию эксплуатации
автоматизированных информационных систем, интегрированных банков данных (ИБД)
оперативно-справочного, розыскного и криминалистического назначения. ИАО
осуществляет единый учет совершаемых на территории ПМР преступлений и лиц, их
совершивших, межведомственного движения уголовных дел и материалов без
возбуждения, результатов их расследования и рассмотрения в судах.
Ведет оперативно-справочные картотеки лиц судимых, привлеченных к
уголовной ответственности, находящихся в розыске, состоящих на картотечных
учетах, а также потерпевших. Контролирует ведение интегрированного банка
данных, накопление, обработку и учет оперативно-справочных и поисковых
документов, составляющих их основу.
Осуществляет формирование и представление в МВД ПМР, Прокуратуру ПМР,
Госкомстат ПМР статистической отчетности о состоянии преступности и результатах
профилактической, оперативно-розыскной и следственной деятельности органов
внутренних дел.
Осуществляет сбор, обработку, накопление и выдачу оперативному составу,
дежурным подразделениям и другим работникам оперативно-справочной информации о
лицах, автомототранспорте, оружии, номерных вещах, находящихся в розыске, и
других сведений, необходимых для раскрытия преступлений и установления лиц, их
совершивших.
Совместно с ГС ИНиСР Министерства юстиции ПМР осуществляет контроль за
местонахождением осужденных лиц с момента их осуждения до освобождения из
учреждений ГС ИНиСР.
. Описание аппаратного и программного обеспечения ИАКЦ
На рабочем месте в отделении программного обеспечения предоставлены
компьютеры различной конфигурации:
1. Старший инженер-программист:
· Системная память 1014 Мб (DDR2-800 DDR2 SDRAM)
· жесткий диск SAMSUNG HD161GJ (160 Гб, 7200 RPM, SATA-II)
· процессор DualCore Intel Celeron E3300, 2500 MHz (12.5 x 200)
· Операционная система Microsoft Windows XP Professional
· Монитор Samsung SAMTRON 55(M)E (Plus) [15" CRT]
(HJAR300226);
2. Инженер-программист:
· жесткий диск SAMSUNG HD503HI (500 Гб, 5400 RPM, SATA-II)
· процессор DualCore Intel Celeron E3400, 2600 MHz (13 x 200)
· Операционнаяя система Microsoft Windows XP Professional
· Системная память 2012 Мб (DDR3-1333 DDR3 SDRAM)
· Монитор Samsung SyncMaster 927DF(I)/927MB(I)/997DF/997MB
[19" CRT] (HMBL700999);
3. Начальник ОПО:
· жесткий диск MAXTOR STM3250310AS (250 Гб, 7200 RPM, SATA-II) и SAMSUNG
HD253GJ (250 Гб, 7200 RPM, SATA-II)
· процессор DualCore Intel Core 2 Duo E7500, 2933 MHz (11 x
267)
· Операционнаяя система Microsoft Windows XP Professional
· Системная память 2016 Мб (DDR2-800 DDR2 SDRAM)
· Монитор LG W2253 (Analog) [22" LCD] (19081);
Программное обеспечение ИАКЦ основано на базе ICS (интегрированная
криминологическая система), которая была разработана в 1994 году на базе
MS-DOS.
В настоящее время программное обеспечение разрабатывается программистами
ИАКЦ с использование СУБД ORACLE на языках программирования Visual
FoxPro, Delphi.
4. Аналитический и литературный обзор предметной области
программа автоматизированное база данные
Во время прохождения практики была поставлена задача разработать
программный продукт «Отдел кадров», реализующий ввод, корректировку, хранение
информации о сотрудниках, званиях, должностях, окладе и вывод отчетов о
сотрудниках.
База данных должна содержать информацию о сотрудниках, званиях,
должностях, окладе. База данных должна иметь возможность поиска информации о
сотруднике по номеру паспорта, по фамилии.
Программа должна предоставить возможность формирования отчетов:
- личное дело, в котором автоматически высчитывается стаж
работы в зависимости от введенных значений: даты поступления на работу и даты
вывода отчета;
- отчет, группирующий сотрудников по должностям, с подсчетом
количества сотрудников по каждой должности.
Информация, хранящаяся в базах данных ИАКЦ, доступна для просмотра и
корректировки (в зависимости от введенного пароля) во всех городских и районных
отделах внутренних дел ПМР.
Одним из видов информации, хранящаяся в базах данных ИАКЦ, являются
сведения о привлечении граждан (лиц) к административной ответственности в соответствии
с Кодексом об Административных Правонарушениях в ПМР (КоАП ПМР). Эти сведения
состоят из следующих реквизитов:
. Анкетные данные лица:
фамилия;
имя;
отчество;
дата рождения;
место рождения;
адрес места жительства.
. Сведения о должностном лице, составившем протокол:
фамилия и инициалы;
звание;
должность;
. Сведения о месте и времени составления протокола:
время админнарушения;
место админнарушения;
фабула админнарушения;
статья КоАП;
дата составления протокола;
сведения о понятых, присутствующих при составлении протокола;
объяснения и подпись нарушителя;
описание предметов, изъятых при составлении протокола.
. Сведения о рассмотрении админпротокола:
мера наказания;
кем принято решение;
. Сведения о дате исполнения протокола.
5. Проектирование базы данных
.1 Инфологическое проектирование модели базы данных
Предметная область, подлежащая автоматизации, содержит информацию о
сотрудниках, званиях, должностях.
Объекты предметной области: «Сведения о званиях», «Сведения о
сотрудниках», «Сведения о должностях».
В предметной области можно выделить следующие процессы: прием на работу,
назначение на должность, присвоение званий.
В рассматриваемой предметной области можно выделить следующие сущности:
«Сведения о званиях», «Сведения о сотрудниках», «Сведения о должностях».
Анализируя сущности рассматриваемой предметной области, можно выделить
следующие атрибуты и идентифицирующие ключи:
Сущность «Сведения о званиях» обладает атрибутами: Звание, Срок. В
качестве ключевого атрибута можно принять ID звания, который
определяется числовыми значениями.
Сущность «Сведения о сотрудниках» содержит следующие атрибуты: Фамилия,
Имя, Отчество, Номер паспорта, Звание, Должность, Дата поступления на работу,
Дата присвоения звания, Стаж, Повышение. Идентифицирующим ключом
данной сущности является Номер паспорта, так как он определяется
числовыми значениями.
Сущность «Сведения о должностях» содержит следующие атрибуты: Должность,
Оклад. В качестве ключевого атрибута можно принять ID должности,
который определяется числовыми значениями.
Рисунок 5.1 - Связь между сущностями «Сведения о званиях» и «Сведения о
сотрудниках»
Между сущностями «Сведения о званиях» и «Сведения о сотрудниках»
существует связь один ко многим, так как каждому ID звания сущности со
сведениями о званиях соответствует множество ID званий сущности
«Сведения о сотрудниках». Первичным ключом сущности «Сведения о званиях» будет
атрибут ID города по отношению к сущности «Сведения о сотрудниках» с
внешним ключом ID города.
Рисунок 5.2 - Связь между сущностями «Сведения о должностях» и «Сведения
о сотрудниках»
Между сущностями «Сведения о должностях» и «Сведения о сотрудниках»
существует связь один ко многим, так как каждому ID должности сущности
со сведениями о должностях соответствует множество ID должностей
сущности «Сведения о сотрудниках». Первичным ключом сущности «Сведения о
должностях» будет атрибут ID должности по отношению к
сущности «Сведения о сотрудниках» с внешним ключом ID должности.
Проанализировав предметную область, можно построить следующую ER-диаграмму
предметной области «Отдел кадров»:
Рисунок 5.3 - ER-диаграмма предметной области «Отдел кадров»
5.2 Логическое проектирование модели базы данных
На логическом этапе проектирования модели базы данных описывается перевод
сущностей инфологической модели в отношения.
Отношение «Сведения о сотрудниках» (Фамилия, Имя, Отчество, Номер
паспорта, Звание, Должность, Дата присвоения звания, Дата поступления на
работу, Стаж, Повышение) находится в первой нормальной форме (1NF),
так как на пересечении каждого столбца и строки находятся только элементарные
значения атрибутов.
Отношение находится во второй нормальной форме (2NF), так как она
находится в первой нормальной форме и не содержит неполных функциональных
зависимостей непервичных атрибутов от первичного ключа.
Отношения находится в третьей нормальной форме (3NF), если они
находится во второй нормальной форме и не содержат транзитивных зависимостей. В
данном случае отношение «Сведения о сотрудниках» находится во второй нормальной
форме и транзитивные зависимости отсутствуют. Следовательно, данное отношение
находится в третьей нормальной форме.
Следуя из приведенного определения и анализа структуры отношения,
определим схему отношения «Сведения о сотрудниках», которая будет реализована в
виде таблицы «сотрудники» в системе управления базами данных.
Таблица 1 - Схема отношения «Сведения о сотрудниках»
Имя атрибута
|
Домен
|
Имя поля
|
Условие на значение
|
Описание
|
Фамилия
|
Текстовый
|
фамилия
|
|
Фамилия
|
Имя
|
Текстовый
|
имя
|
|
Имя
|
Отчество
|
Текстовый
|
отчество
|
|
Отчество
|
Номер паспорта
|
Числовой
|
номер_паспорта
|
|
Номер паспорта
|
ID звания
|
Числовой
|
ID_звания
|
|
ID звания
|
ID должности
|
Числовой
|
ID_должности
|
|
ID должности
|
Дата присвоения звания
|
Дата/время
|
дата_присвоения_ звания
|
|
Дата присвоения звания
|
Дата поступления на работу
|
Дата/время
|
дата_поступления_на_работу
|
|
Дата поступления на работу
|
Стаж
|
Текстовый
|
стаж
|
|
Стаж (дней.месяцев.лет)
|
Повышение
|
Текстовый
|
повышение
|
|
Повышение (да/нет)
|
Отношение «Сведения о званиях» (ID звания, Звание, Срок)
находится в первой нормальной форме, так как на пересечении каждого столбца и
строки находятся только элементарные значения атрибутов.
Отношение находится во второй нормальной форме, так как она находится в
первой нормальной форме и не содержит неполных функциональных зависимостей
непервичных атрибутов от первичного ключа.
Отношение «Сведения о званиях» находится в третьей нормальной форме, так
как она находится во второй нормальной форме и транзитивные зависимости
отсутствуют.
Таким образом, определим схему отношения «Сведения о званиях», которая
будет реализована в виде таблицы «звания» в системе управления базами данных.
Таблица 2 - Схема отношения «Сведения о званиях»
Имя атрибута
|
Домен
|
Имя поля
|
Условие на значение
|
Описание
|
ID звания
|
Числовой
|
Id_звания
|
|
ID звания
|
Звание
|
Текстовый
|
звание
|
|
Звание
|
Срок
|
Числовой
|
срок
|
|
Через сколько лет повышение звания
|
Отношение «Сведения о должностях» (ID должности, Должность,
Оклад) находится в первой нормальной форме, так как на пересечении каждого
столбца и строки находятся только элементарные значения атрибутов.
Отношение находится во второй нормальной форме, так как она находится в
первой нормальной форме и не содержит неполных функциональных зависимостей
непервичных атрибутов от первичного ключа.
Отношение «Сведения о должностях» находится в третьей нормальной форме,
так как она находится во второй нормальной форме и транзитивные зависимости
отсутствуют.
Таким образом, определим схему отношения «Сведения о должностях», которая
будет реализована в виде таблицы «оклады» в системе управления базами данных.
Таблица 3 - Схема отношения «Сведения о должностях»
Имя атрибута
|
Домен
|
Имя поля
|
Условие на значение
|
Описание
|
ID должности
|
Числовой
|
id_должности
|
|
ID должности
|
Должность
|
Текстовый
|
должность
|
|
Должность
|
Оклад
|
Числовой
|
оклад
|
|
Оклад
|
.3 Физическое проектирование модели базы данных
Для создания базы данных была выбрана система управления базами данных MS
Access 2003. Выгодным преимуществом MS Access 2003 является тесная
интеграция с Microsoft Visual Studio.
Для разработки приложения используется интегрированная среда разработки Visual
Studio 2005, язык C#.
Ниже представлена схема данных предметной области «Отдел кадров» в СУБД MS
Access 2003:
Рисунок 5.9 - Схема данных в СУБД MS Access 2003
6.
Описание структуры программы
Структурная схема - схема, отражающая состав и взаимодействие по
управлению частей разрабатываемого продукта. При объектной декомпозиции такими
частями являются объекты (рисунок 6.1).
Рисунок 6.1 - Структурная схема программного продукта (объектная
декомпозиция)
Данный программный продукт устанавливается на персональный компьютер,
защищенный логином и паролем, должностного лица из управления кадров.
Посторонним лицам просмотр информации запрещен.
Программный продукт имеет следующую структурную схему: сначала
загружается главная форма Form1.cs, где пользователь может ознакомиться
с полным списком информации о сотрудниках, должностях и званиях, а также может
сформировать отчеты. Из этой же формы можно перейти в режим поиска конкретного
сотрудника по номеру паспорта или по фамилии, а также осуществить ввод данных о
новом сотруднике или откорректировать существующую запись, в случае изменения
анкетных данных, должности, звания или других реквизитов.Выбор режима работы
осуществляется нажатием левой клавиши мыши на соответствующем окне:
- таблицы - доступ к базам сотрудников, должностей, званий;
- отчеты - формирование отчетов;
поиск - режим поиска по заданным реквизитам;
выход - выход из программы.
Заключение
Разработанная программа является автоматизированным рабочим местом
сотрудника кадровой службы. Она обеспечивает сбор и обработку данных о
сотрудниках, уменьшает бумажный поток, позволяет ускорить процесс поиска личной
карточки сотрудника, увеличивает производительность труда работника кадрового
аппарата.
В программе были реализованы следующие функции:
добавление данных о вновь принятых сотрудниках
хранение данных о сотрудниках
изменение данных о сотрудниках, званиях, должностях и окладах
автоматический подсчет стажа работы
напоминание о сроке присвоения очередного звания
вывод списка сотрудников с группировкой по должностям
вывод общего списка сотрудников
создание отчётов, возможность их сохранения и печати.
Данная программа может применяться в кадровых подразделениях различных
учреждений и силовых структур.
Список
литературы
1. Герберт Шилдт «Полный справочник по C#», перевод с
англ., издательский дом «Вильямс», Москва, 2004г.-752с.:ил.
2. Данилина Т.Г. Конспект лекций по «Технологии
Программирования», РИО ПГУ, 2008 г.
. Джесс Либерти «Создание .NET приложений.
Программирование на C#», Издание 2-ое. Издательство «Символ-Плюс». Москва, 2005
г.-684с.
4. Ермолаев. Б. Л
<#"656321.files/image004.gif">
Рисунок 6.1 - Главное окно программы
Для работы с таблицей «сотрудники» выбираем пункт меню таблицыàсотрудники и действие, которое требуется
выполнить. Аналогичные действия необходимо выполнить для работы с таблицей
«должности»
Рисунок 6.2 - Основное меню программы
При выборе добавить открывается следующее окно, в котором
необходимо заполнить все поля, из выпадающих списков выбрать звание и должность.
Для сохранения записи нажать кнопку «добавить».
Рисунок 6.3 - Добавление нового сотрудника
При выборе удалить открывается окно следующего вида, в котором
заполняется несколько букв фамилии, после чего нажимаем левой клавишей мыши на
метку в конце строки, высвечивается список, состоящий из ФИО и номера паспорта,
курсором выбираем запись, подлежащую удалению.
Рисунок 6.4 - Удаление сотрудника
В нижней части окна отображается полная информация о данном лице. После
этого нажимаем клавишу удалить или отмена.
Рисунок 6.5 - Удаление сотрудника
При выборе изменить открывается окно изменения данных о
сотрудниках. Выбор нужной записи происходит аналогично предыдущему режиму.
После чего во вкладках звание, должность и личные данные
происходит автоматическое заполнение полей. Далее выбираем нужную вкладку и
производим корректировку. Для сохранения данных нажимаем кнопку изменить.
Рисунок 6.6 - Изменения данных о сотрудниках
При выборе повышение программа сканирует каждую запись на наличие
индикатора «да» в графе повышение. В случае успеха корректируется текущее
звание, дата присвоения звания и индикатор изменяется на «нет».
При каждом запуске программы сравнивается дата присвоения звания с
текущей датой. Вычисленная разница (количество лет) сравнивается с полем
«срок» из таблицы звания. При совпадении результатов индикатор
«повышение» таблицы сотрудники меняется на «да».
При изменении штатного расписания корректируется таблица должности:
. Появление новых должностей. Выбираем пункт меню таблицыàдолжностиàдобавить.
Рисунок 6.7 - Добавление должности
2. Сокращение должностей. Выбираем пункт меню
таблицыàдолжностиàудалить далее из выпадающего списка выбираем должность для удаления.
Рисунок 6.8 - Удаление должности
3. Изменение оклада. Выбираем пункт меню
таблицыàдолжностиàизменить далее из выпадающего списка выбираем должность для изменения оклада. В
следующей графе отображается нынешний оклад. В пустую графу вводим новое
значение оклада. Нажимаем изменить оклад.
Рисунок 6.8 - Удаление должности
Таблица звания отображает наименование звания и количество лет
выслуги, по истечении которого присваивается очередное звание в соответствии с
занимаемой должностью. Для просмотра этой таблицы выбираем пункт меню таблицыàзвания.
Для организации поиска выбираем пункт меню «поиск» и определяем режим
поиска - по номеру паспорта или по фамилии. В зависимости от выбранного режима
заполняем пустую графу, после чего нажимаем кнопку искать. При
совпадении указанных реквизитов на экране отображаются сведения о сотрудниках.
Рисунок 6.9 - Режим поиска
Для вызова необходимого отчета выбираем пункт меню «отчеты».
Рисунок 6.10 - Отчет «личные карточки»
Рисунок 6.11 - Общий отчет
Приложение Б
Листинг программы
.cs
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Text;System.Windows.Forms;System.Data.OleDb;WindowsApplication1
{partial class Form1 : Form
{datAdap;I = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"db1.mdb";con;Form1()
{();= new OleDbConnection(I);.Open();
}void сотрудникиToolStripMenuItem_Click(object sender, EventArgs e)
{DT = new DataTable("[сотрудники]");= new
OleDbDataAdapter("Select* From [сотрудники]",
con);.Fill(DT);.DataSource = DT;
}void должностиToolStripMenuItem_Click(object sender, EventArgse)
{DT = new DataTable("[оклады]");= new
OleDbDataAdapter("Select* From [оклады]", con);.Fill(DT);.DataSource
= DT;
}void званияToolStripMenuItem_Click(object sender, EventArgs e)
{DT = new DataTable("[звания]");= new
OleDbDataAdapter("Select* From [звания]", con);.Fill(DT);.DataSource
= DT;
}void изменениеToolStripMenuItem_Click(object sender, EventArgse)
{f2 = new Form2();.ShowDialog();
}void удалитьToolStripMenuItem_Click(object sender, EventArgs e)
{f3 = new Form3();.ShowDialog();
}void выходToolStripMenuItem_Click(object sender, EventArgs e)
{.Close();
}void измененToolStripMenuItem_Click(object sender, EventArgs e)
{f4 = new Form4();.ShowDialog();
}void изменитьToolStripMenuItem_Click(object sender, EventArgse)
{f5 = new Form5();.ShowDialog();
}void Form1_Activated(object sender, EventArgs e)
{Com = new OleDbCommand("SELECT
сотрудники.дата_поступления_на_работу FROM сотрудники;",
con);(OleDbDataReader dr = Com.ExecuteReader())
{(dr.Read())
{a = DateTime.Now;b = Convert.ToDateTime(dr.GetValue(0).ToString());y1 =
a.Year;m1 = a.Month;d1 = a.Day;y2 = b.Year;m2 = b.Month;d2 = b.Day;r = d1 - d2,
rm, ry;(d1 - d2 < 0)
{(m1)
{5:7:8:10:12:= d1 - d2 + 30;--;;3:(d1 - d2 < 0)(y1 % 4 == 0)= d1 - d2
+ 29;r = d1 - d2 + 28;--;;1:--;= d1 - d2 + 31;= 12;;:= d1 - d2 + 31;;
}
}(m1 - m2 < 0)
{--;= m1 - m2 + 12;
}rm = m1 - m2;= y1 - y2;staj = r.ToString() + '.' + rm.ToString() + '.' +
ry.ToString();u = "UPDATE сотрудники SET сотрудники.стаж = '" + staj
+ "' WHERE сотрудники.дата_поступления_на_работу= '" +
b.ToShortDateString() + "' ;";insCom = new OleDbCommand(u,
con);.ExecuteNonQuery();
}
}Com1 = new OleDbCommand("SELECT сотрудники.номер_паспотрта, сотрудники.звание,
сотрудники.дата_присвоения_звания FROM сотрудники;", con);(OleDbDataReader
dr1 = Com1.ExecuteReader())
{(dr1.Read())
{a = DateTime.Now;zv = dr1.GetValue(1).ToString();nomer =
dr1.GetValue(0).ToString(); ;b = Convert.ToDateTime(dr1.GetValue(2).ToString());y1
= a.Year;m1 = a.Month;d1 = a.Day;y2 = b.Year;m2 = b.Month;d2 = b.Day;r = d1 -
d2, rm, ry;(d1 - d2 < 0)
{(m1)
{5:7:8:10:12:= d1 - d2 + 30;--;;3:(d1 - d2 < 0)(y1 % 4 == 0)= d1 - d2
+ 29;r = d1 - d2 + 28;--;;1:--;= d1 - d2 + 31;= 12;;:= d1 - d2 + 31;;
}
}(m1 - m2 < 0)
{--;= m1 - m2 + 12;
}rm = m1 - m2;= y1 - y2;(zv)
{"рядовой":"младший
сержант":"сержант":"старший
сержант":"старшина":"прапорщик":"старший
прапорщик":"младший лейтенант":"лейтенант":(ry >=
1)
{u1 = "UPDATE сотрудники SET сотрудники.повышение = 'да' WHERE
(((сотрудники.номер_паспотрта)=" + nomer + "));";insCom1 = new
OleDbCommand(u1, con);.ExecuteNonQuery();
};"старший лейтенант":(ry >= 3)
{u1 = "UPDATE сотрудники SET сотрудники.повышение = 'да' WHERE
(((сотрудники.номер_паспотрта)=" + nomer + "));";insCom1 = new
OleDbCommand(u1, con);.ExecuteNonQuery();
};"капитан":(ry >= 4)
{u1 = "UPDATE сотрудники SET сотрудники.повышение = 'да' WHERE
(((сотрудники.номер_паспотрта)=" + nomer + "));";insCom1 = new
OleDbCommand(u1, con);.ExecuteNonQuery();
};"майор":(ry >= 4)
{u1 = "UPDATE сотрудники SET сотрудники.повышение = 'да' WHERE
(((сотрудники.номер_паспотрта)=" + nomer + "));";insCom1 = new
OleDbCommand(u1, con);.ExecuteNonQuery();
};"подполковник":(ry >= 5)
{u1 = "UPDATE сотрудники SET сотрудники.повышение = 'да' WHERE
(((сотрудники.номер_паспотрта)=" + nomer + "));";insCom1 = new
OleDbCommand(u1, con);.ExecuteNonQuery();
};: break;
}
}
}I1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"db1.mdb";con1 = new OleDbConnection(I1);.Open();.ClearSelection();dt
= new DataTable("[сотрудники]");dA1 = new
OleDbDataAdapter("Select* From [сотрудники]",
con1);.Fill(dt);.DataSource = dt;.Close();
}void удалитьToolStripMenuItem1_Click(object sender, EventArgse)
{f6 = new Form6();.ShowDialog();
}void изменитьToolStripMenuItem1_Click(object sender, EventArgse)
{f7 = new Form7();.ShowDialog();
}void aToolStripMenuItem_Click(object sender, EventArgs e)
{f10 = new Form10();.ShowDialog();
}void сотрудникиToolStripMenuItem1_Click(object sender, EventArgs e)
{f9 = new Form9();.ShowDialog();
}void повышениеToolStripMenuItem_Click(object sender, EventArgs e)
{DR;=MessageBox.Show("Всем сотрудникам, которым необходимо присвоить
звание будет присвоено очередное звание. Дата присвоения звания будет
сегоднешней. Продолжить?", "повышение", MessageBoxButtons.YesNo,
MessageBoxIcon.Question);(DR == DialogResult.Yes)
{Com1 = new OleDbCommand("SELECT сотрудники.номер_паспотрта,
сотрудники.звание, сотрудники.повышение FROM сотрудники WHERE
(((сотрудники.повышение)='да'));", con);(OleDbDataReader dr1 =
Com1.ExecuteReader())
{(dr1.Read())
{zv = dr1.GetValue(1).ToString();nomer = dr1.GetValue(0).ToString();Com2
= new OleDbCommand("SELECT звания.ID_звания FROM звания WHERE
(((звания.звание)='" + zv + "'));", con);(OleDbDataReader dr2 =
Com2.ExecuteReader())
{Nz = Convert.ToInt32(dr2.GetValue(0).ToString());++;Com3 = new
OleDbCommand("SELECT звания.звание FROM звания WHERE
(((звания.ID_звания)=" + Nz + "));", con);(OleDbDataReader dr3 =
Com3.ExecuteReader())
{(dr3.Read())
{zvanie = dr3.GetValue(0).ToString();u = "UPDATE сотрудники SET
сотрудники.повышение = 'нет', сотрудники.дата_присвоения_звания = '" +
DateTime.Now.ToShortDateString() + "', сотрудники.звание = '" +
zvanie + "'WHERE (((сотрудники.номер_паспотрта)=" + nomer +
"));";cmd = new OleDbCommand(u, con);.ExecuteNonQuery();
}
}
}
}
}
}
}
}void поНомеруПаспортаToolStripMenuItem_Click(object sender, EventArgs e)
{.Visible = true;.Text = "введите номер паспорта";.Visible =
true;.Visible = true;
}void button1_Click(object sender, EventArgs e)
{(label1.Text == "введите номер паспорта")
{(textBox1.Text != "")
{
{DT = new DataTable("[сотрудники]");= new
OleDbDataAdapter("SELECT сотрудники.* FROM сотрудники WHERE
(((сотрудники.номер_паспотрта)=" + textBox1.Text + "));",
con);.Fill(DT);.DataSource = DT;
}(Exception ex)
{.Show("поле 'номер паспорта' не может содержать букв",
"ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}MessageBox.Show("введите номер паспорта", "",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}(textBox1.Text != "")
{
{DT = new DataTable("[сотрудники]");= new
OleDbDataAdapter("SELECT сотрудники.* FROM сотрудники WHERE
(((сотрудники.фамилия)='" + textBox1.Text + "'));",
con);.Fill(DT);.DataSource = DT;
}(Exception ex)
{.Show("поле 'фамилия' не может содержать цифр",
"ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}MessageBox.Show("введите номер паспорта", "",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
void поФамилииToolStripMenuItem_Click(object sender, EventArgs e)
{.Visible = true;.Text = "введите фамилию сотрудника";.Visible
= true;.Visible = true;
}void таблицыToolStripMenuItem_Click(object sender, EventArgs e)
{.Visible = false;.Visible = false;.Visible = false;.ClearSelection();
}
}
}.csSystem;System.Collections.Generic;System.ComponentModel;System.Data;System.Data.OleDb;System.Drawing;System.Text;System.Windows.Forms;WindowsApplication1
{partial class Form2 : Form
{I = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"db1.mdb";con;Form2()
{();= new OleDbConnection(I);.Open();Com = new OleDbCommand("SELECT
[звания].звание FROM [звания];", con);(OleDbDataReader dr =
Com.ExecuteReader())
{(dr.Read())
{.Items.Add(dr.GetValue(0).ToString());
}
}Com1 = new OleDbCommand("SELECT [оклады].должность FROM
[оклады];", con);(OleDbDataReader dr1 = Com1.ExecuteReader())
{(dr1.Read())
{.Items.Add(dr1.GetValue(0).ToString());
}
}
}void button1_Click(object sender, EventArgs e)
{datAdap;
{(textBox1.Text != "" && textBox2.Text != ""
&& textBox3.Text != "" && textBox4.Text !=
"" && comboBox1.Text != "" &&
comboBox2.Text != "")
{data = dateTimePicker1.Value.ToShortDateString();data2 =
dateTimePicker2.Value.ToShortDateString();t1 = textBox1.Text, t2 =
textBox2.Text, t3 = textBox3.Text;t11 = "", t22 = "", t33 =
"";+= t1[0]; t22 += t2[0]; t33 += t3[0];= t11.ToUpperInvariant(); t22
= t22.ToUpperInvariant(); t33 = t33.ToUpperInvariant();= t11 + t1.Substring(1);
t2 = t22 + t2.Substring(1); t3 = t33 + t3.Substring(1);q = "INSERT INTO
[сотрудники] VALUES('" + t1 + "','" + t2 + "','" + t3
+ "'," + textBox4.Text + ",'" +
comboBox1.SelectedItem.ToString() + "','" +
comboBox2.SelectedItem.ToString() + "','" + data + "','" +
data2 + "',' ','нет');";i = new OleDbCommand(q, con);(i.ExecuteNonQuery()
== 1).Show("добавлен новый сотрудник", "Изменение", MessageBoxButtons.OK,MessageBoxIcon.Information);.Show("ошибка",
"Изменение", MessageBoxButtons.OK, MessageBoxIcon.Error);dt = new
DataTable("[сотрудники]");= new OleDbDataAdapter("Select* From
[сотрудники]", con);.Fill(dt);.Close();
}MessageBox.Show("не заполены поля", "ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}(Exception ex)
{.Show(ex.ToString(),"ошибка",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}void button2_Click(object sender, EventArgs e)
{.Close();
}
}
}
Form3.cs
using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Data.OleDb;System.Drawing;System.Text;System.Windows.Forms;WindowsApplication1
{partial class Form3 : Form
{string t = "";I = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" + @"db1.mdb";con;Form3()
{();= new OleDbConnection(I);.Open();Com3 = new OleDbCommand("SELECT
сотрудники.фамилия, сотрудники.имя, сотрудники.отчество,
сотрудники.номер_паспотрта FROM сотрудники;", con);(OleDbDataReader dr3 =
Com3.ExecuteReader())
{(dr3.Read())
{.Items.Add(dr3.GetValue(0).ToString() + ' ' + dr3.GetValue(1).ToString()
+ ' ' + dr3.GetValue(2).ToString() + ' ' + dr3.GetValue(3).ToString());
}
}
}
void button2_Click(object sender, EventArgs e)
{.Close();
}void button1_Click(object sender, EventArgs e)
{
{del = "DELETE сотрудники.номер_паспотрта, сотрудники.фамилия,
сотрудники.имя, сотрудники.отчество, сотрудники.ID_звания,
сотрудники.дата_поступления_на_работу, сотрудники.ID_должности FROM сотрудники
WHERE (((сотрудники.номер_паспотрта)=" + t + "));";insCom = new
OleDbCommand(del, con);(insCom.ExecuteNonQuery() == 1)
{.Show("сотрудник удален", "удаление",
MessageBoxButtons.OK);.Close();
}.Show("ошибка", "удаление", MessageBoxButtons.OK);
}(Exception e3)
{.Show(e3.ToString(), "ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}void comboBox3_SelectedIndexChanged(object sender, EventArgse)
{d = "";= comboBox3.Text;fam = t.Substring(0, t.IndexOf(' '));=
t.Substring(t.IndexOf(' ') + 1);im = t.Substring(0, t.IndexOf(' '));=
t.Substring(t.IndexOf(' ') + 1);ot = t.Substring(0, t.IndexOf(' '));=
t.Substring(t.IndexOf(' ') + 1);n = Convert.ToInt32(t);q = "select * from
[сотрудники] where (((сотрудники.имя)='" + im + "') AND
((сотрудники.фамилия)='" + fam + "') AND ((сотрудники.отчество)='"
+ ot + "') AND ((сотрудники.номер_паспотрта)=" + n + "))
;";C = new OleDbCommand(q, con);(OleDbDataReader dr = C.ExecuteReader())
{(dr.Read())
{(int i = 0; i < 10;
i++)+= dr.GetValue(i).ToString() + " ";
}
}.Visible = true;.Text = d;
}
}
}
Form4.cs
using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Data.OleDb;System.Drawing;System.Text;System.Windows.Forms;WindowsApplication1
{partial class Form4 : Form
{I =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"db1.mdb";con;Form4()
{();= new OleDbConnection(I);.Open();
}void button2_Click(object
sender, EventArgs e)
{.Close();
}void button1_Click(object
sender, EventArgs e)
{datAdap;[] a = new
int[100];k = 0;Com = new OleDbCommand("SELECT [оклады].ID_должности FROM
[оклады];", con);(OleDbDataReader dr = Com.ExecuteReader())
{(dr.Read())
{[k] =
Convert.ToInt32(dr.GetValue(0));++;
}
}++;
{(textBox1.Text !=
"" && textBox2.Text != "")
{cifr =
"0123456789";flag = 0;(int p = 0; p < 10;
p++)(textBox1.Text.IndexOf(cifr[p]) != -1)
{= 1;
}(flag == 1).Show("поле должность
не должно содержать цифр", "ошибка", MessageBoxButtons.OK,
MessageBoxIcon.Error);
{q = "INSERT INTO
[оклады] VALUES(" + k + ",'" + textBox1.Text + "',"
+ textBox2.Text +
");";i = new OleDbCommand(q, con);(i.ExecuteNonQuery() ==
1).Show("добавлена новая должность", "Изменение",
MessageBoxButtons.OK, MessageBoxIcon.Information);.Show("ошибка",
"Изменение", MessageBoxButtons.OK, MessageBoxIcon.Error);dt = new
DataTable("[оклады]");= new OleDbDataAdapter("Select* From
[оклады]", con);.Fill(dt);.Close();
}
}MessageBox.Show("не
заполены поля", "ошибка", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}(Exception ex)
{(ex.ToString().Contains("Отсутствует
значение")).Show("поле оклад может содержать только численное
значение", "ошибка", MessageBoxButtons.OK,
MessageBoxIcon.Error);.Show(ex.ToString(), "ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}.csSystem;System.Collections.Generic;System.ComponentModel;System.Data;System.Data.OleDb;System.Drawing;System.Text;System.Windows.Forms;WindowsApplication1
{partial class Form5 : Form
{string t = "";I =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"db1.mdb";con;Form5()
{();= new
OleDbConnection(I);.Open();Com1 = new OleDbCommand("SELECT [звания].звание
FROM [звания];", con);(OleDbDataReader dr1 = Com1.ExecuteReader())
{(dr1.Read())
{.Items.Add(dr1.GetValue(0).ToString());
}
}Com2 = new
OleDbCommand("SELECT [оклады].должность FROM [оклады];",
con);(OleDbDataReader dr2 = Com2.ExecuteReader())
{(dr2.Read())
{.Items.Add(dr2.GetValue(0).ToString());
}
}Com3 = new
OleDbCommand("SELECT сотрудники.фамилия, сотрудники.имя,
сотрудники.отчество, сотрудники.номер_паспотрта FROM сотрудники;",
con);(OleDbDataReader dr3 = Com3.ExecuteReader())
{(dr3.Read())
{.Items.Add(dr3.GetValue(0).ToString()
+ ' ' + dr3.GetValue(1).ToString() + ' ' + dr3.GetValue(2).ToString() + ' ' +
dr3.GetValue(3).ToString());
}
}
}void button1_Click(object
sender, EventArgs e)
{
{insCom = new
OleDbCommand("UPDATE сотрудники SET сотрудники.звание = '" +
comboBox2.Text + "',
сотрудники.дата_присвоения_звания='"+dateTimePicker1.Value.ToShortDateString()+"'
WHERE сотрудники.номер_паспотрта=" + textBox4.Text + ";",
con);(insCom.ExecuteNonQuery() == 1)
{.Show("звание
изменено", "изменение", MessageBoxButtons.OK);.Close();
}.Show("ошибка",
"изменение", MessageBoxButtons.OK);
}(Exception e4)
{.Show(e4.ToString());
}
}void button3_Click(object
sender, EventArgs e)
{.Close();
}void button2_Click(object
sender, EventArgs e)
{u = "UPDATE
[сотрудники] SET [сотрудники].должность = '" + comboBox4.Text + "'
WHERE ((([сотрудники].номер_паспотрта)=" + textBox4.Text +
"));";insCom = new OleDbCommand(u, con);(insCom.ExecuteNonQuery() ==
1)
{.Show("должность
изменена", "изменение", MessageBoxButtons.OK);.Close();
}.Show("ошибка",
"изменение", MessageBoxButtons.OK);
}void
comboBox3_SelectedIndexChanged(object sender, EventArgse)
{d = "";=
comboBox3.Text;fam = t.Substring(0, t.IndexOf(' '));= t.Substring(t.IndexOf('
')+1);im = t.Substring(0,t.IndexOf(' '));= t.Substring(t.IndexOf(' ') + 1);ot =
t.Substring(0, t.IndexOf(' '));= t.Substring(t.IndexOf(' ') + 1);n =
Convert.ToInt32(t);q = "select * from [сотрудники] where
(((сотрудники.имя)='" + im + "') AND ((сотрудники.фамилия)='" +
fam + "') AND ((сотрудники.отчество)='" + ot + "') AND ((сотрудники.номер_паспотрта)="
+ n + ")) ;";C = new OleDbCommand(q, con);(OleDbDataReader dr =
C.ExecuteReader())
{(dr.Read())
{(int i = 0; i < 10;
i++)+= dr.GetValue(i).ToString() + " ";.Value =
Convert.ToDateTime(dr.GetValue(7).ToString());.Text = dr.GetValue(4).ToString();.Text
= dr.GetValue(5).ToString();
}
}.Visible = true;.Text =
d;.Text = fam;.Text = im;.Text = ot;.Text = n.ToString();
}void button4_Click(object
sender, EventArgs e)
{u = "UPDATE
[сотрудники] SET [сотрудники].имя = '" + textBox2.Text + "',
[сотрудники].фамилия = '" + textBox1.Text + "' ,
[сотрудники].отчество = '" + textBox3.Text + "',
[сотрудники].номер_паспотрта = " + textBox4.Text + " WHERE
(([сотрудники].номер_паспотрта)=" + t + ");";insCom = new
OleDbCommand(u, con);(insCom.ExecuteNonQuery() == 1)
{.Show("личные данные
сотрудника успешно изменены", "изменение",
MessageBoxButtons.OK);.Close();
}.Show("ошибка",
"изменение", MessageBoxButtons.OK);
}void
comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{.Value = DateTime.Now;
}
}
}
Form6.cs
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Data.OleDb;System.Drawing;System.Text;System.Windows.Forms;WindowsApplication1
{partial class Form6 : Form
{I =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"db1.mdb";con;Form6()
{();= new
OleDbConnection(I);.Open();Com = new OleDbCommand("SELECT
[оклады].должность FROM [оклады];", con);(OleDbDataReader dr =
Com.ExecuteReader())
{(dr.Read())
{.Items.Add(dr.GetValue(0).ToString());
}
}
}void button3_Click(object
sender, EventArgs e)
{
{del = "DELETE * FROM
оклады WHERE (((оклады.должность)='" + comboBox1.SelectedItem +
"'));";insCom = new OleDbCommand(del, con);(insCom.ExecuteNonQuery()
== 1)
{.Show("должность
удалена", "удаление", MessageBoxButtons.OK);q = "Update
сотрудники Set сотрудники.должность=' ' Where сотрудники.должность='" +
comboBox1.Text + "';";cmd = new OleDbCommand(q,
con);.ExecuteNonQuery();.Close();
}.Show("ошибка",
"удаление", MessageBoxButtons.OK);
}(Exception e2)
{.Show(e2.ToString());
}
}void button1_Click(object
sender, EventArgs e)
{.Close();
}
}
}
Form7.cs
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Data.OleDb;System.Drawing;System.Text;System.Windows.Forms;WindowsApplication1
{partial class Form7 : Form
{I =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"db1.mdb";con;Form7()
{();= new
OleDbConnection(I);.Open();Com = new OleDbCommand("SELECT
[оклады].должность FROM [оклады];", con);(OleDbDataReader dr =
Com.ExecuteReader())
{(dr.Read())
{.Items.Add(dr.GetValue(0).ToString());
}
}
}
void button4_Click(object
sender, EventArgs e)
{
{insCom = new
OleDbCommand("UPDATE оклады SET оклады.оклад = " + textBox3.Text +
" WHERE оклады.должность='" + comboBox1.Text + "';",
con);(insCom.ExecuteNonQuery() == 1)
{.Show("оклад
изменен", "изменение", MessageBoxButtons.OK);.Close();
}.Show("ошибка",
"изменение", MessageBoxButtons.OK);
}(Exception e1)
{.Show(e1.ToString(),
"ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}void
comboBox1_SelectedIndexChanged(object sender, EventArgse)
{Com = new
OleDbCommand("SELECT [оклады].оклад FROM [оклады] WHERE
[оклады].должность='" + comboBox1.Text + "';",
con);(OleDbDataReader dr = Com.ExecuteReader())
{(dr.Read())
{.Text = (dr.GetValue(0).ToString());
}
}
}void button1_Click(object
sender, EventArgs e)
{.Close();
}
}
}
Form9.cs
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Text;System.Windows.Forms;System.Data.SqlClient;System.Data.OleDb;System.Text.RegularExpressions;WindowsApplication1
{partial class Form9 : Form
{Form9()
{();
}void
crystalReportViewer1_Load(object sender, EventArgs e)
{
}
}
}
Form10.cs
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Text;System.Windows.Forms;CrystalDecisions.Shared;CrystalDecisions.CrystalReports.Engine;CrystalDecisions.Windows.Forms;System.Web.UI.WebControls;System.Data.OleDb;System.IO;System.Diagnostics;WindowsApplication1
{partial class Form10 : Form
{string id;static string
Start = Application.StartupPath;Form10()
{();
}void
crystalReportViewer1_Load(object sender, EventArgs e)
{I =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"db1.mdb";con = new OleDbConnection(I);.Open();da = new
OleDbDataAdapter();dt = new DataTable();= new OleDbDataAdapter("SELECT
сотрудники.фамилия, сотрудники.имя, сотрудники.отчество, сотрудники.звание,
сотрудники.должность, сотрудники.дата_поступления_на_работу, сотрудники.стаж
FROM сотрудники ", con);.Fill(dt);.Close();cr = new
CrystalReport3();.SetDataSource(dt);.ReportSource = cr;
}
}
}