Программное обеспечение для реализации бронирования столов в заведениях общественного питания

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

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

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

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

1. DisplayDateStart и DisplayDateEnd.

Устанавливают диапазон дат, которые выводятся в календаре - от самой ранней даты (DisplayDateStart) до самой поздней (DisplayDateEnd). Пользователь не может перейти к месяцам, в которых нет ни одной отображаемой даты. Чтобы разрешить все даты, можно занести в свойство DisplayDateStart значение DateTime.MinValue, а в свойство DisplayDateEnd - значение DateTime.MaxValue.

2. BlackoutDates.

Содержит коллекцию дат, которые будут в календаре неактивными, т.е. их невозможно выбрать. Если эти даты не входят в диапазон отображаемых дат, или одна из этих дат уже выбрана, возникает исключение. Чтобы запретить выбор любой прошедшей даты, необходимо вызвать метод BlackoutDates.AddDatesInPast().

3. SelectedDate.

Предоставляет выбранную дату в виде объекта DateTime (или пустое значение, если не выбран ни один день). Его можно задать программно, щелчком на одном из дней в календаре или вводом строки в поле даты (элемента DatePicker). В представлении календаря выбранная дата отмечается затененным квадратиком, который виден лишь тогда, когда данный элемент имеет фокус ввода.

4. SelectedDates.

Содержит выбранные даты в виде коллекции объектов DateTime. Это свойство поддерживается классом Calendar и имеет смысл только тогда, когда установлено свойство SelectionMode, позволяющее выбрать несколько дат.

5. DisplayDate.

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

6. FirstDayOfWeek.

Определяет день недели, который выводится в начале (слева) каждой строки календаря.

7. IsTodayHighlighted.

Определяет, должна ли быть выделена в календаре текущая дата.

8. IsDropDownOpen.

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

9. SelectedDateFormat.

Определяет отображение выбранной даты в текстовой части элемента DatePicker. Допустимые варианты - Short (краткий формат) или Long (длинный формат). Конкретный формат отображения даты зависит от региональных настроек клиентского компьютера. Например, при значении Short дата может быть выведена в формате ГГГГ/ММ/ДД или ДД/ММ/ГГГГ. Длинный формат обычно содержит названия месяца и дня. [17]

ListBox

Класс ListBox представляет распространенный компонент среды Windows - списки переменной длины, которые позволяют пользователю выбрать один из элементов.[17]

Класс ListBox допускает множественный выбор, если его свойству SelectionMode присвоить значение Multiple или Extended. В режиме Multiple можно выбрать любой элемент или отменить его выбор, щелкнув на нем. В режиме Extended необходимо прижать клавишу <Ctrl>, чтобы выбрать дополнительные элементы, или клавишу <Shift>, чтобы выбрать диапазон элементов. В любом виде списка с множественным выбором для получения всех выделенных элементов вместо свойства SelectedItem используется коллекция SelectedItems.[17]

Разные элементы управления обрабатывают вложенное в них содержимое по-разному. Объект ListBox хранит все вложенные объекты в своей коллекции Items.[17]

ListBox является довольно гибким элементом управления. Он может хранить не только объекты ListBoxItem, но и любые произвольные элементы. Ведь класс ListBoxItem является наследником класса ContentControl, который позволяет хранить фрагменты вложенного содержимого. Если такой фрагмент является классом, порожденным от UIElement, то он будет отображен в элементе ListBox. Если же это другой тип объекта, ListBox вызовет метод ToString() и выведет полученный текст.[17]

Объекты ListBox способны неявно создавать необходимые им объекты ListBoxItem. Это означает, что объекты можно помещать прямо внутрь элемента ListBox.[17]

Возможность заносить в списки произвольные элементы позволяет создавать различные основанные на списке элементы управления, не используя при этом другие классы. Например, в Windows Forms имеется специальный класс CheckedListBox, отображаемый как список с флажками около каждого элемента. В WPF для этого не нужен никакой специальный класс, поскольку его можно быстро создать с помощью стандартного объекта ListBox.[17]

При использовании списка, содержащего разные элементы, нужно иметь в виду, что при считывании значения SelectedItem (а также коллекций SelectedItems и Items) объекты ListBoxItem будут не видны - вместо них будут видны те объекты, которые занесены в список. В примере с элементом CheckedListBox это означает, что SelectedItem предоставляет объект CheckBox.[17]

Если нужно найти выделенный в данный момент элемент, его можно прочитать непосредственно из свойства SelectedItem или SelectedItems. Если нужно определить, с какого элемента был снят выбор (если такое вообще было), можно воспользоваться свойством RemovedItems объекта SelectionChangedEventArgs.[17]

Аналогично, свойство AddedItems сообщает, какие элементы были добавлены в число выбранных. В режиме выбора одного элемента при изменении выбора всегда может быть добавлен лишь один элемент, и удален тоже только один элемент. В режиме множественного выбора или в расширенном режиме так бывает не всегда.[17]

В классе ListBoxItem имеется небольшая дополнительная возможность: в нем определено свойство IsSelected, значение которого можно считывать (или устанавливать), и события Selected и Unselected, которые сообщают о выделении данного элемента. Однако похожие возможности можно получить с помощью членов класса ListBox - свойства SelectedItem (или SelectedItems) и события SelectionChanged.[17]

2.2 Функциональная схема программы

При разработке программы «Бронирование столов» была составлена блок-схема работы программы, в которой отражена логика работы приложения. Блок-схема изображена на рисунке 2.2.1.

Рис. 2.1 - Блок-схема работы программы

