Разработка программы "Ресторан"

Исследование предприятий общественного питания. Техническое задание на автоматизированную систему. Разновидности и функции бизнес-процессов кафе. Анализ основных экономических показателей объекта исследования. Проектирование графического интерфейса.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 05.04.2022
Размер файла 1,4 M

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

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

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

Содержание

Введение

1. Нормативные ссылки

2. Исследование предприятий общественного питания

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

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

3. Техническое задание на автоматизированную систему

4. Разновидности и функции бизнес-процессов кафе

4.1 Описание бизнесс-процессов

4.2 Анализ основных экономических показателей объекта исследования

4.3 Организация бизнес-процесса "Логистика"

5. Программирование

5.1 Анализ программного обеспечения

5.2 XML вместо привычного SQL

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

6. Клиенское приложение

6.1 Структура

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

7. Тестирование

Список использованных источников

Приложение А

Приложение Б

Заключение

Введение

интерфейс автоматизированный кафе графический

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

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

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

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

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

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

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

1. Нормативные ссылки

ГОСТ 19.101-77 Единая система программной документации. Виды программ и программных документов.

ГОСТ 37.603-92 Информационная технология. Виды испытаний автоматизированных объектов.

РД 50-37.698-90 Методические указания. Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы. Автоматизированные системы. Требования к содержанию документов.

ГОСТ Р 7.0.5-2008 СИБИД. Библиографическая ссылка. Общие требования и правила составления.

ГОСТ Р 21.1101-2009 СПДС. Основные требования к проектной и рабочей документации.

ГОСТ 27.104-85. Автоматизированные системы управления. Общие требования.

ГОСТ 7.1127-93 ЕСТД. Общие правила выполнения текстовых технологических документов.

ГОСТ 7.1128-93 ЕСТД. Общие правила выполнения графических технологических документов.

ГОСТ 7.1201-85 ЕСТД. Система обозначения технологической документации.

ГОСТ 7.9-95 СИБИД. Реферат и аннотация. Общие требования.

ГОСТ 7.60-2003 СИБИД. Издания. Основные виды. Термины и определения.

2. Исследование предприятий общественного питания

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-

3. Техническое задание на автоматизированную систему

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

1.Система предназначена для решения перечисленных ниже задач:

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

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

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

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

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

2. Характеристика объекта автоматизации.

- Объектом автоматизации являются компьютеры в кабинете администратора, терминалы в зале.

3. Требования к базе данных

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

4. База данных должна иметь проработанный интерфейс.

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

4. Разновидности и функции бизнес-процессов кафе

4.1 Описание бизнесс-процессов

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

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

Рисунок 1 БП ресторан

Рисунок 2 Дерево бизнес-процессов ресторан

Если более развернуто, то (см. рис. 2).

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

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

Рисунок 3 IDEF0-модель деятельности предприятия

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

Элементом структуры управления ресторан служит орган управления в лице администрации предприятия, для этой работы были приглашены специалисты на должности:

1) директор (главный менеджер) - высшее образование, опыт работы в ресторанном бизнесе не менее 5 лет, причем 4 года из них на должности менеджера, должен обладать большими организаторскими способностями и предприимчивостью.

2) юристы - необходимо высшее образование по специальности не менее 5-летний опыт работы, обязательное знание производственного процесса предприятия общественного питания и аудита.

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

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

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

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

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

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

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

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

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

В аппаратной части автоматизация предприятия общепита предполагает использование:

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

· терминалов для приема и обработки заказов;

· контрольно-кассовой техники;

· эквайринговых терминалов;

· денежных ящиков;

· считывателей карт лояльности.

2. Оборудования для склада:

· сканеров для штрих-кодов;

· складских электронных весов;

· терминала сбора данных (ТСД).

3. Оборудования для кухни:

· принтеров заказов, используемых на кухне и альтернативных решений (дисплеев);

· кухонных электронных весов.

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

· вычислительных устройств -- серверов, ПК, мобильных гаджетов;

· сетевых устройств (Wi-Fi-модулей, коммуникаторов).

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

Рисунок 4 IDEF-диаграмма бизнес-процесса управления заказами

Таким образом, мы видим (см.рисунок 4), что данные по заказу вводятся только один раз, после чего идет движение документов без какого-либо ручного ввода товаров, цен и количеств. Все максимально автоматизировано. Когда какая-либо операция исполнена, достаточно провести документ однократным нажатием кнопки. Это занимает минимум времени.

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

4.2 Анализ основных экономических показателей объекта исследования

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

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

