Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

жц ис / Пособие_алгоритмы

.pdf
Скачиваний:
21
Добавлен:
14.05.2015
Размер:
834.68 Кб
Скачать

Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

ПЕТРОЗАВОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Л.В. ЩЕГОЛЕВА

А.Н. КИРИЛЕНКО

ПРОЕКТИРОВАНИЕ

ИНФОРМАЦИОННОЙ

СИСТЕМЫ:

СТРУКТУРНЫЙ ПОДХОД

Учебное пособие для студентов вузов

Петрозаводск Издательство ПетрГУ 2013

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

5.2 Проектирование алгоритмов

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

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

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

5.2.1 Алгоритм открытия окна Карта визита

Окно Карта визита может быть открыто в четырех режимах. Для хранения информации о режиме открытия окна вводится переменная Status, которая принимает три значения: 0 — окно открыто в режиме создания новой карты визита, 1 — окно открыто в режиме создания новой карты визита по ранее созданной карте брони, 2 — окно открыто в режиме редактирования карты визита, 3 — окно открыто только для просмотра карты визита, редактирование невозможно (закрытая карта визита открывается только в режиме 3).

При открытии окна в режимах 2 и 3 необходимо получить информацию, какая карта визита будет представлена в окне, для этого вводится переменная VisitCardId, в которую будет записано значение tblVisit. VisitId. В случае новой карты визита эта переменная получает значение 0. При открытии окна в режиме 1 необходимо получить информацию, по какой карте брони будет сформирована карта визита, для этого вводится переменная ReserveCardId, в которую будет записано значение tblReserve.ReserveId, в других режимах эта переменная получает значение 0. Если карта брони включает несколько комнат, то в конце алгоритма открытия формы открывается окно для выбора комнаты из списка забронированных комнат.

87

Таким образом, в процедуру открытия окна должны быть переданы три параметра:

––режим открытия;

––идентификатор карты визита;

––идентификатора карты брони.

В результате работы алгоритма будет отображено окно Карта визита, и в некоторых случаях будет также отображено окно для выбора номера комнаты.

При открытии окна необходимо учесть:

––установление значений каждого элемента управления формы;

––доступность каждого элемента управления формы;

––доступность операций формы;

––установление курсора на элемент управления формы, который будет редактироваться или вводиться первым;

––окраску поля Номер карты визита.

Первые четыре действия являются универсальными для почти всех окон, а последнее действие является специфичным для окна Карта визита.

Блок-схема алгоритма представлена на рис. 5.7—5.9. Действия, отмеченные цифрами, представляют собой SQL запросы, которые приведены после рисунка. Спецификация процедуры представлена на рис. 5.6.

Название

Открыть окно Карта визита

Описание

Процедура открывает окно Карта визита в одном из четырех

режимов. При открытии окна в режиме 1, возможно открытие

 

дополнительного окна Список забронированных комнат.

 

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

 

— режим открытия окна: 0 — создание новой карты визита; 1 —

 

создание новой карты визита по ранее созданной карте брони;

Входные

2 — редактирование карты визита; 3 — просмотр карты визита

без возможности редактирования; — идентификатор карты

параметры

визита;— идентификатор карты брони.

 

Процедура получает данные из таблиц базы данных:

 

sprRoomCategory, sprRoom, tblReserve, tblClient,

 

tblReservedRoom, tblVisit, tblCheck, tblServiceFact, sprService.

 

Непосредственно процедура не возвращает значений.

 

Будут внесены значения в поля ввода: номер карты визита,

Выходные

номер карты брони, фамилия, имя, отчество, серия и номер

паспорта, кем выдан паспорт, когда выдан паспорт, контактная

параметры

информация, дата приезда, дата отъезда, количество суток,

 

номер комнаты, категория, стоимость, сумма, оплачено, номер

 

счета. Будут заполнены таблицы окна Карта визита: Услуги,

 

Счета.

Рис. 5.6. Спецификация процедуры Открыть окно Карта визита

88

Рис. 5.7. Блок-схема алгоритма Открытие окна Карта визита (1 часть)

89

Рис. 5.8. Блок-схема алгоритма Открытие окна Карта визита (2 часть)

90

Рис. 5.9. Блок-схема алгоритма Открытие окна Карта визита (3 часть)

(1)SELECT sprRoomCategory.CategoryId, sprRoomCategory. CategoryName, sprRoomCategory.RoomPrice FROM sprRoomCategory ORDER BY sprRoomCategory.CategoryName

(2)SELECT sprRoom.RoomId, sprRoom.RoomNumber, sprRoom. CategoryId FROM sprRoom ORDER BY sprRoom.RoomNumber

91

(3)SELECT tblReserve.ClientId, tblReserve.ReserveCardNumber, tblReserve.ReserveDateBegin, tblReserve.ReserveDateEnd, tblClient. LastName, tblClient.FirstName, tblClient.MiddleName, tblClient.ContactInfo FROM tblReserve, tblClient WHERE ((tblReserve.ClientId = tblClient. ClientId) and (tblReserve.ReserveId= <ReserveCardId>))

(4)SELECT sprRoom.RoomId, sprRoom.RoomNumber, sprRoom. CategoryId FROM sprRoom, tblReservedRoom WHERE ((sprRoom.RoomId

=tblReservedRoom.RoomId) and (tblReserve.ReserveId= <ReserveCardId>)) ORDER BY sprRoom.RoomNumber

