Ликероводочный завод

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    334,45 Кб
  • Опубликовано:
    2012-06-22
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Ликероводочный завод

Федеральное агентство по образованию (Рособразование)

Архангельский государственный технический университет

Вычислительных систем и телекоммуникаций


Калитин Арсентий Игоревич

КУРСОВАЯ РАБОТА



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

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

На тему

Ликеро-водочный завод

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

ЦЕЛЬ И ЗАДАЧИ ВЫПОЛНЕНИЯ РАБОТЫ

1   ВНЕШНЕЕ ОПИСАНИЕ

1.1      Анализ предметной области

1.2    Функциональная спецификация

2   ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА АВТОМАТИЗИРОВАННУЮ СИСТЕМУ

3       ПРОГРАММИРОВАНИЕ

3.1      Описание классов и интерфейсов

3.2    Диаграмма классов

4   КЛИЕНТСКОЕ ПРИЛОЖЕНИЕ

4.1      Структура

4.2    Проектирование графического интерфейса

5   ТЕСТИРОВАНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ А Листинг клиентского приложения

ВВЕДЕНИЕ

В данной пояснительной записке рассматривается описание программы «Ликероводочный завод» на основе объектно-ориентированного подхода.

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

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

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

Объектно-ориентированное программирование в настоящее время является абсолютным лидером в области прикладного программирования.

В качестве основного инструмента разработки применяется Microsoft Visual Studio 2010. Язык программирования C#.

ЦЕЛЬ И ЗАДАЧИ ВЫПОЛНЕНИЯ РАБОТЫ

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

Задачи выполнения работы:

­ исследование предметной области с целью выявления основных сущностей и их атрибутов;

­ проектирование иерархии классов и интерфейсов на основе выделенных сущностей;

­ использование наследования и агрегации для структуризации классов;

­ применение принципа инкапсуляции к классам;

­ использование интерфейсов, описывающих операции в данной предметной области, для обеспечения множественного наследования;

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

документация разработанных классов при помощи XML комментариев.

программа интерфейс класс инкапсуляция

1 ВНЕШНЕЕ ОПИСАНИЕ

1.1    Анализ предметной области

Анализ предметной области - самый важный этап разработки программного обеспечения.

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

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

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

- надежность: программа должна быть автономной;       

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

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

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

1.2    Функциональная спецификации

Минимальные технические характеристики компьютера, на котором гарантируется стабильная работа программы:

компьютер/процессор: компьютер с процессором класса Pentium II 450 МГц;

-       память: 64 МБ ОЗУ;

-       монитор: монитор VGA с разрешением 800x600 точек или более высоким, поддерживающий 256 цветов;

-       операционная система: операционная система Windows XP с установленным Microsoft .NET Framework 2.0;

-       наличие свободного дискового пространства на жёстком диске.

Внешние функции:

-       внесение данных и редактирование данных о клиентах, работниках, продукции и заказов;

-       сохранение данных в XML-файл;

-       считывание данных из XML-файла;

-       проверка вводимых данных и вывод сообщений об ошибках;

-       программа должна выполнять все функции за предельно малое количество времени;

Критические случаи:

-       отсутствие свободного места на жёстком диске. Любая операция с файловой системой должна быть отменена;

-       некорректный XML-файл. Программа не должна аварийно завершаться;

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

2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА АВТОМАТИЗИРОВАННУЮ СИСТЕМУ

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

-       изменение списка работников (добавления, удаление);

-       изменение списка клиентов (добавления, удаление);

-       изменение продукции (добавления, удаление);

-       изменение заказов (добавления, удаление);

-       отображение информации, хранящейся в XML-файле;

-       сохранение информации в XML-файл.

3. ПРОГРАММИРОВАНИЕ

.1      Описание классов и интерфейсов

В ООП главным элементом является класс, включающий множество объектов с одинаковыми свойствами, операциями и отношениями. Класс имеет внутреннее (реализацию) и внешнее представление - интерфейс. В данной программе реализованы классы Workers, Clients, Checking, Product, Orders, SaveOpen, ListLVZ, а также интерфейс IRemove.

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