Рисунок 5 Модель удовлетворения потребностей клиентов

4.3 Организация бизнес-процесса "Логистика"

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

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

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

Рисунок 6 материальный поток предприятия ресторан

5. Программирование

5.1 Анализ программного обеспечения

Программа предназначена для автоматизации пункта ресторан. Она ведет учет продуктов, учёт клиентов и сотрудников, формирует необходимые документы и отчеты. Основные функциональные возможности программы: сокращение времени и ошибок при обслуживании посетителей за счет работы получение данных бухгалтерского и налогового учета непосредственно из оперативных документов; возможность оперативного получения и анализа информации (прибыльности подразделений/номенклатуры, оборачиваемости запасов, динамики цен, объемов продаж и т.д.) для принятия управленческих решений; специализированный интерфейс - набор экранных форм, учитывающих специфику работы сенсорных экранов POS-систем для быстрого формирования первичных документов: заказов покупателей, выпуска продукции (приготовлению блюд, коктейлей и т.д.), оплаты (чеки);

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

5.2 XML вместо привычного SQL

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

Реляционный аппарат хранения данных реализованный в рамках таких мощных баз данных, как MS SQL Server, Oracle, MySql и т.д. способен удовлетворить фактически всем требованиям к аппарату сервера. На таких средствах строятся и успешно функционируют самые различные системы от интернет-магазинов до систем автоматизации деятельности банков.

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

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

XML обладает рядом преимуществ перед другими языками/форматами описания данных при обмене данными между приложениями:

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

· Поддержка производителями. Библиотеки для работы с XML созданы для всех ведущих языков программирования и популярных СУБД. Использование этих библиотек позволяет существенно уменьшить объем кодирования при разработке “шлюзов” между приложениями.

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

· Иерархичность. Это ключевое свойство языка. В отличие, например, от формата CSV (текстового файла с разделителем “;”), XML позволяет легко описывать сложные структуры данных с неограниченной вложенностью объектов.

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

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

В ООП главным элементом является класс, включающий множество объектов с одинаковыми свойствами, операциями и отношениями. Класс имеет внутреннее (реализацию) и внешнее представление - интерфейс. В данной программе реализованы классы Man, Worker, Food, ListShop, LoadAndSave, Sale, Check а также интерфейс IFIOtoString(см.рисунок 7).

Класс Man является родителем класса Worker. Он содержит общие характеристики, описывающие человека, такие как имя, фамилия, отчество. Класс Worker расширяет класс Man, за счёт чего получается реализация поставщиков и сотрудников. Класс Worker дополняется атрибутами дата устройства на работу, номер телефона, e-mail и наследует интерфейс IFIOtoString, описывающий отображение фамилии, имени, отчества в виде строки.

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

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

- Класс Food описывает пищу и содержит информацию об ингридиентах, цене, количестве приготовленных блюд.

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

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

- Класс Check выводит в чек название блюда, итоговую стоимость, имя, фамилию и отчество сотрудника, который обслуживал, время и дату.

Рисунк 7 диаграмма классов

Рисунок 8 Диаграмма IDEF0

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

6. Клиентское приложение

6.1 Структура

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

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

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

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

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

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

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

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

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

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

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

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

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

Для редактирования записей о сотрудниках, заказчиках, продукции, заказах используется панель, содержащая вкладки: «Сотрудник», «Блюдо», «Заказы», «Поиск», «Чек». Эти вкладки отображены на рисунках 11-14.

Рисунок 11 Вкладка «Сотрудник»

Рисунок 12 Вкладка «Блюдо»

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

Рисунок 14 - Вкладка «Чек»

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

Рисунок 15 Вкладка «Поиск»

Удаление сотрудников, заказчиков, продукции, заказах осуществляется с помощью специальной панели, расположенной на главной форме приложения. Нажатием кнопки «Удалить выбранный» - удаляем из списка сотрудника. Аналогично для других списков. Вкладки отображены на рисунках 16-18:

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

Рисунок 17 Таблица во вкладке «Меню»

Рисунок 18 Таблица во вкладке «Журнал заказов»

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

Рисунок 19 Диалог открытия файла

Выбрав нужный файл XML(см.рисунок 17) и нажав кнопку «Открыть», мы загрузим данные в программу.

7. Тестирование

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

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

Тест 1 - Пустое значение в обязательном поле ввода данных, помеченном символом «*», изображен на рисунке 20:

Рисунок 20 Ввод пустого значения в поле «Отчество»

Сообщение, которое будет показано пользователю после ввода пустого значения, представлено на рисунке 21.

