Разработка информационной системы "Склад"

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 23.04.2019
Размер файла 407,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

КУРСОВОЙ ПРОЕКТ (РАБОТА)

по дисциплине

«Объектно-Ориентированное программирование»

Разработка ИС «Склад»

ЗАДАНИЕ

на выполнение курсового проекта (работы) по дисциплине

«_________________Объектно-Ориентированное программирование_____________________»

Студент ______________ Марчук И. М.____________________________ Группа_ИСБ-2-14___

1. Тема _____________________ Разработка ИС «Склад»_______________________ __

2. Исходные данные:

Концептуальная модель предметной области (ER-диаграмма), техническое задание

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

Объектная структура (ER-диаграмма)

Инструкция

4. Срок представления к защите курсового проекта (работы) до «___» _______201_ г.

Мониторинг процесса выполнения курсового проекта (работы)

№ этапа

Этап курсового проекта, работы выполнил и представил результаты руководителю проекта (работы),

дата и подпись исполнителя

Работу по этапу курсового проекта (работы) принял на рассмотрение,

дата и подпись руководителя

Рекомендации и замечания по этапу курсового проекта (работы) выдал исполнителю,

дата и подпись руководителя

Оценка выполнения этапа курсового проекта, (работы) (в баллах по 4-х балльной системе)

Комментарии руководителя курсового проекта (работы)

1

2

3

Техническое задание:

1. Наименование работы

Разработка ИС «Склад»

2. Исполнитель

Марчук И. М.Шифр: 141261

Основание для разработки:

Учебный план бакалавриата по направлению 09.03.02 «Информационные системы и технологии».

3. Цель и назначение работы

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

Особые требования к работе:

1. Файловая структура БД.

2. Комбинированные запросы

2.1 Показать товары в наличии, выбранного поставщика.

2.2 Показать поставщиков, товары которых покупал клиент.

2.3 Показать продавцов, к которым обращался клиент, рассортированных по популярности у покупателей.

3. Полнотекстовый поиск во всех таблицах

Категории пользователей

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

4. Технические требования

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

4.2 Реализация выборки записей базы данных с использованием двоичного поиска

4.3 Настраиваемая сортировка элементов при выводе

5. Содержание работы

В результате выполнения работы решаются следующие задачи:

1. Составление теоретического материала.

2. Разработка структуры ИС

3. Оформление Расчетно-пояснительной записки

4. Защита работы и демонстрация работы ИС

5. Программа реализации ИС

6. Порядок сдачи работы

Выполнения работы (РПЗ и ИС в соответствии со стандартами кафедры КИС)

Аннотация

информационный система складовой файловый

Целью данной курсовой работы является изучение информационных систем (ИС), связанных с сохранением и обработкой библиотечной литературы. Теоретическая часть посвящена обзору функций современных складовых систем. В практической части решены следующие задачи: разработка структуры и файловой базы данных (БД) складовой ИС, построена ER-диаграмма.

Оглавление

ER-диаграмма

Введение

1. Теоретическая часть

2. Выявление сущностей концептуальной модели

3. Моделирование связей между сущностями

4. Инструкции

Вывод

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

Листинг

ER-диаграмма

Введение

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

Основные складские услуги включают в себя следующую последовательность:

· разгрузка и погрузка транспорта

· приемка товаров (Приемка поступивших грузов по количеству и по качеству. Приемка товаров -- начальная операция, связанная с движением товара на складе и возникновением материальной ответственности)

· размещение на хранение (укладка товаров в стеллажи, штабели)

· отборка товаров из мест хранения (отбор товаров с мест хранения (комплектация), подготовку к отпуску: упаковка, окантовка, маркировка и т. п.)

· комплектование и упаковка товаров

· внутрискладовое перемещение грузов

· отправка товаров по адресу заказа

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

Начальным этапом создания ИС является изучение и анализирование предметной области, в данном случае - склада. Затем необходимо выявить сущности концептуальной модели. После - смоделировать связи между ними.

1. Теоретическая часть

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

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

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

При проведении инвентаризации специалисты с помощью терминалов для сбора данных считывают штрих-коды, которые автоматически заносятся в базы данных приборов.

Система учитывает все требования к условиям хранения при распределении мест хранения для поступающих на склад товаров. Например, могут учитываться влажность, температурный режим, сроки годности, производители, сроки реализации, поставщики, правила совместимости и любые другие параметры. WMS(сокр. WMS от англ. Warehouse Management System -- система управления складом) автоматически подбирает места хранения для принятых грузов и формирует задания для работников склада. Задания поступают на экран радиотерминалов в виде элементарных поэтапных команд индивидуально для каждого работника.

Разновидности складов

По назначению различают следующие виды складов:

• производственные -- склады сырья, комплектующих, материалов, цеховые склады готовых изделий, заводские склады готовой продукции;

• транзитно-перевалочные -- склады при железнодорожных станциях, портах, речных пристанях, аэропортах.

• таможенные -- склады временного хранения товаров

• досрочного завоза -- склады в районах, доставка товаров в которые возможна лишь в определённые периоды года;

• сезонного хранения -- склады для товаров сезонного характера;

• резервные -- для хранения запасов на случай чрезвычайных обстоятельств;

• оптовые распределительные -- склады, снабжающие товаропроводящие сети;

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

• розничные -- склады торговых предприятий;

• военные -- склады с разнообразным содержимым, необходимых для вооруженных сил

По условиям хранения различают:

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

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

Также складские помещения классифицируются по:

• Виду и характеру хранимых материалов: универсальные и специализированные.

• Типу конструкции: закрытые, полузакрытые, открытые, специальные (например, бункерные сооружения, резервуары)

• Месту расположения и масштабу действия: центральные, участковые, прицеховые.

• Степени огнестойкости: несгораемые, трудносгораемые, сгораемые.

Склады в каналах продвижения товаров.

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

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

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

• Региональные склады, обслуживающие своих дилеров в одном регионе.

• Дилерские, обслуживающие мелкооптовых и/или розничных потребителей в районах потребления товаров.

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

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

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

