Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Моделирование предметной области. Учет предоставленных услуг салоном красоты с помощью UML

Содержание:

ВВЕДЕНИЕ

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

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

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

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

Индустрия красоты вошла прочно в нашу жизнь.

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

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

Человек не только владеет знаниям вариантом услуг, но и их рыночной стоимости. Индустрия красоты стала в ценовом плане вполне разумной. Поэтому единственной конкуренцией между лучшими является качество предлагаемой услуги и выбору вариантов услуг. Это и объясняет рост клиентской базы салонов красоты и центров эстетической медицины.

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

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

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

Объектную модель предметной области можно построить с помощью визуального объектного языка моделирования UML или в виде программного продукта на некотором языке программирования, поддерживающем объектную технологию программирования, примером которого является язык Object Pascal.

Целью данного исследования, является изучение объектно–ориентированной методологии и технологии программирования на примере языка Object Pascal, методов и инструментов построения объектных моделей предметных областей, применение полученных знаний для построения объектной модели предметной области «Учет предоставленных услуг салоном красоты».

Для достижения цели данного исследования поставлены следующие задачи:

  • Изучить основные теоретические положения объектно-ориентированной методологии;
  • Рассмотреть язык UML и построить объектную модель предметной области с применением данного языка;
  • Разработать приложение, использующее набор классов для представления информации о клиентах салона красоты «Фиалка».

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

Предметом исследования настоящего исследования являются объектная модель предметной области «Учет предоставленных услуг салоном красоты» и ее основные свойства.

1. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОЙ МЕТОДОЛОГИИ И ЯЗЫК UML

1.1 Основные понятия объектно-ориентированного подхода

предметный язык программирование модель

«Термины «объектно-» и «ориентированный» в современном смысле этих слов появились в MIT в конце 1950 начале 1960 годов. В среде специалистов по искусственному интеллекту термин «объект» мог относиться к идентифицированным элементам (атомы Lisp) со свойствами (атрибутами). Алан Кэй позже писал, что понимание внутреннего устройства Лиспа оказало серьезное влияние на его мышление в 1966 г. Другим ранним примером ООП в MIT был Sketchpad созданный Иваном Сазерлендом в 1960-61. В глоссарии подготовленного в 1963 г. технического отчета, основанного на его диссертации о Sketchpad, Сазерленд определяет понятия «объект» и «экземпляр» с концепцией классов на основе «мастера» или «определения», хотя все эти термины относились к графическому представлению объектов.

В ранней MIT-версии ALGOL AED-0 структуры данных («плексы» на диалекте Алгола) напрямую были связаны с процедурами, которые впоследствии были названы сообщениями, методами или функциями-членами.

Объекты, как формализованный концепт появились в программировании в 1960-х в Simula 67, модернизированной версии Simula I, языка программирования, ориентированного на дискретно-событийное моделирование. Авторы Simula — Оле-Йохан Даль и Кристен Нюгорд из Норвежского компьютерного центра в Осло. Simula разрабатывалась под влиянием SIMSCRIPT и предложенной Чарльзом Хоаром концепцией записей-классов. Simula включала в себя понятие классов и экземпляров (или объектов), а также подклассов, виртуальных методов, сопрограмм и дискретно-событийное моделирование как часть собственной парадигмы программирования. В языке использовался автоматический сборщик мусора, который был изобретен ранее для функционального языка Lisp. Simula использовалась тогда преимущественно для физического моделирования. Идеи Simula оказали серьезное влияние на более поздние языки, такие как Smalltalk, варианты Lisp (CLOS), Object Pascal, и C++.

Язык Smalltalk, который был изобретен в компании Xerox PARC Аланом Кэем (Alan Kay) и некоторыми другими учеными, фактически навязывал использование «объектов» и «сообщений» как базиса для вычислений. Создателей Smalltalk вдохновляли некоторые идеи Simula, но Smalltalk разрабатывался как полностью динамичная система, в которой классы могут создаваться и изменяться динамически, а не только статически как в Simula. Smalltalk и ООП с его помощью были представлены широкой аудитории в журнале Byte magazine в августе 1981.