Рисунок 21 Ошибка при вводе пустого значения

Тест 2 - Попытка ввода текста в числовое поле, изображен на рисунке 22:

Рисунок 22 Ввод текста в поле «Стоимость»

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

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

Тест 3 - В полях ввода справа и слева от введенных данных встречаются пробелы. В этом случае они не учитываются и данные в журнал записываются без них, изображен на рисунке 24:

Рисунок 24 Встречаются пробелы слева и справа от введенных данных

Тест 4 - Открытие некорректного XML-файла, изображен на рисунке 25:

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

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

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

Список использованных источников

1. ГОСТ 34.601-90. Информационные технологии. Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Стадии создания.

2. ГОСТ 34.320-96. Информационная технология. Система стандартов по базам данных. Концепции и терминология для концептуальной схемы и информационной базы.

3. Гагарина Л. Г., Киселев Д. В., Федотова Е. Л. Разработка и эксплуатация автоматизированных информационных систем М.: ИД «ФОРУМ», ИНФРА-М, 2012- 384 с.

4. Голицына,О. Л. Системы управления базами данных: учеб. пособие / О. Л. Голицына, Т. Л. Партыка, И. И. Попов. Гриф МО. М.: ФОРУМ - ИНФРА-М, 2011. 431 с.

5. Рудинский, И. Д. Технология проектирования автоматизированных систем обработки информации и управления: учеб. пособие / И. Д. Рудинский. М.: Горячая линия - Телеком, 2011. 304 с.

6. Шелухин, О. И. Моделирование информационных систем: учеб. пособие. 004 / О. И. Шелухин. 2-е изд., перераб. и доп. М.: Горячая линия - Телеком, 2012. 516 с.

7. Юрасов, А. В. Интернет-маркетинг: учебное пособие / А. В. Юрасов, А. В. Иванов ; под ред. А. В. Юрасова. М.: Горячая линия - Телеком, 2012. 246 с.

8. Грекул, В. Проектирование информационных систем [Электронный ресурс]: http://www.intuit.ru/studies/courses/2195/55/info

Приложение А

Листинг библиотеки классов

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml.Serialization;

using System.IO;

namespace KR

{

public class LoadAndSave

{

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

public static ListShop LoadXML(string filename, ListShop listshop)

{

XmlSerializer Serializer = new XmlSerializer(typeof(ListShop));

try

{

using (StreamReader reader = new StreamReader(filename))

{

listshop = (ListShop)Serializer.Deserialize(reader);

}

}

catch (FileNotFoundException)

{

string newXML = @"<?xml version=""1.0"" encoding=""utf-8""?>" + '\n' + @"<ListKafe xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">" + '\n' + "<AllKafe />" + '\n' + "</ListKafe>";

using (StreamWriter writer = new StreamWriter(filename))

{

writer.Write(newXML);

}

}

return listshop;

}

#endregion

#region Save - сохранение экземляра класса Shop в файл

public static bool Save(ListShop listshop, string filename)

{

XmlSerializer sr = new XmlSerializer(listshop.GetType());

StringBuilder sb = new StringBuilder();

StreamWriter SW = new StreamWriter(filename);

sr.Serialize(SW, listshop);

SW.Close();

return true;

}

#endregion

}

public interface IFIOtoString

{

string FIOtoString();

}

#region классы (кафе, сотрудник,блюдо, заказ и др.) и интерфейсы

public class ListShop

{

public List<Worker> AllWorker = new List<Worker>();

public List<Food> AllFood = new List<Food>();

public List<Sale> AllSale = new List<Sale>();

public List<Check> AllCheck = new List<Check>();

}

public class Man

{

string name;

string surname;

string ot;

public string Name

{

get { return name; }

set { name = value; }

}

public string Ot

{

get { return ot; }

set { ot = value; }

}

public string Surname

{

get { return surname; }

set { surname = value; }

}

public Man()

{

name = "";

surname = "";

ot = "";

}

public Man(string Name, string Surname, string Ot)

{

name = Name;

surname = Surname;

ot = Ot;

}

}

[Serializable]

public class Worker: Man, IFIOtoString

{

DateTime ustrdate;

string twnumber;

string wmail;

public DateTime Ustrdate

{

get { return ustrdate; }

set { ustrdate = value; }

}

public string Twnumber

{

get { return twnumber; }

set { twnumber = value; }

}

public string Mail

{

get { return wmail; }

set { wmail = value; }

}

public string FIOtoString()

{

return Name + " " + Ot + " " + Surname;

}

}

[Serializable]

public class Food

{

int id;

string name;

string ingr;

int price;

int kol;

public int ID

{

get { return id; }

set { id = value; }

}

public int Kol

{

get { return kol; }

set { kol = value; }

}

public string Name

{

get { return name; }

set { name = value; }

}

public string Ingr

{

get { return ingr; }

set { ingr = value; }

}

public int Price

{

get { return price; }

set { price = value; }

}

}

public string PrintCheck()

{

int temp=0;

printTime = DateTime.Now;

StringBuilder checkText = new StringBuilder();

checkText.AppendLine("*** Кафе ***");

checkText.AppendLine("Заказы:");

foreach (Sale sale in sales)

{

temp++;

checkText.AppendLine(String.Format("{0}: {1} - {2}*{3} = {4} этот заказ обслуживал {5} {6}", temp, sale.Food.Name,

sale.Food.Price, sale.Kolv, sale.Food.Price*sale.Kolv,sale.Worker.Name,sale.Worker.Surname));

}

checkText.AppendLine(string.Format("Итоговая стоимость {0}", cost));

checkText.AppendLine(string.Format("{0}",printTime));

checkText.AppendLine("***Спасибо за покупку****");

printText = checkText.ToString();

return checkText.ToString();

}

}

