Разработка справочника для отслеживания информации о сотрудниках предприятия
История развития справочников/баз данных. Основные параметры, необходимые для создания справочника по предприятию. Разработка интерфейса программы в среде CSharp. Детальный просмотр функций программы. Системные требования к ПК и руководство пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 11.04.2012 |
Размер файла | 3,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ и науки УКРАИНЫ
Запорожский институт экономики и информационных технологий
Кафедра компьютерных систем
КУРСОВАЯ РАБОТА
по дисциплине программирование
«Разработка справочника для отслеживания информации о сотрудниках предприятия»
Запорожье
2012
РЕФЕРАТ
справочник сотрудник информация интерфейс
Курсовая работа: 31 стр., 16 рисунков, 6 приложение, 5 источников литературы
Объект исследования: программные справочные системы.
Предмет исследования: справочник по предприятию.
Цель работы: Создать приложение для отслеживания информации о сотрудниках, работающих на данном предприятии. Наработать навыки разработки прикладных программ.
В результате была разработана прикладная программа-справочник для руководителей крупных предприятий с большим числом сотрудников. Программа позволяет добавлять новых сотрудников в базу данных, редактировать данные уже имеющихся сотрудников, а также по мере необходимости удалять из базы данных информацию о персонале.
В работе были исследованы методы сохранения данных, определены способы их реализации; рассмотрены различные элементы управления, а также даны практические рекомендации по их использованию, дальнейшей доработке и совершенствованию разработанной программной системы; рассмотрено создание диалоговых окон и методы общения окон между собой; рассмотрена работа с событиями; использована сериализация для сохранения данных.
CSHARP, СПРАВОЧНИК, СЕРИАЛИЗАЦИЯ, ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС, СОБЫТИЯ, ДИАЛОГОВЫЕ ОКНА, КЛАСС.
Содержание
ВВЕДЕНИЕ
РАЗДЕЛ 1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1 История развития справочников/баз данных
1.2 Обзор программ-аналогов
1.2.1 Кадры плюс
1.2.2 Отдел Кадров Плюс
РАЗДЕЛ 2 ОПИСАНИЕ ПРОГРАММЫ
2.1 Способы сохранения информации
2.2 Справочник по предприятию
2.3 Типы данных
2.4 Выделение подсистем для решения задачи
2.5 Детальный просмотр функций программы
2.5.1 Главная форма
2.5.2 Добавление нового сотрудника в базу
2.5.3 Редактирование информации о сотруднике
2.5.4 Увольнение сотрудника
2.5.5 Премирование сотрудников
2.5.6 Депремирование сотрудников
2.5.7 Удаление сотрудников из базы
2.5.8 Просмотр полной информации о сотруднике
2.6 Структура приложения
РАЗДЕЛ 3 РУКОВОВОДСТВО ПО ЭКСПЛУАТАЦИИ
3.1 Системные требования к ПК
3.2 Руководство пользователя
ВЫВОДЫ
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЯ
ВВЕДЕНИЕ
В наше время капитализма и рыночных отношений существует много способов заработка денег. Кто-то устраивается на завод/предприятие, кто-то работает на себя, а кто-то организовывает работу других людей, создавая свои предприятия и фирмы. На каждом предприятии или же фирме есть свой штат сотрудников, где-то он большой, где-то не очень, а в некоторых фирмах штат сотрудников можно на пальцах сосчитать. Однако, каков бы велик не был штат сотрудников, необходим его учет. Именно для таких целей и создают базы данных или же специализированные программы, справочники по предприятию.
Однако, использование современных баз данных довольно не выгодно для предприятий с небольшим штатом сотрудников (до 3-х десятков) из-за высокой стоимости последних. Данную проблему может решить приложение, написанное непосредственно для конкретного предприятия, и ориентированного для его потребностей. Итак, каковы же преимущества справочника по предприятию перед современными базами данных:
· справочник по предприятию не требует значительных материальных ресурсов для своей работы и администрирования;
· учитывает особенности конкретного предприятия и его нужды;
· удобство и простота пользования дружеским интерфейсом;
· не требует установки, а также нет необходимости установки дополнительного программного обеспечения для работы;
· не требовательна к ресурсам машины, на которой работает;
· простота переноса данных с одного ПК на другой;
· многофункциональность.
Для реализации поставленной цели необходимо решить следующие задачи:
1. Исследовать основные параметры, необходимые для создания справочника по предприятию;
2. Проанализировать существующие программные продукты;
3. Разработать интерфейс программы;
4. Исследовать все существующие методы сохранения данных программы;
5. Включить в программу возможность изменения и сохранения данных;
Курсовая работа на примере программы справочник по предприятию позволит закрепить полученные навыки создания структур данных, использования типовых алгоритмов обработки данных и создание интерфейсов в среде CSharp.
В первом разделе приведен обзор информации по структурам данных, используемых в программе, и другие теоретические сведения для выполнения практической части работы.
Во втором разделе описана реализация основных функций программы, приведены описание выполнения программных кодов реализующих работу визуальных компонентов программы.
В третьем разделе описаны руководство администратора и пользователя системы.
РАЗДЕЛ 1
АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1 История развития справочников/баз данных
История возникновения и развития технологий баз данных может рассматриваться как в широком, так и в узком аспекте, т.к. справочник по предприятию - это по сути небольшая база данных.
В широком аспекте понятие истории баз данных обобщается до истории любых средств, с помощью которых человечество хранило и обрабатывало данные. В таком контексте упоминаются, например, средства учёта царской казны и налогов в древнем Шумере (4000 г. до н. э.), узелковая письменность инков -- кипу, клинописи, содержащие документы Ассирийского царства и т. п. Следует помнить, что недостатком этого подхода является размывание понятия «база данных» и фактическое его слияние с понятиями «архив» и даже «письменность».
История баз данных в узком аспекте рассматривает базы данных в традиционном (современном) понимании. Эта история начинается с 1955 года, когда появилось программируемое оборудование обработки записей. Программное обеспечение этого времени поддерживало модель обработки записей на основе файлов. Для хранения данных использовались перфокарты.
Оперативные сетевые базы данных появились в середине 1960-х. Операции над оперативными базами данных обрабатывались в интерактивном режиме с помощью терминалов. Простые индексно-последовательные организации записей быстро развились к более мощной модели записей, ориентированной на наборы. За руководство работой Data Base Task Group (DBTG), разработавшей стандартный язык описания данных и манипулирования данными, Чарльз Бахман получил Тьюринговскую премию.
В это же время в сообществе баз данных COBOL была проработана концепция схем баз данных и концепция независимости данных.
Следующий важный этап связан с появлением в начале 1970-х реляционной модели данных, благодаря работам Эдгара Ф. Кодда. Работы Кодда открыли путь к тесной связи прикладной технологии баз данных с математикой и логикой. За свой вклад в теорию и практику Эдгар Ф. Кодд также получил премию Тьюринга.
Сам термин database (база данных) появился в начале 1960-х годов, и был введён в употребление на симпозиумах, организованных фирмой SDC (System Development Corporation) в 1964 и 1965 годах, хотя понимался сначала в довольно узком смысле, в контексте систем искусственного интеллекта. В широкое употребление в современном понимании термин вошёл лишь в 1970-е годы.
1.2 Обзор программ-аналогов
1.2.1 Кадры Плюс
Кадровый учет - это важный аспект для автоматизации работы отдела кадров любой организации. Данный программый прдукт призван значительно ускорит подготовку любых видов кадровых документов и позволит обеспечить максимальную отдачу от выполнения должностных обязанностей специалистов по кадрам конкретного предприятия.
Рисунок 1.1 Рабочее окно с открытой личной картой сотрудника
С помощью "Кадры Плюс" возможно с легкостью создавать любые приказы, заявления и отчеты, мониторить движение персонала, а также вести учет рабочего времени.
Рисунок 1.2.2 Учет времени сотрудника
1.2.2 Отдел Кадров Плюс
Отдел Кадров Плюс - автоматизация работы отдела кадров. Программа позволяет значительно повысить скорость и эффективность работы отдела кадров и автоматизировать кадровый документооборот. Эффект от использования программы в работе отдела кадров высок для предприятий с различной численностью сотрудников. Внедрение программы существенно снижает время, необходимое на обработку информации и оформление кадровых приказов и документов.
Рисунок 1.2.3 Отдел Кадров Плюс окно со штатным расписанием (просмотр, ввод, редактирование)
Возможности:
- Формирование 34-х документов (унифицированных форм и кадровых приказов), соответствующих постановлению Госкомстата России;
- Формирование 36-ти дополнительных статистических отчетов;
- Формирование произвольных документов (внутренних приказов) и отчетов;
- Возможность обмена данными по сотруднику (включая табель) с программой 1С;
- Возможность загрузки данных по сотруднику из Excel (и обратно);
- Возможность подключать классификаторы (КЛАДР, ОКИН, ОКСО, ОКПДТР).
Рисунок 1.2.4 Active Отдел Кадров Плюс редактирование графика отпусков
Выводы
По большому счету, важно не конкретное воплощение идеи персонального справочника по предприятию, а сам принцип самостоятельного подхода к организации работы с информацией. Решение персонального справочника у каждого человека может быть различно, однако принцип не изменен: информация должна находиться под четким контролем, работа с ней должна быть правильно организована и максимально адаптирована под конкретные условия. Это является одним из условий удобства и эффективности работы всего предприятия в целом. Использование готовых решений не всегда выгодно в силу их избыточности, т.к. разработчики готовых программных продуктов в своих решениях стараются учесть все аспекты по данному вопросу. Эта же проблема и затрудняет освоение программных продуктов персоналом, для которого они предназначены. Выходом из данной ситуация является создание собственной программы, учитывающей нужды и возможности персонала, который будет с данной программой работать.
РАЗДЕЛ 2. ОПИСАНИЕ ПРОГРАММЫ
2.1 Способы сохранения информации
При работе со справочником пользователю необходимо сохранять базу данных сотрудников. Лучше всего для этого подойдёт сериализация. Работа с сериализацией очень проста, программный код занимает всего несколько строчек, а самое главное, что данным способом можно сохранить фактически любой объект без предварительной его подготовки.
Также просто и восстановить данные из файла при помощи десериализации. Как и сериализация десериализация не занимает много программного кода, да и проста в программировании, т.к. восстанавливает полностью сохраненный объект.
Возможны и другие варианты сохранения, такие как ini-файлы, сохранение массива байтов или строк в файл. Все данные методы обладают одним большим недостатком - необходимость подготавливать данные перед сохранением, а также расшифровывать их после прочтения, что становиться невозможным при необходимости сохранения большого количества объектов различных типов или целых классов.
Одно из главных преимуществ сериализации заключается в том, что этот метод поддерживает различные типы данных, самостоятельно их упаковывая в файл. Восстановление наших данных также не составляет большого труда, и они сразу же готовы к работе без каких-либо преобразований.
Прежде всего, необходимо создать новое приложение. В приложение прежде всего при помощи директивы using подключить пространство имен System.Runtime.Serialization.Formatters.Binary и System.Runtime.Serialization. После этого нам становятся доступны такие классы как FileStream и BinaryFormatter. Класс FileStream необходим для создания потока ввода/вывода данных, инициализации файла, метода доступа, способа вызова. Класс BinaryFormatter непосредственно реализует методы Serialize и Deserialize, при помощи которых и происходит запись/чтение в/из файла. Так как в программе предусмотрено несколько мест, где необходима запись или чтение из файла, следуя объектно-ориентированному программирования (далее ООП) было принято решение создать функции для записи и чтения Saving() и Opening() соответственно.
Код:
public void Saving()
{
FileStream FS = new FileStream(Application.StartupPath + "\\Data.dat", FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
BinaryFormatter BF = new BinaryFormatter();
BF.Serialize(FS, L);
FS.Close();
}
//Функция чтения данных из файла
public void Opening()
{
FileStream FS = new FileStream(Application.StartupPath + "\\Data.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryFormatter BF = new BinaryFormatter();
L.Clear();
L = (List<Data>)BF.Deserialize(FS);
FS.Close();
}
Итак, как видно из кода, обе функции имеют модификатор доступа public, поэтому они будут доступны в любой части нашей программы.
В функции Saving() первым делом создаём новый файловый поток, где указываем местоположение файла, куда будем записывать данные, а также модификаторы доступа к файлу. Путь к файлу мы получаем при помощи метода StartupPath класса Application. Данный метод позволяет получить путь для исполняемому файла, запустившего приложение, не включая его имя. Далее инициализируем класс BinaryFormatter, который непосредственно сериализиует и десириализует объекты в двоичном формате. А теперь непосредственно про объект сериализации. Объектом сериализации является список объектов типа класс Data. Data - это класс, поля которого хранят всю информацию о сотруднике, а класс List<object> просто помогает хранить большое количество этих объектов.
public List<Data> L = new List<Data>();
После инициализации всех необходимых переменных мы выполняем сериализацию при помощи функции Serialize.
BF.Serialize(FS, L);
В качестве параметров этой функции передаются файловый поток, т.е. куда будем сохранять и непосредственно что будем сохранять.
Теперь рассмотрим функцию Opening(). Эта функция сама по себе мало чем отличается от функции сохранения, т.е. необходимо изначально проинициализировать файловый поток, и класс BinaryFormatter. Далее мы очищаем коллекцию объектов List<Data>, чтоб избежать ошибок при сохранении информации и выполняем десериализацию.
L = (List<Data>)BF.Deserialize(FS);
При десериализации мы в качестве параметра передаём файловый поток, в котором уже хранится информация в двоичном виде. Т.к. функция Deserialize возвращает восстановленный объект типа object мы выполняем явное преобразование типа object к List<Data>. После этого у нас в коллекции уже хранятся объекты класса Data, готовые к работе.
2.2 Справочник по предприятию
В моей программе присутствуют только нужные функции, объединенные удобным и простым интерфейсом. При работе с приложением необходимо добавлять сотрудников в справочник с полной информацией или же редактировать уже имеющиеся данные.
Программа позволяет создавать новые и редактировать существующие записи.
2.3 Типы данных
В программе создана база данных на основе списков класса List<Data>, на главной форме используется ListView для отображения кратких сведений о штате сотрудников, ToolStrip1 для отображения панели меню. В программе создано 5 окон (главная форма, форма добавления нового сотрудника, форма редактора информации о сотруднике, форма увольнения, и форма для записи причин премирования/депремирования). Для ввода данных на формах предусмотрены TextBox-сы и ComboBox-сы. Для более легкого восприятия при ошибке ввода данных был использован ErrorProvider. Подтверждение своего выбора можно произвести при помощи Button. Для более легкого восприятия места, куда необходимо вводить информацию а также то, что надо вводить предусмотрены GroupBox. Мною были реализованы несколько отдельных классов, один - для хранения всей информации о сотруднике и один вспомогательный, для хранения контактной информации о сотруднике.
Среди использованных типов переменных наиболее часто встречаются такие: string, DateTime, int, bool, List<>, Data, Form, ListViewItem.
2.4 Выделение подсистем для решения задачи
В ходе работы удобнее выделить несколько подсистем и рассматривать их как отдельные подзадачи.
§ Добавление в базу нового сотрудника
- загрузка соответствующей формы;
- заполнение информации о новом сотруднике;
- редактирование текста;
- создание новой записи;
- проверка правильности заполнения формы;
- сохранение информации о новом сотруднике;
§ Редактирования информации об уже имеющимся в базе сотрудникам
- редактирование общей информации;
- редактирование контактных данных;
- проверка правильности заполнения данных;
- сохранение изменений;
§ Увольнение, премирование, депремирование сотрудников
- загрузки соответствующей формы;
- добавление на форму информации о сотруднике;
- заполнения данных о причине увольнения, депремирования, премирования;
- сохранения изменений;
§ Удаление записи о сотруднике из базы
- предупреждение о невозможности восстановления данных после удаления;
- сохранение изменений.
2.5 Детальный просмотр функций программы
2.5.1 Главная форма
Приложение готово к работе сразу же после запуска. Если в базе программы есть какие-то записи о штате работников, они будут считаны и отображены на главной форме
Как видно на главной форме имеются такие кнопки как «Добавить», «Редактировать», «Уволить», «Ещё». Т.к. кнопка «Ещё» является кнопкой с выпадающим списком, в ней содержатся следующие кнопки «Премия», «Штраф», «Удалить из базы».
Рисунок 2.1.Главная форма
2.5.2 Создание нового напоминания
Для добавления нового сотрудника в базу необходимо нажать на кнопку «Добавить». После нажатия на кнопку появится окно «Добавление нового сотрудника», где необходимо указать ключевые элементы напоминания (рис. 2.2).
Рисунок 2.2 Добавление нового сотрудника в базу
Окно «Добавление нового сотрудника» располагается на отдельной форме Form2. Для удобства ввода информации на форме располагаются GroupBox для конкретизации информации, которая вводится. Для выбора области проживания предусмотрен ComboBox, который содержит все области Украины. При необходимости можно вручную ввести область с клавиатуры.
При неправильном вводе данных, или же не вводе их в программе предусмотрены ErrorProvider, который просигнализирует об ошибке возле поля, в котором она была допущена. Программа проверяет данные на такие ошибки, как ввод знаков, отличных от цифр, в поля предусмотренные для ввода цифр. На следующем рисунке видно, что программа указывает на ошибки, допушенные при заполнении данных.
Рисунок 2.3 Добавление нового сотрудника в базу с ошибками
После проверки на правильность введенных данных при нажатии на кнопку «Сохранить» данная информация тут же отобразится на главной форме и сразу же будет сохранена в файл.
2.5.3 Редактирование информации о сотруднике
Вызов редактора для корректирования информации об уже имеющимся в базе сотрудникам осуществляется при помощи кнопки на главной форме «Редактировать», предварительно поставив галочку напротив редактируемого элемента. Результатом этих действий будет следующая форма.
Рисунок 2.4 Редактирование информации о сотруднике
При открытии этой формы на неё сразу же загружается информация о выбранном сотруднике. Окно редактирования по своему функционалу идентично окну добавления нового сотрудника, имеет все те же элементы управления.
Рисунок 2.5 Редактирование информации о сотруднике с указание места шибки и информации об ошибке
2.5.4 Увольнение сотрудника
Для увольнения сотрудника необходимо поставить галочку напротив необходимого элемента и нажать на кнопку «Уволить».
Рисунок 2.6 Увольнение сотрудника
После нажатия на кнопку появиться новая форма с кратким описание сотрудника (Ф.И.О., должность, рабочее место) и полем для ввода причины увольнения сотрудника. После заполнения этой формы и нажатия на кнопку «Сохранить» информация в базе данных будет обновлена, а в главной форме в столбце «Уволен с работы» появится текущая дата.
Рисунок 2.7 Окно описания причины увольнения сотрудника
2.5.5 Премирование сотрудников
При нажатии на кнопку «Премия» в разделе кнопки «Ещё» появиться следующая форма (рис. 2.8), предварительно поставив галочку на основной форме напротив того сотрудника, который премируется. На ней будет указана краткая информация о сотруднике, текущая сумма премии, доступная для изменения и поле для описания причины премирования. После проверки на правильность заполнения полей данными и нажатия на кнопку «Сохранить» данные будут сохранены и соответствующие изменения будут внесены в основную форму.
Рисунок 2.8 Премирование сотрудника
2.5.6 Депремирование сотрудников
При нажатии на кнопку «Штраф» в разделе кнопки «Ещё» появиться следующая форма (рис. 2.9) , предварительно поставив галочку на основной форме напротив того сотрудника, который премируется. На ней будет указана краткая информация о сотруднике, текущая сумма штрафа или ноль, если сотрудник ещё не штрафовался, доступная для изменения и поле для описания причины депремирования. Если же сотрудник ранее был оштрафован, то поле описания причины будет содержать предыдущую причину депремирования. После проверки на правильность заполнения полей данными и нажатия на кнопку «Сохранить» данные будут сохранены и соответствующие изменения будут внесены в основную форму.
Рисунок 2.9 Депремирование сотрудника
При наложении штрафа на сотрудника сумма премии автоматически обнуляется.
Рисунок 2.10 Главная форма со штатом сотрудников
2.5.7 Удаление сотрудников из базы программы
Для удаления записи о сотруднике из базы программы необходимо напротив него поставить галочку и нажать на кнопку «Удалить из базы» в разделе кнопки «Ещё». При этом появиться уведомление о том, что после удаления информации о сотруднике её восстановить не удастся. При положительном ответе на появившееся уведомление вся информация о сотруднике будет удалена из базы данных.
Рисунок 2.11 Уведомление об удалении информации о сотруднике
2.5.8 Просмотр полной информации о сотруднике
Для просмотра полной информации о сотруднике, не отображаемой на главной форме, необходимо над интересующим сотрудником клацнуть два раза левой клавишей мыши. При этом появится новое окно с отображением полной информации о сотруднике.
Рисунок 2.12 Полная информация о сотруднике
2.6 Структура приложения
Размещение событий и функций:
§ Form1
public Form1()
public void Opening()
private void button1_Click(object sender, EventArgs e)
public void Saving()
private void toolStripButton1_Click(object sender, EventArgs e)
private void toolStripButton2_Click(object sender, EventArgs e)
private Data Finds(string s)
private void AddDel(Data temp, Data NewD)
private void toolStripButton3_Click(object sender, EventArgs e)
private void премияToolStripMenuItem_Click(object sender, EventArgs e)
private void штрафToolStripMenuItem_Click(object sender, EventArgs e)
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
private void удалитьИзБазыToolStripMenuItem_Click(object sender, EventArgs e)
§ Form2
public Form2(int id, bool isnew, Data corr)
private void button2_Click(object sender, EventArgs e)
private void button1_Click(object sender, EventArgs e)
private void textBox1_Validating(object sender, CancelEventArgs e)
private void textBox2_Validating(object sender, CancelEventArgs e)
private void textBox3_Validating(object sender, CancelEventArgs e)
private void textBox4_Validating(object sender, CancelEventArgs e)
private void textBox5_Validating(object sender, CancelEventArgs e)
private void comboBox1_Validating(object sender, CancelEventArgs e)
private void textBox6_Validating(object sender, CancelEventArgs e)
private void textBox7_Validating(object sender, CancelEventArgs e)
private void textBox8_Validating(object sender, CancelEventArgs e)
private void textBox9_Validating(object sender, CancelEventArgs e)
private void textBox10_Validating(object sender, CancelEventArgs e)
private void textBox11_Validating(object sender, CancelEventArgs e)
private void Form2_Load(object sender, EventArgs e)
§ Form3
public Form3(Data d)
private void button1_Click(object sender, EventArgs e)
private void Form3_Load(object sender, EventArgs e)
private void button2_Click(object sender, EventArgs e)
§ Form4
public Form4(Data dt, bool what)
private void button2_Click(object sender, EventArgs e)
private void Form4_Load(object sender, EventArgs e)
private void button1_Click(object sender, EventArgs e)
private void textBox4_Validating(object sender, CancelEventArgs e)
§ Form5
public Form5(Data dt)
private void button1_Click(object sender, EventArgs e)
private void Form5_Load(object sender, EventArgs e)
§ Informations
public Informations()
public Informations(string Area, string Town, string Street, string House, string Birthday, int Flat, int Phone_num)
public string GetSetArea
public string GetSetTown
public string GetSetStreet
public string GetSetHouse
public string GetSetBirthday
public int GetSetFlat
public int GetSetPhone_num
§ Data
public Data()
public Data(string fio, string post, string workplace, string workoutreason, string finereason, int id, DateTime workin, DateTime workout,
double oklad, double premija, double fine, Informations INF, string premijareason)
public Data(string fio, string post, string workplace, string workoutreason, string finereason, int id, DateTime workin,
double oklad, double premija, double fine, Informations INF, string premijareason)
public string GetSetFio
public string GetSetPost
public string GetSetWorkPlace
public string GetInformation
public string GetSetWorkOutReason
public string GetSetFineReason
public int GetSetId
public DateTime GetSetWorkIn
public DateTime GetSetWorkOut
public double GetSetOklad
public double GetSetPremija
public double GetSetFine
public void SetInformation(string Area, string Town, string Street, string House, string Birthday, int Flat, int Phone_num)
public Informations GetInfa
public string GetSetPremijaReason
РАЗДЕЛ 3. РУКОВОВОДСТВО ПО ЭКСПЛУАТАЦИИ
3.1 Системные требования
Программа тестировалась на Windows XP. Программа нуждается в установленном NET.Freamwork версии 3.5 и выше, однако современные операционные системы такие как Microsoft Windows XP Proffesion SP3 уже имеют встроенную поддержку NET.Freamwork версии 3.5.
Высокие параметры и хорошие технические характеристики ПК могут ускорить процесс работы программы.
3.2 Руководство пользователя
Программа очень проста в использовании. Благодаря простому интерфейсу можно интуитивно понять принцип работы с приложением.
Для начала работы необходимо запустить программу, где откроется главная форма. Если программа запускалась впервые, то на форме не будет никакой информации. Для добавления сотрудника в базу данных программы необходимо на главной форме нажать на кнопку «Добавить», после чего в открывшемся окне ввести всю необходимую информацию. Если же информация введена не полность или же при вводе были допущены ошибки то программа уведомит пользователя об этом визуальным сигналом напротив поля, где допущена ошибка с кратким описание сути. После корректного введения информации и нажатия на кнопку «Сохранить» информация будет внесена в базу данных программы и сразу же будет отображена на главной форме.
Для редактирования данных о сотруднике необходимо напротив интересующего нас сотрудника поставить галочку и нажать на кнопку «Редактирование». При этом откроется окно редактирования, которое по своему функционалу не отличается от окна добавления сотрудника. При завершении корректировки и проверки правильности введенных данных необходимо нажать на кнопку «Сохранить», после чего окно редактирования закроется и информация в базе данных программы а также и на главной форме будет обновлена. Сохранение информации в файл происходит автоматически после каждого изменения.
Для того, чтоб уволить сотрудника необходимо напротив него поставить галочку на главной форме и нажать на кнопку «Уволить». После нажатия данной кнопки откроется окно с краткой информацией по сотруднику и полем для ввода причины увольнения. После ввода причины увольнения и нажатия на кнопку «Сохранить» информация по данному сотруднику в базе данных программы будет обновлена и на главной форме в столбце «Уволен с работы» появится текущая дата. При нажатии на кнопку «Отмена» информация о сотруднике останется без изменений.
На форме имеется кнопка «Ещё» с выпадающим списком. Она содержит такие дополнительные действия как «Премия», «Штраф», «Удалить из базы». Для выполнения действия с этими функциями предварительно необходимо отметить сотрудника галочкой, для которого необходимо выполнить действие.
При выборе действия «Премия» откроется новое окно с краткой информацией о сотруднике и двумя полями для ввода данных. Первое поле содержит текущую сумму премии, которую можно изменить. Во втором поле необходимо указать, за какие заслуги данный сотрудник будет премирован. Если же сотрудник до этого уже был премирован дополнительно, то в данных полях будет содержатся предыдущие данные.
При выборе действия «Штраф» откроется новое окно с краткой информацией о сотруднике и двумя полями для ввода данных. Первое поле содержит текущую сумму штрафа, которую можно изменить. Во втором поле необходимо указать, по какой причине данный сотрудник будет депремирован. Если же сотрудник до этого уже был депремирован, то в данных полях будет содержатся предыдущие данные.
При выборе действия «Удалить из базы» появится предупреждение об удалении данного сотрудника из базы. При утвердительном ответе на данное сообщение вся информация касательно выбранного сотрудника будет удалена из базы данных программы.
Т.к. на главной форме вся информация о сотрудниках не может поместится, для этого предусмотрено специальное окно. Для просмотра полной информации о сотруднике (общей, контактной информации, суммах штрафов и премий, причинах премирования/депремирования) необходимо на главной форме над интересующим нас сотруднике дважды щелкнуть левой кнопкой мыши, при этом появится новое окно с полной информацией по данному сотруднику.
Сохранение информации о сотрудниках происходит автоматически при закрытии главного окна или при внесении изменений в базу данных программы. Пользователь в данном процессе участия не принимает.
Выводы
В процессе выполнения курсовой работы я ознакомился с принципами создания, редактирования, а также сохранения информации при помощи сериализации, получил навыки программирования в среде СSharp.
Мною были закреплены навыки создания структур данных, баз данных, создания интерфейса, а также способы обмена информацией между родительской формой и дочерними окнами программы.
Во время создания курсовой я ознакомился с различными способами хранения информации.
В результате мною была создана программа, которая позволяет добавлять и редактировать информацию о сотрудниках, просматривать полную информацию о каждом сотруднике во всём штате.
Список использованной литературы
1. Методические указания к выполнению курсовой работы по дисциплине «программирование», Запорожье, 2005.
2. Эндрю Кровчик, Винод Кумар, Номан Лагари. Net. Сетевое программирование для профессионалов, Лорри, 2005.
3. Троелсен Эндрю. Язык программирования C# 2005 и платформа .NET. 3-е издание, Вильямс, 2007.
4. Microsoft Developer Network MSDN Library для Visual Studio 2008 - пакет обновления 1 (SP1)
5. Visual C# на примерах. Михаил Абрамян. БХВ-Петербург, 2008
Приложение А
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.IO;
namespace Staff
{
[Serializable]
public partial class Form1 : Form
{
public Form2 F2;
public Form3 F3;
public Form4 F4;
public Form5 F5;
private List<Data> L = new List<Data>();
private ListViewItem LV;
private int IND = 0;
private int CNT = 0;
private int IDS = 1;
public Form1()
{
InitializeComponent();
listView1.CheckBoxes = true;
if (File.Exists(Application.StartupPath + "\\Data.dat")) //Воссстанавливаем на главной форме события, если таковы имеются
{
Opening(); //Десереализация
if (L.Count != 0)
{
CNT = L.Count;
IDS = L.Count + 1;
for (int i = 0; i < L.Count; i++)
{
ListViewItem LVI = new ListViewItem();
LVI.Text = L[i].GetSetId.ToString();
LVI.SubItems.Add(L[i].GetSetFio);
LVI.SubItems.Add(L[i].GetSetPost);
LVI.SubItems.Add(L[i].GetSetWorkPlace);
LVI.SubItems.Add(L[i].GetSetWorkIn.ToShortDateString());
if (L[i].GetSetWorkOut == DateTime.MinValue)
LVI.SubItems.Add("");
else
LVI.SubItems.Add(L[i].GetSetWorkOut.ToShortDateString());
LVI.SubItems.Add(L[i].GetSetOklad.ToString());
LVI.SubItems.Add(L[i].GetSetPremija.ToString());
if (L[i].GetSetFine == 0)
LVI.SubItems.Add("");
else
LVI.SubItems.Add(L[i].GetSetFine.ToString());
LVI.SubItems.Add(L[i].GetInformation);
listView1.Items.Add(LVI);
}
}
}
listView1.ShowItemToolTips = true;
}
//Функция сохранения данных в файл
public void Saving()
{
FileStream FS = new FileStream(Application.StartupPath + "\\Data.dat", FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
BinaryFormatter BF = new BinaryFormatter();
BF.Serialize(FS, L);
FS.Close();
}
//Функция чтения данных из файла
public void Opening()
{
FileStream FS = new FileStream(Application.StartupPath + "\\Data.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryFormatter BF = new BinaryFormatter();
L.Clear();
L = (List<Data>)BF.Deserialize(FS);
FS.Close();
}
//Кнопка выход
private void button1_Click(object sender, EventArgs e)
{
Saving();
this.Close();
}
//Кнопка Добавить
private void toolStripButton1_Click(object sender, EventArgs e)
{
F2 = new Form2(IDS, true, new Data());
ListViewItem LVI = new ListViewItem();
int t = IDS - 1;
F2.ShowDialog(this);
IDS++;
if (F2.IsExitCorrectly)
{
L.Add(F2.DataNew);
LVI.Text = L[t].GetSetId.ToString();
LVI.SubItems.Add(L[t].GetSetFio);
LVI.SubItems.Add(L[t].GetSetPost);
LVI.SubItems.Add(L[t].GetSetWorkPlace);
LVI.SubItems.Add(L[t].GetSetWorkIn.ToShortDateString());
LVI.SubItems.Add("");
LVI.SubItems.Add(L[t].GetSetOklad.ToString());
LVI.SubItems.Add(L[t].GetSetPremija.ToString());
LVI.SubItems.Add("");
LVI.SubItems.Add(L[t].GetInformation);
listView1.Items.Add(LVI);
}
Saving();
}
//Кнопка Редактирования
private void toolStripButton2_Click(object sender, EventArgs e)
{
Data temp = Finds(e.GetType().ToString());
if (temp.GetSetFio.Length != 0)
{
F2 = new Form2(temp.GetSetId, false, temp);
F2.ShowDialog(this);
if (F2.IsExitCorrectly)
{
AddDel(temp, F2.DataNew);
Saving();
}
else
{
listView1.Items.Insert(IND, LV);
listView1.Items[IND].Checked = false;
}
}
else
{
MessageBox.Show("Ничего не выбрано!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
//Функция поиска отмеченого элемента или же двойного щелчка мыши
private Data Finds(string s)
{
Data t = new Data();
if (s == "System.EventArgs")
{
foreach (ListViewItem item in listView1.CheckedItems)
{
foreach (Data dt in L)
{
if (dt.GetSetId == Convert.ToInt32(item.Text))
{
t = dt;
LV = item;
IND = item.Index;
listView1.Items.Remove(item);
break;
}
}
break;
}
}
if (s == "System.Windows.Forms.MouseEventArgs")
{
foreach (ListViewItem item in listView1.SelectedItems)
{
foreach (Data dt in L)
{
if (dt.GetSetId == Convert.ToInt32(item.Text))
{
t = dt;
item.Selected = false;
item.Checked = false;
break;
}
}
break;
}
}
return t;
}
//Функция добавления/удаления данных из коллекций
private void AddDel(Data temp, Data NewD)
{
int index = 0;
index = L.IndexOf(temp);
L.Remove(temp);
L.Insert(index, NewD);
ListViewItem LVI = new ListViewItem();
LVI.Text = L[index].GetSetId.ToString();
LVI.SubItems.Add(L[index].GetSetFio);
LVI.SubItems.Add(L[index].GetSetPost);
LVI.SubItems.Add(L[index].GetSetWorkPlace);
LVI.SubItems.Add(L[index].GetSetWorkIn.ToShortDateString());
if (L[index].GetSetWorkOut == DateTime.MinValue)
LVI.SubItems.Add("");
else
LVI.SubItems.Add(L[index].GetSetWorkOut.ToShortDateString());
LVI.SubItems.Add(L[index].GetSetOklad.ToString());
LVI.SubItems.Add(L[index].GetSetPremija.ToString());
if (L[index].GetSetFine == 0)
LVI.SubItems.Add("");
else
LVI.SubItems.Add(L[index].GetSetFine.ToString());
LVI.SubItems.Add(L[index].GetInformation);
listView1.Items.Insert(index, LVI);
}
//Кнопка Уволить
private void toolStripButton3_Click(object sender, EventArgs e)
{
Data temp = Finds(e.GetType().ToString());
if (temp.GetSetFio.Length != 0)
{
F3 = new Form3(temp);
F3.ShowDialog(this);
if (F3.IsExitCorrF3)
{
AddDel(temp, F3.D);
Saving();
}
else
{
listView1.Items.Insert(IND, LV);
listView1.Items[IND].Checked = false;
}
}
else
MessageBox.Show("Ничего не выбрано!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//Премирование сотрудника
private void премияToolStripMenuItem_Click(object sender, EventArgs e)
{
Data temp = Finds(e.GetType().ToString());
if (temp.GetSetFio.Length != 0)
{
F4 = new Form4(temp, true);
F4.ShowDialog(this);
if (F4.IsExitCorrF4)
{
AddDel(temp, F4.DT);
Saving();
}
else
{
listView1.Items.Insert(IND, LV);
listView1.Items[IND].Checked = false;
}
}
else
MessageBox.Show("Ничего не выбрано!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//Штрафование сотрудника
private void штрафToolStripMenuItem_Click(object sender, EventArgs e)
{
Data temp = Finds(e.GetType().ToString());
if (temp.GetSetFio.Length != 0)
{
F4 = new Form4(temp, false);
F4.ShowDialog(this);
if (F4.IsExitCorrF4)
{
AddDel(temp, F4.DT);
Saving();
}
else
{
listView1.Items.Insert(IND, LV);
listView1.Items[IND].Checked = false;
}
}
else
MessageBox.Show("Ничего не выбрано!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//По закрытию - сохранение
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Saving();
}
//Двойной щелчёк - показать полную информацию о сотруднике
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
Data temp = Finds(e.GetType().ToString());
if (temp.GetSetFio.Length != 0)
{
F5 = new Form5(temp);
F5.ShowDialog(this);
}
}
//Удалить сотрудника из базы
private void удалитьИзБазыToolStripMenuItem_Click(object sender, EventArgs e)
{
Data temp = Finds(e.GetType().ToString());
if (MessageBox.Show("Вы действительно хотите удалить из базы \nсотрудника " + temp.GetSetFio, "Asterisk", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
if (temp.GetSetFio.Length != 0)
{
int index = 0;
index = L.IndexOf(temp);
L.Remove(temp);
for (int i = index; i < L.Count; i++)
{
L[i].GetSetId = i + 1;
}
listView1.Items.Clear();
IDS--;
for (int i = 0; i < L.Count; i++)
{
ListViewItem LVI = new ListViewItem();
LVI.Text = L[i].GetSetId.ToString();
LVI.SubItems.Add(L[i].GetSetFio);
LVI.SubItems.Add(L[i].GetSetPost);
LVI.SubItems.Add(L[i].GetSetWorkPlace);
LVI.SubItems.Add(L[i].GetSetWorkIn.ToShortDateString());
if (L[i].GetSetWorkOut == DateTime.MinValue)
LVI.SubItems.Add("");
else
LVI.SubItems.Add(L[i].GetSetWorkOut.ToShortDateString());
LVI.SubItems.Add(L[i].GetSetOklad.ToString());
LVI.SubItems.Add(L[i].GetSetPremija.ToString());
if (L[i].GetSetFine == 0)
LVI.SubItems.Add("");
else
LVI.SubItems.Add(L[i].GetSetFine.ToString());
LVI.SubItems.Add(L[i].GetInformation);
listView1.Items.Add(LVI);
}
}
}
else
{
listView1.Items.Insert(IND, LV);
listView1.Items[IND].Checked = false;
}
}
}
}
Приложение Б
Form2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Staff
{
public partial class Form2 : Form
{
public Data DataNew, DataCorrect;
public bool IsExitCorrectly = true;
private bool IsNew = true;
private int IDs = 0;
public Form2(int id, bool isnew, Data corr)
{
InitializeComponent();
IDs = id;
IsNew = isnew;
DataCorrect = corr;
errorProvider1.BlinkRate = 500;
errorProvider1.BlinkStyle = ErrorBlinkStyle.BlinkIfDifferentError;
IsExitCorrectly = true;
}
//Кнопка Выход
private void button2_Click(object sender, EventArgs e)
{
IsExitCorrectly = false;
this.Close();
}
//Кнопка Сохранить
private void button1_Click(object sender, EventArgs e)
{
this.ValidateChildren(ValidationConstraints.Enabled);
if (textBox1.Text.Length == 0 || textBox2.Text.Length == 0 || textBox3.Text.Length == 0 || textBox4.Text.Length == 0 || textBox5.Text.Length == 0 ||
textBox6.Text.Length == 0 || textBox7.Text.Length == 0 || textBox8.Text.Length == 0 || textBox9.Text.Length == 0 ||
textBox10.Text.Length == 0 || textBox11.Text.Length == 0)
{
MessageBox.Show("Не все формы заполнены!", "Asterisk", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
DataNew = new Data(textBox1.Text, textBox2.Text, textBox3.Text, "", "", IDs, DateTime.Now,
Convert.ToDouble(textBox4.Text), System.Math.Round((Convert.ToDouble(textBox4.Text)) / 100 * Convert.ToDouble(textBox5.Text), 2),
0, new Informations(comboBox1.Text, textBox6.Text, textBox7.Text, textBox8.Text, textBox11.Text, Convert.ToInt32(textBox9.Text),
Convert.ToInt32(textBox10.Text)), "");
IsExitCorrectly = true;
this.Close();
}
}
//Проверка на заполненость ФИО
private void textBox1_Validating(object sender, CancelEventArgs e)
{
if (textBox1.Text.Length == 0)
errorProvider1.SetError(textBox1, "Вы ничего не ввели!");
else
errorProvider1.SetError(textBox1, "");
}
//Проверка на заполнение Должности
private void textBox2_Validating(object sender, CancelEventArgs e)
{
if (textBox2.Text.Length == 0)
errorProvider1.SetError(textBox2, "Вы ничего не ввели!");
else
errorProvider1.SetError(textBox2, "");
}
//Проверка на заполненость Рабочего места
private void textBox3_Validating(object sender, CancelEventArgs e)
{
if (textBox3.Text.Length == 0)
errorProvider1.SetError(textBox3, "Вы ничего не ввели!");
else
errorProvider1.SetError(textBox3, "");
}
//Проверка на заполненность Оклада и указзаной суммы, которая не должна превышать 30000
private void textBox4_Validating(object sender, CancelEventArgs e)
{
try
{
if (textBox4.Text.Length == 0)
errorProvider1.SetError(textBox4, "Вы ничего не ввели!");
else
{
errorProvider1.SetError(textBox4, "");
if (Convert.ToDouble(textBox4.Text) > 30000)
errorProvider1.SetError(textBox4, "Сумма слишком велика!");
else
errorProvider1.SetError(textBox4, "");
}
}
catch (Exception ex)
{
errorProvider1.SetError(textBox4, "Оклад должен содержать только цифры");
}
}
//Проверка премии на заполненность и на величину, т.к процент премии не должен быть > 100%
private void textBox5_Validating(object sender, CancelEventArgs e)
{
try
{
if (textBox5.Text.Length == 0)
errorProvider1.SetError(textBox5, "Вы ничего не ввели!");
else
{
errorProvider1.SetError(textBox5, "");
if (Convert.ToDouble(textBox5.Text) > 100)
errorProvider1.SetError(textBox5, "Процент премии не может быть больше 100 %");
else
errorProvider1.SetError(textBox5, "");
}
}
catch (Exception ex)
{
errorProvider1.SetError(textBox5, "Премия должена содержать только цифры");
}
}
//Проверка выбора области
private void comboBox1_Validating(object sender, CancelEventArgs e)
{
if (comboBox1.Text.Length == 0)
errorProvider1.SetError(comboBox1, "Вы ничего не выбрали!");
else
errorProvider1.SetError(comboBox1, "");
}
//Проверка заполненности города
private void textBox6_Validating(object sender, CancelEventArgs e)
{
if (textBox6.Text.Length == 0)
errorProvider1.SetError(textBox6, "Вы ничего не ввели!");
else
errorProvider1.SetError(textBox6, "");
}
//Проверка заполненности улицы
private void textBox7_Validating(object sender, CancelEventArgs e)
{
if (textBox7.Text.Length == 0)
errorProvider1.SetError(textBox7, "Вы ничего не ввели!");
else
errorProvider1.SetError(textBox7, "");
}
//Проверка заполненности дома, проверка введённых данных
private void textBox8_Validating(object sender, CancelEventArgs e)
{
if (textBox8.Text.Length == 0)
errorProvider1.SetError(textBox8, "Вы ничего не ввели!");
else
errorProvider1.SetError(textBox8, "");
}
//проверка заполненности квартиры, проверка введённых данных
private void textBox9_Validating(object sender, CancelEventArgs e)
{
if (textBox9.Text.Length == 0)
errorProvider1.SetError(textBox9, "Вы ничего не ввели!");
else
errorProvider1.SetError(textBox9, "");
try
{
if (Convert.ToInt32(textBox9.Text) == 0)
errorProvider1.SetError(textBox9, "Номер квартиры не может быть равен 0!");
else
errorProvider1.SetError(textBox9, "");
}
catch (Exception ex)
{
errorProvider1.SetError(textBox9, "Неправильный формат данных!");
}
}
//проверка заполненности телефона, проверка введённых данных
private void textBox10_Validating(object sender, CancelEventArgs e)
{
if (textBox10.Text.Length == 0)
errorProvider1.SetError(textBox10, "Вы ничего не ввели!");
else
errorProvider1.SetError(textBox10, "");
try
{
if (Convert.ToInt32(textBox10.Text) == 0)
errorProvider1.SetError(textBox10, "Номер телефона не может быть равным 0!");
else
errorProvider1.SetError(textBox10, "");
}
catch (Exception ex)
{
errorProvider1.SetError(textBox10, "Номер телефона не должен содержать цифры!");
}
}
//проверка заполненности даты рождения, проверка введённых данных
private void textBox11_Validating(object sender, CancelEventArgs e)
{
if (textBox11.Text.IndexOf(",") > 0)
{
textBox11.Text = textBox11.Text.Replace(",", ".");
}
if (textBox11.Text.Length == 0)
errorProvider1.SetError(textBox11, "Вы ничего не ввели!");
else
errorProvider1.SetError(textBox11, "");
try
{
if (Convert.ToDateTime(textBox11.Text) == null)
errorProvider1.SetError(textBox11, "Не правильно введённая дата!");
else
errorProvider1.SetError(textBox11, "");
}
catch (Exception ex)
{
errorProvider1.SetError(textBox10, "Формат даты: ДД.ММ.ГГГГ");
}
}
private void Form2_Load(object sender, EventArgs e)
{
errorProvider1.SetError(textBox1, "");
errorProvider1.SetError(textBox2, "");
errorProvider1.SetError(textBox3, "");
errorProvider1.SetError(textBox4, "");
errorProvider1.SetError(textBox5, "");
errorProvider1.SetError(textBox6, "");
errorProvider1.SetError(textBox7, "");
errorProvider1.SetError(textBox8, "");
errorProvider1.SetError(textBox9, "");
errorProvider1.SetError(textBox10, "");
errorProvider1.SetError(textBox11, "");
errorProvider1.SetError(comboBox1, "");
IsExitCorrectly = true;
if (IsNew)
{
this.Text = "Добавление нового сотрудника";
textBox11.Text = textBox1.Text = textBox10.Text = textBox2.Text = textBox3.Text = textBox4.Text = textBox5.Text = textBox6.Text =
textBox7.Text = textBox8.Text = textBox9.Text = "";
comboBox1.Text = "";
}
else
{
this.Text = "Редактирование данных";
textBox1.Text = DataCorrect.GetSetFio;
textBox2.Text = DataCorrect.GetSetPost;
textBox3.Text = DataCorrect.GetSetWorkPlace;
textBox4.Text = DataCorrect.GetSetOklad.ToString();
textBox5.Text = (DataCorrect.GetSetPremija * 100 / DataCorrect.GetSetOklad).ToString();
textBox6.Text = DataCorrect.GetInfa.GetSetTown;
comboBox1.Text = DataCorrect.GetInfa.GetSetArea;
textBox7.Text = DataCorrect.GetInfa.GetSetStreet;
textBox8.Text = DataCorrect.GetInfa.GetSetHouse;
textBox9.Text = DataCorrect.GetInfa.GetSetFlat.ToString();
textBox10.Text = DataCorrect.GetInfa.GetSetPhone_num.ToString();
textBox11.Text = DataCorrect.GetInfa.GetSetBirthday;
}
}
}
}
Приложение В
Form3
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Staff
{
public partial class Form3 : Form
{
public Data D;
public bool IsExitCorrF3 = true;
public Form3(Data d)
{
InitializeComponent();
D = d;
}
//Кнопка Сохранить
private void button1_Click(object sender, EventArgs e)
{
if (textBox4.Text.Length != 0)
{
D.GetSetWorkOutReason = textBox4.Text;
D.GetSetWorkOut = DateTime.Now;
IsExitCorrF3 = true;
this.Close();
}
else
MessageBox.Show("Не указана причина увольнения!", "Asterisk", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
private void Form3_Load(object sender, EventArgs e)
{
textBox1.Text = D.GetSetFio;
textBox2.Text = D.GetSetPost;
textBox3.Text = D.GetSetWorkPlace;
IsExitCorrF3 = true;
this.Text = "Увольнение сотрудника " + D.GetSetFio;
}
//Кнопка Отмена
private void button2_Click(object sender, EventArgs e)
{
IsExitCorrF3 = false;
this.Close();
}
}
}
Приложение Г
Form4
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Staff
{
public partial class Form4 : Form
{
public bool IsExitCorrF4 = true;
private bool PremijaOrFine = true; //Премия - true;
public Data DT;
public Form4(Data dt, bool what)
{
InitializeComponent();
DT = dt;
PremijaOrFine = what;
}
//Кнопка Отмена
private void button2_Click(object sender, EventArgs e)
{
IsExitCorrF4 = false;
this.Close();
}
private void Form4_Load(object sender, EventArgs e)
{
errorProvider1.SetError(textBox4, "");
IsExitCorrF4 = true;
textBox1.Text = DT.GetSetFio;
textBox2.Text = DT.GetSetPost;
textBox3.Text = DT.GetSetWorkPlace;
if (PremijaOrFine)
{
this.Text = "Премирование";
groupBox4.Text = "Премия";
groupBox5.Text = "За заслуги";
textBox4.Text = DT.GetSetPremija.ToString();
textBox5.Text = DT.GetSetPremijaReason;
}
else
{
this.Text = "Наложение штрафа";
groupBox4.Text = "Штраф";
groupBox5.Text = "Причина";
textBox4.Text = DT.GetSetFine.ToString();
textBox5.Text = DT.GetSetFineReason;
}
}
//Кнопка Сохранить
private void button1_Click(object sender, EventArgs e)
{
if (textBox4.Text.Length != 0 && textBox5.Text.Length != 0)
{
IsExitCorrF4 = true;
if (PremijaOrFine)
{
DT.GetSetPremija = Convert.ToDouble(textBox4.Text);
DT.GetSetPremijaReason = textBox5.Text;
}
else
{
DT.GetSetPremija = 0;
DT.GetSetFine = Convert.ToDouble(textBox4.Text);
DT.GetSetFineReason = textBox5.Text;
}
this.Close();
}
else
MessageBox.Show("Не все поля заполнены", "Informations", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//Проверка на правильность ввода
private void textBox4_Validating(object sender, CancelEventArgs e)
{
if (textBox4.Text.Length == 0)
errorProvider1.SetError(textBox4, "Вы ничего не ввели!");
else
{
errorProvider1.SetError(textBox4, "");
try
{
if (Convert.ToDouble(textBox4.Text) == 0)
errorProvider1.SetError(textBox4, "Неверно введённые данные!");
else
errorProvider1.SetError(textBox4, "");
}
catch (Exception ex)
{
errorProvider1.SetError(textBox4, "Необходимо вводить только числа!");
}
}
}
}
}
Приложение Д
Form5
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Staff
{
public partial class Form5 : Form
{
private Data DT;
public Form5(Data dt)
{
InitializeComponent();
DT = dt;
}
//Кнопка Закрыть
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
private void Form5_Load(object sender, EventArgs e)
{
this.Text = "Полная информация о сотруднике";
listView1.Items.Clear();
listView1.ShowItemToolTips = true;
Подобные документы
История создания языков С и С++. Разработка буквенного меню, посредством которого реализуются функции информационно-поискового справочника "Терморезисторы". Определение структуры данных, защита программы от ввода пользователем некорректных параметров.
курсовая работа [18,3 K], добавлен 16.02.2012Основные понятия справочников и их классификация. Анализ имеющихся электронных ресурсов. Теоретические понятия разработки электронных справочников. Выбор и обоснование средств разработки. Структура электронного справочника, его разработка и наполнение.
курсовая работа [1,5 M], добавлен 27.05.2015Проектирование интерактивного справочника магазина "Азарт", для реализации продукции посредством сети Интернет. Разработка базы данных, описание программы и составление руководства для оператора. Экспериментальное исследование разработанного продукта.
дипломная работа [3,8 M], добавлен 06.06.2014Разработка инфологической модели базы данных "Рабочее место кассира", требования к ее функциональным характеристикам. Создание программы в Delphi. Описание компонентов для реализации графического интерфейса и интерфейса ввода справочника кассиров.
курсовая работа [2,2 M], добавлен 17.04.2014Анализ альтернативных информационных справочников. Разработка базы данных. Требования к оснащению компьютерной техникой. Создание дизайна сайта. Обработка входных данных, которые представляются с помощью графического интерфейса в виде веб страниц.
курсовая работа [1,9 M], добавлен 19.09.2014Реляционная модель базы данных в текстовом виде. Код, с помощью которого были созданы и заполнены таблицы. Разработка схемы базы данных справочника селекционера. Создание запросов, их основные виды. Процедуры на выбор данных, добавление и удаление.
методичка [1,1 M], добавлен 20.05.2014Разработка и анализ функциональной модели деятельности предприятия. Создание базы справочника. Использование трансферов для передачи данных между клиентом и сервером. Требования для работы приложения. Добавление, изменение, хранение и удаление данных.
курсовая работа [396,4 K], добавлен 26.10.2014Перечень основных требований к базе данных "Сведения о простоях". Процесс создания таблиц и связей между ними. Результаты выполнения запросов и форма выведения отчетов. Разработка интерфейса программы. Руководство для администратора и пользователя.
курсовая работа [3,7 M], добавлен 11.11.2012Освоение функций работы со структурами данных и файлами. Разработка программного обеспечения для создания, обработки сведений о сотрудниках учреждения. Реализация алгоритма программы в среде Microsoft Visual Studio 2010. Изучение руководства пользователя.
курсовая работа [3,3 M], добавлен 28.08.2012Описание входной и выходной информации. Требования к комплексу технических средств и к интерфейсу конечного пользователя. Разработка форм представления входных и выходных данных. Проектирование программных модулей. Руководство пользователя и программиста.
курсовая работа [421,6 K], добавлен 27.06.2015