Задачи дистрибьюторских складов -- организация эффективной деятельности по обеспечению товаропроводящей сети, критерии эффективности -- удовлетворение заказов по номенклатуре на 90-95 % (для складов официальных дистрибьюторов), срочные отгрузки в течение суток за пределы области, в течение полусуток в пределах области. Несрочные отгрузки -- в течение не более двух дней.

В нашем случае интерес вызывает региональный склад.

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

· Персональная ИС. Предназначена для решения некоторого круга задач одного человека.

· Групповая ИС. Ориентирована на коллективное использование информации членами рабочей группы или подразделения.

· Корпоративная ИС. В идеале охватывает все информационные процессы целого предприятия, достигая их полной согласованности, безызбыточности и прозрачности. Такие системы иногда называют системами комплексной автоматизации предприятия.

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

Теперь необходимо определить, к какому типу по характеру обработки данных ИС “Склад” будет относится. Существует два вида информационных систем:

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

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

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

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

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

Классификация по модели данных:

· Иерархическая

· Объектная и объектно-ориентированная

· Объектно-реляционная

· Реляционная

· Сетевая

· Функциональная

Классификация по содержимому

· Географическая

· Историческая

· Научная

· Мультимедийная

· Клиентская.

Классификация по среде постоянного хранения

· Во вторичной памяти, или традиционная: средой постоянного хранения является периферийная энергонезависимая память (вторичная память) -- как правило жёсткий диск.

· В оперативную память СУБД помещает лишь кеш и данные для текущей обработки.

· В оперативной: все данные на стадии исполнения находятся в оперативной памяти.

· В третичной памяти: средой постоянного хранения является отсоединяемое от сервера устройство массового хранения (третичная память), как правило на основе магнитных лент или оптических дисков. Во вторичной памяти сервера хранится лишь каталог данных третичной памяти, файловый кеш и данные для текущей обработки; загрузка же самих данных требует специальной процедуры.

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

СУБД организует хранение информации таким образом, чтобы ее было удобно:

· просматривать

· пополнять

· изменять

· искать нужные сведения

· делать любые выборки

· осуществлять сортировку в любом порядке

2. Выявление сущностей концептуальной модели

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

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

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

• штрих-код

• наименование

• единица измерения

• цена

• состав

• страна-производитель

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

Также на складе ведется картотека поставщиков и получателей. О каждом клиенте заносятся следующие данные:

Для поставщика:

· Код поставщика

· Наименование организации

· Контактный телефон

Для получателя:

· Наименование организации

· Адрес

· Контактный телефон

Основные задачи склада - прием товара от поставщика, распределение и отправка товара покупателю. В случае приема, отправки и возврата товара на складе остаются следующие данные:

· Дата

· Поставщик

· Товар

· Количество

· Сумма

· Дата возврата

· Дата отправки

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

Так как каждая товар может относиться к нескольким категориям, то необходимо иметь определенные сведения и о каждом из них:

· Название категории

· Описание категории

3. Моделирование связей между сущностями

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

Всего существует три вида связи: один к одному (1:1), один ко многим (1: N) и многие ко многим (N: N). Связь (1: N) означает, что один экземпляр сущности, расположенный слева по связи, может быть связан с несколькими экземплярами сущности, расположенными справа по связи. Связь «один к одному» (1:1) означает, что один экземпляр одной сущности связан только с одним экземпляром другой сущности, а связь «многие ко многим» (N: N) означает, что один экземпляр первой сущности может быть связан с несколькими экземплярами второй сущности, и наоборот, один экземпляр второй сущности может быть связан с несколькими экземплярами первой сущности.

Теперь рассмотрим наши конкретные случаи. Сущность “Товар” и сущность “Прием товаров” имеют связь (1: N), так как каждый товар может быть продан множество раз.

Сущность “Получатель” и сущность “Прием товаров” также имеют связь один ко многим. Так как один получатель может покупать товар не один раз.

Аналогичную свзяь имеют сущности «Поставщики» и «Прием товаров».

Сущность “Товар” и сущность “Категория” имеют связь многие ко многим (N: N), так как можно установить две смысловые связи: одна - к какой категории относится данный товар. Вторая - какие товары относятся к данной категории.

4. Инструкция

1) Функция «добавления» и «хранения».

1.1) Выберите сущность, которую хотите добавить.

1.2) Нажмите кнопку «Добавить». (Примечание: некоторые сущности невозможно добавить, предварительно не создав другие)

2) Функция «удаления» из базы данных.

2.1) Выберети сущность, которую требуется удалить.

2.2) Нажмите «Удалить».

3) Функции «сохранения» и «загрузки» базы данных.

3.1) Чтобы сохранить вашу БД нажмите «Сохранить». В появившемся окне выберите имя файла.

3.2) Чтобы загрузить вашу БД нажмите «Загрузить» и выберите файл с сохраненной ранее БД.

Вывод

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

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

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

Список используемой литературы

1. Карпова, И. П. Базы данных: Учебное пособие / И. П. Карпова. - СПб.: Питер, 2013. - 240 c. ISBN: 978-5-496-00546-3

2. Кузин, А. В. Базы данных: Учебное пособие для студ. высш. учеб. заведений / А. В. Кузин, С. В. Левонисова. - М.: ИЦ Академия, 2012. - 320c. ISBN: 978-5-7695-7368-2

3. Пирогов, В. Ю. Информационные системы и базы данных: организация и проектирование: Учебное пособие / В. Ю. Пирогов. - СПб.: БХВ-Петербург, 2009. - 528 c. ISBN: 978-5-9775-0399-0

4. http://world_logistics. net/avtomatizaciya-sklada-uchetnye_i-wms-sist/

5. http://www. kt_lospo. com/sklad_klass. htm

6. Энциклопедический словарь Брокгауза и Ефрона: В 86 томах (82 т. и 4 доп.). -- СПб., 1890--1907.

Листинг

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,

StdCtrls, EditBtn, ActnList;

type

TTovar=class;

TPostav=class;

TPriem=class;

TPoluchatel=class;

