Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке

Курсовая работа на тему «Система учёта регистрации и размещения клиентов отеля»

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

Курсовая работа с гарантией

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

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

1.1 Основные понятия ООП

1.2 Принципы ООП

1.3 Язык программирования Python

2. Практическая часть

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

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

2.3 Реализация на языке Python

ЗАКЛЮЧЕНИЕ

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

ВВЕДЕНИЕ

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

Нужна помощь в написании курсовой?

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

Цена курсовой

Цель данной работы: используя методы объектно-ориентированного программирование (ООП), создать модель информационной системы регистрации и размещения клиентов отеля.

Задачи работы: анализ теоретических основ ООП, изучение языка программирования Python, применение полученных знаний на практике для реализации предметной области.

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

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

1.1 Основные понятия ООП

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

По определению авторитета в области объектно-ориентированных методов разработки программ Гради Буча «объектно-ориентированное программирование (ООП) — это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса (типа особого вида), а классы образуют иерархию на принципах наследуемости».

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

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

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

Объектно-ориентированное программирование — это парадигма программирования (совокупность идей и понятий, определяющая стиль написания программ). В нем основными концепциями являются понятия объектов и классов.

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

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

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

Нужна помощь в написании курсовой?

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

Подробнее

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

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

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

·абстракция понятия: объект — это модель какого-то понятия предметной области; абстракция действия: объект объединяет набор операций для выполнения какой-либо функции; абстракция виртуальной машины: объект объединяет операции, которые используются другими, более высокими уровнями абстракции; случайная абстракция: объект объединяет не связанные между собой операции. Поэтому в объектно-ориентированном методе каждый модуль должен самостоятельно инициализировать свои структуры данных [1]. Индивидуальные объекты называются экземплярами класса, а класс в ООП — это шаблон по которому строятся объекты.

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

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

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

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

1.2 Концепции ООП

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

·Инкапсуляция Наследование Полиморфизм Все эти механизмы важны для разработки и использования абстракций.

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

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

Полиморфизм — механизм, позволяющий использовать один и тот же интерфейс для общего класса действий [3].Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования. Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций». Полиморфизм — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, инкапсуляцией и наследованием). Полиморфизм позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода.

Нужна помощь в написании курсовой?

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

Цена курсовой

1. С тех пор Python развивался при поддержке тех организаций, в которых Гвидо работал.

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

·все данные в нем представляются объектами. все объекты одного типа могут принимать одни и те же сообщения (и выполнять одни и те же действия). программу можно составить как набор посылающих друг другу сообщения взаимодействующих объектов. каждый объект имеет тип. каждый объект имеет собственную часть памяти и может состоять из других объектов. Так же Python имеет достаточно простые средства для интеграции с языками C, C++ и Java, как путем встраивания (embedding) интерпретатора в программы на этих языках, так и наоборот, посредством использования библиотек, написанных на этих языках, в Python-программах. Язык Python поддерживает некоторые виды парадигм программирования: функциональное, императивное и объектно-ориентированное программирование. Язык Python используется в самых разных областях, от администрирования систем, разработки веб-сайтов, создания сценариев для мобильных устройств и обучения, до тестирования аппаратуры, анализа капиталовложений, компьютерных игр и управления космическими кораблями [4]. последнее слово о направлении его развития.

Задачей является фиксирование информационной работы отеля. Деятельность организована следующим образом: отель предоставляет номера клиентам на определенный срок. Каждый номер характеризуется вместимостью, комфортностью (люкс, полулюкс, обычный), ценой и некоторым комментарием. Клиентами являются различные лица, о которых собирается определенная информация (фамилия, имя, отчество, паспортные данные (серия паспорта, номер паспорта), пол и некоторый комментарий). Сдача номера производится по подходящим клиенту критериям из указанных выше параметров. При поселении фиксируется дата поселения. При выезде из гостиницы для каждого места запоминается дата освобождения.

Клиенты (Клиент, Фамилия, Имя, Отчество, Серия, Номер, Комментарий).

Номера (Номер, Количество человек, Комфортность, Цена, Комментарий).

Поселение (Клиент, Номер, Дата поселения, Дата освобождения, Комментарий).

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

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

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

setcodesetcomment getcomment — позволяет задать или изменить значение атрибута; — возвращает в качестве результата значения атрибута; остальные классы смогут унаследовать атрибуты класса general. Далее будут подробно описаны только основные классы и их атрибуты.

Клиенты представлены классом , который имеет атрибуты: — код клиента; — фамилия; — имя; — отчество; — серия; — номер; — пол. — комментарий. Специальные функции:

setsurname; ; , который имеет атрибуты: — код номера; — номер; — вместимость; — комфорт; — цена; — комментарий. Специальные функции:

setnumber; . , который имеет атрибуты: — код поселения; ; — дата поселения; — дата освобождения; — комментарий. Специальные функции:

Нужна помощь в написании курсовой?

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

Заказать курсовую