#endre

Приложение Б

Листинг клиентского приложения

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace KR

{

public partial class MainForm: Form

{

public MainForm()

{

InitializeComponent();

}

ListShop ListShops = new ListShop();

int sel1 = 0;

int sel2 = 0;

int sel3 = 0;

int sel4 = 0;

private void button2_Click(object sender, EventArgs e) // добавление нового сотрудника

{

if ((textBox1.Text.Trim() == "") || (textBox2.Text.Trim() == "") || (textBox3.Text.Trim() == ""))

{

MessageBox.Show("Не все обязательные поля заполнены");

return;

}

Worker wrk = new Worker();

wrk.Name = textBox2.Text.Trim();

wrk.Ot = textBox3.Text.Trim();

wrk.Surname = textBox1.Text.Trim();

wrk.Twnumber = textBox4.Text.Trim();

wrk.Mail = textBox5.Text.Trim();

wrk.Ustrdate = dateTimePicker1.Value;

ListShops.AllWorker.Add(wrk);

MessageBox.Show("Новый сотрудник добавлен");

button1_Click(sender, e);

}

private void button1_Click(object sender, EventArgs e) // обновление

{

dataGridView1.Rows.Clear();

for (int i = 0; i < ListShops.AllWorker.Count; i++)

{

dataGridView1.Rows.Add(1);

dataGridView1[0, i].Value = ListShops.AllWorker[i].Surname;

dataGridView1[1, i].Value = ListShops.AllWorker[i].Name;

dataGridView1[2, i].Value = ListShops.AllWorker[i].Ot;

dataGridView1[3, i].Value = ListShops.AllWorker[i].Ustrdate;

dataGridView1[4, i].Value = ListShops.AllWorker[i].Twnumber;

dataGridView1[5, i].Value = ListShops.AllWorker[i].Mail;

}

dataGridView3.Rows.Clear();

for (int i = 0; i < ListShops.AllFood.Count; i++)

{

dataGridView3.Rows.Add(1);

dataGridView3[0, i].Value = ListShops.AllFood[i].Name;

dataGridView3[1, i].Value = ListShops.AllFood[i].Ingr;

dataGridView3[2, i].Value = ListShops.AllFood[i].Price;

}

dataGridView4.Rows.Clear();

for (int i = 0; i < ListShops.AllSale.Count; i++)

{

dataGridView4.Rows.Add(1);

dataGridView4[0, i].Value = ListShops.AllSale[i].Food.Name;

dataGridView4[1, i].Value = ListShops.AllSale[i].Date;

dataGridView4[2, i].Value = ListShops.AllSale[i].Worker.Surname + " " + ListShops.AllSale[i].Worker.Name + " " + ListShops.AllSale[i].Worker.Ot;

dataGridView4[3, i].Value = ListShops.AllSale[i].Kolv;

}

if (ListShops.AllWorker.Count > 0)

{

comboBox4.Items.Clear();

for (int i = 0; i < ListShops.AllWorker.Count; i++)

{

comboBox4.Items.Add(ListShops.AllWorker[i].Surname + " " + ListShops.AllWorker[i].Name + " " + ListShops.AllWorker[i].Ot);

}

}

if (ListShops.AllFood.Count > 0)

{

comboBox1.Items.Clear();

for (int i = 0; i < ListShops.AllFood.Count; i++)

{

comboBox1.Items.Add(ListShops.AllFood[i].Name + " " + ListShops.AllFood[i].Ingr + " ");

}

}

}

private void button4_Click(object sender, EventArgs e) // добавление нового блюда

{

if ((textBox12.Text.Trim() == "") || (textBox13.Text.Trim() == "") || (textBox16.Text.Trim() == "") )

{

MessageBox.Show("Не все обязательные поля заполнены");

return;

}

Food org = new Food();

org.Name = textBox12.Text.Trim();

org.Ingr = textBox13.Text.Trim();

try

{

org.Price = int.Parse(textBox16.Text.Trim());

int x = ListShops.AllFood.Count;

if (x != 0)

{

for (int i = 0; i < x; i++)

{

ListShops.AllFood.Add(org);

MessageBox.Show("Продукция успешно добавлена");

}

}

else

{

ListShops.AllFood.Add(org);

MessageBox.Show("Продукция успешно добавлена");

}

button1_Click(sender, e);

}

catch (FormatException)

{

MessageBox.Show("Неверный формат ввода");

}

}

private void button5_Click(object sender, EventArgs e) // добавление нового заказа

{

if ((comboBox1.Text.Trim() == "") || (comboBox4.Text.Trim() == ""))

{

MessageBox.Show("Не все обязательные поля заполены");

return;

}

Sale sl = new Sale();

sl.Food = ListShops.AllFood[comboBox1.SelectedIndex];

sl.Worker = ListShops.AllWorker[comboBox4.SelectedIndex];

sl.Date = dateTimePicker3.Value;

sl.Kolv = (byte)numericUpDown1.Value;

ListShops.AllFood[comboBox1.SelectedIndex].Kol -= sl.Kolv;

ListShops.AllSale.Add(sl);

MessageBox.Show("Успешно добавлено!");

private void button10_Click(object sender, EventArgs e) // поиск

{

dataGridView5.Rows.Clear();

int count = 0;

for (int i = 0; i < ListShops.AllSale.Count; i++)

{

if (ListShops.AllSale[i].Date.ToShortDateString() == dateTimePicker3.Value.ToShortDateString())

{

dataGridView5.Rows.Add(1);

dataGridView5[0, count].Value = ListShops.AllSale[i].Food.Name + " " + ListShops.AllSale[i].Food.Ingr;

dataGridView5[1, count].Value = ListShops.AllSale[i].Worker.Surname + " " + ListShops.AllSale[i].Worker.Name + " " + ListShops.AllSale[i].Worker.Ot;

dataGridView5[2, count].Value = ListShops.AllSale[i].Kolv;

dataGridView5[3, count].Value = ListShops.AllSale[i].Food.Price;

}

}

}

private void exitToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

private void aboutToolStripMenuItem_Click(object sender, EventArgs e)

{

About about = new About();

about.ShowDialog();

}

private void openToolStripMenuItem_Click(object sender, EventArgs e)

{

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

{

try

{

ListShops = LoadAndSave.LoadXML(openFileDialog1.FileName, ListShops);

}

catch (InvalidOperationException)

{

MessageBox.Show("Ошибка чтения XML-файла");

}

}

button1_Click(sender, e);

}

private void saveToolStripMenuItem_Click(object sender, EventArgs e)

{

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

{

try

{

LoadAndSave.Save(ListShops, saveFileDialog1.FileName);

MessageBox.Show("Файл сохранен");

}

catch (UnauthorizedAccessException)

{

MessageBox.Show("Невозможно сохранить файл");

}

}

}

private void button3_Click(object sender, EventArgs e)

{

Check newCheck = new Check();

if (listBox1.SelectedItems.Count!=0)

{

foreach (int sale in listBox1.SelectedIndices)

{

newCheck.AddSale(ListShops.AllSale[sale]);

}

ListShops.AllCheck.Add(newCheck);

MessageBox.Show(newCheck.PrintCheck());

}

else

{

MessageBox.Show("Вы должны выбрать заказы");

}

}

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)

{

if (tabControl2.TabIndex == 2)

{

listBox1.Items.Clear();

foreach (var sale in ListShops.AllSale)

{

listBox1.Items.Add(string.Format("{0} - {1}", sale.Food.Name, sale.Date.ToShortTimeString()));

}

}

}

private void dataGridView4_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

}

private void tabPage4_Click(object sender, EventArgs e)

{

}

}

}

Заключение

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

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

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

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

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

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

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

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

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

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

...

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

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