МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Кубанский государственный университет»
Среднее профессиональное образование
КУРСОВАЯ РАБОТА по учебной дисциплине
«ТЕХНОЛОГИЯ РАЗРАБОТКИ ПРОГРАММНЫХ ПРОДУКТОВ» Создание базы данных: "Работа гостиницы"
Выполнил: Трофименко Денис Александрович
Группа 10-ПО-01 СПО ОФО
Специальность: 230105.51 Программное обеспечение вычислительной техники и автоматизированных систем
Научный руководитель:
Соколов А.С. _______________ Дата сдачи на проверку ____________
Регистрационный № ____________
Дата защиты ____________
Оценка ____________
Тихорецк
2013
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1 Основание для разработки 4
1.1 Назначение разработки 4
2 Требование к программе или программному 5
2.1 Требования к функциональным характеристикам 5
2.2 Требования к надежности 5
2.3 Условия эксплуатации 6
2.4 Требования к информационной и программной совместимости 6
3 Стадии и этапы разработки 7
4 Реализация базы данных 8
5 Описание программы 10
5.1 Описание окон приложения 11
ЗАКЛЮЧЕНИЕ 18
Список ИСПОЛЬЗУЕМой литературы 19
Приложение А 20
ВВЕДЕНИЕ
Программный продукт «Работа гостиницы», описанный в данном курсовом проекте разработан для применения в гостиничном бизнесе Краснодарского края.
На сегодняшний день смело можно говорить о развитии гостиничного бизнеса, ведь с каждым днем появляется все больше различных гостиничных центров и предприятий. Создание больших гостиничных цепей позволило упростить поиск необходимой информации, ресурсов.
Выделяют несколько основных направлений, по которым развивается гостиничный бизнес. Основные из них тесно связаны с расширением услуг, которые предлагают гостиницы. Современная гостиница - это не только крыша над головой, но и место, в котором можно прекрасно провести досуг, отдохнуть и посетить интересные мероприятие (выставки) и др. Учет индивидуальных потребностей каждого посетителя, предоставление разнообразных телекоммуникационных услуг (интернет).
Появляются гостиницы, ориентированные на различный уровень посетителей, доступные также и посетителям с невысоким уровнем доходов.
Современные технологии дают возможность ориентироваться в потребностях нынешнего клиента и позволяют угодить даже самому требовательному посетителю.
В связи с этим, с целью ускорения поиска в разветвлённой сети гостиниц соответствующего современным требованиям клиента номера для комфортного проживания во время решения задач бизнеса была поставлена задача разработки сетевого программного обеспечения учета и распределения гостиничных номеров.
1 Основание для разработки
Основанием для разработки программного продукта «Работа гостиницы» является техническое задание, оформленное по ГОСТ 19.201-78, определяющее требования, предъявляемые к программному продукту, необходимые стадии и сроки разработки, а также виды испытаний.
1.1 Назначение разработки
Функциональным назначением разработанного программного продукта является объединение в единую вычислительную систему ряда гостиниц Краснодарского края, централизация управления объектами, многопользовательский доступ к которым позволяет стандартизировать работу системы, имеющей механизм быстрого развертывания структуры гостиниц.
2 Требование к программе или программному
2.1 Требования к функциональным характеристикам
Программный продукт проектируется с требованием ведения единой базы данных, включающей раздельную структуру объектов с возможностью распределения клиента в любой из гостиничных комплексов.
Набор выполняемых функций программного продукта включает:
ведение справочника гостиниц;
ведение справочника клиентов;
ведение справочника номеров;
ведение справочника типов номеров;
выбор гостиничного комплекса;
проверка наличия свободных номеров с показом имеющихся типов или ближайших дат освобождения;
при заселении клиента указываются даты заселения и освобождения занятого номера, а также должна быть предусмотрена процедура досрочного освобождения.
Справочник гостиниц имеет возможность распечатки полного списка гостиниц, а также списка свободных номеров в выбранной гостинице, ввод в работу нового гостиничного объекта и удаление выведенного из эксплуатации.
Справочник комнат содержит реквизит № (номер комнаты) и тип (стандартный одноместный, двухместный, апартаменты). В свою очередь тип комнаты состоит из следующих показателей: Тип; Класс; Цена.
2.2 Требования к надежности
В целях обеспечения надежности функционирования общей модели данных с учетом простоты реализации выбрана Система Управления Базами Данных (СУБД) Access корпорации Microsoft.
2.3 Условия эксплуатации
Выбранная СУБД не требует квалифицированного обслуживающего персонала. База данных реализована в едином файле данных, резервная копия которого выполняется простейшим копированием в отдельную папку любого компьютера локальной сети. Приложение, работающее с указанной базой данных представляет собой исполняемый .exeфайл, работающий на любом офисном компьютере, в том числе тонком клиенте. Требования для размещения средств вычислительной техники и информатики (СВТИ согласно ГОСТ Р50839-95) должны быть спроектированы в соответствии с требованиями норм СНиП 11-2-80.
2.4 Требования к информационной и программной совместимости
При разработке данного программного продукта была использована система быстрой разработки приложений Delphi 2006, использующейиндивидуальный язык программирования на основе Pascal. Защита информации в базе данных реализована методами парольной защиты встроенной в СУБД Access. Дополнительные режимы типа демонстрационной версии или ограниченной функциональности не предусмотрено по соображениям предоставления программного продукта широкому кругу пользователей бесплатно.
3 Стадии и этапы разработки
Основные стадии разработки включают проектирование моделей данных в виде структуры взаимодействия таблиц – ER-диаграммы, после утверждения созданной модели и внесения дополнений и исправлений на основе неё, генерируется база данных – создается файл .mdb, содержащий физическую модель данных. Следующим этапом разработки, является проектирование алгоритма работы пользовательского приложения имеющего графический интерфейс взаимодействия с пользователем. По готовности создания алгоритма выполняется проектирование графической оконной системы взаимодействия приложения с пользователем – дизайн-интерфейса.
Далее программируются обработчики событий визуальных компонентов и их взаимодействия между собой с использованием языка объектного программирования, разрабатываются необходимые функции процедуры обработки данных и исключительных ситуаций. В процессе программирования выполняется огромное количество компиляций программы и проверки правильности выполнения программируемых функций – отладка. На окончательной стадии процедуры отладки программное обеспечение тестируется в реальных условиях с ведением журнала обнаружимых ошибок с их исправлением.
4 Реализация базы данных
В данной теме представлена разработанная схема связанных таблиц, которая создана в программе Microsoft Office Access.
Microsoft Access — реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных (Рисунок 1). Основные компоненты MS Access:
построитель таблиц;
построитель экранных форм;
построитель SQL-запросов (язык SQL в MS Access не соответствует стандарту ANSI);
построитель отчётов, выводимых на печать.
Рисунок 1. Главное окно Microsoft Office Access 2010 Основные компоненты могут вызывать скрипты на языке VBA, поэтому MS Access позволяет разрабатывать приложения и Базы Данных практически «с нуля» или написать оболочку для внешней Базы Данных.
На рисунке 2 изображена схема базы данных по теме «Работа гостиниц».
Рисунок 2. Схема связей таблиц Главной таблицей в структуре базы является, таблица «Филиал», первичный ключ которой связан с таблицами " Комната" и «Заселение». Таблица «Комнат» имеет ключевую связь с таблицей "Тип". Таблица «Жильцы» является промежуточным звеном между таблицей «Клиент» и таблицей «Заселение», учитывающей проживание одновременно нескольких жильцов. Все таблицы имеют связи типа один ко многим, также через данные связи организованна целостность данных, запрещающая удаление строк в главной таблице при наличии записей подчиненные.
5 Описание программы
Основная часть программы была произведена в ПО Delphi с помощью языка Pascal.
Delphi — среда программирования, в которой используется язык программирования Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.
Рисунок 3. Главное окно программы Delphi Pascal — язык программирования общего назначения. Один из наиболее известных языков программирования, используется для обучения программированию в старших классах и на первых курсах вузов, является базой для ряда других языков.
Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом, представляя язык автор указывал в качестве цели его создания — построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные.
Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы — язык Модула-2.
5.1 Описание окон приложения
Окно приветствие выводится на экран при каждом запуске программы.
Рисунок 4. Окно приветствия Главное окно программы имеет стандартное меню, состоящее из следующих пунктов: Справочники (Клиенты, Филиалы, типы номеров, Справочник комнат);
Печать (Редактор отчетов).
Выпадающий список содержит имеющиеся в базе данных гостиницы и дает возможность выбрать активную гостиницу, с которой предполагается вести работу. Выбор гостиницы открывает список свободных и занятых комнат. Так же имеются функции заселения и выселения клиента (Рисунок 5).При заселении указываются датыначала и окончания периода проживания, после чего выбираетсясвободная комната.
Рисунок 5. Окно заселения жильцов Имеется таблица клиентов, которая сообщает нам фамилию, имя и отчество клиентов заранее выбранной кнопкой «Добавить», выбор клиента ведется из общей базы.
Рисунок 6. Главное окно Справочник клиентов пополняется в момент заселения новых клиентов или бронирования номеров. Окно справочника (Рисунок 7) имеет окно добавления (Рисунок 8) и функцию удаления клиентов, а так же предоставляет возможность распечатки Списка клиентов и свободных комнат.
Рисунок 7. Окно «Справочник клиентов»
Рисунок 8. Окно добавления клиента Справочник филиалов содержит список имеющихся гостиниц с указанным адресом места нахождения. Окно справочника (Рисунок 9) имеет функцию добавления и удаления филиала из общего списка. Так же предоставлена возможность распечатки списка филиалов и свободных комнат.
Рисунок 9. Окно «Справочник филиалов» Справочник типов, содержит в себе список возможных типов комнат в гостиницах. Каждому типу комнаты назначен свой класс, от чего зависит цена номера за сутки проживания в нем. Окно справочника (Рисунок 10) имеет функцию добавления и удаления типов номеров. Так же предоставлена возможность распечатки списка типов номеров и свободных комнат.
Рисунок 10. Окно справочника типов Справочник комнат содержит в себе список имеющихся комнат в выбранной гостинице (Рисунок 12), независящий от других гостиниц. В таблице указан номер комнаты её тип, класс и цена за сутки проживания в нем. Справочник имеет окно добавления комнаты в заранее выбранной гостинице, которое добавляет комнату в эту гостиницу и функцию удаления комнаты.
Рисунок 11. Окно Добавления комнаты Так же предоставлена возможность распечатки списка комнаты и свободных комнат.
Рисунок 12. Окно справочника комнат Программа имеет, встроенный редактор отчетов FastReport, позволяющий создавать необходимые отчеты любой сложности. В каждом справочнике есть возможность отпечатать отчет по данному справочнику, пример на Рисунке 13.
Рисунок 13. Отчет списка клиентов Также в каждом справочнике есть функция распечатки свободных комнат, пример (Рисунок 14).
Рисунок 14. Отчет свободных комнат FastReport® VCL – Генератор отчетов FastReport VCL представляет собой современное решение для внедрения Business Intelligense в программное обеспечение любого уровня. Мы создали его с учетом большинства потребностей разработчиков, желающих использовать готовые компоненты для отчетных средств. Именно FastReport VCL при всей своей простоте, удобстве и малом размере дистрибутива, способен обеспечить должный функционал и скорость работы на практически любом современном компьютере.
Рисунок 13. Главное окно дизайнера отчетов ЗАКЛЮЧЕНИЕ
Процесс выполнения данной курсовой работы послужил хорошей возможностью для приобретения новых знаний и навыков, а также закрепления уже полученных.
Гостиничный бизнес способен положительно влиять на экономику страны при условии достаточного развития. За последние годы в гостиничном бизнесе произошли некоторые изменения - сегодня гораздо выгоднее создавать большие гостиничные цепи. Различают интегрированные гостиничные цепи, и цепи, в которые входят обособленные отели.
Первые работают по принципу франчайзинга, что позволяет им развиваться ускоренными темпами, опираясь на предыдущий опыт. Единичные гостиницы, для того чтобы остаться на плаву, как правило, входят в гостиничные консорциумы.
В результате выполнения данной курсовой работы, я приобрел знания о широких возможностях Microsoft Office Access и языка программирования Delphi.
.
Список ИСПОЛЬЗУЕМой литературы
Ахо А., Ульман Дж. «Теория синтаксического анализа, перевода и компиляции» в 2 тт., том 1., М., Мир, 2008.
Братчиков И.Л. «Синтаксис языков программирования» Наука, М.:Инси, 2006. – 344 с.
Гулидов А.И., Наберухин Ю.И. Диалектика необходимого – случайного в свете концепции динамического хаоса. 2007. – № 1(9). – С.33–46.
Дейкстра Э. Заметки по структурному программированию.- М.:Дрофа, 2006, - 455 с.
Ершов А.П. Введение в теоретическое программирование.- М.:РОСТО, 2008, - 288 с.
Захарова И.Г. Информационные технологии в образовании: Учеб.пособие для студ. высш. пед. учеб. заведений. – М.: Издательский центр «Академия», 2009. – 192 с.
Кнут Д. Искусство программирования для ЭВМ, т.1. М.: 2006, 735 с.
Коган Д.И., Бабкина Т.С. «Основы теории конечных автоматов и регулярных языков. Учебное пособие» Издательство ННГУ, 2007. - 97 с.
Майерс Г. Надежность программного обеспечения.- М.:Дрофа, 2008, - 360 с.
Мендельсон Э. Введение в математическую логику, М.:Инси, 2006, - 320 с.
Рудаков А. В. Технология разработки программных продуктов. М.:Издательский центр "Академия", 2006. – 306 с.
Свешникова Е.Ю. Анализ режимов детерминированного хаоса в переходных процессах электроэнергетических систем. М.:Издательство «Агат», 2008. - 181 с.
Тыугу, Э.Х. Концептуальное программирование. - М.: Наука, 2009, - 256 с.
Приложение А
Листинг программы unitUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Grids, DBGrids, ExtCtrls, StdCtrls, DBCtrls, DB, Buttons,
XPMan, ComCtrls;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
Panel1: TPanel;
DBGrid2: TDBGrid;
Splitter1: TSplitter;
Panel2: TPanel;
Panel3: TPanel;
DataSource_Sv: TDataSource;
DataSource_Zan: TDataSource;
DBLookupComboBox1: TDBLookupComboBox;
BitBtnAdd: TBitBtn;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
BitBtnDel: TBitBtn;
N9: TMenuItem;
StatusBar1: TStatusBar;
NReport: TMenuItem;
NDesigner: TMenuItem;
procedure N2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedureBitBtnAddClick(Sender: TObject);
procedureBitBtnDelClick(Sender: TObject);
procedure N9Click(Sender: TObject);
procedureFormShow(Sender: TObject);
procedureFormCreate(Sender: TObject);
procedureNDesignerClick(Sender: TObject);
private
{ Private declarations }
procedureReadListReports;
procedureOnReportClick(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit_DM1, Unit2_Sprav_Klientov, Unit_Sprav_Filialov, Unit_Type, Unit_Zaselitb,
Unit_Viseliyb, Unit_Sprav_Komnat, DateUtils, Unit_Form_Privet;
{$R *.dfm}
procedure TForm1.N2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Form_Sprav_Klientov:= TForm_Sprav_Klientov.create(Self);
Form_Sprav_Klientov.ShowModal;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Form_Sprav_Filialov:= TForm_Sprav_Filialov.create(Self);
Form_Sprav_Filialov.ShowModal;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
Form_Type:= TForm_Type.create(Self);
Form_Type.ShowModal;
end;
procedure TForm1.BitBtnAddClick(Sender: TObject);
begin
DM1.ADOConnection1.BeginTrans;
Form_Zaselitb:= TForm_Zaselitb.create(Self);
Form_Zaselitb.DateTimePicker1.Date:=Date;
Form_Zaselitb.DateTimePicker2.Date:=IncDay(Date,1);
Form_Zaselitb.ADODataSetKomnata.Open;
DM1.ADODataSet_Zaselitb.Open;
DM1.ADODataSet_Zaselenie.Append;
DM1.ADODataSet_Zaselenie.FieldByName('Код_Филиала').AsInteger:=DM1.ADODataSetFilial.FieldByName('Филиал_Код').AsInteger;
DM1.ADODataSet_Zaselenie.FieldByName('Дата_заселения').AsDateTime:=Date;
DM1.ADODataSet_Zaselenie.FieldByName('Дата_выселения').AsDateTime:=IncDay(Date,1);
DM1.ADODataSet_Zaselenie.FieldByName('Код_Комнаты').AsInteger:=Form_Zaselitb.ADODataSetKomnata.fieldbyname('Комната_код').AsInteger;
ifForm_Zaselitb.ShowModal = mrOk then
begin
DM1.ADOConnection1.CommitTrans;
DM1.ADODataSet_Sv.Requery();
DM1.ADODataSet_Zan.Requery();
end else DM1.ADOConnection1.RollbackTrans;
end;
procedure TForm1.BitBtnDelClick(Sender: TObject);
begin
Form_Viselitb:= TForm_Viselitb.create(Self);
Form_Viselitb.ShowModal;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
Form_Sprav_Komnat:= TForm_Sprav_Komnat.create(Self);
Form_Sprav_Komnat.ShowModal;
end;
procedure TForm1.NDesignerClick(Sender: TObject);
var i: integer;
begin
DM1.dllReport1.ShowDesigner;
//Удаление кнопок списка отчетов
ifNReport.Count>2 then
fori := NReport.Count -1 downto 2 do
begin
Caption:=IntToStr(i);
NReport.Delete(i);
end;
//--
ReadListReports;
end;
procedure TForm1.ReadListReports;
var Item: TMenuItem;
reports: TStrings;
i: Integer;
begin
reports:=DM1.dllReport1.GetListReports('Form1',true);
ifreports.Count = 0 then Exit;
//Добавлениевменюкнопокотчетов
fori := 0 to reports.Count - 1 do
begin
Item:=TMenuItem.Create(NReport);
Item.Caption:=reports[i];
Item.OnClick:=OnReportClick;
NReport.Add(Item);
end;
end;
procedure TForm1.OnReportClick(Sender: TObject);
begin
DM1.dllReport1.ShowReport(TMenuItem(Sender).Caption);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form_Privet:=TForm_Privet.Create(self);
ifForm_Privet.ShowModal<>mrOk then Application.Terminate;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
DBLookupComboBox1.DropDown;
end;
end.
unit Unit_DM1;
interface
uses
SysUtils, Classes, DB, ADODB, inifiles, forms, dllReport;
type
TDM1 = class(TDataModule)
ADOConnection1: TADOConnection;
ADODataSet_Sv: TADODataSet;
DataSource_Sv: TDataSource;
DataSource_Zan: TDataSource;
ADODataSet_Zan: TADODataSet;
ADODataSetFilial: TADODataSet;
DSFilial: TDataSource;
ADODataSetKlient: TADODataSet;
DataSourceKlient: TDataSource;
DataSource_Type: TDataSource;
ADODataSet_Type: TADODataSet;
DataSource_Zaselitb: TDataSource;
ADODataSet_Zaselitb: TADODataSet;
ADODataSet_Zaselenie: TADODataSet;
DataSource_Zaselenie: TDataSource;
ADODataSet_Sprav_Komnat: TADODataSet;
DataSource_Sprav_Komnat: TDataSource;
dllReport1: TdllReport;
procedureDataModuleCreate(Sender: TObject);
procedureDataModuleDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DM1: TDM1;
implementation
usesUnit_Sprav_Filialov, Unit_Viseliyb, Unit_Sprav_Komnat;
{$R *.dfm}
procedure TDM1.DataModuleCreate(Sender: TObject);
begin
ADOConnection1.Close;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Data Source='+ExtractFilePath(Application.ExeName)+'db1.mdb';
ADOConnection1.Open;
ADODataSetFilial.Open;
ADODataSet_Sv.Open;
ADODataSet_Zan.Open;
ADODataSetKlient.Open;
ADODataSet_Type.Open;
ADODataSet_Zaselenie.Open;
dllReport1.ConnectionString:=ADOConnection1.ConnectionString;
dllReport1.ListReportConnectionString:=ADOConnection1.ConnectionString;
end;
procedure TDM1.DataModuleDestroy(Sender: TObject);
begin
ADOConnection1.Close;
end;
end. |