TCategory=class;

{ TForm1 }

TForm1 = class(TForm)

Button1: TButton;

Button10: TButton;

Button11: TButton;

Button12: TButton;

Button13: TButton;

Button14: TButton;

Button15: TButton;

Button16: TButton;

Button17: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Button8: TButton;

Button9: TButton;

ComboBox1: TComboBox;

ComboBox2: TComboBox;

ComboBox3: TComboBox;

DateEdit1: TDateEdit;

DateEdit2: TDateEdit;

DateEdit3: TDateEdit;

Edit1: TEdit;

Edit10: TEdit;

Edit11: TEdit;

Edit12: TEdit;

Edit13: TEdit;

Edit14: TEdit;

Edit15: TEdit;

Edit16: TEdit;

Edit18: TEdit;

Edit19: TEdit;

Edit2: TEdit;

Edit20: TEdit;

Edit3: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Edit9: TEdit;

Label1: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

Label2: TLabel;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

ListView1: TListView;

ListView2: TListView;

ListView3: TListView;

ListView4: TListView;

ListView5: TListView;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

TabSheet4: TTabSheet;

TabSheet5: TTabSheet;

procedure Button10Click(Sender: TObject);

procedure Button11Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure Button13Click(Sender: TObject);

procedure Button14Click(Sender: TObject);

procedure Button15Click(Sender: TObject);

procedure Button16Click(Sender: TObject);

procedure Button17Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure ComboBox1DropDown(Sender: TObject);

procedure ComboBox2DropDown(Sender: TObject);

procedure ComboBox3DropDown(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure ListView1Compare(Sender: TObject; Item1, Item2: TListItem;

Data: Integer; var Compare: Integer);

procedure ListView1SelectItem(Sender: TObject; Item: TListItem);

procedure ListView2SelectItem(Sender: TObject; Item: TListItem);

procedure ListView3SelectItem(Sender: TObject; Item: TListItem);

procedure ListView4SelectItem(Sender: TObject; Item: TListItem);

procedure ListView5SelectItem(Sender: TObject; Item: TListItem);

procedure PostavAddtoView(Postav:TPostav);

procedure PriemAddtoView(Priem:TPriem);

procedure TovarAddtoView(Tovar:TTovar);

procedure PoluchatelAddtoView(Poluchatel:TPoluchatel);

procedure CategoryAddtoView(Category:TCategory);

private

{ private declarations }

public

{ public declarations }

end;

type //Базовый класс

TBaseClass = class

public

procedure SaveToFile (AHandle: THandle); virtual; abstract;

procedure ReadFromFile (AHandle: THandle); virtual; abstract;

end;

type

//Товар

TTovar = class(TBaseClass)

private

FKod: integer; //код товара

FNaimTovara: string; //товар

FIzmerenie: string; //Ед измерения

FTsena: integer; //Цена товара

FSostav: string; //состав

FProizvod: string; //страна-производитель

Fkateg: string;// категория товара

public

procedure SaveToFile (AFile: THandle); virtual;

procedure LoadFromFile(AFile: THandle); virtual;

property Kod: integer read FKod write FKod;

property NaimTovara: string read FNaimTovara write FNaimTovara;

property Izmerenie: string read FIzmerenie write FIzmerenie;

property Tsena: integer read FTsena write FTsena;

property Sostav: string read FSostav write FSostav;

property Proizvod: string read FProizvod write FProizvod;

property kateg: string read Fkateg write Fkateg;

end;

TTovarCollection = class

private

FTovar: array of TTovar;

function GetTovar(Index: Integer): TTovar;

function GetCount: Integer;

public

procedure Delete(Index: Integer);

procedure Add(Tovar: TTovar);

procedure Clear;

property Tovar_S[Index: Integer]: TTovar read GetTovar; default;

procedure SaveToFile(AFile: THandle);

procedure LoadFromFile(AFile: THandle);

property Count: Integer read GetCount;

end;

type //Поставщик

TPhoneNumber=string[12];

TPostav = class(TBaseClass)

private

FkodPostav: string; //код поставщика

FNaimOrg: string; //наименование организации

FPhone:Tphonenumber; //телефон

public

procedure SavetoFile(AFile:THandle); virtual;

procedure LoadFromFile(AFile: THandle); virtual;

property kodPostav:string read FkodPostav write FkodPostav;

property NaimOrg:string read FnaimOrg write FnaimOrg;

property Phone:TPhoneNumber read FPhone write FPhone;

end;

TPostavCollection = class

private

FPostav: array of TPostav;

function GetPostav(Index: Integer): TPostav;

function GetCount: Integer;

public

procedure Delete(Index: Integer);

procedure Add(Postav: TPostav);

procedure Clear;

property Postav_S[Index: Integer]: TPostav read GetPostav; default;

procedure SaveToFile(AFile: THandle);

procedure LoadFromFile(AFile: THandle);

property Count: Integer read GetCount;

end;

type //Приём товара

TPriem = class(TBaseClass)

private

FData:Tdatetime; //дата приёма товара

FPostavsh: string; //поставщик

FPriNaimTovara: string; //товар

Fkolichestvo: integer; //кол-во товара

Fsumma: integer; //сумма

Fdata_vozvrata:Tdatetime; //дата возврата

Fdata_otpravki:Tdatetime; // дата отправки

public

procedure SavetoFile(AFile:THandle); virtual;

procedure LoadFromFile(AFile: THandle); virtual;

property Data:Tdatetime read FData write FData;

property Postavsh: string read FPostavsh write FPostavsh;

property PriNaimTovara: string read FPriNaimTovara write FPriNaimTovara;

property kolichestvo: integer read Fkolichestvo write Fkolichestvo;

property summa: integer read Fsumma write Fsumma;

property data_vozvrata:Tdatetime read Fdata_vozvrata write Fdata_vozvrata;

property data_otpravki:Tdatetime read Fdata_otpravki write Fdata_otpravki;

end;

TPriemCollection = class

private

FPriem: array of TPriem;

function GetPriem(Index: Integer): TPriem;

function GetCount: Integer;

public

procedure SaveToFile(AFile: THandle);

procedure LoadFromFile(AFile: THandle);

procedure Add(Priem: TPriem);

procedure Delete(Index: Integer);

procedure Clear;

property Priem_S[Index: Integer]: TPriem read GetPriem; default;

property Count: Integer read GetCount;

end;

type //Получатель

TPhoneNumberE=string[12];

TPoluchatel = class(TBaseClass)

private

ENaimorg: string; //наименование организации получетеля

Fadres: string; //адрес получателя товара

EPhone: TPhoneNumberE; //телефон получателя

public

procedure SavetoFile(AFile:THandle); virtual;

procedure LoadFromFile(AFile: THandle); virtual;

property NaimorgE: string read ENaimorg write ENaimorg;

property PhoneE:TPhoneNumberE read EPhone write EPhone;

property adres: string read Fadres write Fadres;

end;

TPoluchatelCollection = class

private

FPoluchatel: array of TPoluchatel;

function GetPoluchatel(Index: Integer): TPoluchatel;

function GetCount: Integer;

public

procedure SaveToFile(AFile: THandle);

procedure LoadFromFile(AFile: THandle);

procedure Add(Poluchatel: TPoluchatel);

procedure Delete(Index: Integer);

procedure Clear;

property Poluchatel_S[Index: Integer]: TPoluchatel read GetPoluchatel; default;

property Count: Integer read GetCount;

end;

type //Категория

TCategory = class(TBaseClass)

private

Fname: string; //название категории

Fdescription: string;// описание категории

public

procedure SavetoFile(AFile:THandle); virtual;

procedure LoadFromFile(AFile: THandle); virtual;

property Name: string read Fname write Fname;

property description: string read Fdescription write Fdescription;

end;

TCategoryCollection = class

private

FCategory: array of TCategory;

function GetCategory(Index: Integer): TCategory;

function GetCount: Integer;

public

procedure SaveToFile(AFile: THandle);

procedure LoadFromFile(AFile: THandle);

procedure Add(Category: TCategory);

procedure Delete(Index: Integer);

procedure Clear;

property Category_S[Index: Integer]: TCategory read GetCategory; default;

property Count: Integer read GetCount;

end;

var

Form1: TForm1;

Tovar_S: TTovarCollection;

Postav_S: TPostavCollection;

Priem_S: TPriemCollection;

Poluchatel_S: TPoluchatelCollection;

Category_S: TCategoryCollection;

implementation

{$R *.lfm}

procedure WriteString(AFile:THandle; const s:string);

var

Len:Integer;

i: integer;

begin

Len:= Length(S);

FileWrite(AFile, Len, sizeof(Len));

FileWrite(AFile, PByte(S)^, sizeof(S[i])*Len);

end;

function ReadString(AFile:THandle):string;

var

Len:Integer;

i: integer;

begin

FileRead(AFile, Len, sizeof(Len));

SetLength(Result, Len);

FileRead(AFile, PByte(Result)^, sizeof(Result[i])*Len);

end;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);

