Программное обеспечение вычислительной техники и автоматизированных систем

Тип работы:
Отчет
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

Введение

1. Создание и становление учетно-регистрационной работы в органах внутренних дел

2. Организационная структура ИАКЦ МВД ПМР

3. Описание аппаратного и программного обеспечения ИАКЦ

4. Аналитический и литературный обзор предметной области

5. Проектирование базы данных

5.1 Инфологическое проектирование модели базы данных

5.2 Логическое проектирование модели базы данных

5.3 Физическое проектирование модели базы данных

6. Описание структуры программы

Заключение

Список литературы

Приложение А. Руководство пользователя

Приложение Б. Листинг программы

Введение

Производственная практика является составной частью основной образовательной программы по специальности «Программное обеспечение вычислительной техники и автоматизированных систем».

Она имеет целью закрепление и углубление знаний, полученных студентами в процессе теоретического обучения, приобретение необходимых умений, навыков и опыта практической работы по изучаемой специальности.

При ее прохождении поставлены следующие цели:

— ознакомление с деятельностью организации;

— изучение специфики работы учреждения;

— изучение передового опыта работы специалистов учреждения;

— изучение структуры организации в данном учреждении;

— углубление и закрепление собственных знаний, полученных в процессе обучения;

— выработка навыков принятия решений и реализация решений в практической деятельности;

— расширение технического кругозора и подготовка к самостоятельной профессиональной деятельности на основе знаний и умений, полученных на протяжении всего периода обучения;

— выполнение индивидуального задания, связанного с конкретной производственной задачей.

1. Создание и становление учетно-регистрационной работы в органах внутренних дел

ИНФОРМАЦИОННО-АНАЛИТИЧЕСКИЙ КОНТРОЛЬНЫЙ ЦЕНТР (ИАКЦ), подразделение Главного Организационно-инспекторского Управления Штаба МВД ПМР. Образован как Информационный центр (ИЦ) МВД в 1993 году с целью улучшения системы сбора, обработки, хранения информации, объединения данных, поступающих из Информационно-аналитических отделений (ИАО) горрайорганов республики и создания единой информационной структуры в системе МВД ПМР.

В 2004 году преобразован в соответствии с Решением Коллегии МВД ПМР в Информационно-аналитический Контрольный центр МВД ПМР.

В системе органов внутренних дел ИАКЦ — головная организация в области обеспечения статистической, оперативно-справочной, розыскной, криминалистической информацией. В каждом городском и районном отделе внутренних дел ПМР работают информационно-аналитические отделения. Они осуществляют сбор и обработку первичной информации о преступлениях и административных правонарушениях в республике, и передают её в электронном виде по специальным каналам связи для дальнейшей обработки, хранения и систематизации в ИАКЦ.

2. Организационная структура ИАКЦ МВД ПМР

В структуру ИАКЦ входят следующие отделы: отдел программного обеспечения (ОПО) и информационно-аналитический отдел (ИАО), который включает в себя группу учета (ГУ), группу спецпроверок, инспектора разрешительной системы, инспектора контроля баз данных.

ОПО осуществляет создание, развитие и организацию эксплуатации автоматизированных информационных систем, интегрированных банков данных (ИБД) оперативно-справочного, розыскного и криминалистического назначения. ИАО осуществляет единый учет совершаемых на территории ПМР преступлений и лиц, их совершивших, межведомственного движения уголовных дел и материалов без возбуждения, результатов их расследования и рассмотрения в судах.

Ведет оперативно-справочные картотеки лиц судимых, привлеченных к уголовной ответственности, находящихся в розыске, состоящих на картотечных учетах, а также потерпевших. Контролирует ведение интегрированного банка данных, накопление, обработку и учет оперативно-справочных и поисковых документов, составляющих их основу.

Осуществляет формирование и представление в МВД ПМР, Прокуратуру ПМР, Госкомстат ПМР статистической отчетности о состоянии преступности и результатах профилактической, оперативно-розыскной и следственной деятельности органов внутренних дел.

Осуществляет сбор, обработку, накопление и выдачу оперативному составу, дежурным подразделениям и другим работникам оперативно-справочной информации о лицах, автомототранспорте, оружии, номерных вещах, находящихся в розыске, и других сведений, необходимых для раскрытия преступлений и установления лиц, их совершивших.

Совместно с ГС ИНиСР Министерства юстиции ПМР осуществляет контроль за местонахождением осужденных лиц с момента их осуждения до освобождения из учреждений ГС ИНиСР.

3. Описание аппаратного и программного обеспечения ИАКЦ

На рабочем месте в отделении программного обеспечения предоставлены компьютеры различной конфигурации:

1. Старший инженер-программист:

· Системная память 1014 Мб (DDR2−800 DDR2 SDRAM)

· жесткий диск SAMSUNG HD161GJ (160 Гб, 7200 RPM, SATA-II)

· процессор DualCore Intel Celeron E3300, 2500 MHz (12.5×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×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×267)

· Операционнаяя система Microsoft Windows XP Professional

· Системная память 2016 Мб (DDR2−800 DDR2 SDRAM)

· Монитор LG W2253 (Analog) [22″ LCD] (19 081);

Программное обеспечение ИАКЦ основано на базе ICS (интегрированная криминологическая система), которая была разработана в 1994 году на базе MS-DOS.

В настоящее время программное обеспечение разрабатывается программистами ИАКЦ с использование СУБД ORACLE на языках программирования Visual FoxPro, Delphi.

