Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование реализации операций бизнес-процесса «Складской учет»

Содержание:

ВВЕДЕНИЕ

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

Сегодня практически невозможно обеспечить требуемое потребителями качество товаров и услуг без применения информационных систем и программных комплексов для анализа, планирования и поддержки принятия коммерческих решений в процессе продаж товаров [3]. Более того, именно благодаря развитию информационных систем и технологий складская логистика стала доминирующей формой организации товародвижения на высоко-конкурентных рынках экономически развитых стран.

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

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

Объектом исследования является бизнес-процесс складского учета.

Предметом исследования является автоматизация процесса складского учета.

Целью работы является проектирование реализации операций бизнес-процесса планирования производства.

Для достижения поставленной цели необходимо решить ряд задач:

  1. Выбрать комплекс задач автоматизации.
  2. Охарактеризовать существующие бизнес-процессы.
  3. Описать документооборот, возникающий при решении задачи.
  4. Обосновать проектные решения по информационному обеспечению.
  5. Дать обоснование проектным решениям по программному обеспечению.
  6. Создать и описать информационную модель.
  7. Дать характеристику нормативно-справочной, входной и оперативной информации.
  8. Охарактеризовать результативную информацию.
  9. Разработать общие положения.
  10. Дать характеристику базе данных.
  11. Разработать структурную схему пакета.
  12. Описать программные модули.
  13. Разработать контрольный пример реализации.

1. Аналитическая часть

1.1 Выбор комплекса задач автоматизации

Важным процессом для предприятия, которое производит готовую продукцию, является ее реализация. Рассмотрим процесс реализации готовой продукции с помощью метода структурного анализа [8]. На рисунке 1 представлена контекстная диаграмма бизнес-процесса реализации готовой продукции, разработанная согласно нотации IDEF0.

Рисунок 1. Контекстная диаграмма бизнес-процесса

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

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

Рисунок 2. Декомпозиция контекстной диаграммы

1.2 Характеристика существующих бизнес – процессов

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

Рисунок 3. Декомпозиция процесса складского учета

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

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

Результатными показателями процесса являются данные о движении товаров на складе организации (приход, перемещение, расход), которые отражены в Книге складского учета. Также результатными показателями процесса являются данные об остатках товара на складе, которые отражены в отчете об остатках товара на складе. Расчет количества товаров на складе организации осуществляется по формуле:

Остаток = Приход – Расход (1)

Полученные данные должны соответствовать фактическому наличию товаров на складе.

1.3 Характеристика документооборота, возникающего при решении задачи

Рассмотрим документооборот, возникающий в процессе складского учета. Для наглядности представим процесс в виде схемы. Схема документооборота показывает движение документов от источника до получателя между этапами рассматриваемого процесса [6]. Схема документооборота представлена на рисунке 4.

Рисунок 4. Схема документооборота

Для того, чтобы дать обоснование разработки информационной системы, необходимо сравнить трудозатраты при базовом варианте бизнес-процесса и при автоматизированном варианте [9]. В таблице 1 представлены данные о трудозатратах на формирование документооборота по базовому плану. На основании приведенных данных, годовые трудозатраты на формирование документооборота складского учета составили 1500 человеко-часов.

В таблице 2 представлена характеристика документооборота задачи после автоматизации. После автоматизации годовые трудозатраты на формирование документооборота снижены до 950 человеко-часов, что является основанием для разработки программного продукта.

Таблица 1

Характеристика формирования документооборота по базовому плану

Характеристика

Товарная накладная

Накладная на внутреннее перемещение

Лимитно-заборная карта

Количество документов в год, шт.

2000

400

400

Количество символов в документе, шт.

3 000

3 000

3 000

Частота возникновения в год

270

200

200

Трудозатраты на обработку в год, чел-час

500

500

500

Таблица 2

Характеристика формирования документооборота по проектному плану

Характеристика

Товарная накладная

Накладная на внутреннее перемещение

Лимитно-заборная карта

Количество документов в год, шт.

2000

400

400

Количество символов в документе, шт.

3 000

3 000

3 000

Частота возникновения в год

270

200

200

Трудозатраты на обработку в год, чел-час

350

350

250

1.4 Обоснование проектных решений по информационному обеспечению


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

Определим состав классификаторов:

  • Продукция: содержит информацию о продукции, которую реализует компания.
  • Клиенты: содержит весь список клиентов компании.
  • Сотрудники: содержит список всех сотрудников, которые имеют доступ к информационной системе.
  • Номенклатура: содержит перечень артикулов готовой продукции

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

1.5 Обоснование проектных решений по программному обеспечению