begin

Tovar_S:= TTovarCollection.create;

Postav_S:= TPostavCollection.create;

Priem_S:= TPriemCollection.create;

Poluchatel_S:= TPoluchatelCollection.create;

Category_S:= TCategoryCollection.create;

end;

procedure TForm1.FormDestroy(Sender: TObject);

var i:integer;

begin

for i:=0 to Tovar_S.Count-1 do

Tovar_S[i].Free;

for i:=0 to Postav_S.Count-1 do

Postav_S[i].Free;

for i:=0 to Priem_S.Count-1 do

Priem_S[i].Free;

for i:=0 to Poluchatel_S.Count-1 do

Poluchatel_S[i].Free;

for i:=0 to Category_S.Count-1 do

Category_S[i].Free;

Tovar_S.Free;

Postav_S.Free;

Priem_S.Free;

Poluchatel_S.Free;

Category_S.Free;

end;

procedure TForm1.Button16Click(Sender: TObject);

var

AD : TSaveDialog;

AFile: Thandle;

begin

AD := TSaveDialog.Create(self) ;

if AD.Execute then begin

AFile:= FileCreate(AD.filename);

Postav_S.SaveToFile(AFile);

Priem_S.SaveToFile(AFile);

Tovar_S.SaveToFile(AFile);

Poluchatel_S.SaveToFile(AFile);

Category_S.SaveToFile(AFile);

end;

fileclose(Afile);

end;

procedure TForm1.Button17Click(Sender: TObject);

var

RD: TOpenDialog;

i: integer;

AFile: Thandle;

sig:integer;

begin

RD := TOpenDialog.Create(self);

If RD.Execute then

begin

Postav_S.Clear;

Priem_S.Clear;

Tovar_S.Clear;

Poluchatel_S.Clear;

Category_S.Clear;

AFile:= FileOpen(RD.FileName, fmopenread);

while FileRead(AFile, sig, sizeof(sig)) >0

do

begin

case sig of

101: Postav_S.LoadFromFile(AFile);

102: Priem_S.LoadFromFile(AFile);

103: Tovar_S.LoadFromFile(AFile);

104: Poluchatel_S.LoadFromFile(AFile);

105: Category_S.LoadFromFile(AFile);

end;

end;

fileclose(AFile);

{listview}

Listview1.items.beginupdate;

listview1.items.clear;

for i:=0 to Postav_S.Count-1 do

PostavAddtoView(Postav_S[i]);

listview1.items.EndUpdate;

Listview2.items.beginupdate;

listview2.items.clear;

for i:=0 to Priem_S.Count-1 do

PriemAddtoView(Priem_S[i]);

listview2.items.EndUpdate;

Listview3.items.beginupdate;

listview3.items.clear;

for i:=0 to Tovar_S.Count-1 do

TovarAddToview(Tovar_S[i]);

listview3.items.EndUpdate;

Listview4.items.beginupdate;

listview4.items.clear;

for i:=0 to Poluchatel_S.Count-1 do

TovarAddToview(Tovar_S[i]);

listview4.items.EndUpdate;