setroom; ; ; — позволяет добавить клиента в поселение, — позволяет удалить клиента из поселения, — позволяет удалить всех клиентов из поселения; ; , .

Рассмотрим реализацию модели информационной системы регистрации и размещения клиентов отеля.

# -*- coding: utf-8 -*-

В первой строке задаётся кодировка файла программы, если вдруг в тексте программы понадобиться использовать символы кириллицы. Воспользуемся кодировкой utf-8.

Далее следует описание класса . #-*- coding: utf-8 -*-

class general:__init__(self,code=1,comment=»):.setcode(code).setcomment(comment)setcode(self,code):not(isinstance(code, int)):Exception(«Znachenie polja *cod* dolzhno byt’ celym chislom»)(code < 0):Exception(«Znachenie polja kod dolzhno byt’ polozhitel’nym. Peredano %i» % code).__code=codesetcomment(self,comment):.__comment=commentgetcode(self):self.__codegetcomment(self):self.__comment

Далее следует описание класса . # -*- coding: utf-8 -*-general import general

generallistedit():__init__(self):self.__list=[]clear(self):self.__list=[]findByCode(self,code):h in self.__list:h.getcode()==code:hgetcodes(self):return [s.getcode() for s in self.__list]getnewcode(self):=0c in self.getcodes():c>m:m=cm+1appendlist(self,value):self.__list.append(value)removelist(self,code):s in self.__list:s.getcode()==code:self.__list.remove(s)getcomment(self,code):return self.findByCode(code).getcomment()

Далее следует описание класса . # -*- coding: utf-8 -*-general import general = {«man», «woman», «мужской», «женский»}

class client(general):__init__(self,code,surname,name,secname,series,number,sex,comment=»»):.__init__(self,code,comment).setsurname(surname).setname(name).setsecname(secname).setseries(series).setnumber(number).setsex(sex)setsurname(self,surname):not(isinstance(surname, str)):Exception(«Znachenie polja *familia* dolzhno byt’ strokoj»).__surname=surnamesetname(self,name):not(isinstance(name, str)):Exception(«Znachenie polja *imya* dolzhno byt’ strokoj»).__name=namesetsecname(self,secname):not(isinstance(secname, str)):Exception(«Znachenie polja *otchestvo* dolzhno byt’ strokoj»).__secname=secnamesetseries(self,series):not(isinstance(series, int)):Exception(«Znachenie polja *serija* dolzhno byt’ celym chislom»)(series < 1000 or series > 9999):Exception(«Znachenie polja *serija* dolzhno byt’ polozhitel’nym i v predele ot 1000 do 9999»).__series=seriessetnumber(self,number):not(isinstance(number, int)):Exception(«Znachenie polja *nomer* dolzhno byt’ celym chislom»)(number < 100000 or number > 999999):Exception(«Znachenie polja *nomer* dolzhno byt’ polozhitel’nym i v predele ot 100000 do 999999»).__number=numbersetsex(self,sex):not(isinstance(sex, str)):Exception(«Znachenie polja *pol* dolzhno byt’ strokoj»)not(sex in sextypes):Exception(«Pol dolzhen byt’ muzhskoj ili zheskij»).__sex=sexgetsurname(self):self.__surnamegetname(self):self.__namegetsecname(self):self.__secnamegetseries(self):self.__seriesgetnumber(self):self.__numbergetsex(self):self.__sexgetperson(self):self.__surname + » » + self.__name[0] + «.» + » » + self.__secname[0] + «.»

Далее следует описание класса — список клиентов.

getsurname(self,code):return self.findByCode(code).getsurname()getname(self,code):return self.findByCode(code).getname()getsecname(self,code):return self.findByCode(code).getsecname()getseries(self,code):return self.findByCode(code).getseries()getnumber(self,code):return self.findByCode(code).getnumber()getsex(self,code):return self.findByCode(code).getsex()

getpersonstr(self,code):self.findByCode(code).getperson()

getlistpersonstr(self):=»code in self.getcodes():+=self.getpersonstr(code)+=’, ‘ s[:-2]

Далее следует описание класса . # -*- coding: utf-8 -*-general import general= {1,2,3,4,6,10}

room(general):__init__(self,code,number,occupancy,comfort,price,comment=»»):.__init__(self,code,comment).setnumber(number).setoccupancy(occupancy).setcomfort(comfort).setprice(price)setnumber(self,number):not(isinstance(number, int)):Exception(«Znachenie polja *nomer* dolzhno byt’ celym chislom»)(number < 1):Exception(«Znachenie polja *nomer* za den’ dolzhno byt’ polozhitel’nym»).__number=numbersetoccupancy(self,occupancy):not(isinstance(occupancy, int)):Exception(«Znachenie polja *kolichestvo mest* dolzhno byt’ celym chislom»)not(occupancy in occupancytypes):Exception(«Znachenie polja *kolichestvo mest* dolzhno byt’: 1/2/3/4/6/10»).__occupancy=occupancysetcomfort(self,comfort):not(isinstance(comfort, str)):Exception(«Znachenie polja *komfortnost’* dolzhno byt’ strokoj»).__comfort=comfortsetprice(self,price):not(isinstance(price, int)):Exception(«Znachenie polja *tsena* dolzhno byt’ celym chislom»)(price < 1):Exception(«Znachenie polja *tsena* za den’ dolzhno byt’ polozhitel’nym»).__price=pricegetnumber(self):self.__numbergetoccupancy(self):self.__occupancygetcomfort(self):self.__comfortgetprice(self): self.__price