Информационные системы позволяют пользователям осуществлять сбор и обработку данных. Для хранения данных используются базы данных. Различают следующие виды баз данных:

  1. Иерархические.
  2. Сетевые.
  3. Реляционные.

В настоящее время широко применяются реляционные базы данных в связи со следующими факторами:

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

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

Для управления реляционной базой данных используется реляционная СУБД. На рынке широко представлены как коммерческие, так и бесплатные СУБД. Наиболее востребованными на рынке являются следующие СУБД:

  • Microsoft SQL Server;
  • PosgreSQL;
  • IBM DB2;
  • Oracle database.

СУБД IBM DB2 является кроссплатформенной, обеспечивает стабильную работу базы данных. Недостатками системы являются высокая стоимость и низкая производительность [19]. СУБД Microsoft SQL Server обладает большим пакетом инструментов, стабильностью работы и низкими затратами на администрирование. Недостаток системы заключается в том, что она работает только на платформе Windows. СУБД Oracle обладает высокой производительностью, легкостью интегрирования приложений и устойчивостью к большим потокам данных. Недостатком является высокая стоимость, необходимость приобретения мощного оборудования и персонала для поддержки СУБД. На основании перечисленных характеристик для разработки системы была выбрана СУБД Microsoft SQL Server.

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

В качестве языка программирования был выбран язык программирования c++. который поддерживает объектно-ориентированный подход и обладает множеством встроенных библиотек.

Разработка информационной системы будет осуществляться в среде программирования MS Visual Studio, которая является бесплатным инструментом, поддерживающим выбранный язык программирования.

Проектируемая система должна функционировать в среде операционной системы Windows 10, поскольку эта операционная система используется для работы сотрудников организации.

2. Проектная часть

2.1 Информационная модель и её описание

Информационная модель представляет собой новый вариант организации информационной системы [1], автоматизирующей процесс отгрузки товаров. Информационная модель представлена на рисунке 5.

Рисунок 5. Информационная модель

Ввод данных в систему будет осуществляться двумя категориями пользователей: администратор и кладовщик. В разрабатываемой информационной системе будут созданы следующие справочники: Сотрудник, Клиент, Продукция, Номенклатура. Помимо этого, в системе будут таблицы с оперативными данными: Товарная накладная, Лимитно-заборная карта, Накладная на внутреннее перемещение. Информационная система будет содержать формы ввода данных, формы документов и отчетную форму. В результате работы системы будет формироваться отчет по наличию товаров на складе, который будет использоваться при проверке наличия товаров по заказам клиентов.

2.2 Характеристика нормативно-справочной, входной и оперативной информации

Входными документами системы являются: товарная накладная и лимитно-заборная карта. Эти документы имеют унифицированные формы и представляют собой перечень товарных позиций с указанием количества. Макет формы товарной накладной представлен на рисунке 6.

Рисунок 6. Макет формы транспортной накладной

На рисунке 7 представлен макет формы лимитно-заборной карты.

Рисунок 7. Макет формы лимитно-заборной карты

В системе будут доступны следующие справочники:

  1. Сотрудник, содержащий список сотрудников организации (рисунок 8).
  2. Клиент, содержащий перечень клиентов организации (рисунок 9).
  3. Номенклатура, содержащий перечень групп товаров организации (рисунок 10).
  4. Товары, содержащий перечень товаров организации (рисунок 11).

Рисунок 8. Макет формы справочника «Сотрудник»

Рисунок 9. Макет формы справочника «Номенклатура»

Рисунок 10. Макет формы справочника «Продукция»

Рисунок 11. Макет формы справочника «Клиент»

Характеристика справочников представлена в таблице 3.

Таблица 3

Характеристика справочников

Характеристика

Сотрудник

Клиент

Номенклатура

Продукция

Ответственный за ведение

Администратор системы

Характеристика

Сотрудник

Клиент

Номенклатура

Продукция

Объем справочника в записях

100

10 000

100

100 000

Частота актуализации

По мере необходимости

Объем актуализации

1-10 записей

Реквизитный состав

Фамилия

Наименование

Наименование

Наименование

Имя

Адрес

Описание

Отчество

Телефон

2.3 Характеристика результатной информации


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

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

  1. Дата начала формирования отчета.
  2. Дата окончания формирования отчета.
  3. Наименование продукции.
  4. Количество товара на складе.

Результатная информация содержит данные следующих таблиц базы данных:

  • Номенклатура.
  • Продукция.
  • Товарная накладная.
  • Лимитно-заборная карта.

Характеристика таблиц с результатной информацией представлена в таблице 4.

Таблица 4

Характеристика таблиц с результатной информацией