4. Аналитический и литературный обзор предметной области

программа автоматизированное база данные

Во время прохождения практики была поставлена задача разработать программный продукт «Отдел кадров», реализующий ввод, корректировку, хранение информации о сотрудниках, званиях, должностях, окладе и вывод отчетов о сотрудниках.

База данных должна содержать информацию о сотрудниках, званиях, должностях, окладе. База данных должна иметь возможность поиска информации о сотруднике по номеру паспорта, по фамилии.

Программа должна предоставить возможность формирования отчетов:

— личное дело, в котором автоматически высчитывается стаж работы в зависимости от введенных значений: даты поступления на работу и даты вывода отчета;

— отчет, группирующий сотрудников по должностям, с подсчетом количества сотрудников по каждой должности.

Информация, хранящаяся в базах данных ИАКЦ, доступна для просмотра и корректировки (в зависимости от введенного пароля) во всех городских и районных отделах внутренних дел ПМР.

Одним из видов информации, хранящаяся в базах данных ИАКЦ, являются сведения о привлечении граждан (лиц) к административной ответственности в соответствии с Кодексом об Административных Правонарушениях в ПМР (КоАП ПМР). Эти сведения состоят из следующих реквизитов:

1. Анкетные данные лица:

— фамилия;

— имя;

— отчество;

— дата рождения;

— место рождения;

— адрес места жительства.

2. Сведения о должностном лице, составившем протокол:

— фамилия и инициалы;

— звание;

— должность;

3. Сведения о месте и времени составления протокола:

— время админнарушения;

— место админнарушения;

— фабула админнарушения;

— статья КоАП;

— дата составления протокола;

— сведения о понятых, присутствующих при составлении протокола;

— объяснения и подпись нарушителя;

— описание предметов, изъятых при составлении протокола.

4. Сведения о рассмотрении админпротокола:

— мера наказания;

— кем принято решение;

5. Сведения о дате исполнения протокола.

5. Проектирование базы данных

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 должности

Должность

Текстовый

должность

Должность

Оклад

Числовой

оклад

Оклад

5.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 г.

3. Джесс Либерти «Создание. NET приложений. Программирование на C#», Издание 2-ое. Издательство «Символ-Плюс». Москва, 2005 г. -684с.

4. Ермолаев. Б. Л. Рынок банковских услуг. Правовое обеспечение стабильности, 2008 г. ISBN 978−5-466−338−3

5. Карли Ватсон и др. «C#», перевод с англ., издательство «Лори», Москва, 2005 г. -862с.

6. Кузнецов Сергей «Базы данных. Модели и языки», издательство «Бином-Пресс», 2008 г.

7. Лабор В. В. «Си шарп: Создание приложений для Windows», издательство «Харвест», Минск, 2003 г. -384с.

8. Троелсен Э. «C# и платформа. NET. Библиотека программиста», издательский дом «Питер», Санкт-Петербург, 2004 г. -796с. :ил.

Приложение А

Руководство пользователя

Для начала работы запускаем исполнительный файл, его название «WindowsApplication1. exe». При запуске появится главное окно, где пользователь может ознакомиться с полным списком информации о сотрудниках:

Рисунок 6.1 — Главное окно программы

Для работы с таблицей «сотрудники» выбираем пункт меню таблицысотрудники и действие, которое требуется выполнить. Аналогичные действия необходимо выполнить для работы с таблицей «должности»

Рисунок 6.2 — Основное меню программы

При выборе добавить открывается следующее окно, в котором необходимо заполнить все поля, из выпадающих списков выбрать звание и должность. Для сохранения записи нажать кнопку «добавить».

Рисунок 6.3 — Добавление нового сотрудника

При выборе удалить открывается окно следующего вида, в котором заполняется несколько букв фамилии, после чего нажимаем левой клавишей мыши на метку в конце строки, высвечивается список, состоящий из ФИО и номера паспорта, курсором выбираем запись, подлежащую удалению.

Рисунок 6.4 — Удаление сотрудника

В нижней части окна отображается полная информация о данном лице. После этого нажимаем клавишу удалить или отмена.

Рисунок 6.5 — Удаление сотрудника

При выборе изменить открывается окно изменения данных о сотрудниках. Выбор нужной записи происходит аналогично предыдущему режиму. После чего во вкладках звание, должность и личные данные происходит автоматическое заполнение полей. Далее выбираем нужную вкладку и производим корректировку. Для сохранения данных нажимаем кнопку изменить.

Рисунок 6.6 — Изменения данных о сотрудниках

При выборе повышение программа сканирует каждую запись на наличие индикатора «да» в графе повышение. В случае успеха корректируется текущее звание, дата присвоения звания и индикатор изменяется на «нет».

При каждом запуске программы сравнивается дата присвоения звания с текущей датой. Вычисленная разница (количество лет) сравнивается с полем «срок» из таблицы звания. При совпадении результатов индикатор «повышение» таблицы сотрудники меняется на «да».

При изменении штатного расписания корректируется таблица должности:

1. Появление новых должностей. Выбираем пункт меню таблицыдолжностидобавить.

Рисунок 6.7 — Добавление должности

2. Сокращение должностей. Выбираем пункт меню

таблицыдолжностиудалить далее из выпадающего списка выбираем должность для удаления.

Рисунок 6.8 — Удаление должности

3. Изменение оклада. Выбираем пункт меню