Далее следует описание класса — список комнат. # -*- coding: utf-8 -*-room import roomgenerallistedit import generallistedit

roomlistedit(generallistedit):newrec(self,code,number,occupancy,comfort,price,comment=»»):.appendlist(room(code,number,occupancy,comfort,price,comment))setnumber(self,code,value):self.findByCode(code).setnumber(value)setoccupancy(self,code,value):self.findByCode(code).setoccupancy(value)setcomfort(self,code,value):self.findByCode(code).setcomfort(value)setprice(self,code,value):self.findByCode(code).setprice(value)setcomment(self,code,value):self.findByCode(code).setcomment(value)

getcode(self,code):return self.findByCode(code).getcode()getnumber(self,code):return self.findByCode(code).getnumber()getoccupancy(self,code):return self.findByCode(code).getoccupancy()getcomfort(self,code):return self.findByCode(code).getcomfort()getprice(self,code):return self.findByCode(code).getprice()getcomment(self,code):return self.findByCode(code).getcomment()

Далее следует описание класса . # -*- coding: utf-8 -*-general import generalroom import roomclientlistedit import clientlistedit

settlement(general,room):__init__(self,code,date_in,date_out,room=None,comment=»»):.__init__(self,code,comment).__clients=clientlistedit().setroom(room).setdate_in(date_in).setdate_out(date_out)setroom(self, room):.__room = roomsetdate_in(self,di):not(isinstance(di, str)):ValueError(«Znachenie *data zaezda* dolzhno byt’ strokoj»).__date_in=disetdate_out(self,do):not(isinstance(do, str)):ValueError(«Znachenie *data vyezda* dolzhno byt’ strokoj»).__date_out=dogetdate_in(self):self.__date_ingetdate_out(self):self.__date_outgetroomcode(self):return self.__room.getcode()getroomnumber(self):return self.__room.getnumber()getroomoccupancy(self):return self.__room.getoccupancy()getroomcomfort(self):return self.__room.getcomfort()getroomprice(self):return self.__room.getprice()getroomcomment(self):return self.__room.getcomment()

appendclient(self,value):self.__clients.appendlist(value)removeclient(self,code):self.__clients.removelist(code)clearclients(self):self.__clients.clear()

getclientcodes(self):return self.__clients.getcodes()getclientsurname(self,code):return self.__clients.findByCode(code).getsurname()getclientname(self,code):return self.__clients.findByCode(code).getname()getclientsecname(self,code):return self.__clients.findByCode(code).getsecname()getclientseries(self,code):return self.__clients.findByCode(code).getseries()getclientnumber(self,code):return self.__clients.findByCode(code).getnumber()getclientsex(self,code):return self.__clients.findByCode(code).getsex()getclientcomment(self,code):return self.__clients.findByCode(code).getcomment()

getclientshotelstr(self):self.__clients.getlistpersonstr()gethotelstr(self):=self.getclientshotelstr()self.__room:sroom=self.getroomnumber():sroom=»»+=’: room %s, %s — %s’%(sroom,self.getdate_in(),self.getdate_out()) s

Далее следует описание класса — список поселений. # -*- coding: utf-8 -*-generallistedit import generallisteditsettlement import settlementsettlementlistedit(generallistedit):newrec(self,code,date_in,date_out,room=None,comment=»»):.appendlist(settlement(code,date_in,date_out,room,comment))setdate_in(self,code,value):self.findByCode(code).setdate_in(value)setdate_out(self,code,value):self.findByCode(code).setdate_out(value)setroom(self,code,value):self.findByCode(code).setroom(value)setcomment(self,code,value):self.findByCode(code).setcomment(value)

инкапсуляция программирование рython

def appendclient(self,code,value):self.findByCode(code).appendclient(value)removeclient(self,scode,ccode):self.findByCode(scode).removeclient(ccode)clearclients(self,code):self.findByCode(code).clearclients()

getdate_in(self,code):return self.findByCode(code).getdate_in()getdate_out(self,code):return self.findByCode(code).getdate_out()getcomment(self,code):return self.findByCode(code).getcomment()

getroomcode(self,code):return self.findByCode(code).getroomcode()getroomnumber(self,code):return self.findByCode(code).getroomnumber()getroomoccupancy(self,code):return self.findByCode(code).getroomoccupancy()getroomcomfort(self,code):return self.findByCode(code).getroomcomfort()getroomprice(self,code):return self.findByCode(code).getroomprice()getroomcomment(self,code):return self.findByCode(code).getroomcomment()