Наименование таблицы

Наименование поля

Номенклатура

Наименование

Продукция

Наименование

Наименование таблицы

Наименование поля

Транспортная накладная

Количество

Лимитно-заборная карта

Количество

На рисунке 12 представлен макет отчетной формы.

Рисунок 12. Макет отчетной формы

2.4 Общие положения (дерево функций и сценарий диалога)

Функции, которые автоматизирует информационная система делятся на два типа [5]:

  1. Служебные функции.
  2. Основные функции.

К служебным функциям проектируемой системы будут относиться:

  1. Настройка информационной системы.
  2. Управление окнами.
  3. Помощь по работе программы.

К основным функциям будут относиться:

  1. Редактирование справочников.
  2. Ввод данных.
  3. Формирование отчетов.

На основании перечисленных функций составим дерево функций системы (рисунок 13).

Рисунок 13. Дерево функций проектируемой системы

Затем, на основании дерева функций системы создадим сценарий диалога. Для взаимодействия информационной системы с пользователем был выбран язык типа «Меню». Разрабатываемый сценарий диалога должен обладать возможностью определения состава кадров диалога, содержания каждого кадра и их соподчиненность. В сценарии диалога должно учитываться [10]:

  • работа с формами входных документов;
  • формирование результатных документов;
  • ввод и редактирование и просмотр данных;
  • протоколирование действий пользователей;
  • помощь на всех этапах работы с системой.

Сценарий диалога представлен на рисунке 14.

Рисунок 14. Сценарий диалога

2.5 Характеристика базы данных

База данных проектируемой системы будет реляционной, это значит, что она представляет собой совокупность двумерных таблиц. На этапе создания информационной модели были выделены таблицы базы данных. Создадим ER-модель базы данных на основе информационной модели [2]. ER-модель базы данных представлена на рисунке 15.

Рисунок 15. ER-модель базы данных

Характеристика объектов базы данных представлена в таблице 5.

Таблица 5

Характеристика базы данных

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Справочник «Номенклатура»

ID_номенклатуры

ID_nomen

Счетчик

5

Ключевое поле

Наименование

Name_nomen

Текст

100

Справочник «Сотрудник»

ID_сотрудника

ID_sotr

Счетчик

5

Ключевое поле

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Фамилия

LNameSotr

Текст

100

Имя

FNameSotr

Текст

100

Отчество

MNameSotr

Текст

100

Справочник «Продукция»

ID_продукция

ID_prod

Счетчик

5

Ключевое поле

Артикул

ArtProd

Число

8

Наименование

NameProd

Текст

30

Описание

OpPRod

Текст

300

Накладная на внутреннее перемещение

ID_накладной

ID_nakl

Счетчик

5

Ключевое поле

Номер

Nomer_nakl

Текст

30

Дата

Dates_nakl

Дата

8

Количество

Kol_nakl

Число

6

Лимитно-заборная карта

ID_карты

ID_cart

Счетчик

5

Ключевое поле

Дата

Date_cart

Дата

8

Количество

Kol_cart

Число

7

Товарная накладна

ID_накладной

ID_tranakl

Счетчик

5

Ключевое поле

Дата

Date_trnakl

Дата

8

Номер

Nom_trnakl

Текст

15

Количество

Pr_trnakl

Число

6

Стоимость заказа

St_trnakl

Число

6

2.6 Структурная схема пакета (дерево вызова программных модулей)


Структурная схема пакета содержит модули следующих видов [7]:

  1. Модули, выполняющие служебные функции.
  2. Управляющие модули, осуществляющие загрузку меню и передачу управления другому модулю.
  3. Модули, связанные с хранением, обработкой и выдачей информации.

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

Таблица 6

Описание функций модулей

№ п/п

Наименование модуля

Функции модуля

1

Глобальный модуль

Содержит глобальные процедуры и функции, предопределенные процедуры, процедуры и функции, которые выполняются при запуске приложения

2

Модуль справочника «Сотрудник»

Содержит глобальные процедуры и функции, предопределенные процедуры, процедуры и функции, которые выполняются ведении справочников

3

Модуль справочника «Клиент»

Содержит глобальные процедуры и функции, предопределенные процедуры, процедуры и функции, которые выполняются ведении справочников

4

Модуль справочника «Продукция»

Содержит глобальные процедуры и функции, предопределенные процедуры, процедуры и функции, которые выполняются ведении справочников

5

Модуль справочника «Номенклатура»

Содержит глобальные процедуры и функции, предопределенные процедуры, процедуры и функции, которые выполняются ведении справочников

6

Модуль авторизации