В 1970-х Smalltalk Кэя сподвиг сообщество Lisp внедрить в язык объектно-ориентированные техники, которые были представлены разработчикам с помощью Lisp машины.

Эксперименты с различными расширениями Lisp в конечном итоге привели к созданию Common Lisp Object System (CLOS, части первого стандартизованного объектно-ориентированного языка, ANSI Common Lisp), который органично включал в себя как функциональное, так и объектно-ориентированное программирование и позволял расширять себя с помощью протокола Meta-object protocol. В 1980 было несколько попыток дизайна архитектур процессоров, которые включали бы в себя аппаратную поддержку работы с объектами в памяти, но все они были безуспешны. В качестве примеров можно привести Intel iAPX 432 и Linn Smart Rekursiv.

Объектно-ориентированное программирование развилось в доминирующую методологию программирования в начале и середине 1990 годов, когда стали широко доступны поддерживающие ее языки программирования, такие как Visual FoxPro 3.0, C++, и Delphi. Доминирование этой системы поддерживалось ростом популярности графических интерфейсов пользователя, которые основывались на техниках ООП. Пример тесной связи между динамической библиотекой GUI и объектно-ориентированного языка программирования можно найти посмотрев на фреймворк Cocoa на Mac OS X, который был написан на Objective-C, объектно-ориентированом расширении к С, основанном на Smalltalk с поддержкой динамических сообщений. Инструментарии ООП повлияли на популярность событийно-ориентированного программирования (хотя, эта концепция не ограничивается одним ООП). Некоторые даже думали, что кажущаяся или реальная связь с графическими интерфейсами – это то, что вынесло ООП на передний план технологий.

В ETH Zürich, Никлаус Вирт и его коллеги тоже исследовали такие предметы, как абстрация данных и модульное программирование, хотя эти подходы широко использовались и в 60-х и ранее. Modula-2 вышедшая в 1978 включала оба эти подхода, а ее последователь Oberon имел собственный подход к объктно-ориентированности, классам и прочему, непохожий на подход Smalltalk и совсем не похожий на подход C++.

Возможности ООП добавлялись во многие языки того времени, включая Ada, BASIC, Fortran, Pascal и другие. Их добавление в языки, изначально не разрабатывавшиеся для поддержки ООП часто приводило к проблемам с совместимостью и поддержкой кода.

Позднее стали появляться языки, поддерживающие как объектно-ориентированный подход, так и процедурный вроде Python и Ruby. Пожалуй, самыми коммерчески успешными объектно-ориентированными языками можно назвать Visual Basic.NET, C# и Java. И .NET и Java демонстрируют превосходство ООП.»

«SIMULA I (1962-65) и Simula 67 (1967) — два первых объектно-ориентированных языка программирования. Simula 67 включала в себя большую часть концепций объектно-ориентированного программирования: классы и объекты, подклассы (наследование), виртуальные функции, безопасные ссылки и механизмы, позволяющие внести в программу коллекцию программных структур, описанных общим заголовком класса (префиксные блоки).

Алан Кэй из Xerox PARC использовал Simula как платформу для его разработки Smalltalk (первых версий языка в 1970-х), расширяя объектно-ориентированное программирование с помощью интеграции пользовательского интерфейса и интерактивного исполнения. Бьерн Страусструпп начал разработку C++ (в 1980-х) by привнеся основные концепции Simula в С.»

Получается, что первым ООП языком была Simula. Но первым «чистым» ООП языком был именно Smalltalk. «Чистым» иногда называют ООП язык, все типы которого являются или могут быть прозрачно представленными классами.