getclientsurname(self,scode,ccode):return self.findByCode(scode).getclientsurname(ccode)getclientname(self,scode,ccode):return self.findByCode(scode).getclientname(ccode)getclientsecname(self,scode,ccode):return self.findByCode(scode).getclientsecname(ccode)getclientseries(self,scode,ccode):return self.findByCode(scode).getclientseries(ccode)getclientnumber(self,scode,ccode):return self.findByCode(scode).getclientnumber(ccode)getclientsex(self,scode,ccode):return self.findByCode(scode).getclientsex(ccode)getclientcomment(self,scode,ccode):return self.findByCode(scode).getclientcomment(ccode)

getclientcodes(self,code):return self.findByCode(code).getclientcodes()getclientshotelstr(self,code):return self.findByCode(code).getclientshotelstr()gethotelstr(self,code):return self.findByCode(code).gethotelstr()

Теперь напишем программу в файле «main1.py», которая будет создавать объекты по описанным классам. В качестве примера добавим новое поселение. Информация о работе программы будет выведена на экран.

#-*- coding:utf-8 -*-settlement import settlementclient import clientroom import room

=settlement(1,»01.01.17″,»10.01.17″).appendclient(client(1, «Rinder», «Andrew», «Aleksandrovich», 7123, 129033, «man»)).appendclient(client(2, «Rinder», «Olivia», «Maksimovna», 7156, 528745, «woman»)).appendclient(client(3, «Rinder», «Alex», «Andreevich», 7156, 528745, «woman»)).setroom(room(12,12,3,»standart»,5000))h1.gethotelstr().removeclient(2)h1.gethotelstr().clearclients()»No clients», h1.gethotelstr().appendclient(client(1, «Rinder», «Andrew», «Aleksandrovich», 7123, 129033, «man»)).appendclient(client(2, «Rinder», «Olivia», «Maksimovna», 7136, 528745, «woman»)).appendclient(client(3, «Rinder», «Alex», «Andreevich», 7182, 288744, «man»)) h1.gethotelstr()

После активации программы в файле «main1.py» получаем информацию о добавленном поселении:

Rinder A. A., Rinder O. M., Rinder A. A.: room 12, 01.01.17 — 10.01.17A. A., Rinder A. A.: room 12, 01.01.17 — 10.01.17clients : room 12, 01.01.17 — 10.01.17A. A., Rinder O. M., Rinder A. A.: room 12, 01.01.17 — 10.01.17

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

Нужна помощь в написании курсовой?

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

Цена курсовой

Далее следует описание класса . # -*- coding: utf-8 -*-clientlistedit import clientlisteditroomlistedit import roomlisteditsettlementlistedit import settlementlistedit

hotel(clientlistedit,roomlistedit,settlementlistedit):__init__(self):.__clients=clientlistedit().__rooms=roomlistedit().__settlements=settlementlistedit()removeclient(self,code):.__clients.removelist(code)c in self.__settlements.getcodes():.__settlements.removeclient(c,code)removeroom(self, code):.__rooms.removelist(code)c in self.__settlements.getcodes():.__settlements.setroom(c,None)removesettlement(self,code):.__settlements.removelist(code)

clear(self):.__settlements.clear().__clients.clear().__rooms.clear()

newclient(self,code,surname,name,secname,series,number,sex,comment=»»):.__clients.newrec(code,surname,name,secname,series,number,sex,comment)findClientByCode(self,code):return self.__clients.findByCode(code)getclientnewcode(self):return self.__clients.getnewcode()getclientcodes(self):return self.__clients.getcodes()

getclientsurname(self,code):return self.__clients.getsurname(code)getclientname(self,code):return self.__clients.getname(code)getclientsecname(self,code):return self.__clients.getsecname(code)getclientseries(self,code):return self.__clients.getseries(code)getclientnumber(self,code):return self.__clients.getnumber(code)getclientsex(self,code):return self.__clients.getsex(code)getclientcomment(self,code):return self.__clients.getcomment(code)

getclientshotelstr(self,code):self.__clients.getlistpersonstr(code)getclienthotelstr(self,code):self.__clients.getpersonstr(code)

setclientsurname(self,code,value): self.__clients.setsurname(code,value)setclientname(self,code,value): self.__clients.setname(code,value)setclientsecname(self,code,value): self.__clients.setsecname(code,value)setclientseries(self,code,value): self.__clients.setseries(code,value)setclientnumber(self,code,value): self.__clients.setnumber(code,value)setclientsex(self,code,value): self.__clients.setsex(code,value)setclientcomment(self,code,value): self.__clients.setcomment(code,value)

newroom(self,code,number,occupancy,comfort,price,comment=»»):.__rooms.newrec(code,number,occupancy,comfort,price,comment)findRoomByCode(self,code):return self.__rooms.findByCode(code)getroomnewcode(self):return self.__rooms.getnewcode()getroomcodes(self):return self.__rooms.getcodes()