Содержит глобальные процедуры и функции, предопределенные процедуры, процедуры и функции, которые выполняются при авторизации пользователя

7

Модуль формирования отчета

Содержит глобальные процедуры и функции, предопределенные процедуры, процедуры и функции, которые выполняются при формировании отчета

8

Модуль создания документа

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

Дерево вызова программных модулей представлено на рисунке 16.

Рисунок 16. Дерево вызова программных модулей

2.7 Описание программных модулей

Для того чтобы пользователи могли работать в системе, необходимо заполнить справочники. За заполнение справочников отвечает администратор системы. Алгоритм заполнения справочников представлен на рисунке 17.

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

На рисунке 19 представлен алгоритм формирования отчетности. Для того, чтобы сформировать отчет, пользователю необходимо ввести параметры выборки: дату начала формирования отчета и дату окончания. Затем система формирует форму отчета и выводит показатели.

Рисунок 17. Алгоритм работы модулей справочников

Рисунок 18. Алгоритм создания документа

Рисунок 19. Алгоритм формирования отчетности

Программный код разработанной системы представлен в Приложении.

2.8 Контрольный пример реализации проекта и его описание

Для разработки контрольного примера реализации проекта и его описания необходимо:

  1. Описать тестовые данные, которые необходимы для проверки работоспособности основных функций проекта.
  2. Описать процесс обработки тестовых данных.
  3. Описать результаты обработки тестовых данных.

Реализация контрольного примера состоит из следующих этапов:

  1. Ввод тестовых данных в справочники.
  2. Результат формирования отчета.

К тестовым данным, которые необходимы для проверки работоспособности системы, относятся:

  1. Данные справочников.
  2. Данные о приходе продукции.
  3. Данные об отгрузке продукции.

После запуска системы загружается главная форма, представленная на рисунке 20.

Рисунок 20. Главная форма приложения

Проверим корректность ввода данных в справочники системы. На рисунке 21 представлен ввод данных в справочники системы.

Протестируем работу в системе. Кладовщики вводят в систему данные о приходе и расходе продукции. Для этого создаются документы. Создание приходных документов представлено на рисунке 22.

Создание расходных документов представлено на рисунке 23.

Рисунок 21. Результат заполнения справочников

Рисунок 22. Форма товарной накладной

Рисунок 23. Формы расходных документов

Списание продукции со склада при продаже клиентам оформляется также с помощью транспортной накладной. Оформление списания представлено на рисунке 24.

Рисунок 24. Оформление списания продукции

На основании данных о приходе и расходе продукции можно сформировать отчет, в котором содержатся данные о наличии продукции на складе организации. Отчетная форма представлена на рисунке 25.

Рисунок 25. Отчетная форма

ЗАКЛЮЧЕНИЕ

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

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

Было дано описание документооборота задачи. Была рассчитана трудоемкость процесса до автоматизации и после автоматизации. По данным расчетов, трудозатраты на формирование документооборота после автоматизации будут снижены на 30%. В связи с чем внедрение автоматизации можно считать обоснованным.

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

Были разработаны дерево функций системы и сценарий диалога. Дана характеристика базы данных, разработана ER-модель базы данных, приведённой к третьей нормальной форме.

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Гвоздева Т.В., Баллод Б.А. / Проектирование информационных систем. – М.:Феникс, 2014.
  2. Горбаченко В.И., Убиенных Г.Ф. / Проектирование информационных систем с СА ErwinModelingSuite 7.3. – П.:ПГУ 2014.
  3. Грекул В.М, Коровкина Н.А, Куприянов В.С. / Проектное управление в сфере информационных технологий. – М.:БИНОМ, ИНФРА-М, 2015.
  4. ЕлиферовВ.Г., РепинВ.В. / Процессный подход к управлению. Моделирование бизнес-процессов. – М.:Манн, Иванов и Фербер, 2015.
  5. Избачков Ю.С., Петров В.Н. / Информационные системы. – СПб,: Амфора. 2016.
  6. Исаев Г.Н. / Проектирование информационных систем. Учебное пособие. – М.: Омега-Л, 2015.
  7. Мацяшек Л.А. / Проектирование информационных систем. – М.: Вильямс,2016.
  8. Ньютон Р. / Управление проектами от А до Я. – М.: Альпина Паблишер, 2014.
  9. Смит К.У., Уильямс Л.Дж. / Эффективные решения: практическое руководство по созданию гибкого и масштабируемого программного обеспечения. – М.:Вильямс, 2017.
  10. Эванс Э. / Предметно-ориентированное проектирование: структуризация сложных программных систем. – М. Вильямс, 2018.

ПРИЛОЖЕНИЕ