Listview5.items.beginupdate;

listview5.items.clear;

for i:=0 to Category_S.Count-1 do

CategoryAddtoView(Category_S[i]);

listview5.items.EndUpdate;

end;

end;

{Поставищик GR}

function TPostavCollection.GetPostav(Index: Integer): TPostav;

begin

Result:=FPostav[Index];

end;

function TPostavCollection.GetCount: Integer;

begin

Result:= Length(FPostav);

end;

procedure TPostavCollection.Add(Postav: TPostav);

var

Len: Integer;

begin

Len := Length(FPostav);

SetLength(FPostav, Len+1) ;

FPostav[Len] := Postav;

end;

procedure TPostavCollection.Delete(Index: Integer);

var

i: integer;

begin

for i:= Index+1 to Length(FPostav)-1 do

FPostav[i-1]:= FPostav[i];

SetLength(FPostav, Length(FPostav)-1);

end;

procedure TPostavCollection.Clear;

var

i:integer;

begin

for i:=0 to Length(FPostav)-1 do

FPostav[i].free;

setlength(FPostav, 0);

end;

procedure TForm1.Button1Click(Sender: TObject);

var

UVs: TPostav;

begin

UVs:=TPostav.Create;

UVs.kodPostav:= Edit1.text;

UVs.NaimOrg:= Edit2.text;

UVs.Phone:=Edit3.text;

Postav_S.Add(UVs);

PostavAddtoView(UVs);

end;

procedure TForm1.PostavAddtoView(Postav:TPostav);

var item: Tlistitem;

begin

item:= listview1.Items.add;

item.caption:= Postav.kodPostav;

item.subitems.add(Postav.NaimOrg);

item.subitems.add(Postav.Phone);

end;

procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem);

begin

Button2.Enabled:=ListView1.Selected<>nil;

Button11.Enabled:=ListView1.Selected<>nil;

IF ListView1.Selected<>nil then begin

Edit1.Text:=Postav_s[item.index].kodPostav;

Edit2.Text:=Postav_s[item.index].NaimOrg;

Edit3.Text:=Postav_s[item.index].Phone;

end

else

begin

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var g:integer;

begin

g:=ListView1.Selected.Index;

Postav_S.Delete(g);

ListView1.Selected.Delete;

end;

procedure TForm1.Button11Click(Sender: TObject);

var n:integer;

begin

n:=ListView1.Selected.Index;

Postav_S.GetPostav(n).kodPostav:=Edit1.Text;

Postav_S.GetPostav(n).NaimOrg:=Edit2.Text;

Postav_S.GetPostav(n).Phone:=Edit3.Text;

ListView1.Selected.Caption:=Postav_S[n].kodPostav;

ListView1.Selected.SubItems[0]:=Postav_S[n].NaimOrg;

ListView1.Selected.SubItems[1]:=Postav_S[n].Phone;

end;

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;

Data: Integer; var Compare: Integer);

begin

end;

{Сохранение/загрузка Postav}

procedure TPostav.SavetoFile(AFile: THandle);

begin

WriteString(AFile, kodPostav);

WriteString(AFile, NaimOrg);

WriteString(AFile, Phone);

end;

procedure TPostavCollection.SavetoFile(AFile: THandle);

var

num: integer;

i: integer;

begin

for i:=0 to Length(FPostav)-1 do

begin

num:=101;

filewrite(AFile, num, sizeof(num));

FPostav[i].SavetoFile(AFile);

end;

end;

procedure TPostav.LoadFromFile(AFile: THandle);

begin

kodPostav:= ReadString(AFile);

NaimOrg:= ReadString(AFile);

Phone:= ReadString(AFile);

end;

procedure TPostavCollection.LoadFromFile(AFile: THandle);

var

Partner: TPostav;

begin

Partner:=TPostav.Create;

Partner.LoadFromFile(AFile);

Add(Partner);

end;

{Приём товара GR}

function TPriemCollection.GetPriem(Index: Integer): TPriem;

begin

Result:=FPriem[Index];

end;

function TPriemCollection.GetCount: Integer;

begin

Result:= Length(FPriem);

end;

procedure TPriemCollection.Add(Priem: TPriem);

var

Len: Integer;

begin

Len := Length(FPriem);

SetLength(FPriem, Len+1) ;

FPriem[Len] := Priem;

end;

procedure TPriemCollection.Delete(Index: Integer);

var

i: integer;

begin

for i:= Index+1 to Length(FPriem)-1 do

FPriem[i-1]:= FPriem[i];

SetLength(FPriem, Length(FPriem)-1);

end;

procedure TPriemCollection.Clear;

var

i:integer;

begin

for i:=0 to Length(FPriem)-1 do

FPriem[i].free;

setlength(FPriem, 0);

end;

procedure TForm1.Button3Click(Sender: TObject);

var UVs: TPriem;

begin

UVs:=TPriem.Create;

UVs.Data:= DateEdit3.Date;

UVs.Postavsh:= Combobox2.Text;

UVs.PriNaimTovara:= Combobox3.Text;

UVs.kolichestvo:= strtoint(Edit7.text);

UVs.summa:= strtoint(Edit8.text);

UVs.data_vozvrata:= DateEdit1.Date;

UVs.data_otpravki:= DateEdit2.Date;

Priem_S.Add(UVs);

PriemAddtoView(UVs);

end;

procedure TForm1.PriemAddtoView(Priem:TPriem);

var item: Tlistitem;

begin

item:= listview2.Items.add;

item.caption:=(DateTimeToStr(Priem.Data));

item.subitems.add(Priem.Postavsh);

item.subitems.add(Priem.PriNaimTovara);

item.subitems.add(inttostr(Priem.kolichestvo));

item.subitems.add(inttostr(Priem.summa));

item.subitems.add(DateTimeToStr(Priem.data_vozvrata));

item.subitems.add(DateTimeToStr(Priem.data_otpravki));

end;

procedure TForm1.ListView2SelectItem(Sender: TObject; Item: TListItem);

begin

Button4.Enabled:=ListView2.Selected<>nil;