таблицыдолжностиизменить далее из выпадающего списка выбираем должность для изменения оклада. В следующей графе отображается нынешний оклад. В пустую графу вводим новое значение оклада. Нажимаем изменить оклад.

Рисунок 6.8 — Удаление должности

Таблица звания отображает наименование звания и количество лет выслуги, по истечении которого присваивается очередное звание в соответствии с занимаемой должностью. Для просмотра этой таблицы выбираем пункт меню таблицызвания.

Для организации поиска выбираем пункт меню «поиск» и определяем режим поиска — по номеру паспорта или по фамилии. В зависимости от выбранного режима заполняем пустую графу, после чего нажимаем кнопку искать. При совпадении указанных реквизитов на экране отображаются сведения о сотрудниках.

Рисунок 6.9 — Режим поиска

Для вызова необходимого отчета выбираем пункт меню «отчеты».

Рисунок 6. 10 — Отчет «личные карточки»

Рисунок 6. 11 — Общий отчет

Приложение Б

Листинг программы

Form1. cs

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

using System. Data. OleDb;

namespace WindowsApplication1

{

public partial class Form1: Form

{

OleDbDataAdapter datAdap;

string I = «Provider=Microsoft. Jet. OLEDB.4. 0;Data Source=» + @"db1. mdb";

OleDbConnection con;

public Form1()

{

InitializeComponent ();

con = new OleDbConnection (I);

con. Open ();

}

private void сотрудникиToolStripMenuItem_Click (object sender, EventArgs e)

{

DataTable DT = new DataTable («[сотрудники]»);

datAdap = new OleDbDataAdapter («Select* From [сотрудники]», con);

datAdap. Fill (DT);

dataGridView1. DataSource = DT;

}

private void должностиToolStripMenuItem_Click (object sender, EventArgse)

{

DataTable DT = new DataTable («[оклады]»);

datAdap = new OleDbDataAdapter («Select* From [оклады]», con);

datAdap. Fill (DT);

dataGridView1. DataSource = DT;

}

private void званияToolStripMenuItem_Click (object sender, EventArgs e)

{

DataTable DT = new DataTable («[звания]»);

datAdap = new OleDbDataAdapter («Select* From [звания]», con);

datAdap. Fill (DT);

dataGridView1. DataSource = DT;

}

private void изменениеToolStripMenuItem_Click (object sender, EventArgse)

{

Form2 f2 = new Form2();

f2. ShowDialog ();

}

private void удалитьToolStripMenuItem_Click (object sender, EventArgs e)

{

Form3 f3 = new Form3();

f3. ShowDialog ();

}

private void выходToolStripMenuItem_Click (object sender, EventArgs e)

{

this. Close ();

}

private void измененToolStripMenuItem_Click (object sender, EventArgs e)

{

Form4 f4 = new Form4();

f4. ShowDialog ();

}

private void изменитьToolStripMenuItem_Click (object sender, EventArgse)

{

Form5 f5 = new Form5();

f5. ShowDialog ();

}

private void Form1_Activated (object sender, EventArgs e)

{

OleDbCommand Com = new OleDbCommand («SELECT сотрудники. дата_поступления_на_работу FROM сотрудники; «, con);

using (OleDbDataReader dr = Com. ExecuteReader ())

{

while (dr. Read ())

{

DateTime a = DateTime. Now;

DateTime b = Convert. ToDateTime (dr. GetValue (0). ToString ());

int y1 = a. Year;

int m1 = a. Month;

int d1 = a. Day;

int y2 = b. Year;

int m2 = b. Month;

int d2 = b. Day;

int r = d1 — d2, rm, ry;

if (d1 — d2 < 0)

{

switch (m1)

{

case 5:

case 7:

case 8:

case 10:

case 12:

r = d1 — d2 + 30;

m1--;

break;

case 3:

if (d1 — d2 < 0)

if (y1% 4 == 0)

r = d1 — d2 + 29;

else r = d1 — d2 + 28;

m1--;

break;

case 1:

y1--;

r = d1 — d2 + 31;

m1 = 12;

break;

default:

r = d1 — d2 + 31;

break;

}

}

if (m1 — m2 < 0)

{

y1--;

rm = m1 — m2 + 12;

}

else rm = m1 — m2;

ry = y1 — y2;

string staj = r. ToString () + '.' + rm. ToString () + '.' + ry. ToString ();

string u = «UPDATE сотрудники SET сотрудники. стаж = '» + staj + «' WHERE сотрудники. дата_поступления_на_работу= '» + b. ToShortDateString () + «'; «;

OleDbCommand insCom = new OleDbCommand (u, con);

insCom. ExecuteNonQuery ();

}

}

OleDbCommand Com1 = new OleDbCommand («SELECT сотрудники. номер_паспотрта, сотрудники. звание, сотрудники. дата_присвоения_звания FROM сотрудники; «, con);

using (OleDbDataReader dr1 = Com1. ExecuteReader ())

{

while (dr1. Read ())

{

DateTime a = DateTime. Now;

string zv = dr1. GetValue (1). ToString ();

string nomer = dr1. GetValue (0). ToString ();;

DateTime b = Convert. ToDateTime (dr1. GetValue (2). ToString ());

int y1 = a. Year;

int m1 = a. Month;

int d1 = a. Day;

int y2 = b. Year;

int m2 = b. Month;

int d2 = b. Day;

int r = d1 — d2, rm, ry;

if (d1 — d2 < 0)

{

switch (m1)

{

case 5:

case 7:

case 8:

case 10:

case 12:

r = d1 — d2 + 30;

m1--;

break;

case 3:

if (d1 — d2 < 0)

if (y1% 4 == 0)

r = d1 — d2 + 29;

else r = d1 — d2 + 28;

m1--;

break;

case 1:

y1--;

r = d1 — d2 + 31;

m1 = 12;

break;

default:

r = d1 — d2 + 31;

break;

}

}

if (m1 — m2 < 0)

{

y1--;

rm = m1 — m2 + 12;

}

else rm = m1 — m2;

ry = y1 — y2;

switch (zv)

{

case «рядовой»:

case «младший сержант»:

case «сержант»:

case «старший сержант»:

case «старшина»:

case «прапорщик»:

case «старший прапорщик»:

case «младший лейтенант»:

case «лейтенант»:

if (ry >= 1)

{

string u1 = «UPDATE сотрудники SET сотрудники. повышение = 'да' WHERE (((сотрудники. номер_паспотрта)=» + nomer + «)); «;

OleDbCommand insCom1 = new OleDbCommand (u1, con);

insCom1. ExecuteNonQuery ();

}

break;

case «старший лейтенант»:

if (ry >= 3)

{

string u1 = «UPDATE сотрудники SET сотрудники. повышение = 'да' WHERE (((сотрудники. номер_паспотрта)=» + nomer + «)); «;

OleDbCommand insCom1 = new OleDbCommand (u1, con);

insCom1. ExecuteNonQuery ();

}

break;

case «капитан»:

if (ry >= 4)

{

string u1 = «UPDATE сотрудники SET сотрудники. повышение = 'да' WHERE (((сотрудники. номер_паспотрта)=» + nomer + «)); «;

OleDbCommand insCom1 = new OleDbCommand (u1, con);

insCom1. ExecuteNonQuery ();

}

break;

case «майор»:

if (ry >= 4)

{

string u1 = «UPDATE сотрудники SET сотрудники. повышение = 'да' WHERE (((сотрудники. номер_паспотрта)=» + nomer + «)); «;

OleDbCommand insCom1 = new OleDbCommand (u1, con);

insCom1. ExecuteNonQuery ();

}

break;

case «подполковник»:

if (ry >= 5)

{

string u1 = «UPDATE сотрудники SET сотрудники. повышение = 'да' WHERE (((сотрудники. номер_паспотрта)=» + nomer + «)); «;

OleDbCommand insCom1 = new OleDbCommand (u1, con);

insCom1. ExecuteNonQuery ();

}

break;

default: break;

}

}

}

string I1 = «Provider=Microsoft. Jet. OLEDB.4. 0;Data Source=» + @"db1. mdb";

OleDbConnection con1 = new OleDbConnection (I1);

con1. Open ();

dataGridView1. ClearSelection ();

DataTable dt = new DataTable («[сотрудники]»);

OleDbDataAdapter dA1 = new OleDbDataAdapter («Select* From [сотрудники]», con1);

dA1. Fill (dt);

dataGridView1. DataSource = dt;

con1. Close ();

}

private void удалитьToolStripMenuItem1_Click (object sender, EventArgse)

{

Form6 f6 = new Form6();

f6. ShowDialog ();

}

private void изменитьToolStripMenuItem1_Click (object sender, EventArgse)

{

Form7 f7 = new Form7();

f7. ShowDialog ();

}

private void aToolStripMenuItem_Click (object sender, EventArgs e)

{

Form10 f10 = new Form10();

f10. ShowDialog ();

}

private void сотрудникиToolStripMenuItem1_Click (object sender, EventArgs e)

{

Form9 f9 = new Form9();

f9. ShowDialog ();

}

private void повышениеToolStripMenuItem_Click (object sender, EventArgs e)

{

DialogResult DR;

DR=MessageBox. Show («Всем сотрудникам, которым необходимо присвоить звание будет присвоено очередное звание. Дата присвоения звания будет сегоднешней. Продолжить?», «повышение», MessageBoxButtons. YesNo, MessageBoxIcon. Question);

if (DR == DialogResult. Yes)

{

OleDbCommand Com1 = new OleDbCommand («SELECT сотрудники. номер_паспотрта, сотрудники. звание, сотрудники. повышение FROM сотрудники WHERE (((сотрудники. повышение)='да'));», con);

using (OleDbDataReader dr1 = Com1. ExecuteReader ())

{

while (dr1. Read ())

{

string zv = dr1. GetValue (1). ToString ();

string nomer = dr1. GetValue (0). ToString ();

OleDbCommand Com2 = new OleDbCommand («SELECT звания. ID_звания FROM звания WHERE (((звания. звание)='» + zv + «')); «, con);

using (OleDbDataReader dr2 = Com2. ExecuteReader ())

{

while (dr2. Read ())

{

int Nz = Convert. ToInt32(dr2. GetValue (0). ToString ());

Nz++;

OleDbCommand Com3 = new OleDbCommand («SELECT звания. звание FROM звания WHERE (((звания. ID_звания)=» + Nz + «)); «, con);

using (OleDbDataReader dr3 = Com3. ExecuteReader ())

{

while (dr3. Read ())

{

string zvanie = dr3. GetValue (0). ToString ();

string u = «UPDATE сотрудники SET сотрудники. повышение = 'нет', сотрудники. дата_присвоения_звания = '» + DateTime. Now. ToShortDateString () + «', сотрудники. звание = '» + zvanie + «'WHERE (((сотрудники. номер_паспотрта)=» + nomer + «)); «;

OleDbCommand cmd = new OleDbCommand (u, con);

cmd. ExecuteNonQuery ();

}

}

}

}

}

}

}

}

private void поНомеруПаспортаToolStripMenuItem_Click (object sender, EventArgs e)

{

label1. Visible = true;

label1. Text = «введите номер паспорта»;

textBox1. Visible = true;

button1. Visible = true;

}

private void button1_Click (object sender, EventArgs e)

{

if (label1. Text == «введите номер паспорта»)

{

if (textBox1. Text ≠ ««)

{

try

{

DataTable DT = new DataTable («[сотрудники]»);

datAdap = new OleDbDataAdapter («SELECT сотрудники.* FROM сотрудники WHERE (((сотрудники. номер_паспотрта)=» + textBox1. Text + «)); «, con);

datAdap. Fill (DT);

dataGridView1. DataSource = DT;

}

catch (Exception ex)

{

MessageBox. Show («поле 'номер паспорта' не может содержать букв», «ошибка», MessageBoxButtons. OK, MessageBoxIcon. Error);

}

}

else MessageBox. Show («введите номер паспорта», ««, MessageBoxButtons. OK, MessageBoxIcon. Information);

}

else

if (textBox1. Text ≠ ««)

{

try

{

DataTable DT = new DataTable («[сотрудники]»);

datAdap = new OleDbDataAdapter («SELECT сотрудники.* FROM сотрудники WHERE (((сотрудники. фамилия)='» + textBox1. Text + «')); «, con);

datAdap. Fill (DT);

dataGridView1. DataSource = DT;

}

catch (Exception ex)

{

MessageBox. Show («поле 'фамилия' не может содержать цифр», «ошибка», MessageBoxButtons. OK, MessageBoxIcon. Error);

}

}

else MessageBox. Show («введите номер паспорта», ««, MessageBoxButtons. OK, MessageBoxIcon. Information);

}

private void поФамилииToolStripMenuItem_Click (object sender, EventArgs e)

{

label1. Visible = true;

label1. Text = «введите фамилию сотрудника»;

textBox1. Visible = true;

button1. Visible = true;

}

private void таблицыToolStripMenuItem_Click (object sender, EventArgs e)

{

textBox1. Visible = false;

button1. Visible = false;

label1. Visible = false;

dataGridView1. ClearSelection ();

}

}

}