(5)SELECT tblVisit.Activity, tblVisit.VisitPaid, tblVisit.VisitCardNumber, tblVisit.VisitPaid, tblClient.ClientId, tblVisit.Activity, tblVisit.VisitDateBegin, tblVisit.VisitDateEnd, tblVisit.ReserveId, tblVisit.RoomId, tblVisit.CheckId, tblClient.LastName, tblClient.FirstName, tblClient.MiddleName, tblClient. ContactInfo, tblClient.PassportNumber, tblClient.WhoPassportIssued, tblClient.WhenPassportIssued, sprRoom.CategoryId, tblReserve. ReserveCardNumber, tblReserve.ReserveId, tblCheck.CheckNumber FROM tblReserve, tblClient, tblVisit, sprRoom, tblCheck WHERE ((tblVisit.ClientId = <VisitCardId>) and (tblReserve.ReserveId = tblVisit.ReserveId) and (tblClient. ClientId = tblVisit.ClientId) and (tblVisit.RoomId = sprRoom.RoomId) and (tblVisit.CheckId = tblCheck.CheckId))

(6)SELECT tblServiceFact.ServiceFactId, tblServiceFact.ServiceQuantity, tblServiceFact.ServiceFactDate, tblServiceFact.ServiceFactPaid, tblServiceFact. ServiceId, tblServiceFact.CheckId, sprService.ServiceName, sprService. ServicePrice, tblCheck.CheckNumber FROM tblServiceFact, sprService, tblCheck WHERE ((tblServiceFact.ServiceId = sprService.ServiceId) and (tblServiceFact.CheckId = tblCheck.CheckId) and (tblServiceFact.VisitId = <VisitCardId>)) ORDER BY tblServiceFact.ServiceFactDate

(7)SELECT tblCheck.CheckId, tblCheck.CheckNumber, tblCheck. CheckDate, tblCheck.CheckTotal FROM tblCheck WHERE (tblCheck.VisitId

=<VisitCardId>) ORDER BY tblCheck.CheckNumber

5.2.2 Алгоритм функции Сохранить карту визита

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

При редактировании услуг информация об услугах сразу не заносится в базу данных, обновление базы данных происходит при сохранении карты визита, при этом из таблицы базы данных удаляются все

92

записи об услугах карты визита и добавляются записи из таблицы окна

Карта визита.

Входных параметров процедура не имеет, все данные, необходимые для выполнения процедуры, будут взяты из окна Карта визита.

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

Спецификация процедуры представлена на рис. 5.10. Блок-схема алгоритма представлена на рис. 5.11—5.12.

Название

Сохранить карту визита

Описание

Процедура выполняет проверку заполненности обязательных

 

для заполнения полей ввода и записывает в таблицы базы дан-

 

ных значения полей ввода и таблицы Услуги окна Карта визи-

 

та. Для новой карты визиты процедура генерирует Номер кар-

 

ты визита

Входные

В процедуру непосредственно значения не передаются.

параметры

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

 

Карта визита: Фамилия, Имя, Отчество, Серия и номер па-

 

спорта, Кем выдан паспорт, Когда выдан паспорт, Контактная

 

информация, Дата приезда, Дата отъезда, Номер комнаты

Выходные

Непосредственно процедура не возвращает значений.

параметры

Будут внесены данные в таблицы базы данных: tblVisit, tblClient,

 

tblServiceFact.

 

Будут внесены значения полей ввода «Номер карты визита»

Рис. 5.10. Спецификация процедуры Сохранить карту визита

93

Рис. 5.11. Блок-схема алгоритма Сохранение карты визита (1 часть)

Рис. 5.12. Блок-схема алгоритма Сохранение карты визита (2 часть)

94

(8)curYear = <Получить текущий год()>;

curNumber = SELECT max(tblVisit.VisitCardNumber) FROM tblVisit

WHERE (tblVisitDateBegin>01.01.curYear); <Номер карты визита> = curNumber + 1

(9)UPDATE tblVisit

SET VisitDateBegin=<Дата приезда>, VisitDateEnd=<Дата отъезда>, tblVisit.RoomId=<Номер комнаты>

WHERE (VisitId = <VisitCardId>); UPDATE tblClient

SET LastName=<Фамилия>, FirstName=<Имя>, MiddleName=<Отчество>, ContactInfo=<Контактная информация>, PassportNumber=<Серия и номер паспорта>, WhoPassportIssued=<Кем выдан паспорт>, PassportIssued=<Когда выдан паспорт>

WHERE (ClientId = <VisitCardId.ClientId>)

(10)DELETE FROM tblServiceFact WHERE (VisitId= <VisitCardId>); INSERT INTO tblServiceFact(ServiceQuantity, ServiceFactDate, ServiceFactPaid, ServiceId, CheckId, VisitId) VALUES(<Количество>, <Дата>, <Оплата>, <Идентификатор услуги>, <Идентификатор счета>, <VisitCardId>)

(11)INSERT INTO tblClient(LastName, FirstName, MiddleName, ContactInfo, PassportNumber, WhoPassportIssued, PassportIssued) VALUES (<Фамилия>, <Имя>, <Отчество>, <Контактная информация>, <Серия и номер паспорта>, <Кем выдан паспорт>, <Когда выдан паспорт>); curClientId=SELECT max(ClientId) FROM tblClient WHERE ((PassportNumber=<Серия и номер паспорта>) and (LastName=<Фамилия>) and (FirstName = <Имя>))

(12)INSERT INTO tblVisit(VisitDateBegin, VisitDateEnd, RoomId, VisitCardNumber, ReserveId, ClientId, AdministratorId) VALUES (<Дата приезда>, <Дата отъезда>, <Номер комнаты>, <Номер карты визита>, <ReserveCardId>, <curClientId>, <curAdministratorId>)

5.2.3 Алгоритм события Изменение даты отъезда

Алгоритм реализует функцию Изменение даты отъезда, которая вызывается при редактировании поля ввода Дата отъезда в окне

95

Соседние файлы в папке жц ис