Button12.Enabled:=ListView2.Selected<>nil;

IF ListView2.Selected<>nil then begin

DateEdit3.Date:= Priem_s[Item.index].Data;

Edit7.Text:=(inttostr(Priem_s[item.Index].kolichestvo));

Edit8.Text:=(inttostr(Priem_s[item.index].summa));

DateEdit1.Date:= Priem_s[Item.index].data_vozvrata;

DateEdit2.Date:= Priem_s[Item.index].data_otpravki;

end

else

begin

DateEdit3.Clear;

Combobox2.Clear;

Combobox3.Clear;

Edit7.Text:='';

Edit8.Text:='';

DateEdit1.Clear;

DateEdit2.Clear;

end;

end;

procedure TForm1.Button4Click(Sender: TObject);

var g:integer;

begin

g:=ListView2.Selected.Index;

Priem_S.Delete(g);

ListView2.Selected.Delete;

end;

procedure TForm1.Button12Click(Sender: TObject);

var n:integer;

begin

n:=ListView2.Selected.Index;

Priem_S.GetPriem(n).data:=DateEdit3.Date;

Priem_S.GetPriem(n).Postavsh:=Combobox2.Text;

Priem_S.GetPriem(n).PriNaimTovara:=Combobox3.Text;

Priem_S.GetPriem(n).kolichestvo:=(strtoint(Edit7.Text));

Priem_S.GetPriem(n).summa:=(strtoint(Edit8.Text));

Priem_S.GetPriem(n).data_vozvrata:=DateEdit1.Date;

Priem_S.GetPriem(n).data_otpravki:=DateEdit2.Date;

ListView2.Selected.Caption:=(DateTimeToStr(Priem_S[n].Data));

ListView2.Selected.SubItems[0]:=Priem_S.GetPriem(n).Postavsh;

ListView2.Selected.SubItems[1]:=Priem_S.GetPriem(n).PriNaimTovara;

ListView2.Selected.SubItems[2]:=(inttostr(Priem_S.GetPriem(n).summa));

ListView2.Selected.SubItems[4]:=(DateTimeToStr(Priem_S[n].data_vozvrata));

ListView2.Selected.SubItems[5]:=(DateTimeToStr(Priem_S[n].data_otpravki));

end;

procedure TForm1.ComboBox2DropDown(Sender: TObject);

var i:integer;

begin

ComboBOX2.Items.BeginUpdate;

ComboBox2.Items.Clear;

For i:=0 to Postav_S.count-1 do

ComboBox2.Items.AddObject(Postav_S[i].NaimOrg, Postav_S[i]);

ComboBox2.Items.EndUpdate;

end;

procedure TForm1.ComboBox3DropDown(Sender: TObject);

var i:integer;

begin

ComboBOX3.Items.BeginUpdate;

ComboBox3.Items.Clear;

For i:=0 to Tovar_S.count-1 do

ComboBox3.Items.AddObject(Tovar_S[i].NaimTovara, Tovar_S[i]);

ComboBox3.Items.EndUpdate;

end;

{Сохранение/загрузка Priem}

procedure TPriem.SavetoFile(AFile: THandle);

begin

FileWrite(AFile, FData, sizeof(FData));

WriteString(AFile, Postavsh);

WriteString(AFile, PriNaimTovara);

FileWrite(AFile, Fkolichestvo, sizeof(Fkolichestvo));

FileWrite(AFile, Fsumma, sizeof(Fsumma));

FileWrite(AFile, Fdata_vozvrata, sizeof(Fdata_vozvrata));

FileWrite(AFile, Fdata_otpravki, sizeof(Fdata_otpravki));

end;

procedure TPriemCollection.SavetoFile(AFile: THandle);

var

num: integer;

i: integer;

begin

for i:=0 to Length(FPriem)-1 do

begin

num:=102;

filewrite(AFile, num, sizeof(num));

FPriem[i].SavetoFile(AFile);

end;

end;

procedure TPriem.LoadFromFile(AFile: THandle);

begin

FileRead(AFile, FData, sizeof(FData));

Postavsh:= ReadString(AFile);

PriNaimTovara:= ReadString(AFile);

FileRead(AFile, Fkolichestvo, sizeof(Fkolichestvo));

FileRead(AFile, Fsumma, sizeof(Fsumma));

FileRead(AFile, Fdata_vozvrata, sizeof(Fdata_vozvrata));

FileRead(AFile, Fdata_otpravki, sizeof(Fdata_otpravki));

end;

procedure TPriemCollection.LoadFromFile(AFile: THandle);

var

Recep: TPriem;

begin

Recep:=TPriem.Create;

Recep.LoadFromFile(AFile);

Add(Recep);

end;

{Товар GR}

function TTovarCollection.GetTovar(Index: Integer): TTovar;

begin

Result:=FTovar[Index];

end;

function TTovarCollection.GetCount: Integer;

begin

Result:= Length(FTovar);

end;

procedure TTovarCollection.Add(Tovar: TTovar);

var Len: Integer;

begin

Len := Length(FTovar);

SetLength(FTovar, Len+1) ;

FTovar[Len] := Tovar;

end;

procedure TTovarCollection.Delete(Index: Integer);

var i: integer;

begin

for i:= Index+1 to Length(FTovar)-1 do

FTovar[i-1]:= FTovar[i];

SetLength(FTovar, Length(FTovar)-1);

end;

procedure TTovarCollection.Clear;

var i:integer;

begin

for i:=0 to Length(FTovar)-1 do

FTovar[i].free;

setlength(FTovar, 0);

end;

procedure TForm1.ComboBox1DropDown(Sender: TObject);

var i:integer;

begin

ComboBOX1.Items.BeginUpdate;

ComboBox1.Items.Clear;

For i:=0 to Category_S.count-1 do

ComboBox1.Items.AddObject(Category_S[i].Name, Category_S[i]);

ComboBox1.Items.EndUpdate;

end;

procedure TForm1.Button5Click(Sender: TObject);

var UVs: TTovar;

begin

UVs:=TTovar.Create;