Form2. cs

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Data. OleDb;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

namespace WindowsApplication1

{

public partial class Form2: Form

{

string I = «Provider=Microsoft. Jet. OLEDB.4. 0;Data Source=» + @"db1. mdb";

OleDbConnection con;

public Form2()

{

InitializeComponent ();

con = new OleDbConnection (I);

con. Open ();

OleDbCommand Com = new OleDbCommand («SELECT [звания]. звание FROM [звания]; «, con);

using (OleDbDataReader dr = Com. ExecuteReader ())

{

while (dr. Read ())

{

comboBox1. Items. Add (dr. GetValue (0). ToString ());

}

}

OleDbCommand Com1 = new OleDbCommand («SELECT [оклады]. должность FROM [оклады]; «, con);

using (OleDbDataReader dr1 = Com1. ExecuteReader ())

{

while (dr1. Read ())

{

comboBox2. Items. Add (dr1. GetValue (0). ToString ());

}

}

}

private void button1_Click (object sender, EventArgs e)

{

OleDbDataAdapter datAdap;

try

{

if (textBox1. Text ≠ «» & & textBox2. Text ≠ «» & & textBox3. Text ≠ «» & & textBox4. Text ≠ «» & & comboBox1. Text ≠ «» & & comboBox2. Text ≠ ««)

{

string data = dateTimePicker1. Value. ToShortDateString ();

string data2 = dateTimePicker2. Value. ToShortDateString ();

string t1 = textBox1. Text, t2 = textBox2. Text, t3 = textBox3. Text;

string t11 = ««, t22 = ««, t33 = ««;

t11 += t1[0]; t22 += t2[0]; t33 += t3[0];

t11 = t11. ToUpperInvariant (); t22 = t22. ToUpperInvariant (); t33 = t33. ToUpperInvariant ();

t1 = t11 + t1. Substring (1); t2 = t22 + t2. Substring (1); t3 = t33 + t3. Substring (1);

string q = «INSERT INTO [сотрудники] VALUES ('» + t1 + «','» + t2 + «','» + t3 + «',» + textBox4. Text + «,'» + comboBox1. SelectedItem. ToString () + «','» + comboBox2. SelectedItem. ToString () + «','» + data + «','» + data2 + «',' ','нет'); «;

OleDbCommand i = new OleDbCommand (q, con);

if (i. ExecuteNonQuery () == 1)

MessageBox. Show («добавлен новый сотрудник», «Изменение», MessageBoxButtons. OK, MessageBoxIcon. Information);

else

MessageBox. Show («ошибка», «Изменение», MessageBoxButtons. OK, MessageBoxIcon. Error);

DataTable dt = new DataTable («[сотрудники]»);

datAdap = new OleDbDataAdapter («Select* From [сотрудники]», con);

datAdap. Fill (dt);

this. Close ();

}

else MessageBox. Show («не заполены поля», «ошибка», MessageBoxButtons. OK, MessageBoxIcon. Error);

}

catch (Exception ex)

{

MessageBox. Show (ex. ToString (),"ошибка", MessageBoxButtons. OK, MessageBoxIcon. Error);

}

}

private void button2_Click (object sender, EventArgs e)

{

this. Close ();

}

}

}