Рассмотрим остальные классы:

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

-       Класс Checking служит проверкой выделения строки в таблице с данными.

-       Класс SaveOpen содержит два метода LoadXML и Save для загрузки XML-данных из файла и сохранения соответственно, посредством сериализации.

-       Класс ListLVZ содержит списки сотрудников, клиентов, товаров и заказов.

3.2    Диаграмма классов

На рисунке 1 представлена диаграмма классов:

Рисунок 1 - Диаграмма классов

4. КЛИЕНТСКОЕ ПРИЛОЖЕНИЕ

.1 Структура

В данном ПП для продуктивной работы реализован удобный пользовательский интерфейс, похожий на большинство Windows - приложений, с оригинальным дизайном, приятным для восприятия. Данное программное средство можно разбить на модули, взаимодействующие друг с другом. На рисунке 2 представлена структура приложения:

Рисунок 2 - Структура приложения

Модуль просмотра данных предоставляет возможность наглядного отображение данных.

Модуль проверки данных реализует методы:

-        корректность вводимых пользователем данных;

-       корректность считываемых из файла данных

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

Модуль сохранения данных, формирует все записи в один XML-файл.

Модуль считывания предоставляет возможность открытия XML-файла и заполнения списков в программе.

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

4.2 Проектирование графического интерфейса

На рисунке 3 представлена форма приложения с отображением данных работников завода:

         Рисунок 3 - Форма Form1

Для редактирования и ввода записей о сотрудниках, клиентах, продуктах и заказов необходимо воспользоваться соответствующими вкладками на форме. Эти вкладки отображены на рисунках 4-7.

Рисунок 4 - Вкладка «Работники»

Рисунок 5 - Вкладка «Клиенты»

Рисунок 6 - Вкладка «Продукция»

Рисунок 7 - Вкладка «Заказы»

Если количество товаров складе меньше количества заказываемых товаров, то мы можем увидеть сообщение об ошибке изображенное на рисунке 8:

Рисунок 8 - Попытка ввода большого количества товаров

Просмотр клиентов заказавших определенный товар можно увидеть на рисунке 9:

Рисунок 9 - Просмотр клиентов

Удаление локомотивов, вагонов и сотрудников можно осуществить при помощи кнопки «Удалить запись». При нажатии на эту кнопку мы удаляем выбранный нами локомотив. Аналогично для других списков. Вкладки отображены на рисунках 10 - 13:

Рисунок 10 - Таблица во вкладке «Сотрудники»

Рисунок 11 - Таблица во вкладке «Клиенты»

Рисунок 12 - Таблица во вкладке «Продукция»

Рисунок 13 - Таблица во вкладке «Заказы»

Загрузка и сохранение данных осуществляются в меню файл. «File…» позволяет запустить диалог открытия файла XML, «Сохранить как…» - аналогично, только для сохранения. Диалог сохранения файла предоставлен на рисунке 12(диалог открытия файла принципиально ничем не отличается поэтому его рассматривать не будем):

Рисунок 14 - Сохранение в файл

Выбрав имя файла XML и нажав кнопку «Сохранить», мы сохраним данные в файл.

Если попытаться загрузить некорректный XML-файл, то будет выведено такое сообщение, рисунок 15:

Рисунок 15 - Попытка открыть некорректный XML-файл

Если попытаться сохранить данные в файл, доступный только на чтение, то будет получено такое сообщение, рисунок 16:

Рисунок 16 - Попытка сохранить в файл, доступный только на чтение


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

Проводились следующие тесты:

- ввод неверных значений;

открытие некорректного XML-файла;

запись в защищенный от записи файл;

доступ к несуществующим элементам списка;

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

Тестирование выявило мелкие недочеты, которые в последствии были устранены.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.         Э. Троелсен. С# и платформа .NET. Библиотека программиста. - СПб.: Питер, 2004. -796 с.: ил.