getroomcode(self,code):return self.__rooms.getcode(code)getroomnumber(self,code):return self.__rooms.getnumber(code)getroomoccupancy(self,code):return self.__rooms.getoccupancy(code)getroomcomfort(self,code):return self.__rooms.getcomfort(code)getroomprice(self,code):return self.__rooms.getprice(code)getroomcomment(self,code):return self.__rooms.getcomment(code)

setroomnumber(self,code,value):self.__rooms.setnumber(code,value)setroomoccupancy(self,code,value):self.__rooms.setoccupancy(code,value)setroomcomfort(self,code,value):self.__rooms.setcomfort(code,value)setroomprice(self,code,value):self.__rooms.setprice(code,value)setroomcomment(self,code,value):self.__rooms.setcomment(code,value)

newsettlement(self,code,date_in,date_out,room=None,comment=»»):.__settlements.newrec(code,date_in,date_out,room,comment)findSettlementByCode(self,code):return self.__settlements.findByCode(code)appendsettlementclient(self,scode,value):self.__settlements.appendclient(scode,value)removesettlementclient(self,scode,ccode): self.__settlements.removeclient(scode,ccode)clearsettlementclients(self,scode):self.__settlements.clearclients(scode)

setsettlementdate_in(self,code,value):self.__settlements.setdate_in(code,value)setsettlementdate_out(self,code,value):self.__settlements.setdate_out(code,value)setsettlementroom(self,code,rcode):self.__settlements.setroom(code,self.findRoomByCode(rcode))setsettlementcomment(self,code,value):self.__settlements.setcomment(code,value)

getsettlementcodes(self):return self.__settlements.getcodes()getsettlementnewcode(self):return self.__settlements.getnewcode()getsettlements(self):return self.__settlements

getsettlementdate_in(self,code):return self.__settlements.getdate_in(code)getsettlementdate_out(self,code):return self.__settlements.getdate_out(code)

getsettlementroomcode(self,code):return self.__settlements.getroomcode(code)getsettlementroomnumber(self,code):return self.__settlements.getroomnumber(code)getsettlementroomoccupancy(self,code):return self.__settlements.getroomoccupancy(code)getsettlementroomcomfort(self,code):return self.__settlements.getroomcomfort(code)getsettlementroomprice(self,code):return self.__settlements.getroomprice(code)getsettlementroomcomment(self,code):return self.__settlements.getroomcomment(code)

getsettlementcomment(self,code):return self.__settlements.getcomment(code)

getsettlementclientsurname(self,scode,ccode):return self.__settlements.getclientsurname(scode,ccode)getsettlementclientname(self,scode,ccode):return self.__settlements.getclientname(scode,ccode)getsettlementclientsecname(self,scode,ccode):return self.__settlements.getclientsecname(scode,ccode)getsettlementclientseries(self,scode,ccode):return self.__settlements.getclientseries(scode,ccode)getsettlementclientnumber(self,scode,ccode):return self.__settlements.getclientnumber(scode,ccode)getsettlementclientsex(self,scode,ccode):return self.__settlements.getclientsex(scode,ccode)getsettlementclientcomment(self,scode,ccode):self.__settlements.getclientcomment(scode,ccode)

getsettlementclientcodes(self,code):return self.__settlements.getclientcodes(code)

getsettlementclientshotelstr(self,code):return self.__settlements.getclientshotelstr(code)

getsettlementhotelstr(self,code):return self.__settlements.gethotelstr(code)

getsettlementhotelstrs(self):[self.getsettlementhotelstr(s) for s in self.getsettlementcodes()]

Класс — главный модуль при последующей работе с базами данных xml и sql, в котором вызываются основные функции для работы с программой. Все данные и операции проходят через него. . # -*- coding: utf-8 -*-xml.dom.minidom import parse, Document