UVs.Kod:= strtoint(Edit11.Text);

UVs.NaimTovara:= Edit12.text;

UVs.Izmerenie:= Edit13.text;

UVs.tsena:= strtoint(Edit14.text);

UVs.Sostav:= Edit15.text;

UVs.Proizvod:= Edit16.text;

UVs.kateg:= Combobox1.Text;

Tovar_S.Add(UVs);

TovarAddtoView(UVs);

end;

procedure TForm1.TovarAddtoView(Tovar:TTovar);

var item: Tlistitem;

begin

item:= listview3.Items.add;

item.caption:=(inttostr(Tovar.kod));

item.subitems.add(Tovar.NaimTovara);

item.subitems.add(Tovar.Izmerenie);

item.subitems.add(inttostr(Tovar.tsena));

item.subitems.add(Tovar.Sostav);

item.subitems.add(Tovar.Proizvod);

item.subitems.add(Tovar.kateg);

end;

procedure TForm1.ListView3SelectItem(Sender: TObject; Item: TListItem);

begin

Button6.Enabled:=ListView3.Selected<>nil;

Button13.Enabled:=ListView3.Selected<>nil;

IF ListView3.Selected<>nil then begin

Edit11.Text:=(inttostr(Tovar_s[item.Index].kod));

Edit12.Text:=(Tovar_s[item.index].NaimTovara);

Edit13.Text:=(Tovar_s[item.index].Izmerenie);

Edit14.Text:=(inttostr(Tovar_s[item.index].tsena));

Edit15.Text:=(Tovar_s[item.index].Proizvod);

end

else

begin

Edit11.Text:='';

Edit12.Text:='';

Edit13.Text:='';

Edit14.Text:='';

Edit15.Text:='';

Combobox1.Clear;

end;

end;

procedure TForm1.Button6Click(Sender: TObject);

var g:integer;

begin

g:=ListView3.Selected.Index;

Tovar_S.Delete(g);

ListView3.Selected.Delete;

end;

procedure TForm1.Button13Click(Sender: TObject);

var n:integer;

begin

n:=ListView3.Selected.Index;

Tovar_S.GetTovar(n).kod:=(strtoint(Edit11.Text));

Tovar_S.GetTovar(n).NaimTovara:=Edit12.Text;

Tovar_S.GetTovar(n).Izmerenie:=Edit13.Text;

Tovar_S.GetTovar(n).tsena:=(strtoint(Edit14.Text));

Tovar_S.GetTovar(n).Sostav:=Edit15.Text;

Tovar_S.GetTovar(n).Proizvod:=Edit16.Text;

Tovar_S.GetTovar(n).kateg:=Combobox1.Text;

ListView3.Selected.Caption:=(inttostr(Tovar_S[n].kod));

ListView3.Selected.SubItems[0]:=Tovar_S[n].NaimTovara;

ListView3.Selected.SubItems[1]:=Tovar_S[n].Izmerenie;

ListView3.Selected.SubItems[2]:=(inttostr(Tovar_S[n].tsena));

ListView3.Selected.SubItems[3]:=Tovar_S[n].Sostav;

ListView3.Selected.SubItems[4]:=Tovar_S[n].Proizvod;

ListView3.Selected.SubItems[5]:=Tovar_S[n].kateg;

end;

{Сохранение/загрузка Tovar}

procedure TTovar.SavetoFile(AFile: THandle);

begin

FileWrite(AFile, Fkod, sizeof(Fkod));

WriteString(AFile, NaimTovara);

WriteString(AFile, Izmerenie);

FileWrite(AFile, Ftsena, sizeof(Ftsena));

WriteString(AFile, Sostav);

WriteString(AFile, Proizvod);

WriteString(AFile, kateg);

end;

procedure TTovarCollection.SavetoFile(AFile: THandle);

var

num: integer;

i: integer;

begin

for i:=0 to Length(FTovar)-1 do

begin

num:=103;

filewrite(AFile, num, sizeof(num));

FTovar[i].SavetoFile(AFile);

end;

end;

procedure TTovar.LoadFromFile(AFile: THandle);

begin

FileRead(AFile, Fkod, sizeof(Fkod));

NaimTovara:= ReadString(AFile);

Izmerenie:= ReadString(AFile);

FileRead(AFile, Ftsena, sizeof(Ftsena));

Sostav:= ReadString(AFile);

Proizvod:= ReadString(AFile);

kateg:= ReadString(AFile);

end;

procedure TTovarCollection.LoadFromFile(AFile: THandle);

var

Matter: TTovar;

begin

Matter:=TTovar.Create;

Matter.LoadFromFile(AFile);

Add(Matter);

end;

{Получатель GR}

function TPoluchatelCollection.GetPoluchatel(Index: Integer): TPoluchatel;

begin

Result:=FPoluchatel[Index];

end;

function TPoluchatelCollection.GetCount: Integer;

begin

Result:= Length(FPoluchatel);

end;

procedure TPoluchatelCollection.Add(Poluchatel: TPoluchatel);

var Len: Integer;

begin

Len := Length(FPoluchatel);

SetLength(FPoluchatel, Len+1) ;

FPoluchatel[Len] := Poluchatel;

end;

procedure TPoluchatelCollection.Delete(Index: Integer);

var i: integer;

begin

for i:= Index+1 to Length(FPoluchatel)-1 do

FPoluchatel[i-1]:= FPoluchatel[i];

SetLength(FPoluchatel, Length(FPoluchatel)-1);

end;

procedure TPoluchatelCollection.Clear;

var i:integer;

begin

for i:=0 to Length(FPoluchatel)-1 do

FPoluchatel[i].free;

setlength(FPoluchatel, 0);

end;

procedure TForm1.Button7Click(Sender: TObject);

var UVs: TPoluchatel;

begin

UVs:=TPoluchatel.Create;

UVs.NaimorgE:= Edit18.Text;

UVs.PhoneE:= Edit19.text;

UVs.adres:= Edit20.text;

Poluchatel_S.Add(UVs);

PoluchatelAddtoView(UVs);