2.         Е.А. Жоголев. «Технология программирования» - М., Научный мир, 2004, 216 с

3.         Т. А. Павловская. «С#. Программирование на языке высокого уровня. Учебник для вузов» - СПб.: Питер, 2007. - 432 с.

4.         Microsoft Developer Network(MSDN). [Электронный ресурс]. - Режим доступа: msdn.microsoft.com, свободный.

5.         СТО 01.04 - 2005. Работы студентов. Общие требования и правила оформления. - введ. 2005 - 04 - 01. - Архангельск: Изд-во Арханг. гос. техн. ун-та, 2005.

ПРИЛОЖЕНИЕ А. ЛИСТИНГ ПРОГРАММЫ

(обязательное)

Главная форма: System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;Classes;System.IO;System.Xml;System.Xml.Serialization;System.Text.RegularExpressions;LVZ

{IRemove

{Remove();

}partial class Form1 : Form, IRemove

{sv = null;class SaveOpen

{

#region Метод LoadXML - загрузка данных из файла

/// Статичный метод для считывания данных из XML-файла. Возвращает ListDelos

/// </summary>

/// <param name="filename">Адрес к XML файлу для считывания</param>

/// <param name="listdelos">Экземпляр класса ListDelos</param>

/// <returns></returns>static ListLVZ LoadXML(string filename, ListLVZ listlvz)

{Serializer = new XmlSerializer(typeof(ListLVZ));

{(StreamReader reader = new StreamReader(filename))

{= (ListLVZ)Serializer.Deserialize(reader);

}

}(FileNotFoundException)

{newXML = @"<?xml version=""1.0"" encoding=""utf-8""?>" + '\n' + @"<ListDogovor xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">" + '\n' + "<AllDogovor />" + '\n' + "</ListDogovor>";(StreamWriter writer = new StreamWriter(filename))

{.Write(newXML);

}

}listlvz;

}

#endregion

/// <summary>

/// Статичный метод для сохранения данных в XML-файл.

/// </summary>

/// <param name="listdelos">Экземпляр класса ListDelos</param>

/// <param name="filename">Путь для сохранения файла XML</param>

#region Save - сохранение экземляра класса Delo в файлstatic void Save(ListLVZ listlvz, string filename)

{sr = new XmlSerializer(listlvz.GetType());sb = new StringBuilder();SW = new StreamWriter(filename);.Serialize(SW, listlvz);.Close();

}

#endregion

}class ListLVZ

{List<Workers> AllWork = new List<Workers>();List<Clients> AllClient = new List<Clients>();List<Product> AllProduct = new List<Product>();List<Orders> AllOrders = new List<Orders>();

}ListLVZ l = new ListLVZ();Form1()

{();

}void butWork_Click(object sender, EventArgs e)

{wr = new Workers();.famil = Famil.Text;.name = Imya.Text;.otche = Otche.Text;.dolgn = Dolg.Text;.telef = Telef.Text;.Zarplata = Zarpl.Text;.AllWork.Add(wr);.Rows.Clear();(int i = 0; i < l.AllWork.Count; i++)

{.Rows.Add();[0, i].Value = l.AllWork[i].famil;[1, i].Value = l.AllWork[i].name;[2, i].Value = l.AllWork[i].otche;[3, i].Value = l.AllWork[i].dolgn;[4, i].Value = l.AllWork[i].telef;[5, i].Value = l.AllWork[i].Zarplata;

}

}void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{(saveFileDialog1.ShowDialog() == DialogResult.OK)

{

{.Save(l, saveFileDialog1.FileName);.Show("Файл сохранен");

}(UnauthorizedAccessException)

{.Show("Невозможно сохранить файл: доступ закрыт");

}

}

}void открытьToolStripMenuItem_Click(object sender, EventArgs e)

{((openFileDialog1.ShowDialog() == DialogResult.OK))

{

{= SaveOpen.LoadXML(openFileDialog1.FileName, l);= openFileDialog1.FileName;

}(InvalidOperationException)

{.Show("Невозможно прочитать данные из этого XML-файла");

}

}void показатьToolStripMenuItem_Click(object sender, EventArgs e)

{.Items.Clear();.Items.Clear();.Rows.Clear();.Rows.Clear();.Rows.Clear();.Rows.Clear();(int i = 0; i < l.AllClient.Count; i++)

{s = (l.AllClient[i].famil + " " + l.AllClient[i].name + " " + l.AllClient[i].otche);.Items.Add(s);

}(int i = 0; i < l.AllProduct.Count; i++)

{s = (l.AllProduct[i].name + "(" + l.AllProduct[i].clas + ")");.Items.Add(s);

}(int i = 0; i < l.AllWork.Count; i++)

{.Rows.Add();[0, i].Value = l.AllWork[i].famil;[1, i].Value = l.AllWork[i].name;[2, i].Value = l.AllWork[i].otche;[3, i].Value = l.AllWork[i].dolgn;[4, i].Value = l.AllWork[i].telef;[5, i].Value = l.AllWork[i].Zarplata;

}(int i = 0; i < l.AllClient.Count; i++)

{.Rows.Add();[0, i].Value = l.AllClient[i].famil;[1, i].Value = l.AllClient[i].name;[2, i].Value = l.AllClient[i].otche;[3, i].Value = l.AllClient[i].dolgn;[4, i].Value = l.AllClient[i].telef;[5, i].Value = l.AllClient[i].predrp;[6, i].Value = l.AllClient[i].adress;

}(int i = 0; i < l.AllProduct.Count; i++)

{.Rows.Add();[0, i].Value = l.AllProduct[i].name;[1, i].Value = l.AllProduct[i].clas;[2, i].Value = l.AllProduct[i].kolproiz;[3, i].Value = l.AllProduct[i].kolskl;[4, i].Value = l.AllProduct[i].price;

}(int i = 0; i < l.AllOrders.Count; i++)

{.Rows.Add();[0, i].Value = l.AllOrders[i].namecl;[1, i].Value = l.AllOrders[i].nameprod;[2, i].Value = l.AllOrders[i].adresscl;[3, i].Value = l.AllOrders[i].kolzak;[4, i].Value = l.AllOrders[i].symm;

}

}void butClients_Click(object sender, EventArgs e)

{cl = new Clients();.famil = textBox1.Text;.name = textBox2.Text;.otche = textBox3.Text;.dolgn = textBox4.Text;.telef = textBox5.Text;.predrp = textBox6.Text;.adress = textBox7.Text;.AllClient.Add(cl);.Rows.Clear();(int i = 0; i < l.AllClient.Count; i++)

{.Rows.Add();[0, i].Value = l.AllClient[i].famil;[1, i].Value = l.AllClient[i].name;[2, i].Value = l.AllClient[i].otche;[3, i].Value = l.AllClient[i].dolgn;[4, i].Value = l.AllClient[i].telef;[5, i].Value = l.AllClient[i].predrp;[6, i].Value = l.AllClient[i].adress;

}

}void butProd_Click(object sender, EventArgs e)

{pr = new Product();.name = prName.Text;.clas = prClass.Text;.kolproiz = prKolProi.Text;.kolskl = prKolSkl.Text;.price = prPrice.Text;.AllProduct.Add(pr);.Rows.Clear();(int i = 0; i < l.AllProduct.Count; i++)

{.Rows.Add();[0,i].Value = l.AllProduct[i].name;[1,i].Value = l.AllProduct[i].clas;[2,i].Value = l.AllProduct[i].kolproiz;[3,i].Value = l.AllProduct[i].kolskl;[4, i].Value = l.AllProduct[i].price;

}

}void butOrders_Click(object sender, EventArgs e)

{or = new Orders();.namecl = orNameCl.Text;.nameprod = orNamePr.Text;.adresscl = orAdressCl.Text;.kolzak = orKolZak.Text;.symm = orSymm.Text;.AllOrders.Add(or);.Rows.Clear();(int i = 0; i < l.AllOrders.Count; i++)

{.Rows.Add();[0,i].Value = l.AllOrders[i].namecl;[1,i].Value = l.AllOrders[i].nameprod;[2,i].Value = l.AllOrders[i].adresscl;[3,i].Value = l.AllOrders[i].kolzak;[4,i].Value = l.AllOrders[i].symm;

}

}void orNameCl_SelectedIndexChanged(object sender, EventArgs e)

{(int i = 0; i < l.AllClient.Count; i++)

{s = (l.AllClient[i].famil + " " + l.AllClient[i].name + " " + l.AllClient[i].otche);(orNameCl.Text == s)

{.Text = l.AllClient[i].adress;

}

}

}void orKolZak_TextChanged(object sender, EventArgs e)

{

}void Symm_Click(object sender, EventArgs e)

{(int i = 0; i < l.AllProduct.Count; i++)

{s = (l.AllProduct[i].name + "(" + l.AllProduct[i].clas + ")");(s == orNamePr.Text)

{(orKolZak.Text == "")

{.Text = "";.Show("Введите количество товара");;

}.Text = (int.Parse(l.AllProduct[i].price) * int.Parse(orKolZak.Text)).ToString();

}y = l.AllProduct[i].kolskl;(orNamePr.Text == l.AllProduct[i].name + "(" + l.AllProduct[i].clas + ")")

{(int.Parse(orKolZak.Text) > int.Parse(y))

{.Text = "";.Show("На складе нехватает товара");

}

}(int g = 0; g < l.AllOrders.Count; g++)

{n = 0;(orNamePr.Text == l.AllOrders[g].nameprod)

{(int k = 0; k < l.AllOrders.Count; k++)

{(orNamePr.Text == l.AllOrders[k].nameprod)

{+= (int.Parse(l.AllOrders[k].kolzak));

}

}v = 0;(int f = 0; f < l.AllProduct.Count; f++)

{(orNamePr.Text == (l.AllProduct[f].name + "(" + l.AllProduct[f].clas + ")"))

{= int.Parse(l.AllProduct[f].kolskl) - n;

}

}(int.Parse(orKolZak.Text) > v)

{.Show("Недостаточно товара на складе");;

}

}

};

}

}void Famil_TextChanged(object sender, EventArgs e)

{.Text = System.Text.RegularExpressions.Regex.Replace(Famil.Text, @"\d", "");.Text = System.Text.RegularExpressions.Regex.Replace(Imya.Text, @"\d", "");.Text = System.Text.RegularExpressions.Regex.Replace(Otche.Text, @"\d", "");.Text = System.Text.RegularExpressions.Regex.Replace(Dolg.Text, @"\d", "");.Text = System.Text.RegularExpressions.Regex.Replace(textBox1.Text, @"\d", "");.Text = System.Text.RegularExpressions.Regex.Replace(textBox2.Text, @"\d", "");.Text = System.Text.RegularExpressions.Regex.Replace(textBox3.Text, @"\d", "");.Text = System.Text.RegularExpressions.Regex.Replace(textBox4.Text, @"\d", "");.Text = System.Text.RegularExpressions.Regex.Replace(prName.Text, @"\d", "");

}void Telef_KeyPress(object sender, KeyPressEventArgs e)

{r = new Regex("[0-9\b]");m = r.Match(e.KeyChar.ToString());(!m.Success) e.KeyChar = '\0';

}void dataProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)

{ff = new Form2();g = 0;(int i = 0; i < dataProduct.Rows.Count; i++)

{(e.ColumnIndex == 5 && e.RowIndex == i)

{s = l.AllProduct[i].name + "(" + l.AllProduct[i].clas + ")";(int p = 0; p < l.AllOrders.Count; p++)

{s1 = l.AllOrders[p].nameprod;(s == s1)

{.Text = l.AllOrders[p].nameprod;.dataGridView1.Rows.Add();.dataGridView1[0, g].Value = l.AllOrders[p].namecl;(int j = 0; j < l.AllClient.Count; j++)

{.dataGridView1[1, g].Value = l.AllClient[j].predrp;

}

}.dataGridView1[2, g].Value = l.AllOrders[p].adresscl;.dataGridView1[3, g].Value = l.AllOrders[p].kolzak;.dataGridView1[4, g].Value = l.AllOrders[p].symm;++;

}

}

}

}.ShowDialog();

}void Remove()

{check = new Checking();u = true;y = -1;= check.Check_Select();(u)

{= dataWork.Rows.IndexOf(dataWork.SelectedRows[0]);.AllWork.RemoveAt(y);dr = dataWork.SelectedRows[0];.Rows.Remove(dr);

}

}void butDel_Click(object sender, EventArgs e)

{();

}void button1_Click(object sender, EventArgs e)

{();

}void butSave_Click(object sender, EventArgs e)

{

{.Save(l, sv);.Show("Файл сохранен");

}(UnauthorizedAccessException)

{.Show("Невозможно сохранить файл: доступ закрыт");

}

}

}

}