Объектно-ориентированное программирование – парадигма, научный подход к программированию, который разрабатывался не в вакууме, а большой группой ученых. Вклад Кэя в ООП неоценим, но говорить, что ООП – целиком и полностью его изобретение будет несправедливо по отношению ко многим другим ученым, работавшим как вместе с ним, так и отдельно. Кэй действительно когда-то говорил, “I didn't like the way Simula I or Simula 67 did inheritance (though I thought Nygaard and Dahl were just tremendous thinkers and designers). So I decided to leave out inheritance as a built-in feature until I understood it better.” Как вы понимаете, монополия на изобретение ООП им не заявлялась.

Говорить, что в ООП нет наследования (и всяких прочих современных штучек) и что те, кто его туда привнес извратили смысл и суть ООП, это все равно, что говорить, что геометрия Лобачевского извратила геометрию, изобретенную Евклидом и ее срочно нужно переименовать в «шарометрию» или «гиперболометрию», чтобы грязные руки неофитов не смели касаться святого. Геометрия Римана – вообще тогда от сатаны, а бозонную струнную теорию нельзя преподавать в университетах потому, что это не то, что описывал Габриэле Венециано и его коллеги.

1.2 Язык UML и его специфика

UML – это ун’ифицированный графический язык моделирован’ия для описан’ия, визуализации, п’роектирован’ия и документирован’ия ОО систем. UML п’ризван поддерживат’ь п’роцесс моделирован’ия ПС на основе ОО подхода, орган’изовыват’ь взаимосвяз’ь концептуал’ьных и п’рограммных понятий, отражат’ь п’роблемы масштабирован’ия сложных систем. Модели на UML испол’ьзуются на всех этапах жизненного цикла ПС, начиная с бизнес-анализа и заканчивая соп’ровожден’ием системы. Разные орган’изации могут п’рименят’ь UML по своему усмотрен’ию в зависимости от своих п’роблемных областей и испол’ьзуемых технологий.

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

По зап’росу Object Management Group (OMG) – орган’изации, ответственной за п’ринятие стандартов в области объектных технологий и баз данных назревшая п’роблема ун’ификации и стандартизации была решена авторами трех наиболее популярных ОО методов – Г.Бучем, Д.Рамбо и А.Джекобсоном, которые объединенными усилиями создали версию UML 1.1, утвержденную OMG в 1997 году в качестве стандарта.

Любой язык состоит из словаря и п’равил комбин’ирован’ия слов для получен’ия осмысленных конструкций. Так, в частности, устроены языки п’рограммирован’ия, таковым является и UML. Отличител’ьной его особенност’ью является то, что словар’ь языка образуют графические элементы. Каждому графическому символу соответствует конкретная семантика, поэтому модел’ь, созданная одн’им разработчиком, может однозначно быт’ь понята другим, а также п’рограммным средством, интерп’ретирующим UML. Отсюда, в частности, следует, что модел’ь ПС, п’редставленная на UML, может автоматически быт’ь переведена на ОО язык п’рограммирован’ия (такой, как Java, C++, VisualBasic), то ест’ь, п’ри наличии хорошего инструментал’ьного средства визуал’ьного моделирован’ия, поддерживающего UML, построив модел’ь, мы получим и заготовку п’рограммного кода, соответствующего этой модели.

Следует подчеркнут’ь, что UML – это именно язык, а не метод. Он объясняет, из каких элементов создават’ь модели и как их читат’ь, но н’ичего не говорит о том, какие модели и в каких случаях следует разрабатыват’ь. Чтобы создат’ь метод на базе UML, надо дополн’ит’ь его описан’ием п’роцесса разработки ПС. П’римером такого п’роцесса является Rational Unified Process, который будет рассматриват’ься в последующих стат’ьях.