dataxml:read(self,inp,hot):=parse(inp).normalize()node in dom.childNodes[0].childNodes:(node.nodeType==node.ELEMENT_NODE)and(node.nodeName==»client»):,surname,name,secname,series,number,sex,comment=1,»»,»»,»»,»»,»»,»»,»»t in node.attributes.items():t[0]==»code»:code=int(t[1])t[0]==»surname»:surname=str(t[1])t[0]==»name»:name=str(t[1])t[0]==»secname»:secname=str(t[1])t[0]==»series»:series=int(t[1])t[0]==»number»:number=int(t[1])t[0]==»sex»:sex=str(t[1])t[0]==»comment»:comment=str(t[1]).newclient(code,surname,name,secname,series,number,sex,comment)(node.nodeType==node.ELEMENT_NODE)and(node.nodeName==»room»):,number,occupancy,comfort,price,comment=1,»»,»»,»»,»»,»»t in node.attributes.items():t[0]==»code»:code=int(t[1])t[0]==»number»:number=int(t[1])t[0]==»occupancy»:occupancy=int(t[1])t[0]==»comfort»:comfort=str(t[1])t[0]==»price»:price=int(t[1])t[0]==»comment»:comment=str(t[1]).newroom(code,number,occupancy,comfort,price,comment)(node.nodeType==node.ELEMENT_NODE)and(node.nodeName==»settlement»):,date_in,date_out,room,comment=1,»»,»»,None,»»t in node.attributes.items():t[0]==»code»:code=int(t[1])t[0]==»date_in»:date_in=str(t[1])t[0]==»date_out»:date_out=str(t[1])t[0]==»room»:room=hot.findRoomByCode(int(t[1]))t[0]==»comment»:comment=str(t[1]).newsettlement(code,date_in,date_out,room,comment)n in node.childNodes:(n.nodeType==n.ELEMENT_NODE)and(n.nodeName==»client»):t in n.attributes.items():t[0]==»code»:client=hot.findClientByCode (int(t[1])).appendsettlementclient(code,client)write(self,out,hot):=Document()=dom.createElement(«hotel»).appendChild(root)c in hot.getclientcodes():=dom.createElement(«client»).setAttribute(«code»,str(c)).setAttribute(«surname»,hot.getclientsurname(c)).setAttribute(«name»,hot.getclientname(c)).setAttribute(«secname»,hot.getclientsecname(c)).setAttribute(«series»,str(hot.getclientseries(c))).setAttribute(«number»,str(hot.getclientnumber(c))).setAttribute(«sex»,hot.getclientsex(c)).setAttribute(«comment»,hot.getclientcomment(c)).appendChild(cli)c in hot.getroomcodes():=dom.createElement(«room»).setAttribute(«code»,str(c)).setAttribute(«number»,str(hot.getroomnumber(c))).setAttribute(«occupancy»,str(hot.getroomoccupancy(c))).setAttribute(«comfort»,hot.getroomcomfort(c)).setAttribute(«price»,str(hot.getroomprice(c))).setAttribute(«comment»,hot.getroomcomment(c)).appendChild(roo)c in hot.getsettlementcodes():=dom.createElement(«settlement»).setAttribute(«code»,str(c)).setAttribute(«date_in»,str(hot.getsettlementdate_in(c))).setAttribute(«date_out»,str(hot.getsettlementdate_out(c))).setAttribute(«room»,str(hot.getsettlementroomcode(c))).setAttribute(«comment»,hot.getsettlementcomment(c))ac in hot.getsettlementclientcodes(c):=dom.createElement(«client»).setAttribute(«code»,str(ac)).appendChild(cli).appendChild(stl)= open(out,»w»).write(dom.toprettyxml(encoding=’utf-8′))

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

Далее в текстовом редакторе создадим файл, назовем его «old.xml». Запишем в него следующие данные в формате XML:

<?xml version=»1.0″ encoding=»utf-8″?>

<hotel>

<client code=»1″ comment=»—» name=»Oleg» number=»754334″ secname=»Mihajlovich» series=»6513″ sex=»man» surname=»Antonov»/>

<client code=»2″ comment=»—» name=»Lidija» number=»382018″ secname=»Makarovna» series=»6515″ sex=»woman» surname=»Antonova»/>

<client code=»3″ comment=»—» name=»Aleksej» number=»345545″ secname=»Fedorovich» series=»5712″ sex=»man» surname=»Mirin»/>

<client code=»4″ comment=»—» name=»Jella» number=»442893″ secname=»Radimovna» series=»2328″ sex=»woman» surname=»Volentaj»/>

<client code=»5″ comment=»—» name=»Dmitrij» number=»354676″ secname=»Valerevich» series=»4567″ sex=»man» surname=»Volkov»/>

<client code=»6″ comment=»—» name=»Oksana» number=»847573″ secname=»Vasilevna» series=»9472″ sex=»woman» surname=»Lorina»/>

<client code=»7″ comment=»—» name=»Aleksandr» number=»277197″ secname=»Viktorovich» series=»5640″ sex=»man» surname=»Bromov»/>

<client code=»8″ comment=»—» name=»Larisa» number=»273974″ secname=»Lvovna» series=»5645″ sex=»woman» surname=»Bromova»/>

<client code=»9″ comment=»—» name=»Mihail» number=»103849″ secname=»Pavlovich» series=»3748″ sex=»man» surname=»Luzhin»/>

<room code=»1″ comfort=»standard» comment=»—» number=»1″ occupancy=»1″ price=»2000″/>

<room code=»3″ comfort=»standard» comment=»—» number=»3″ occupancy=»1″ price=»2000″/>

<room code=»4″ comfort=»double» comment=»—» number=»4″ occupancy=»1″ price=»3000″/>

<room code=»5″ comfort=»double» comment=»—» number=»5″ occupancy=»1″ price=»3000″/>

<room code=»6″ comfort=»luxury» comment=»—» number=»6″ occupancy=»1″ price=»4000″/>

<room code=»7″ comfort=»standard» comment=»—» number=»7″ occupancy=»2″ price=»3500″/>