Листинг библиотеки Classes.dll:

using System;System.Collections.Generic;System.Linq;System.Text;System.ComponentModel;System.Data;Classes

{

[Serializable]class People

{FFamil;FName;FOtche;FDolgn;FTelef;People()

{= "";= "";= "";= "";= "";

}People(string famil, string name, string otche,string dolgn, string telef)

{.FFamil = famil;.FName = name;.FOtche = otche;.FDolgn = dolgn;.FTelef = telef;

}string famil

{

{= value;

}

{FFamil;

}

}string name

{

{= value;

}

{FName;

}

}string otche

{

{= value;

}

{FOtche;

}

}string dolgn

{

{= value;

}

{FDolgn;

}

}string telef

{

{= value;

}

{FTelef;

}

}

}

[Serializable]class Workers: People

{ FZarplata;Workers()

{ = "";

}Workers( string Zarplata)

{.FZarplata = Zarplata;

} string Zarplata

{= value;

}

{FZarplata;

}

}

}

[Serializable]class Clients: People

{FPredpr;FAdress;Clients()

{= "";= "";

}Clients(string predpr, string adress)

{.FPredpr = predpr;.FAdress = adress;

}string predrp

{

{= value;

}

{FPredpr;

}

}string adress

{

{= value;

}

{FAdress;

}

}

}