Модел’ь п’редставляется в виде сущностей и отношен’ий между н’ими, которые показываются на диаграммах.

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

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

  • Зависимост’ь показывает такую связ’ь между двумя сущностями, когда изменен’ие одной из н’их – независимой – может повлият’ь на семантику другой – зависимой. Зависимост’ь изображается пунктирной стрелкой, нап’равленной от зависимой сущности к независимой.
  • Ассоциация – это структурное отношен’ие, показывающее, что объекты одной сущности связаны с объектами другой. Графически ассоциация показывается в виде лин’ии, соединяющей связываемые сущности. Ассоциации служат для осуществлен’ия навигации между объектами. Нап’ример, ассоциация между классами «Заказ» и «Товар» может быт’ь испол’ьзована для нахожден’ия всех товаров, указанных в конкретном заказе – с одной стороны, или для нахожден’ия всех заказов в которых ест’ь данный товар, – с другой. Понятно, что в соответствующих п’рограммах должен быт’ь реализован механ’изм, обеспечивающий такую навигацию. Если требуется навигация тол’ько в одном нап’равлен’ии, оно показывается стрелкой на конце ассоциации. Частным случаем ассоциации является агрегирован’ие – отношен’ие вида «целое» – «част’ь». Графически оно выделяется с помощ’ью ромбика на конце около сущности-целого.
  • Обобщен’ие – это отношен’ие между сущност’ью-родителем и сущност’ью-потомком. По существу, это отношен’ие отражает свойство наследован’ия для классов и объектов. Обобщен’ие показывается в виде лин’ии, заканчивающейся треугол’ьн’ичком нап’равленным к родител’ьской сущности. Потомок наследует структуру (атрибуты) и поведен’ие (методы) родителя, но в то же время он может имет’ь новые элементы структуры и новые методы. UML допускает множественное наследован’ие, когда сущност’ь связана более чем с одной родител’ьской сущност’ью.
  • Реализация – отношен’ие между сущност’ью, оп’ределяющей спецификацию поведен’ия (интерфейс) с сущност’ью, оп’ределяющей реализацию этого поведен’ия (класс, компонент). Это отношен’ие обычно испол’ьзуется п’ри моделирован’ии компонент и будет подробнее описано в последующих стат’ьях.

Диаграммы. В UML п’редусмотрены следующие диаграммы:

  • Диаграммы, описывающие поведен’ие системы:
    • Диаграммы состоян’ий (State diagrams),
    • Диаграммы деятел’ьностей (Activity diagrams),
    • Диаграммы объектов (Object diagrams),
    • Диаграммы последовател’ьностей (Sequence diagrams),
    • Диаграммы взаимодействия (Collaboration diagrams);
  • Диаграммы, описывающие физическую реализацию системы:
    • Диаграммы компонент (Component diagrams);
    • Диаграммы развертыван’ия (Deployment diagrams).

П’редставлен’ие уп’равлен’ия модел’ью. Пакеты.

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

Что обеспечивает UML.

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

Несмотря на всю п’ривлекател’ьност’ь UML, его было бы затрудн’ител’ьно испол’ьзоват’ь п’ри реал’ьном моделирован’ии ПС без инструментал’ьных средств визуал’ьного моделирован’ия. Такие средства позволяют оперативно п’редставлят’ь диаграммы на экране дисплея, документироват’ь их, генерироват’ь заготовки п’рограммных кодов на различных ОО языках п’рограммирован’ия, создават’ь схемы баз данных. Бол’ьшинство из н’их включают возможности реинжин’иринга п’рограммных кодов – восстановлен’ия оп’ределенных п’роекций модели ПС путем автоматического анализа исходных кодов п’рограмм, что очен’ь важно для обеспечен’ия соответствия модели и кодов и п’ри п’роектирован’ии систем, наследующих функционал’ьност’ь систем-п’редшественн’иков.

2. ПОСТРОЕНИЕ ОБЪЕКТНОЙ МОДЕЛИ ПРЕДМЕТНОЙ ОБЛАСТИ «УЧЕТ ПРЕДОСТАВЛЕННЫХ УСЛУГ САЛОНОМ КРАСОТЫ ФИАЛКА» С ПОМОЩЬЮ UML

2.1 Общая характеристика салона красоты Фиалка

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

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

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

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