end;

procedure TForm1.PoluchatelAddtoView(Poluchatel:TPoluchatel);

var item: Tlistitem;

begin

item:= listview4.Items.add;

item.caption:=(Poluchatel.NaimorgE);

item.subitems.add(Poluchatel.PhoneE);

item.subitems.add(Poluchatel.adres);

end;

procedure TForm1.ListView4SelectItem(Sender: TObject; Item: TListItem);

begin

Button8.Enabled:=ListView4.Selected<>nil;

Button14.Enabled:=ListView4.Selected<>nil;

IF ListView4.Selected<>nil then begin

Edit18.Text:=Poluchatel_s[item.index].NaimorgE;

Edit19.Text:=Poluchatel_s[item.index].PhoneE;

Edit20.Text:=Poluchatel_s[item.index].adres;

end

else

begin

Edit18.Text:='';

Edit19.Text:='';

Edit20.Text:='';

end;

end;

procedure TForm1.Button8Click(Sender: TObject);

var g:integer;

begin

g:=ListView4.Selected.Index;

Poluchatel_S.Delete(g);

ListView4.Selected.Delete;

end;

procedure TForm1.Button14Click(Sender: TObject);

var n:integer;

begin

n:=ListView4.Selected.Index;

Poluchatel_S.GetPoluchatel(n).NaimorgE:=Edit1.Text;

Poluchatel_S.GetPoluchatel(n).PhoneE:=Edit2.Text;

Poluchatel_S.GetPoluchatel(n).adres:=Edit3.Text;

ListView4.Selected.Caption:=Poluchatel_S[n].NaimorgE;

ListView4.Selected.SubItems[0]:=Poluchatel_S[n].PhoneE;

ListView4.Selected.SubItems[1]:=Poluchatel_S[n].adres;

end;

{Сохранение/загрузка Poluchatel}

procedure TPoluchatel.SavetoFile(AFile: THandle);

begin

WriteString(AFile, NaimorgE);

WriteString(AFile, PhoneE);

WriteString(AFile, adres);

end;

procedure TPoluchatelCollection.SavetoFile(AFile: THandle);

var

num: integer;

i: integer;

begin

for i:=0 to Length(FPoluchatel)-1 do

begin

num:=104;

filewrite(AFile, num, sizeof(num));

FPoluchatel[i].SavetoFile(AFile);

end;

end;

procedure TPoluchatel.LoadFromFile(AFile: THandle);

begin

NaimorgE:= ReadString(AFile);

PhoneE:= ReadString(AFile);

adres:= ReadString(AFile);

end;

procedure TPoluchatelCollection.LoadFromFile(AFile: THandle);

var

Recip: TPoluchatel;

begin

Recip:=TPoluchatel.Create;

Recip.LoadFromFile(AFile);

Add(Recip);

end;

{Категория GR}

function TCategoryCollection.GetCategory(Index: Integer): TCategory;

begin

Result:=FCategory[Index];

end;

function TCategoryCollection.GetCount: Integer;

begin

Result:= Length(FCategory);

end;

procedure TCategoryCollection.Add(Category: TCategory);

var Len: Integer;

begin

Len := Length(FCategory);

SetLength(FCategory, Len+1) ;

FCategory[Len] := Category;

end;

procedure TCategoryCollection.Delete(Index: Integer);

var i: integer;

begin

for i:= Index+1 to Length(FCategory)-1 do

FCategory[i-1]:= FCategory[i];

SetLength(FCategory, Length(FCategory)-1);

end;

procedure TCategoryCollection.Clear;

var i:integer;

begin

for i:=0 to Length(FCategory)-1 do

FCategory[i].free;

setlength(FCategory, 0);

end;

procedure TForm1.Button9Click(Sender: TObject);

var UVs: TCategory;

begin

UVs:=TCategory.Create;

UVs.Name:= Edit9.Text;

UVs.description:= Edit10.text;

Category_S.Add(UVs);

CategoryAddtoView(UVs);

end;

procedure TForm1.CategoryAddtoView(Category:TCategory);

var item: Tlistitem;

begin

item:= listview5.Items.add;

item.caption:=(Category.Name);

item.subitems.add(Category.description);

end;

procedure TForm1.ListView5SelectItem(Sender: TObject; Item: TListItem);

begin

Button10.Enabled:=ListView5.Selected<>nil;

Button15.Enabled:=ListView5.Selected<>nil;

IF ListView5.Selected<>nil then begin

Edit18.Text:=Category_s[item.index].Name;

Edit19.Text:=Category_s[item.index].description;

end

else

begin

Edit9.Text:='';

Edit10.Text:='';

end;

end;

procedure TForm1.Button10Click(Sender: TObject);

var g:integer;

begin

g:=ListView5.Selected.Index;

Category_S.Delete(g);

ListView5.Selected.Delete;

end;

procedure TForm1.Button15Click(Sender: TObject);

var n:integer;

begin

n:=ListView5.Selected.Index;

Category_S.GetCategory(n).Name:=Edit9.Text;

Category_S.GetCategory(n).description:=Edit10.Text;

ListView5.Selected.Caption:=Category_S[n].Name;

ListView5.Selected.SubItems[0]:=Category_S[n].description;

end;

{Сохранение/загрузка Category}

procedure TCategory.SavetoFile(AFile: THandle);

begin

WriteString(AFile, Name);

WriteString(AFile, description);

end;

procedure TCategoryCollection.SavetoFile(AFile: THandle);

var

num: integer;

i: integer;

begin

for i:=0 to Length(FCategory)-1 do

begin

num:=105;

filewrite(AFile, num, sizeof(num));

FCategory[i].SavetoFile(AFile);

end;

end;

procedure TCategory.LoadFromFile(AFile: THandle);

begin

Name:= ReadString(AFile);

description:= ReadString(AFile);

end;

procedure TCategoryCollection.LoadFromFile(AFile: THandle);

var

Rank: TCategory;

begin

Rank:=TCategory.Create;

Rank.LoadFromFile(AFile);

Add(Rank);

end;

end.

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.