[Serializable]class Product

{FName;FClas;FKolProiz;FKolSkl;FPrice;Product()

{= "";= "";= "";= "";= "";

}Product(string name, string clas, string kolproiz, string kolskl, string price)

{.FName = name;.FClas = clas;.FKolProiz = kolproiz;.FKolSkl = kolskl;.FPrice = price;

}string name

{

{= value;

}

{FName;

}

}string clas

{

{= value;

}

{FClas;

}

}string kolproiz

{

{= value;

}

{FKolProiz;

}

}string kolskl

{

{= value;

}

{FKolSkl;

}

}string price

{

{= value;

}

{FPrice;

}

}

}

[Serializable]class Orders

{FNameCl;FNameProd;FAdressCl;FKolZak;FSymm;FPredpr;Orders()

{= "";= "";= "";= "";= "";= "";

}Orders(string namecl, string nameprod, string adresscl, string kolzak, string symm, string predpr)

{.FNameCl = namecl;.FNameProd = nameprod;.FAdressCl = adresscl;.FKolZak = kolzak;.FSymm = symm;.FPredpr = predpr;

}string namecl

{

{= value;

{FNameCl;

}

}string nameprod

{

{= value;

}

{FNameProd;

}

}string adresscl

{

{= value;

}

{FAdressCl;

}

}string kolzak

{

{= value;

}

{FKolZak;

}

}string symm

{

{= value;

}

{FSymm;

}

}string predpr

{

{= value;

}

{FPredpr;

}

}

}

}

Похожие работы на - Ликероводочный завод

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!