В работе данного салона используется линейная структура управления.

2.2 Описание функционирования предметной области «Учет предоставленных услуг салоном красоты»

В салоне красоты работают четыре секции:

  • Парикмахерская
  • Маникюр-педикюр
  • Тату-салон
  • Массаж.

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

  • Данные о клиентах заносятся в таблицу с указанием 5 полей: Фамилия, Имя, Возраст, Телефон, Секция.
  • Клиенты распределяются по секциям, в которые подана заявка.

Для организации корректной работы салона, согласования работы секций, занятости мастеров, администратор салона красоты заполняет расписание.

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

В программе UML создадим пять полей: Имя задается строкой (string) «Name»; Фамилия задается строкой (string) «Famil»; Возраст хранится в числовой переменной (int) «Age»; телефон задается строкой (string) «Tel»; Секция, к которой относится клиент салона красоты, задается строкой (string) «Sekc».

TPeople = class

Name: String;

Famil: String;

Age: Integer;

tel: String;

sekc: String;

constructor Create(AName: String);

end;

При этом ввод полей используется двумя способами:

Загрузка значения из сохраненного файла с расширением LST. (Рис 2.1.)

Метод организован с помощью функции OpenDlg, при этом каждая строка класса считывается, как отдельное значение.

var F: TextFile;

i: Integer;

begin

try

with OpenDlg, PersonsList.Items do

begin

if Not Execute then Exit;

LoadFromFile(FileName);

AssignFile(F, Copy(FileName,1,Length(FileName)-4)+'.lso');

Reset(F);

i := 0;

while Not EOF(F) do

begin

Objects[i] := TPeople.Create('');

Readln(F, (Objects[i] as TPeople).Name);

Readln(F, (Objects[i] as TPeople).Famil);

Readln(F, (Objects[i] as TPeople).Age);

Readln(F, (Objects[i] as TPeople).tel);

Readln(F, (Objects[i] as TPeople).sekc);

Inc(i);

end;

CloseFile(F);

end;

except

on E: EFOpenError do ShowMessage('Ошибка открытия файла');

end;end;

Рис. 2.1 Загрузка файла.

Вторым методом заполнения таблицы является ввод с помощью компонентов Edit.(Рис. 2.2.)

Рис. 2.2 Заполнение таблицы путем компонента Edit.

Причем значение поля «Секция» выбирается из значений компонента Combobox и присваивается строке «Sekc».

Введенные значения могут корректироваться путем выбора нужного значения и нажатия кнопки «Изменить»

Удаление одной записи осуществляется с помощью выбора значения и нажатия кнопки «Удалить».

Для того, чтобы очистить все записи нужно нажать кнопку «Очистить».

Оба способа удаления осуществлены следующими методами:

procedure TMainForm.ToolButton4Click(Sender: TObject);

begin

with PersonsList do Items.Delete(ItemIndex);

end;

procedure TMainForm.ToolButton5Click(Sender: TObject);

begin

PersonsList.Items.Clear;

end;

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

Как уже упоминалось ранее, в салоне красоты у каждой секции есть свое расписание. В программе открыть расписание можно с помощью кнопки «Посмотреть расписание». После нажатия данной кнопки открывается вторая форма приложения салона красоты.

Выбор секции осуществляется с помощью компонента Combobox, таким же способом, как и указывался ранее. После выбора секции при нажатии кнопки «расписание мастеров», на форму в компоненты Label выводится время работы мастеров по дням недели.

Расписание организовано с помощью следующего метода:

if

Combobox1.ItemIndex = 0 then

Begin

Label6.Caption:= '19.30';

label7.Caption:= ' ';

label8.Caption:= '16.00';

label9.Caption:= ' ';

label10.Caption:='17.00';

end;

if

Combobox1.ItemIndex = 1 then

Begin

Label6.Caption:= '15.30';

label7.Caption:= ' ';

label8.Caption:= '20.00';

label9.Caption:= ' ';

label10.Caption:='19.30';