Листинг программного кода

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Runtime.Serialization.Formatters.Binary;

using System.IO;

namespace Reg

{

public partial class RegistrationForm : Form

{

/* Переменные, которые будут хранить на протяжение работы программы логин и пароль. */

public string login = string.Empty;

public string password = string.Empty;

private Users user = new Users(); // Экземпляр класса пользователей.

public RegistrationForm()

{

InitializeComponent();

LoadUsers(); // Метод десериализует класс.

}

private void LoadUsers()

{

try

{

FileStream fs = new FileStream("Users.dat", FileMode.Open);

BinaryFormatter formatter = new BinaryFormatter();

user = (Users)formatter.Deserialize(fs);

fs.Close();

}

catch { return; }

}

private void EnterToForm()

{

for (int i = 0; i < user.Logins.Count; i++) // Ищем пользователя и проверяем правильность пароля.

{

if (user.Logins[i] == loginTextBox.Text && user.Passwords[i] == passwordTextBox.Text)

{

login = user.Logins[i];

password = user.Passwords[i];

MessageBox.Show("Вы вошли в систему!");

this.Close();

}

else if (user.Logins[i] == loginTextBox.Text && passwordTextBox.Text != user.Passwords[i])

{

login = user.Logins[i];

MessageBox.Show("Неверный пароль!");

}

}

if (login == "") { MessageBox.Show("Пользователь " + loginTextBox.Text + " не найден!"); }

}

private void AddUser() // Регистрируем нового пользователя.

{

if (loginTextBox.Text == "" || passwordTextBox.Text == "") { MessageBox.Show("Не введен логин или пароль!"); return; }

user.Logins.Add(loginTextBox.Text);

user.Passwords.Add(passwordTextBox.Text);

FileStream fs = new FileStream("Users.dat", FileMode.OpenOrCreate);

BinaryFormatter formatter = new BinaryFormatter();

formatter.Serialize(fs, user); // Сериализуем класс.

fs.Close();

login = loginTextBox.Text;

this.Close();

}

private void exitButton_Click(object sender, EventArgs e)

{

Application.Exit(); // Закрываем программу.

}

private void regButton_Click(object sender, EventArgs e)

{

AddUser();

}

private void enterButton_Click(object sender, EventArgs e)

{

EnterToForm();

}

private void RegistrationForm_FormClosed(object sender, FormClosedEventArgs e)

{

if (login == "" | password == "") { Application.Exit(); }

}

private void RegistrationForm_Load(object sender, EventArgs e)

{

}

}

}

using System;

using System.Collections.Generic;

// Simple business object. A PartId is used to identify the type of part

// but the part name can change.

public class Part : IEquatable<Part>

{

public string PartName { get; set; }

public int PartId { get; set; }

public override string ToString()

{

return "ID: " + PartId + " Name: " + PartName;

}

public override bool Equals(object obj)

{

if (obj == null) return false;

Part objAsPart = obj as Part;

if (objAsPart == null) return false;

else return Equals(objAsPart);

}

public override int GetHashCode()

{

return PartId;

}

public bool Equals(Part other)

{

if (other == null) return false;

return (this.PartId.Equals(other.PartId));

}

// Should also override == and != operators.

}

public class Example

{

public static void Main()

{

// Create a list of parts.

List<Part> parts = new List<Part>();

// Write out the parts in the list. This will call the overridden ToString method

// in the Part class.

Console.WriteLine();

foreach (Part aPart in parts)

{

Console.WriteLine(aPart);

}

// Check the list for part #1734. This calls the IEquitable.Equals method

// of the Part class, which checks the PartId for equality.

Console.WriteLine("\nContains(\"1734\"): {0}",

parts.Contains(new Part {PartId=1734, PartName="" }));

// Insert a new item at position 2.

Console.WriteLine("\nInsert(2, \"1834\")");

parts.Insert(2, new Part() { PartName = "brake lever", PartId = 1834 });

//Console.WriteLine();

foreach (Part aPart in parts)

{

Console.WriteLine(aPart);

}

Console.WriteLine("\nParts[3]: {0}", parts[3]);

Console.WriteLine("\nRemove(\"1534\")");

// This will remove part 1534 even though the PartName is different,

// because the Equals method only checks PartId for equality.

parts.Remove(new Part(){PartId=1534, PartName="cogs"});

Console.WriteLine();

foreach (Part aPart in parts)

{

Console.WriteLine(aPart);

}

Console.WriteLine("\nRemoveAt(3)");

// This will remove the part at index 3.

parts.RemoveAt(3);

Console.WriteLine();

foreach (Part aPart in parts)

{

Console.WriteLine(aPart);

}