<room code=»8″ comfort=»standard» comment=»—» number=»8″ occupancy=»2″ price=»3500″/>

<room code=»9″ comfort=»standard» comment=»—» number=»9″ occupancy=»2″ price=»3500″/>

Нужна помощь в написании курсовой?

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

Заказать курсовую

<room code=»10″ comfort=»double» comment=»—» number=»10″ occupancy=»2″ price=»5000″/>

<room code=»11″ comfort=»luxury» comment=»—» number=»11″ occupancy=»2″ price=»7000″/>

<room code=»12″ comfort=»standard» comment=»—» number=»12″ occupancy=»3″ price=»5000″/>

<room code=»13″ comfort=»standard» comment=»—» number=»13″ occupancy=»3″ price=»5000″/>

<room code=»14″ comfort=»double» comment=»—» number=»14″ occupancy=»3″ price=»7000″/>

<room code=»15″ comfort=»luxury» comment=»—» number=»15″ occupancy=»3″ price=»10000″/>

<room code=»16″ comfort=»double» comment=»—» number=»16″ occupancy=»4″ price=»9000″/>

<room code=»17″ comfort=»double» comment=»—» number=»17″ occupancy=»4″ price=»9000″/>

<room code=»18″ comfort=»luxury» comment=»—» number=»18″ occupancy=»4″ price=»13000″/>

<room code=»19″ comfort=»family» comment=»—» number=»19″ occupancy=»6″ price=»16000″/>

<room code=»20″ comfort=»family» comment=»—» number=»20″ occupancy=»6″ price=»16000″/>

<room code=»21″ comfort=»luxury» comment=»—» number=»21″ occupancy=»10″ price=»30000″/>

<room code=»22″ comfort=»luxury» comment=»—» number=»22″ occupancy=»10″ price=»30000″/>

<room code=»23″ comfort=»luxury» comment=»—» number=»23″ occupancy=»10″ price=»30000″/>

Нужна помощь в написании курсовой?

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

Подробнее

<settlement code=»1″ comment=»—» date_in=»13.02.17″ date_out=»19.02.17″ room=»7″>

<client code=»1″/>

<client code=»2″/>

</settlement>

<settlement code=»2″ comment=»—» date_in=»31.01.17″ date_out=»03.02.17″ room=»1″>

<client code=»3″/>

</settlement>

<settlement code=»3″ comment=»—» date_in=»27.01.17″ date_out=»11.02.17″ room=»16″>

<client code=»4″/>

<client code=»5″/>

<client code=»6″/>

<client code=»9″/>

</settlement>

</hotel>

В качестве примера напишем программу в файле «main2.py» для проверки работоспособности к прочтению и записи данных xml. Программа считает данные из файла «old.xml» и запишет их в новый файл «new.xml». В конце программа для демонстрации работы будет выводить на экран информацию обо всех поселениях отеля в виде списка информационных строк:

#-*- coding:utf-8 -*-hotel import hoteldataxml import dataxml as datax

=hotel()=datax().read(‘old.xml’,hot).write(‘new.xml’,hot)x in hot.getsettlementhotelstrs(): x

После активации программы в файле «main2.py» получаем информацию обо всех поселениях в базе данных xml:

Antonov O. M., Antonova L. M.: room 7, 13.02.17 — 19.02.17A. F.: room 1, 31.01.17 — 03.02.17J. R., Volkov D. V., Lorina O. V., Luzhin M. P.: room 16, 27.01.17 — 11.02.17

Далее следует описание класса .
import ossqlite3 as db

emptydb = «»»foreign_keys = ON;

table client

(code integer primary key,text,text,text,integer,integer,text,text);

table room

(code integer primary key,integer,integer,text,integer,text);

table settlement

(code integer primary key,_in text,_out text,integer references room(code) on update cascade on delete set null,text);

table settlement_client

(code integer primary key autoincrement,integer references settlement(code) on update cascade on delete cascade,integer references client(code) on update cascade on delete cascade,(settlement,client));

«»»datasql:read(self,inp,hot):= db.connect(inp)= conn.cursor().execute(«select code,surname,name,secname,series,number,sex,comment from client»)=curs.fetchall()r in data:hot.newclient(r[0],str(r[1]),str(r[2]),str(r[3]),r[4],r[5],str(r[6]),str(r[7])).execute(«select code,number,occupancy,comfort,price,comment from room»)=curs.fetchall()r in data:hot.newroom(r[0],r[1],r[2],str(r[3]),r[4],str(r[5])).execute(«select code,date_in,date_out,room,comment from settlement»)=curs.fetchall()r in data:hot.newsettlement(r[0],str(r[1]),str(r[2]),hot.findRoomByCode(int(r[3])),r[4]).execute(«select settlement,client from settlement_client»)=curs.fetchall()r in data:.appendsettlementclient(r[0],hot.findClientByCode(r[1])).close()

