Ликероводочный завод
Федеральное агентство по образованию (Рособразование)
Архангельский государственный технический университет
Вычислительных систем и телекоммуникаций
Калитин Арсентий Игоревич
КУРСОВАЯ РАБОТА
По дисциплине
Объектно-ориентированное программирование
На тему
Ликеро-водочный завод
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
ЦЕЛЬ И ЗАДАЧИ ВЫПОЛНЕНИЯ РАБОТЫ
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 - Попытка сохранить в файл, доступный только на чтение
5. ТЕСТИРОВАНИЕ
Для тестирования программы производились различные манипуляции с данными.
Проводились следующие тесты:
- ввод неверных значений;
открытие некорректного 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=""#"justify">{.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-файла");
}
}s = openFileDialog1.FileName;
}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++)
{((l.AllClient[j].famil + " " + l.AllClient[j].name + " " + l.AllClient[j].otche) == l.AllOrders[p].namecl)
{.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;
}
}
}
}
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Курсовая работа (т)
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