Из схемы следует, что после запуска программы пользователь выбирает дату бронирования, время, на которое клиент хочет забронировать стол, стол, подходящий по вместимости потребностям гостя, вводит данные клиента. После нажатия кнопки «Сохранить бронь» программа проверяет правильность введенных данных клиента в поля «Фамилия и имя» и «Количество человек» (проверка на целое число). Если данные введены неверно, программа выдаст сообщение об ошибке (либо «Введите фамилию и имя клиента!», либо «Количество человек должно быть целым числом!»). Если данные введены верно, то программа сохраняет данные в файл расширения xml с названием формата «[mm-dd-yyyy]Reservations».

2.3 Работа программы

При запуске программы перед пользователем открывается главное окно, в котором находятся следующие элементы: ReservationBlocksListBox, Label«Время», поле DateTextBlock, DatePicker, кнопка «Импорт». В нем так же содержится подсказка для пользователя («Выберите время и стол»). Так же в этом окне можно выбрать дату бронирования, нажав на значок календаря (DatePicker) в поле «Выбор даты» или импортировать данные нажатием кнопки «Импорт». По умолчанию в программе используется текущая системная дата, которая отображается в поле DateTextBlock (рис. 2.2).

После выбора даты (рис. 2.3) в DateTextBlock дата с текущей меняется на выбранную в DatePicker (рис. 2.4).

Рис. 2.2 - Главное окно программы

Рис. 2.3 - Выбор даты в DatePicker

Рис. 2.4 - Изменение даты в DateTextBlock с текущей на выбранную

После выбора даты пользователь должен выбрать время, на которое клиент хочет забронировать стол. Выбрав нужное время и нажав на него в ReservationBlocksListBox (рис. 2.5), в главном окне появляется элемент TablesDataGrid, содержащий таблицу номеров столов и их вместимости. После выбора нужного стола с соответствующей клиентским запросам вместимостью в главном окне появляются поля для ввода данных(NameTextBox, PhoneNumberTextBox и NumberInPartyTextBox) и кнопки SaveButton и DeleteButton, предназначенные для сохранения и удаления брони соответственно(рис. 2.6). Пользователю необходимо ввести нужные данные в соответствующие поля, после чего он может нажать кнопку «Сохранить бронь» соответственно (рис. 2.7).

Рис. 2.5 - Отображение TablesDataGrid в главном окне

Рис. 2.6 - Отображение полей для ввода данных после выбора нужного стола в TablesDataGrid

Рис. 2.7 - Ввод данных в соответствующие поля

После нажатия кнопки «Сохранить бронь» проверим правильность сохранения данных в файл. Для этого, перезапустив программу, необходимо нажать кнопку ImportButton и найти в диалоговом окне нужный файл (в нашем случае, это 06-21-2017Reservations.xml), после чего нажать кнопку «Открыть» (рис. 2.8).

Рис. 2.8 - Диалоговое окно импорта файла

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

Следующим шагом проверим удаление брони. Нажав кнопку «Удалить бронь», перезапустим программу. Снова выполнив импорт файла и, найдя нужное время и стол, станет видно, что бронь была удалена из файла (рис. 2.10).

Рис. 2.9 - Проверка правильности сохранения брони в файл и импорта из файла

Следующим шагом проверим программу на правильность появлений сообщений о тех или иных ошибках. Начнем с отсутствия данных в поле NameTextBox, наличие которых обязательно. При отсутствии данных и при нажатии кнопки «Сохранить бронь» появляется сообщение об ошибке с текстом «Введите фамилию и имя гостя!» (рис. 2.11).

Рис. 2.10 - Проверка правильности удаления брони из файла

Далее необходимо проверить соответствие количества человек по брони и максимальной вместимости выбранного стола. Если в поле NumberInParty ввести число, превышающее вместимость стола, то при нажатии кнопки появляется сообщение об ошибке с текстом «Количество человек превышает вместимость выбранного стола!» (рис. 2.12).

Следующей проверкой является обязательность ввода целого числа в поле NumberInParty. При вводе диапазона и при нажатии кнопки «Сохранить бронь» появляется сообщение об ошибке с текстом «Количество человек должно быть целым числом!» (рис. 2.13).

Рис. 2.11 - Сообщение об ошибке при отсутствии необходимых данных в поле NameTextBox

Рис. 2.12 - Сообщение об ошибке при превышении вместимости

Рис. 2.13 - Сообщение об ошибке при вводе диапазона чисел

При нажатии кнопки «Удалить бронь» программа проверяет наличие сохраненных в файле данных. Если данных нет, то программа выдает сообщение об ошибке «Не найдено брони для удаления!». Если таковые данные есть, то программа удаляет их (они выводятся в соответствующие поля для удобства пользователя) (рис. 2.14).

Рис. 2.14 - Сообщение об ошибке при отсутствии данных для удаления

2.4 Перспективы разработки

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

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

Заключение

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

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

· пользовательский интерфейс для реализации бронирования столов;

· возможность сохранить данные по брони в xml-файл;

· возможность импорта данных из xml-файла;

· защита от возможных ошибок пользователя при заполнении формы данных клиента.

В ходе разработки были изучены материалы по ныне существующим системам для бронирования столов в заведениях общественного питания и документация для Microsoft Visual Studio. Данная документация помогла реализовать большую часть задуманного для данной программы функционала: работа с XAML и работа с LINQ.

На диаграмме классов UML отображена разработанная иерархия классов программы для бронирования столов в заведениях общественного питания. Сохранение данных в программе реализовано посредством xml-файла.

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

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


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

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