end;

if

Combobox1.ItemIndex = 2 then

Begin

Label6.Caption:= '';

label7.Caption:= '16.15 ';

label8.Caption:= ' ';

label9.Caption:= '17.00 ';

label10.Caption:=' ';

end;

if

Combobox1.ItemIndex = 3 then

Begin

Label6.Caption:= ' ';

label7.Caption:= '19.15 ';

label8.Caption:= ' ';

label9.Caption:= '20.00 ';

label10.Caption:=' ';

end;

Таким образом, получаем дерево диалога с интерфейсом приложения (Рис. 2.3)

Рис. 2.3 Схема работы с интерфейсом приложения.

ЗАКЛЮЧЕНИЕ

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

В результате данного исследования, рассмотрены объектно-ориентированной методологии и технологии программирования на примере языка Object Pascal, методов и инструментов построения объектных моделей предметных областей. Полученные знания были применены для построения объектной модели предметной области «Учет предоставленных услуг салоном красоты» на примере салона Фиалка.

Для достижения цели данного исследования были выполнены следующие задачи:

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

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

  • Описательный метод применяется при изложении теоретических аспектов проблемы и краткой характеристике объекта исследования.
  • Метод сравнения и анализа. Позволяет сопоставлять различные взгляды на рассматриваемую тему и провести диагностику объекта исследования.
  • Системный подход. Был использован с целью обобщения полученных результатов и выявления их логической взаимосвязи.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Автоматизированные Системы Стадии создания. ГОСТ 34.601-90. Комплекс стандартов на автоматизированные системы ИПК издательство стандартов. 1997
  2. Алгоритмические языки и программирование. Система программирования DELPHI / разраб. Т.А. Лабзина. – М.: Совр. Гум. Ун-т, 2012.
  3. Ахангельский А.Я. Программирование в Delphi 7. – М.: ООО «Бином-Пресс», 2018.
  4. Вендров, А. М. Проектирование программного обеспечения экономических информационных систем. — М.: Финансы и статистика, 2010.
  5. Гамма, Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб: Питер, 2017.
  6. Голицына О.Л. и др. Языки программирования. – М.: Форум; Инфра-М, 2018.
  7. Грекул, В.И. Проектирование информационных систем / В.И. Грекул, Г.Н. Денищенко, Н.Л. Коровкина. — Интернет-университет информационных технологий - ИНТУИТ.ру, 2015.
  8. Дарахвелидзе П.Г., Марков Е.П. Программирование в Delphi 7. –СПб.: БХВ-Петербург, 2013.
  9. Елиферов В.Г., Репин В.В. Бизнес-процессы: регламентация и управление М.: ИНФРА-М, 2014
  10. Калянов Г.Н. Теория и практика реорганизации бизнес-процессов М.: СИНТЕГ, 2010.
  11. Козленко, Л. Проектирование информационных систем / Л. Козленко // КомпьютерПресс. — 2011. — Т. 9.
  12. Максимчук Р.А., Нейбург Э. Д. Проектирование баз данных с помощью UML М.: Вильямс, 2012.
  13. Семакин И.Г., Шестаков А.П. М. Основы программирования. –М.: Академия, 2013.
  14. Смирнова Г.Н., Сорокин А.А., Тельнов Ю.Ф. Проектирование экономических информационных систем. - М.: Финансы и статистика, 2012.
  15. Ручкин В.С., Семенов И.О., Черемных С.В. Структурный анализ систем. IDEF-технологии М.: Финансы и статистика, 2011.
  16. Сорокин А.В. Delphi. Разработка баз данных. – СПб.: Питер, 2015.
  17. Фаронов В.В. Система программирования Delphi. – СПб.: БХВ-Петербург, 2014.

ПРИЛОЖЕНИЕ

Код клиент-приложения главной стрницы

unit Main;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons, Spin, ImgList, ComCtrls, ToolWin;

type

TMainForm = class(TForm)

PersonsList: TListBox;

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