write(self,out,hot):= db.connect(out)= conn.cursor().executescript(emptydb)c in hot.getclientcodes():.execute(«insert into client(code,surname,name,secname,series,number,sex,comment) values(‘%s’,’%s’,’%s’,’%s’,’%s’,’%s’,’%s’,’%s’)»%((c),.getclientsurname(c),.getclientname(c),.getclientsecname(c),(hot.getclientseries(c)),(hot.getclientnumber(c)),.getclientsex(c),.getclientcomment(c)))c in hot.getroomcodes():.execute(«insert into room(code,number,occupancy,comfort,price,comment) values(‘%s’,’%s’,’%s’,’%s’,’%s’,’%s’)»%((c),(hot.getroomnumber(c)),(hot.getroomoccupancy(c)),.getroomcomfort(c),(hot.getroomprice(c)),.getroomcomment(c)))c in hot.getsettlementcodes():.execute(«insert into settlement(code,date_in,date_out,room,comment) values(‘%s’,’%s’,’%s’,’%s’,’%s’)»%((c),.getsettlementdate_in(c),.getsettlementdate_out(c),.getsettlementroomcode(c),.getsettlementcomment(c)))ac in hot.getsettlementclientcodes(c):.execute(«insert into settlement_client(settlement,client) values(‘%s’,’%s’)»%((c),(ac))).commit().close()

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

Далее с помощью специальных программ или вручную необходимо создать файл. Чтобы не заполнять базу данных заново напишем программу в файле «mainxs.py». Программа считает данные из файла «old.xml» c готовой базой данных и запишет их в файл «old.sqlite». В конце программа для демонстрации работы будет выводить на экран информацию обо всех поселениях отеля в виде списка информационных строк:

#-*- coding:utf-8 -*-hotel import hoteldataxml import dataxml as dataxdatasql import datasql as datas

=hotel()=datax()=datas().read(‘old.xml’,hot).write(‘old.sqlite’,hot)x in hot.getsettlementhotelstrs():

print x

Нужна помощь в написании курсовой?

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

Подробнее

После активации программы в файле «mainxs.py» получаем информацию обо всех поселениях успешно перенесенных в другую новую базу данных sqlite:

Antonov O. M., Antonova L. M.: room 7, 13.02.17 — 19.02.17A. F.: room 1, 31.01.17 — 03.02.17J. R., Volkov D. V., Lorina O. V., Luzhin M. P.: room 16, 27.01.17 — 11.02.17

Теперь мы имеем готовую базу данных sqlite.

В качестве примера напишем программу в файле «main3.py» для проверки работоспособности к прочтению и записи данных sqlite. Программа считает данные из файла «old. sqlite» и запишет их в новый файл «new.sqlite». В конце программа для демонстрации работы будет выводить на экран информацию обо всех поселениях отеля в виде списка информационных строк:

#-*- coding:utf-8 -*-hotel import hoteldatasql import datasql as datas

=hotel()=datas().read(‘old. sqlite’,hot).write(‘new. sqlite’,hot)x in hot.getsettlementhotelstrs(): x

После активации программы в файле «main3.py» получаем информацию обо всех поселениях в базе данных sqlite:

Antonov O. M., Antonova L. M.: room 7, 13.02.17 — 19.02.17A. F.: room 1, 31.01.17 — 03.02.17J. R., Volkov D. V., Lorina O. V., Luzhin M. P.: room 16, 27.01.17 — 11.02.17

ЗАКЛЮЧЕНИЕ

В данной работе была создана модель информационной системы регистрации и размещения клиентов отеля с использованием объектно-ориентированного программирования (ООП).

Был изучен язык программирования Python и теоретические основы объектно-ориентированного программирования. Полученные знания были применены на практике в процессе реализации предметной области.

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

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

Язык программирования Python поддерживает методы объектно-ориентированного программирования. Данный язык был спроектирован на практические нужды и был очень удобен при создании системы учёта регистрации и размещения клиентов отеля.

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

1. Основы объектно-ориентированного программирования/ Б. Мейер — М.: Интернет-университет информационных технологий — ИНТУИТ.ру, 2005 — C.63

2. Марк Лутц. Программирование на Python / Пер. с англ. — 4-е изд. — СПб.: Символ-Плюс, 2011. — Т. II. — C.73.

3. Волкова И. А., Иванов А. В., Карпов Л. Е. Основы объектно-ориентированного программирования. Язык программирования С++. Учебное пособие для студентов 2 курса. — М.: Издательский отдел факультета ВМК МГУ, 2011- C.15

4. Марк Лутц. Программирование на Python / Пер. с англ. — 4-е изд. — СПб.: Символ-Плюс, 2011. — Т. I. — C.36.

5. http://www.pascal.helpov.net/index/object-oriented_programming_pascal_programming

6. http://itandlife.ru/programming/object-oriented-programming/obektno-orientirovannoe-programmirovanie-oop-ponyatie-obekta/

Средняя оценка 0 / 5. Количество оценок: 0

Поставьте оценку первым.

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

1116

Закажите такую же работу

Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке