Система учёта регистрации и размещения клиентов отеля
Анализ основ ООП, изучение языка программирования Python, применение полученных знаний на практике для реализации предметной области. Понятие и механизм инкапсуляции. Фиксирование информационной работы отеля. Диаграмма классов. Реализация на языке Python.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 14.05.2017 |
Размер файла | 227,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
49
Размещено на http://www.allbest.ru/
КУРСОВАЯ РАБОТА
Система учёта регистрации и размещения клиентов отеля
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
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.3 Язык программирования ” Python ”
Язык программирования Python начал свою историю ещё в конце 80-x годов XX века. Нидерландский программист Гвидо ван Россум является автором Python. В декабре 1989 года Россум приступил к его созданию в центре математики и информатики в Нидерландах. Ему был необходим расширяемый язык, который бы обеспечил поддержку системных вызовов. Python создавался под влиянием множества языков программирования: С, C++, Java, Smalltalk, Модула-3 и ABC. Хоть многие считали, что назван язык в честь змеи, но всё-таки свое название язык получил в честь популярного британского комедийного телешоу 1970-х “Летающий цирк Монти-Питона” на канале “BBC”. С тех пор Python развивался при поддержке тех организаций, в которых Гвидо работал.
Сам Россум говорит о своем языке так: “Python - интерпретируемый, объектно-ориентированный высокоуровневый язык программирования с динамической семантикой. Встроенные высокоуровневые структуры данных в сочетании с динамической типизацией и связыванием делают язык привлекательным для быстрой разработки приложений (RAD, Rapid Application Development). Кроме того, его можно использовать в качестве сценарного языка для связи программных компонентов. Синтаксис Python прост в изучении, в нем придается особое значение читаемости кода, а это сокращает затраты на сопровождение программных продуктов. Python поддерживает модули и пакеты, поощряя модульность и повторное использование кода. Интерпретатор Python и большая стандартная библиотека доступны бесплатно в виде исходных и исполняемых кодов для всех основных платформ и могут свободно распространяться”.
Python - это высокоуровневый универсальный язык программирования, ориентированный на повышение производительности разработчика и читаемости кода. Python проектировался как объектно-ориентированный язык программирования, и поэтому он построен с учетом следующих принципов:
· все данные в нем представляются объектами.
· все объекты одного типа могут принимать одни и те же сообщения (и выполнять одни и те же действия).
· программу можно составить как набор посылающих друг другу сообщения взаимодействующих объектов.
· каждый объект имеет тип.
· каждый объект имеет собственную часть памяти и может состоять из других объектов.
Для решения широкого круга задач в поставку Python входит достаточно обширная стандартная библиотека. Для ещё большего расширения возможностей языка в интернете доступны другие разнообразные качественные библиотеки по различным предметным областям: инструменты для создания приложений, средства обработки текстов и изображений, механизмы работы с базами данных, библиотеки построения графического интерфейса, пакеты для научных вычислений, и т.п. Python портирован и работает практически на большинстве известных платформ -- от КПК до мейнфреймов. Существуют порты под Microsoft Windows, Mac OS и Mac OS X, практически все вариации UNIX (включая FreeBSD и Linux), Plan 9, Palm OS, OS/2, Amiga, HaikuOS, AS/400 и OS/390, Windows Mobile, iPhone OS 2.0 и выше, Symbian и Android. Так же Python имеет достаточно простые средства для интеграции с языками C, C++ и Java, как путем встраивания (embedding) интерпретатора в программы на этих языках, так и наоборот, посредством использования библиотек, написанных на этих языках, в Python-программах. Язык Python поддерживает некоторые виды парадигм программирования: функциональное, императивное и объектно-ориентированное программирование. Язык Python используется в самых разных областях, от администрирования систем, разработки веб-сайтов, создания сценариев для мобильных устройств и обучения, до тестирования аппаратуры, анализа капиталовложений, компьютерных игр и управления космическими кораблями [4].
В настоящее время язык совершенствуется особенно активно, так как теперь над ним работает не только команда создателей, но и целое сообщество программистов со всего мира. Но даже сейчас Гвидо ван Россум остается ведущим специалистом языка и за ним всегда стоит последнее слово о направлении его развития.
2. Практическая часть
2.1 Описание предметной области
Задачей является фиксирование информационной работы отеля. Деятельность организована следующим образом: отель предоставляет номера клиентам на определенный срок. Каждый номер характеризуется вместимостью, комфортностью (люкс, полулюкс, обычный), ценой и некоторым комментарием. Клиентами являются различные лица, о которых собирается определенная информация (фамилия, имя, отчество, паспортные данные (серия паспорта, номер паспорта), пол и некоторый комментарий). Сдача номера производится по подходящим клиенту критериям из указанных выше параметров. При поселении фиксируется дата поселения. При выезде из гостиницы для каждого места запоминается дата освобождения.
Классы объектов:
Клиенты (Клиент, Фамилия, Имя, Отчество, Серия, Номер, Комментарий).
Номера (Номер, Количество человек, Комфортность, Цена, Комментарий).
Поселение (Клиент, Номер, Дата поселения, Дата освобождения, Комментарий).
2.2 Диаграмма классов
Рисунок 1 - Диаграмма классов.
Большинство основных классов имеют сходные атрибуты - “code” и “comment”. В этом случае их можно выделить в отдельный класс, от которого будут унаследованы остальные классы. Подобное выделение общих свойств классов в общий класс-предок называется обобщением (generalization). Назовем этот класс “general”.
Класс “ general ” имеет атрибуты:
“code” - уникальный код для однозначной идентификации объекта;
“comment” - комментарий.
Вначале описывается конструктор класса “__init__” - функция, размещающая объект в памяти и возвращающая ссылку на него, кроме того конструктор может выполнять некоторые действия, необходимые при создании объекта, в данном случае это задание начальных значений атрибутов.
Двойной символ подчёркивания в названии атрибута означает, что атрибут является приватный, недоступный для использования вне класса. Это позволяет использовать одинаковые имена атрибутов в разных классах. Доступ к атрибуту осуществляется через специальные функции:
“setcode”, “setcomment”
“getcode”, “getcomment”
“set” - позволяет задать или изменить значение атрибута;
“get” - возвращает в качестве результата значения атрибута;
Через “general.__init__(self,code,comment)” остальные классы смогут унаследовать атрибуты класса general.
Далее будут подробно описаны только основные классы и их атрибуты.
Клиенты представлены классом “client”, который имеет атрибуты:
“code” - код клиента;
"surname” - фамилия;
“name” - имя;
“secname” - отчество;
“series” - серия;
“number” - номер;
“sex” - пол.
“comment” - комментарий.
Специальные функции:
“setsurname”, “setname”, “setsecname”, “setseries”, “setnumber”, “setsex”;
“getsurname”, “getname”, “getsecname”, “getseries”, “getnumber”, “getsex”;
Комнаты представлены классом “room”, который имеет атрибуты:
“code” - код номера;
“number” - номер;
“occupancy” - вместимость;
“comfort” - комфорт;
“price” - цена;
“comment” - комментарий.
Специальные функции:
“setnumber”, “setoccupancy”, “setcomfort”, “setprice”;
“getnumber”, “getoccupancy”, “getcomfort”, “getprice”.
Поселения представлены классом “settlement”, который имеет атрибуты:
“code” - код поселения;
“room” - комната, представлена классом “room”;
“date_in ” - дата поселения;
“date_out ” - дата освобождения;
“comment” - комментарий.
Специальные функции:
“setroom”, “setdate_in”, “setdate_out”;
“getdate_in”, “getdate_out”, “getroomcode”;
“getroomnumber”, “getroomoccupancy”, “getroomcomfort”, “getroomprice”, “getroomcomment”;
“appendclient” - позволяет добавить клиента в поселение,
“removeclient” - позволяет удалить клиента из поселения,
“clearclients” - позволяет удалить всех клиентов из поселения;
“getclientcodes”, “getclientsurname”, “getclientname”, “getclientsecname”, “getclientseries”, “getclientnumber”, “getclientsex”, “getclientcomment”;
“getclientshotelstr”- позволяет получить: “ФИО клиента”,
“gethotelstr” - позволяет получить: “ФИО клиента, номер комнаты клиента, дата поселения, дата освобождения”.
2.3 Реализация на языке “Python”
Рассмотрим реализацию модели информационной системы регистрации и размещения клиентов отеля.
# -*- coding: utf-8 -*-
В первой строке задаётся кодировка файла программы, если вдруг в тексте программы понадобиться использовать символы кириллицы. Воспользуемся кодировкой utf-8.
Далее следует описание класса “general”.
#-*- coding: utf-8 -*-
class general:
def __init__(self,code=1,comment=''):
self.setcode(code)
self.setcomment(comment)
def setcode(self,code):
if not(isinstance(code, int)):
raise Exception("Znachenie polja *cod* dolzhno byt' celym chislom")
if (code < 0):
raise Exception("Znachenie polja kod dolzhno byt' polozhitel'nym. Peredano %i" % code)
self.__code=code
def setcomment(self,comment):
self.__comment=comment
def getcode(self):
return self.__code
def getcomment(self):
return self.__comment
Далее следует описание класса “generalistedit”.
# -*- coding: utf-8 -*-
from general import general
class generallistedit():
def __init__(self):self.__list=[]
def clear(self):self.__list=[]
def findByCode(self,code):
for h in self.__list:
if h.getcode()==code:
return h
def getcodes(self):return [s.getcode() for s in self.__list]
def getnewcode(self):
m=0
for c in self.getcodes():
if c>m:m=c
return m+1
def appendlist(self,value):self.__list.append(value)
def removelist(self,code):
for s in self.__list:
if s.getcode()==code:self.__list.remove(s)
def getcomment(self,code):return self.findByCode(code).getcomment()
Далее следует описание класса “client”.
# -*- coding: utf-8 -*-
from general import general
sextypes = {"man", "woman", "мужской", "женский"}
class client(general):
def __init__(self,code,surname,name,secname,series,number,sex,comment=""):
general.__init__(self,code,comment)
self.setsurname(surname)
self.setname(name)
self.setsecname(secname)
self.setseries(series)
self.setnumber(number)
self.setsex(sex)
def setsurname(self,surname):
if not(isinstance(surname, str)):
raise Exception("Znachenie polja *familia* dolzhno byt' strokoj")
self.__surname=surname
def setname(self,name):
if not(isinstance(name, str)):
raise Exception("Znachenie polja *imya* dolzhno byt' strokoj")
self.__name=name
def setsecname(self,secname):
if not(isinstance(secname, str)):
raise Exception("Znachenie polja *otchestvo* dolzhno byt' strokoj")
self.__secname=secname
def setseries(self,series):
if not(isinstance(series, int)):
raise Exception("Znachenie polja *serija* dolzhno byt' celym chislom")
if (series < 1000 or series > 9999):
raise Exception("Znachenie polja *serija* dolzhno byt' polozhitel'nym i v predele ot 1000 do 9999")
self.__series=series
def setnumber(self,number):
if not(isinstance(number, int)):
raise Exception("Znachenie polja *nomer* dolzhno byt' celym chislom")
if (number < 100000 or number > 999999):
raise Exception("Znachenie polja *nomer* dolzhno byt' polozhitel'nym i v predele ot 100000 do 999999")
self.__number=number
def setsex(self,sex):
if not(isinstance(sex, str)):
raise Exception("Znachenie polja *pol* dolzhno byt' strokoj")
if not(sex in sextypes):
raise Exception("Pol dolzhen byt' muzhskoj ili zheskij")
self.__sex=sex
def getsurname(self):
return self.__surname
def getname(self):
return self.__name
def getsecname(self):
return self.__secname
def getseries(self):
return self.__series
def getnumber(self):
return self.__number
def getsex(self):
return self.__sex
def getperson(self):
return self.__surname + " " + self.__name[0] + "." + " " + self.__secname[0] + "."
Далее следует описание класса “сlientlistedit” - список клиентов.
# -*- coding: utf-8 -*-
from client import client
from generallistedit import generallistedit
class clientlistedit(generallistedit):
def newrec(self,code,surname,name,secname,series,number,sex,comment=""):
self.appendlist(client(code,surname,name,secname,series,number,sex,comment))
def setsurname(self,code,value):self.findByCode(code).setsurname(value)
def setname(self,code,value):self.findByCode(code).setname(value)
def setsecname(self,code,value):self.findByCode(code).setsecname(value)
def setseries(self,code,value):self.findByCode(code).setseries(value)
def setnumber(self,code,value):self.findByCode(code).setnumber(value)
def setsex(self,code,value):self.findByCode(code).setsex(value)
def setcomment(self,code,value):self.findByCode(code).setcomment(value)
def getsurname(self,code):return self.findByCode(code).getsurname()
def getname(self,code):return self.findByCode(code).getname()
def getsecname(self,code):return self.findByCode(code).getsecname()
def getseries(self,code):return self.findByCode(code).getseries()
def getnumber(self,code):return self.findByCode(code).getnumber()
def getsex(self,code):return self.findByCode(code).getsex()
def getpersonstr(self,code):
return self.findByCode(code).getperson()
def getlistpersonstr(self):
s=''
for code in self.getcodes():
s+=self.getpersonstr(code)
s+=', '
return s[:-2]
Далее следует описание класса “room”.
# -*- coding: utf-8 -*-
from general import general
occupancytypes = {1,2,3,4,6,10}
class room(general):
def __init__(self,code,number,occupancy,comfort,price,comment=""):
general.__init__(self,code,comment)
self.setnumber(number)
self.setoccupancy(occupancy)
self.setcomfort(comfort)
self.setprice(price)
def setnumber(self,number):
if not(isinstance(number, int)):
raise Exception("Znachenie polja *nomer* dolzhno byt' celym chislom")
if (number < 1):
raise Exception("Znachenie polja *nomer* za den' dolzhno byt' polozhitel'nym")
self.__number=number
def setoccupancy(self,occupancy):
if not(isinstance(occupancy, int)):
raise Exception("Znachenie polja *kolichestvo mest* dolzhno byt' celym chislom")
if not(occupancy in occupancytypes):
raise Exception("Znachenie polja *kolichestvo mest* dolzhno byt': 1/2/3/4/6/10")
self.__occupancy=occupancy
def setcomfort(self,comfort):
if not(isinstance(comfort, str)):
raise Exception("Znachenie polja *komfortnost'* dolzhno byt' strokoj")
self.__comfort=comfort
def setprice(self,price):
if not(isinstance(price, int)):
raise Exception("Znachenie polja *tsena* dolzhno byt' celym chislom")
if (price < 1):
raise Exception("Znachenie polja *tsena* za den' dolzhno byt' polozhitel'nym")
self.__price=price
def getnumber(self):
return self.__number
def getoccupancy(self):
return self.__occupancy
def getcomfort(self):
return self.__comfort
def getprice(self):
return self.__price
Далее следует описание класса “roomlistedit” - список комнат.
# -*- coding: utf-8 -*-
from room import room
from generallistedit import generallistedit
class roomlistedit(generallistedit):
def newrec(self,code,number,occupancy,comfort,price,comment=""):
self.appendlist(room(code,number,occupancy,comfort,price,comment))
def setnumber(self,code,value):self.findByCode(code).setnumber(value)
def setoccupancy(self,code,value):self.findByCode(code).setoccupancy(value)
def setcomfort(self,code,value):self.findByCode(code).setcomfort(value)
def setprice(self,code,value):self.findByCode(code).setprice(value)
def setcomment(self,code,value):self.findByCode(code).setcomment(value)
def getcode(self,code):return self.findByCode(code).getcode()
def getnumber(self,code):return self.findByCode(code).getnumber()
def getoccupancy(self,code):return self.findByCode(code).getoccupancy()
def getcomfort(self,code):return self.findByCode(code).getcomfort()
def getprice(self,code):return self.findByCode(code).getprice()
def getcomment(self,code):return self.findByCode(code).getcomment()
Далее следует описание класса “settlement”.
# -*- coding: utf-8 -*-
from general import general
from room import room
from clientlistedit import clientlistedit
class settlement(general,room):
def __init__(self,code,date_in,date_out,room=None,comment=""):
general.__init__(self,code,comment)
self.__clients=clientlistedit()
self.setroom(room)
self.setdate_in(date_in)
self.setdate_out(date_out)
def setroom(self, room):
self.__room = room
def setdate_in(self,di):
if not(isinstance(di, str)):
raise ValueError("Znachenie *data zaezda* dolzhno byt' strokoj")
self.__date_in=di
def setdate_out(self,do):
if not(isinstance(do, str)):
raise ValueError("Znachenie *data vyezda* dolzhno byt' strokoj")
self.__date_out=do
def getdate_in(self):
return self.__date_in
def getdate_out(self):
return self.__date_out
def getroomcode(self):return self.__room.getcode()
def getroomnumber(self):return self.__room.getnumber()
def getroomoccupancy(self):return self.__room.getoccupancy()
def getroomcomfort(self):return self.__room.getcomfort()
def getroomprice(self):return self.__room.getprice()
def getroomcomment(self):return self.__room.getcomment()
def appendclient(self,value):self.__clients.appendlist(value)
def removeclient(self,code):self.__clients.removelist(code)
def clearclients(self):self.__clients.clear()
def getclientcodes(self):return self.__clients.getcodes()
def getclientsurname(self,code):return self.__clients.findByCode(code).getsurname()
def getclientname(self,code):return self.__clients.findByCode(code).getname()
def getclientsecname(self,code):return self.__clients.findByCode(code).getsecname()
def getclientseries(self,code):return self.__clients.findByCode(code).getseries()
def getclientnumber(self,code):return self.__clients.findByCode(code).getnumber()
def getclientsex(self,code):return self.__clients.findByCode(code).getsex()
def getclientcomment(self,code):return self.__clients.findByCode(code).getcomment()
def getclientshotelstr(self):
return self.__clients.getlistpersonstr()
def gethotelstr(self):
s=self.getclientshotelstr()
if self.__room:sroom=self.getroomnumber()
else:sroom=""
s+=': room %s, %s - %s'%(sroom,self.getdate_in(),self.getdate_out())
return s
Далее следует описание класса “settlementlistedit” - список поселений.
# -*- coding: utf-8 -*-
from generallistedit import generallistedit
from settlement import settlement
class settlementlistedit(generallistedit):
def newrec(self,code,date_in,date_out,room=None,comment=""):
self.appendlist(settlement(code,date_in,date_out,room,comment))
def setdate_in(self,code,value):self.findByCode(code).setdate_in(value)
def setdate_out(self,code,value):self.findByCode(code).setdate_out(value)
def setroom(self,code,value):self.findByCode(code).setroom(value)
def setcomment(self,code,value):self.findByCode(code).setcomment(value)
инкапсуляция программирование рython
def appendclient(self,code,value):self.findByCode(code).appendclient(value)
def removeclient(self,scode,ccode):self.findByCode(scode).removeclient(ccode)
def clearclients(self,code):self.findByCode(code).clearclients()
def getdate_in(self,code):return self.findByCode(code).getdate_in()
def getdate_out(self,code):return self.findByCode(code).getdate_out()
def getcomment(self,code):return self.findByCode(code).getcomment()
def getroomcode(self,code):return self.findByCode(code).getroomcode()
def getroomnumber(self,code):return self.findByCode(code).getroomnumber()
def getroomoccupancy(self,code):return self.findByCode(code).getroomoccupancy()
def getroomcomfort(self,code):return self.findByCode(code).getroomcomfort()
def getroomprice(self,code):return self.findByCode(code).getroomprice()
def getroomcomment(self,code):return self.findByCode(code).getroomcomment()
def getclientsurname(self,scode,ccode):return self.findByCode(scode).getclientsurname(ccode)
def getclientname(self,scode,ccode):return self.findByCode(scode).getclientname(ccode)
def getclientsecname(self,scode,ccode):return self.findByCode(scode).getclientsecname(ccode)
def getclientseries(self,scode,ccode):return self.findByCode(scode).getclientseries(ccode)
def getclientnumber(self,scode,ccode):return self.findByCode(scode).getclientnumber(ccode)
def getclientsex(self,scode,ccode):return self.findByCode(scode).getclientsex(ccode)
def getclientcomment(self,scode,ccode):return self.findByCode(scode).getclientcomment(ccode)
def getclientcodes(self,code):return self.findByCode(code).getclientcodes()
def getclientshotelstr(self,code):return self.findByCode(code).getclientshotelstr()
def gethotelstr(self,code):return self.findByCode(code).gethotelstr()
Теперь напишем программу в файле «main1.py», которая будет создавать объекты по описанным классам. В качестве примера добавим новое поселение. Информация о работе программы будет выведена на экран.
#-*- coding:utf-8 -*-
from settlement import settlement
from client import client
from room import room
h1=settlement(1,"01.01.17","10.01.17")
h1.appendclient(client(1, "Rinder", "Andrew", "Aleksandrovich", 7123, 129033, "man"))
h1.appendclient(client(2, "Rinder", "Olivia", "Maksimovna", 7156, 528745, "woman"))
h1.appendclient(client(3, "Rinder", "Alex", "Andreevich", 7156, 528745, "woman"))
h1.setroom(room(12,12,3,"standart",5000))
print h1.gethotelstr()
h1.removeclient(2)
print h1.gethotelstr()
h1.clearclients()
print "No clients", h1.gethotelstr()
h1.appendclient(client(1, "Rinder", "Andrew", "Aleksandrovich", 7123, 129033, "man"))
h1.appendclient(client(2, "Rinder", "Olivia", "Maksimovna", 7136, 528745, "woman"))
h1.appendclient(client(3, "Rinder", "Alex", "Andreevich", 7182, 288744, "man"))
print h1.gethotelstr()
После активации программы в файле «main1.py» получаем информацию о добавленном поселении:
Rinder A. A., Rinder O. M., Rinder A. A.: room 12, 01.01.17 - 10.01.17
Rinder A. A., Rinder A. A.: room 12, 01.01.17 - 10.01.17
No clients : room 12, 01.01.17 - 10.01.17
Rinder A. A., Rinder O. M., Rinder A. A.: room 12, 01.01.17 - 10.01.17
Данные строки показывает работоспособность программы и правильное функционирование описанных нами классов. В первой строке добавлены два клиента в поселение. Во второй строке удален клиент один из данного поселения. В третьей строке полностью очищен весь список клиентов поселения. В четвертой строке все клиенты успешно восстановлены.
Далее следует описание класса “hotel”.
# -*- coding: utf-8 -*-
from clientlistedit import clientlistedit
from roomlistedit import roomlistedit
from settlementlistedit import settlementlistedit
class hotel(clientlistedit,roomlistedit,settlementlistedit):
def __init__(self):
self.__clients=clientlistedit()
self.__rooms=roomlistedit()
self.__settlements=settlementlistedit()
def removeclient(self,code):
self.__clients.removelist(code)
for c in self.__settlements.getcodes():
self.__settlements.removeclient(c,code)
def removeroom(self, code):
self.__rooms.removelist(code)
for c in self.__settlements.getcodes():
self.__settlements.setroom(c,None)
def removesettlement(self,code):
self.__settlements.removelist(code)
def clear(self):
self.__settlements.clear()
self.__clients.clear()
self.__rooms.clear()
def newclient(self,code,surname,name,secname,series,number,sex,comment=""):
self.__clients.newrec(code,surname,name,secname,series,number,sex,comment)
def findClientByCode(self,code):return self.__clients.findByCode(code)
def getclientnewcode(self):return self.__clients.getnewcode()
def getclientcodes(self):return self.__clients.getcodes()
def getclientsurname(self,code):return self.__clients.getsurname(code)
def getclientname(self,code):return self.__clients.getname(code)
def getclientsecname(self,code):return self.__clients.getsecname(code)
def getclientseries(self,code):return self.__clients.getseries(code)
def getclientnumber(self,code):return self.__clients.getnumber(code)
def getclientsex(self,code):return self.__clients.getsex(code)
def getclientcomment(self,code):return self.__clients.getcomment(code)
def getclientshotelstr(self,code):
return self.__clients.getlistpersonstr(code)
def getclienthotelstr(self,code):
return self.__clients.getpersonstr(code)
def setclientsurname(self,code,value): self.__clients.setsurname(code,value)
def setclientname(self,code,value): self.__clients.setname(code,value)
def setclientsecname(self,code,value): self.__clients.setsecname(code,value)
def setclientseries(self,code,value): self.__clients.setseries(code,value)
def setclientnumber(self,code,value): self.__clients.setnumber(code,value)
def setclientsex(self,code,value): self.__clients.setsex(code,value)
def setclientcomment(self,code,value): self.__clients.setcomment(code,value)
def newroom(self,code,number,occupancy,comfort,price,comment=""):
self.__rooms.newrec(code,number,occupancy,comfort,price,comment)
def findRoomByCode(self,code):return self.__rooms.findByCode(code)
def getroomnewcode(self):return self.__rooms.getnewcode()
def getroomcodes(self):return self.__rooms.getcodes()
def getroomcode(self,code):return self.__rooms.getcode(code)
def getroomnumber(self,code):return self.__rooms.getnumber(code)
def getroomoccupancy(self,code):return self.__rooms.getoccupancy(code)
def getroomcomfort(self,code):return self.__rooms.getcomfort(code)
def getroomprice(self,code):return self.__rooms.getprice(code)
def getroomcomment(self,code):return self.__rooms.getcomment(code)
def setroomnumber(self,code,value):self.__rooms.setnumber(code,value)
def setroomoccupancy(self,code,value):self.__rooms.setoccupancy(code,value)
def setroomcomfort(self,code,value):self.__rooms.setcomfort(code,value)
def setroomprice(self,code,value):self.__rooms.setprice(code,value)
def setroomcomment(self,code,value):self.__rooms.setcomment(code,value)
def newsettlement(self,code,date_in,date_out,room=None,comment=""):
self.__settlements.newrec(code,date_in,date_out,room,comment)
def findSettlementByCode(self,code):return self.__settlements.findByCode(code)
def appendsettlementclient(self,scode,value):self.__settlements.appendclient(scode,value)
def removesettlementclient(self,scode,ccode): self.__settlements.removeclient(scode,ccode)
def clearsettlementclients(self,scode):self.__settlements.clearclients(scode)
def setsettlementdate_in(self,code,value):self.__settlements.setdate_in(code,value)
def setsettlementdate_out(self,code,value):self.__settlements.setdate_out(code,value)
def setsettlementroom(self,code,rcode):self.__settlements.setroom(code,self.findRoomByCode(rcode))
def setsettlementcomment(self,code,value):self.__settlements.setcomment(code,value)
def getsettlementcodes(self):return self.__settlements.getcodes()
def getsettlementnewcode(self):return self.__settlements.getnewcode()
def getsettlements(self):return self.__settlements
def getsettlementdate_in(self,code):return self.__settlements.getdate_in(code)
def getsettlementdate_out(self,code):return self.__settlements.getdate_out(code)
def getsettlementroomcode(self,code):return self.__settlements.getroomcode(code)
def getsettlementroomnumber(self,code):return self.__settlements.getroomnumber(code)
def getsettlementroomoccupancy(self,code):return self.__settlements.getroomoccupancy(code)
def getsettlementroomcomfort(self,code):return self.__settlements.getroomcomfort(code)
def getsettlementroomprice(self,code):return self.__settlements.getroomprice(code)
def getsettlementroomcomment(self,code):return self.__settlements.getroomcomment(code)
def getsettlementcomment(self,code):return self.__settlements.getcomment(code)
def getsettlementclientsurname(self,scode,ccode):return self.__settlements.getclientsurname(scode,ccode)
def getsettlementclientname(self,scode,ccode):return self.__settlements.getclientname(scode,ccode)
def getsettlementclientsecname(self,scode,ccode):return self.__settlements.getclientsecname(scode,ccode)
def getsettlementclientseries(self,scode,ccode):return self.__settlements.getclientseries(scode,ccode)
def getsettlementclientnumber(self,scode,ccode):return self.__settlements.getclientnumber(scode,ccode)
def getsettlementclientsex(self,scode,ccode):return self.__settlements.getclientsex(scode,ccode)
def getsettlementclientcomment(self,scode,ccode):
return self.__settlements.getclientcomment(scode,ccode)
def getsettlementclientcodes(self,code):return self.__settlements.getclientcodes(code)
def getsettlementclientshotelstr(self,code):return self.__settlements.getclientshotelstr(code)
def getsettlementhotelstr(self,code):return self.__settlements.gethotelstr(code)
def getsettlementhotelstrs(self):
return [self.getsettlementhotelstr(s) for s in self.getsettlementcodes()]
Класс “hotel” - главный модуль при последующей работе с базами данных xml и sql, в котором вызываются основные функции для работы с программой. Все данные и операции проходят через него.
Далее следует описание класса “dataxml”.
# -*- coding: utf-8 -*-
from xml.dom.minidom import parse, Document
class dataxml:
def read(self,inp,hot):
dom=parse(inp)
dom.normalize()
for node in dom.childNodes[0].childNodes:
if (node.nodeType==node.ELEMENT_NODE)and(node.nodeName=="client"):
code,surname,name,secname,series,number,sex,comment=1,"","","","","","",""
for t in node.attributes.items():
if t[0]=="code":code=int(t[1])
if t[0]=="surname":surname=str(t[1])
if t[0]=="name":name=str(t[1])
if t[0]=="secname":secname=str(t[1])
if t[0]=="series":series=int(t[1])
if t[0]=="number":number=int(t[1])
if t[0]=="sex":sex=str(t[1])
if t[0]=="comment":comment=str(t[1])
hot.newclient(code,surname,name,secname,series,number,sex,comment)
if (node.nodeType==node.ELEMENT_NODE)and(node.nodeName=="room"):
code,number,occupancy,comfort,price,comment=1,"","","","",""
for t in node.attributes.items():
if t[0]=="code":code=int(t[1])
if t[0]=="number":number=int(t[1])
if t[0]=="occupancy":occupancy=int(t[1])
if t[0]=="comfort":comfort=str(t[1])
if t[0]=="price":price=int(t[1])
if t[0]=="comment":comment=str(t[1])
hot.newroom(code,number,occupancy,comfort,price,comment)
if (node.nodeType==node.ELEMENT_NODE)and(node.nodeName=="settlement"):
code,date_in,date_out,room,comment=1,"","",None,""
for t in node.attributes.items():
if t[0]=="code":code=int(t[1])
if t[0]=="date_in":date_in=str(t[1])
if t[0]=="date_out":date_out=str(t[1])
if t[0]=="room":room=hot.findRoomByCode(int(t[1]))
if t[0]=="comment":comment=str(t[1])
hot.newsettlement(code,date_in,date_out,room,comment)
for n in node.childNodes:
if (n.nodeType==n.ELEMENT_NODE)and(n.nodeName=="client"):
for t in n.attributes.items():
if t[0]=="code":client=hot.findClientByCode (int(t[1]))
hot.appendsettlementclient(code,client)
def write(self,out,hot):
dom=Document()
root=dom.createElement("hotel")
dom.appendChild(root)
for c in hot.getclientcodes():
cli=dom.createElement("client")
cli.setAttribute("code",str(c))
cli.setAttribute("surname",hot.getclientsurname(c))
cli.setAttribute("name",hot.getclientname(c))
cli.setAttribute("secname",hot.getclientsecname(c))
cli.setAttribute("series",str(hot.getclientseries(c)))
cli.setAttribute("number",str(hot.getclientnumber(c)))
cli.setAttribute("sex",hot.getclientsex(c))
cli.setAttribute("comment",hot.getclientcomment(c))
root.appendChild(cli)
for c in hot.getroomcodes():
roo=dom.createElement("room")
roo.setAttribute("code",str(c))
roo.setAttribute("number",str(hot.getroomnumber(c)))
roo.setAttribute("occupancy",str(hot.getroomoccupancy(c)))
roo.setAttribute("comfort",hot.getroomcomfort(c))
roo.setAttribute("price",str(hot.getroomprice(c)))
roo.setAttribute("comment",hot.getroomcomment(c))
root.appendChild(roo)
for c in hot.getsettlementcodes():
stl=dom.createElement("settlement")
stl.setAttribute("code",str(c))
stl.setAttribute("date_in",str(hot.getsettlementdate_in(c)))
stl.setAttribute("date_out",str(hot.getsettlementdate_out(c)))
stl.setAttribute("room",str(hot.getsettlementroomcode(c)))
stl.setAttribute("comment",hot.getsettlementcomment(c))
for ac in hot.getsettlementclientcodes(c):
cli=dom.createElement("client")
cli.setAttribute("code",str(ac))
stl.appendChild(cli)
root.appendChild(stl)
f = open(out,"w")
f.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="2" comfort="standard" comment="---" number="2" 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 -*-
from hotel import hotel
from dataxml import dataxml as datax
hot=hotel()
datx=datax()
datx.read('old.xml',hot)
datx.write('new.xml',hot)
for x in hot.getsettlementhotelstrs():
print x
После активации программы в файле «main2.py» получаем информацию обо всех поселениях в базе данных xml:
Antonov O. M., Antonova L. M.: room 7, 13.02.17 - 19.02.17
Mirin A. F.: room 1, 31.01.17 - 03.02.17
Volentaj J. R., Volkov D. V., Lorina O. V., Luzhin M. P.: room 16, 27.01.17 - 11.02.17
Далее следует описание класса “datasql”.
import os
import sqlite3 as db
emptydb = """
PRAGMA foreign_keys = ON;
create table client
(code integer primary key,
surname text,
name text,
secname text,
series integer,
number integer,
sex text,
comment text);
create table room
(code integer primary key,
number integer,
occupancy integer,
comfort text,
price integer,
comment text);
create table settlement
(code integer primary key,
date_in text,
date_out text,
room integer references room(code) on update cascade on delete set null,
comment text);
create table settlement_client
(code integer primary key autoincrement,
settlement integer references settlement(code) on update cascade on delete cascade,
client integer references client(code) on update cascade on delete cascade,
unique(settlement,client));
"""
class datasql:
def read(self,inp,hot):
conn = db.connect(inp)
curs = conn.cursor()
curs.execute("select code,surname,name,secname,series,number,sex,comment from client")
data=curs.fetchall()
for 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]))
curs.execute("select code,number,occupancy,comfort,price,comment from room")
data=curs.fetchall()
for r in data:hot.newroom(r[0],r[1],r[2],str(r[3]),r[4],str(r[5]))
curs.execute("select code,date_in,date_out,room,comment from settlement")
data=curs.fetchall()
for r in data:hot.newsettlement(r[0],str(r[1]),str(r[2]),hot.findRoomByCode(int(r[3])),r[4])
curs.execute("select settlement,client from settlement_client")
data=curs.fetchall()
for r in data:
hot.appendsettlementclient(r[0],hot.findClientByCode(r[1]))
conn.close()
def write(self,out,hot):
conn = db.connect(out)
curs = conn.cursor()
curs.executescript(emptydb)
for c in hot.getclientcodes():
curs.execute("insert into client(code,surname,name,secname,series,number,sex,comment) values('%s','%s','%s','%s','%s','%s','%s','%s')"%(
str(c),
hot.getclientsurname(c),
hot.getclientname(c),
hot.getclientsecname(c),
str(hot.getclientseries(c)),
str(hot.getclientnumber(c)),
hot.getclientsex(c),
hot.getclientcomment(c)))
for c in hot.getroomcodes():
curs.execute("insert into room(code,number,occupancy,comfort,price,comment) values('%s','%s','%s','%s','%s','%s')"%(
str(c),
str(hot.getroomnumber(c)),
str(hot.getroomoccupancy(c)),
hot.getroomcomfort(c),
str(hot.getroomprice(c)),
hot.getroomcomment(c)))
for c in hot.getsettlementcodes():
curs.execute("insert into settlement(code,date_in,date_out,room,comment) values('%s','%s','%s','%s','%s')"%(
str(c),
hot.getsettlementdate_in(c),
hot.getsettlementdate_out(c),
hot.getsettlementroomcode(c),
hot.getsettlementcomment(c)))
for ac in hot.getsettlementclientcodes(c):
curs.execute("insert into settlement_client(settlement,client) values('%s','%s')"%(
str(c),
str(ac)))
conn.commit()
conn.close()
Данный класс содержит методы как прочтения данных из базы данных в формате sqlite, так и записи в нее.
Далее с помощью специальных программ или вручную необходимо создать файл. Чтобы не заполнять базу данных заново напишем программу в файле «mainxs.py». Программа считает данные из файла «old.xml» c готовой базой данных и запишет их в файл «old.sqlite». В конце программа для демонстрации работы будет выводить на экран информацию обо всех поселениях отеля в виде списка информационных строк:
#-*- coding:utf-8 -*-
from hotel import hotel
from dataxml import dataxml as datax
Подобные документы
Отличительные особенности языка программирования Python: низкий порог вхождения, минималистичный язык, краткий код, поддержка математических вычислений, большое количество развитых web-фреймворков. Традиционная модель выполнения программ на языке Python.
реферат [51,9 K], добавлен 18.01.2015Понятие и характеристики облачных технологий, модели их развертывания, технологические процессы, аспекты экономики и критика. Язык программирования Python, оценка функциональности, сравнение с аналогами. Управление облаком в Python на примере libcloud.
курсовая работа [43,0 K], добавлен 08.06.2014Программное обеспечение Python и ее основные характеристики, как программной среды. Общие сведения о языке программирования Python. Особенности применения ППП Python (x,y) с использованием его различных вычислительных модулей в учебном процессе.
дипломная работа [2,9 M], добавлен 07.04.2019Use case-диаграмма. Оценка трудоёмкости и сроков разработки проекта с использованием языка Python по методикам CETIN И COCOMO-II. Проектирование информационной системы. Разработка приложения с использованием Django: создание шаблонов, моделей и пр.
дипломная работа [1,3 M], добавлен 10.07.2017Исторические аспекты развития линии "Алгоритмизация и программирование" в старшей школе. Изучение языка программирования Python с применением дистанционных курсов Coursera. Методическая система обучения программированию с использованием Coursera.
дипломная работа [808,8 K], добавлен 13.12.2017Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.
курсовая работа [160,3 K], добавлен 03.12.2014Разработка структуры базы данных для хранения дипломных проектов в среде объектно-ориентированного программирования Python. Создание внешнего вида окон ввода-вывода информации, технологии переходов. Листинг программы с пояснениями; направления улучшения.
курсовая работа [3,1 M], добавлен 27.02.2015Разработка базы данных для учета размещения и услуг гостиницы-отеля "Баташев". Анализ предметной области, проектирование базы данных. Реализация SQL-запросов для создания объектов и получения отчетов. Реализация приложения для работы с базой данных.
курсовая работа [336,0 K], добавлен 05.01.2014Разработка программ средствами библиотеки tkinter на языке Python. Изучение основы работы в текстовом редакторе Word. Описание авторской идеи анимации. Использование базовых команд и конструкций. Процесс проектирования и алгоритм разработанной программы.
контрольная работа [125,3 K], добавлен 11.11.2014Представление полиномов в виде кольцевых списков и выполнение базовых арифметических действий над ними. Реализация алгоритмов сложения, умножения и вычитания полиномов класса List на языке программирования Python 2.7. в интегрированной среде Python IDLE.
курсовая работа [228,1 K], добавлен 11.01.2012