Form3. cs

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Data. OleDb;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

namespace WindowsApplication1

{

public partial class Form3: Form

{

public string t = ««;

string I = «Provider=Microsoft. Jet. OLEDB.4. 0;Data Source=» + @"db1. mdb";

OleDbConnection con;

public Form3()

{

InitializeComponent ();

con = new OleDbConnection (I);

con. Open ();

OleDbCommand Com3 = new OleDbCommand («SELECT сотрудники. фамилия, сотрудники. имя, сотрудники. отчество, сотрудники. номер_паспотрта FROM сотрудники; «, con);

using (OleDbDataReader dr3 = Com3. ExecuteReader ())

{

while (dr3. Read ())

{

comboBox3. Items. Add (dr3. GetValue (0). ToString () + ' ' + dr3. GetValue (1). ToString () + ' ' + dr3. GetValue (2). ToString () + ' ' + dr3. GetValue (3). ToString ());

}

}

}

private void button2_Click (object sender, EventArgs e)

{

this. Close ();

}

private void button1_Click (object sender, EventArgs e)

{

try

{

string del = «DELETE сотрудники. номер_паспотрта, сотрудники. фамилия, сотрудники. имя, сотрудники. отчество, сотрудники. ID_звания, сотрудники. дата_поступления_на_работу, сотрудники. ID_должности FROM сотрудники WHERE (((сотрудники. номер_паспотрта)=» + t + «)); «;

OleDbCommand insCom = new OleDbCommand (del, con);

if (insCom. ExecuteNonQuery () == 1)

{

MessageBox. Show («сотрудник удален», «удаление», MessageBoxButtons. OK);

this. Close ();

}

else

MessageBox. Show («ошибка», «удаление», MessageBoxButtons. OK);

}

catch (Exception e3)

{

MessageBox. Show (e3. ToString (), «ошибка», MessageBoxButtons. OK, MessageBoxIcon. Error);

}

}

private void comboBox3_SelectedIndexChanged (object sender, EventArgse)

{

string d = ««;

t = comboBox3. Text;

string fam = t. Substring (0, t. IndexOf (' '));

t = t. Substring (t. IndexOf (' ') + 1);

string im = t. Substring (0, t. IndexOf (' '));

t = t. Substring (t. IndexOf (' ') + 1);

string ot = t. Substring (0, t. IndexOf (' '));

t = t. Substring (t. IndexOf (' ') + 1);

int n = Convert. ToInt32(t);

string q = «select * from [сотрудники] where (((сотрудники. имя)='» + im + «') AND ((сотрудники. фамилия)='» + fam + «') AND ((сотрудники. отчество)='» + ot + «') AND ((сотрудники. номер_паспотрта)=» + n + «)); «;

OleDbCommand C = new OleDbCommand (q, con);

using (OleDbDataReader dr = C. ExecuteReader ())

{

while (dr. Read ())

{

for (int i = 0; i < 10; i++)

d += dr. GetValue (i). ToString () + ««;

}

}

label1. Visible = true;

label1. Text = d;

}

}

}