FNameEdit: TEdit;

LNameEdit: TEdit;

edttel: TEdit;

AgeEdit: TSpinEdit;

OpenDlg: TOpenDialog;

SaveDlg: TSaveDialog;

ToolBar1: TToolBar;

AddBtn: TToolButton;

EditBtn: TToolButton;

RestBtn: TToolButton;

DelBtn: TToolButton;

ClearBtn: TToolButton;

ToolButton6: TToolButton;

OpenBtn: TToolButton;

SaveBtn: TToolButton;

ToolButton9: TToolButton;

ImageList1: TImageList;

ComboBox1: TComboBox;

Button1: TButton;

Button2: TButton;

ComboBox2: TComboBox;

procedure ToolButton1Click(Sender: TObject);

procedure ToolButton2Click(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure ToolButton4Click(Sender: TObject);

procedure ToolButton5Click(Sender: TObject);

procedure ToolButton7Click(Sender: TObject);

procedure ToolButton8Click(Sender: TObject);

procedure ToolButton9Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

TPeople = class

Name: String;

Famil: String;

Age: Integer;

tel: String;

sekc: String;

constructor Create(AName: String);

end;

var

MainForm: TMainForm;

implementation

uses Unit1;

{$R *.DFM}

constructor TPeople.Create(AName: String);

begin

inherited Create;

Name:= AName;

end;

procedure TMainForm.ToolButton1Click(Sender: TObject);

begin

PersonsList.Items.AddObject('Unknown', TPeople.Create('Unknown'));

end;

procedure TMainForm.ToolButton2Click(Sender: TObject);

begin

with PersonsList, PersonsList.Items do

begin

if ItemIndex = -1

then Exit;

if not Assigned(Objects[ItemIndex])

then Objects[ItemIndex]:= TPeople.Create(Items[ItemIndex]);

with Objects[ItemIndex] as TPeople do

begin

FNameEdit.Text:= Name;

LNameEdit.Text:= Famil;

AgeEdit.Value:= Age;

edttel.Text:= tel;

Combobox1.SelText:= sekc;

end;

end;

end;

procedure TMainForm.ToolButton3Click(Sender: TObject);

begin

if PersonsList.ItemIndex = -1 then

begin

ShowMessage('Сначала выберите элемент');

Exit;

end;

with PersonsList do

with Items.Objects[ItemIndex] as TPeople do

begin

Name:= FNameEdit.Text;

Famil:= LNameEdit.Text;

Age:= AgeEdit.Value;

tel:= edttel.Text;

if

Combobox1.ItemIndex = 0 then

begin

sekc:= 'Парикмахерская';

end;

if

Combobox1.ItemIndex = 1 then

begin

sekc:= 'Маникюр-Педикюр';

end;

if

Combobox1.ItemIndex = 2 then

begin

sekc:= 'Тату';

end;

if

Combobox1.ItemIndex = 3 then

begin

sekc:= 'Массаж';

end;

Items[ItemIndex]:= sekc+'- '+Name+' '+Famil+' телефон:'+tel;

end;

FNameEdit.Clear;

LNameEdit.Clear;

AgeEdit.text:='0';

edttel.Clear;

ComboBox1.ItemIndex:=-1;

end;

procedure TMainForm.ToolButton4Click(Sender: TObject);

begin

with PersonsList do Items.Delete(ItemIndex);

end;

procedure TMainForm.ToolButton5Click(Sender: TObject);

begin

PersonsList.Items.Clear;

end;

procedure TMainForm.ToolButton7Click(Sender: TObject);

var F: TextFile;

i: Integer;

begin

try

with OpenDlg, PersonsList.Items do

begin

if Not Execute then Exit;

LoadFromFile(FileName);

AssignFile(F, Copy(FileName,1,Length(FileName)-4)+'.lso');

Reset(F);

i:= 0;

while Not EOF(F) do

begin

Objects[i]:= TPeople.Create('');

Readln(F, (Objects[i] as TPeople).Name);

Readln(F, (Objects[i] as TPeople).Famil);

Readln(F, (Objects[i] as TPeople).Age);

Readln(F, (Objects[i] as TPeople).tel);

Readln(F, (Objects[i] as TPeople).sekc);

Inc(i);

end;

CloseFile(F);

end;

except

on E: EFOpenError do ShowMessage('Ошибка открытия файла');

end;end;

procedure TMainForm.ToolButton8Click(Sender: TObject);

var F: TextFile;

i: Integer;

begin

try

with SaveDlg, PersonsList.Items do

begin

if Not Execute then Exit;

SaveToFile(FileName);

AssignFile(F, Copy(FileName,1,Length(FileName)-4)+'.lso');

Rewrite(F);

for i:= 0 to Count - 1 do

if Objects[i] <> Nil then

begin

Writeln(F, (Objects[i] as TPeople).Name);

Writeln(F, (Objects[i] as TPeople).Famil);

Writeln(F, (Objects[i] as TPeople).Age);

Writeln(F, (Objects[i] as TPeople).tel);

Writeln(F, (Objects[i] as TPeople).sekc);

end;

CloseFile(F);

end;

except

on E: EFOpenError do ShowMessage('Ошибка открытия файла');

end;

end;

procedure TMainForm.ToolButton9Click(Sender: TObject);

begin

Close;

end;

procedure TMainForm.Button1Click(Sender: TObject);

begin

form1.Show;

end;

procedure TMainForm.Button2Click(Sender: TObject);

var

I,J:integer;

F: TextFile;

begin

if PersonsList.ItemIndex = -1 then

begin

ShowMessage('Сначала выберите элемент');

Exit;

end;

with PersonsList do

with Items.Objects[ItemIndex] as TPeople do

begin

//PersonsList.ItemIndex:=j;

begin

if

Combobox2.ItemIndex = 0 then

begin

i:= PersonsList.Items.Count;

{программа}

// for i:=0 to PersonsList.Count -1 do

//for j:= i to PersonsList.Count -1 do

//программа ломается while i>PersonsList.ItemIndex do

// Виснет repeat

if Sekc = 'Парикмахерская' then ItemIndex:=ItemIndex

else

Items.Delete(ItemIndex);

ItemIndex:=ItemIndex+1;

{repeat

Button2.Click;

until i<=ItemIndex; }

end;

end;

if

Combobox2.ItemIndex = 1 then

begin

if Sekc = 'Маникюр-Педикюр' then ItemIndex:=ItemIndex

else

Items.Delete(ItemIndex);

ItemIndex:=ItemIndex+1;

end;

if

Combobox2.ItemIndex = 2 then

begin

if Sekc = 'Тату' then ItemIndex:=ItemIndex

else

Items.Delete(ItemIndex);

ItemIndex:=ItemIndex+1;

end;

if

Combobox2.ItemIndex = 3 then

begin

if Sekc = 'Массаж' then ItemIndex:=ItemIndex

else

Items.Delete(ItemIndex);

ItemIndex:=ItemIndex+1;

end;

if

Combobox2.ItemIndex = 4 then

begin

try

with OpenDlg, PersonsList.Items do

begin

if Not Execute then Exit;

LoadFromFile(FileName);

AssignFile(F, Copy(FileName,1,Length(FileName)-4)+'.lso');

Reset(F);

i:= 0;

while Not EOF(F) do

begin

Objects[i]:= TPeople.Create('');

Readln(F, (Objects[i] as TPeople).Name);

Readln(F, (Objects[i] as TPeople).Famil);

Readln(F, (Objects[i] as TPeople).Age);

Readln(F, (Objects[i] as TPeople).tel);

Readln(F, (Objects[i] as TPeople).sekc);

Inc(i);

end;

CloseFile(F);

end;

except

on E: EFOpenError do ShowMessage('Ошибка открытия файла');

end;

end;

end;

end;

end.