Form4. cs

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Data. OleDb;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

namespace WindowsApplication1

{

public partial class Form4: Form

{

string I = «Provider=Microsoft. Jet. OLEDB.4. 0;Data Source=» + @"db1. mdb";

OleDbConnection con;

public Form4()

{

InitializeComponent ();

con = new OleDbConnection (I);

con. Open ();

}

private void button2_Click (object sender, EventArgs e)

{

this. Close ();

}

private void button1_Click (object sender, EventArgs e)

{

OleDbDataAdapter datAdap;

int[] a = new int[100];

int k = 0;

OleDbCommand Com = new OleDbCommand («SELECT [оклады]. ID_должности FROM [оклады]; «, con);

using (OleDbDataReader dr = Com. ExecuteReader ())

{

while (dr. Read ())

{

a[k] = Convert. ToInt32(dr. GetValue (0));

k++;

}

}

k++;

try

{

if (textBox1. Text ≠ «» & & textBox2. Text ≠ ««)

{

string cifr = «123 456 789»;

int flag = 0;

for (int p = 0; p < 10; p++)

if (textBox1. Text. IndexOf (cifr[p]) ≠ -1)

{

flag = 1;

}

if (flag == 1)

MessageBox. Show («поле должность не должно содержать цифр», «ошибка», MessageBoxButtons. OK, MessageBoxIcon. Error);

else

{

string q = «INSERT INTO [оклады] VALUES («+ k + «,'» + textBox1. Text + «',»

+ textBox2. Text + «); «;

OleDbCommand i = new OleDbCommand (q, con);

if (i. ExecuteNonQuery () == 1)

MessageBox. Show («добавлена новая должность», «Изменение», MessageBoxButtons. OK, MessageBoxIcon. Information);

else

MessageBox. Show («ошибка», «Изменение», MessageBoxButtons. OK, MessageBoxIcon. Error);

DataTable dt = new DataTable («[оклады]»);

datAdap = new OleDbDataAdapter («Select* From [оклады]», con);

datAdap. Fill (dt);

this. Close ();

}

}

else MessageBox. Show («не заполены поля», «ошибка», MessageBoxButtons. OK, MessageBoxIcon. Error);

}

catch (Exception ex)

{

if (ex. ToString (). Contains («Отсутствует значение»))

MessageBox. Show («поле оклад может содержать только численное значение», «ошибка», MessageBoxButtons. OK, MessageBoxIcon. Error);

else

MessageBox. Show (ex. ToString (), «ошибка», MessageBoxButtons. OK, MessageBoxIcon. Error);

}

}

}

}

Form5. cs

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Data. OleDb;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

namespace WindowsApplication1

{

public partial class Form5: Form

{

public string t = ««;

string I = «Provider=Microsoft. Jet. OLEDB.4. 0;Data Source=» + @"db1. mdb";

OleDbConnection con;

public Form5()

{

InitializeComponent ();

con = new OleDbConnection (I);

con. Open ();

OleDbCommand Com1 = new OleDbCommand («SELECT [звания]. звание FROM [звания]; «, con);

using (OleDbDataReader dr1 = Com1. ExecuteReader ())

{

while (dr1. Read ())

{

comboBox2. Items. Add (dr1. GetValue (0). ToString ());

}

}

OleDbCommand Com2 = new OleDbCommand («SELECT [оклады]. должность FROM [оклады]; «, con);

using (OleDbDataReader dr2 = Com2. ExecuteReader ())

{

while (dr2. Read ())

{

comboBox4. Items. Add (dr2. GetValue (0). ToString ());

}

}

OleDbCommand Com3 = new OleDbCommand («SELECT сотрудники. фамилия, сотрудники. имя, сотрудники. отчество, сотрудники. номер_паспотрта FROM сотрудники; «, con);

using (OleDbDataReader dr3 = Com3. ExecuteReader ())

{

while (dr3. Read ())

{

comboBox3. Items. Add (dr3. GetValue (0). ToString () + ' ' + dr3. GetValue (1). ToString () + ' ' + dr3. GetValue (2). ToString () + ' ' + dr3. GetValue (3). ToString ());

}

}

}

private void button1_Click (object sender, EventArgs e)

{

try

{

OleDbCommand insCom = new OleDbCommand («UPDATE сотрудники SET сотрудники. звание = '» + comboBox2. Text + «', сотрудники. дата_присвоения_звания='"+dateTimePicker1. Value. ToShortDateString ()+"' WHERE сотрудники. номер_паспотрта=» + textBox4. Text + «; «, con);

if (insCom. ExecuteNonQuery () == 1)

{

MessageBox. Show («звание изменено», «изменение», MessageBoxButtons. OK);

this. Close ();

}

else

MessageBox. Show («ошибка», «изменение», MessageBoxButtons. OK);

}

catch (Exception e4)

{

MessageBox. Show (e4. ToString ());

}

}

private void button3_Click (object sender, EventArgs e)

{

this. Close ();

}

private void button2_Click (object sender, EventArgs e)

{

string u = «UPDATE [сотрудники] SET [сотрудники]. должность = '» + comboBox4. Text + «' WHERE ((([сотрудники]. номер_паспотрта)=» + textBox4. Text + «)); «;

OleDbCommand insCom = new OleDbCommand (u, con);

if (insCom. ExecuteNonQuery () == 1)

{

MessageBox. Show («должность изменена», «изменение», MessageBoxButtons. OK);

this. Close ();

}

else

MessageBox. Show («ошибка», «изменение», MessageBoxButtons. OK);

}

private void comboBox3_SelectedIndexChanged (object sender, EventArgse)

{

string d = ««;

t = comboBox3. Text;

string fam = t. Substring (0, t. IndexOf (' '));

t = t. Substring (t. IndexOf (' ')+1);

string im = t. Substring (0,t. IndexOf (' '));

t = t. Substring (t. IndexOf (' ') + 1);

string ot = t. Substring (0, t. IndexOf (' '));

t = t. Substring (t. IndexOf (' ') + 1);

int n = Convert. ToInt32(t);

string q = «select * from [сотрудники] where (((сотрудники. имя)='» + im + «') AND ((сотрудники. фамилия)='» + fam + «') AND ((сотрудники. отчество)='» + ot + «') AND ((сотрудники. номер_паспотрта)=» + n + «)); «;

OleDbCommand C = new OleDbCommand (q, con);

using (OleDbDataReader dr = C. ExecuteReader ())

{

while (dr. Read ())

{

for (int i = 0; i < 10; i++)

d += dr. GetValue (i). ToString () + ««;

dateTimePicker1. Value = Convert. ToDateTime (dr. GetValue (7). ToString ());

comboBox2. Text = dr. GetValue (4). ToString ();

comboBox4. Text = dr. GetValue (5). ToString ();

}

}

label1. Visible = true;

label1. Text = d;

textBox1. Text = fam;

textBox2. Text = im;

textBox3. Text = ot;

textBox4. Text = n. ToString ();

}

private void button4_Click (object sender, EventArgs e)

{

string u = «UPDATE [сотрудники] SET [сотрудники]. имя = '» + textBox2. Text + «', [сотрудники]. фамилия = '» + textBox1. Text + «', [сотрудники]. отчество = '» + textBox3. Text + «', [сотрудники]. номер_паспотрта = «+ textBox4. Text + «WHERE (([сотрудники]. номер_паспотрта)=» + t + «); «;

OleDbCommand insCom = new OleDbCommand (u, con);

if (insCom. ExecuteNonQuery () == 1)

{

MessageBox. Show («личные данные сотрудника успешно изменены», «изменение», MessageBoxButtons. OK);

this. Close ();

}

else

MessageBox. Show («ошибка», «изменение», MessageBoxButtons. OK);

}

private void comboBox2_SelectedIndexChanged (object sender, EventArgs e)

{

dateTimePicker1. Value = DateTime. Now;

}

}

}

Form6. cs

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Data. OleDb;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

namespace WindowsApplication1

{

public partial class Form6: Form

{

string I = «Provider=Microsoft. Jet. OLEDB.4. 0;Data Source=» + @"db1. mdb";

OleDbConnection con;

public Form6()

{

InitializeComponent ();

con = new OleDbConnection (I);

con. Open ();

OleDbCommand Com = new OleDbCommand («SELECT [оклады]. должность FROM [оклады]; «, con);

using (OleDbDataReader dr = Com. ExecuteReader ())

{

while (dr. Read ())

{

comboBox1. Items. Add (dr. GetValue (0). ToString ());

}

}

}

private void button3_Click (object sender, EventArgs e)

{

try

{

string del = «DELETE * FROM оклады WHERE (((оклады. должность)='» + comboBox1. SelectedItem + «')); «;

OleDbCommand insCom = new OleDbCommand (del, con);

if (insCom. ExecuteNonQuery () == 1)

{

MessageBox. Show («должность удалена», «удаление», MessageBoxButtons. OK);

string q = «Update сотрудники Set сотрудники. должность=' ' Where сотрудники. должность='» + comboBox1. Text + «'; «;

OleDbCommand cmd = new OleDbCommand (q, con);

cmd. ExecuteNonQuery ();

this. Close ();

}

else

MessageBox. Show («ошибка», «удаление», MessageBoxButtons. OK);

}

catch (Exception e2)

{

MessageBox. Show (e2. ToString ());

}

}

private void button1_Click (object sender, EventArgs e)

{

this. Close ();

}

}

}

Form7. cs

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Data. OleDb;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

namespace WindowsApplication1

{

public partial class Form7: Form

{

string I = «Provider=Microsoft. Jet. OLEDB.4. 0;Data Source=» + @"db1. mdb";

OleDbConnection con;

public Form7()

{

InitializeComponent ();

con = new OleDbConnection (I);

con. Open ();

OleDbCommand Com = new OleDbCommand («SELECT [оклады]. должность FROM [оклады]; «, con);

using (OleDbDataReader dr = Com. ExecuteReader ())

{

while (dr. Read ())

{

comboBox1. Items. Add (dr. GetValue (0). ToString ());

}

}

}

private void button4_Click (object sender, EventArgs e)

{

try

{

OleDbCommand insCom = new OleDbCommand («UPDATE оклады SET оклады. оклад = «+ textBox3. Text + «WHERE оклады. должность='» + comboBox1. Text + «'; «, con);

if (insCom. ExecuteNonQuery () == 1)

{

MessageBox. Show («оклад изменен», «изменение», MessageBoxButtons. OK);

this. Close ();

}

else

MessageBox. Show («ошибка», «изменение», MessageBoxButtons. OK);

}

catch (Exception e1)

{

MessageBox. Show (e1. ToString (), «ошибка», MessageBoxButtons. OK, MessageBoxIcon. Error);

}

}

private void comboBox1_SelectedIndexChanged (object sender, EventArgse)

{

OleDbCommand Com = new OleDbCommand («SELECT [оклады]. оклад FROM [оклады] WHERE [оклады]. должность='» + comboBox1. Text + «'; «, con);

using (OleDbDataReader dr = Com. ExecuteReader ())

{

while (dr. Read ())

{

textBox4. Text = (dr. GetValue (0). ToString ());

}

}

}

private void button1_Click (object sender, EventArgs e)

{

this. Close ();

}

}

}

Form9. cs

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

using System. Data. SqlClient;

using System. Data. OleDb;

using System. Text. RegularExpressions;

namespace WindowsApplication1

{

public partial class Form9: Form

{

public Form9()

{

InitializeComponent ();

}

private void crystalReportViewer1_Load (object sender, EventArgs e)

{

}

}

}

Form10. cs

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Text;

using System. Windows. Forms;

using CrystalDecisions. Shared;

using CrystalDecisions. CrystalReports. Engine;

using CrystalDecisions. Windows. Forms;

using System. Web. UI. WebControls;

using System. Data. OleDb;

using System. IO;

using System. Diagnostics;

namespace WindowsApplication1

{

public partial class Form10: Form

{

public string id;

public static string Start = Application. StartupPath;

public Form10()

{

InitializeComponent ();

}

private void crystalReportViewer1_Load (object sender, EventArgs e)

{

string I = «Provider=Microsoft. Jet. OLEDB.4. 0;Data Source=» + @"db1. mdb";

OleDbConnection con = new OleDbConnection (I);

con. Open ();

OleDbDataAdapter da = new OleDbDataAdapter ();

DataTable dt = new DataTable ();

da = new OleDbDataAdapter («SELECT сотрудники. фамилия, сотрудники. имя, сотрудники. отчество, сотрудники. звание, сотрудники. должность, сотрудники. дата_поступления_на_работу, сотрудники. стаж FROM сотрудники «, con);

da. Fill (dt);

con. Close ();

CrystalReport3 cr = new CrystalReport3();

cr. SetDataSource (dt);

crystalReportViewer1. ReportSource = cr;

}

}

}

ПоказатьСвернуть
Заполнить форму текущей работой