Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РПЗ1.doc
Скачиваний:
18
Добавлен:
20.09.2019
Размер:
3.34 Mб
Скачать

1.5.3 Разработка модульной структуры программного обеспечения

Базовыми строительными блоками программной системы являются модули. Структурные карты Константайна являются моделью отношений иерархии между программными модулями. Узлы структурных карт соответствуют модулям и областям данных, потоки изображают межмодульные вызовы, стрелки на которых указывают направления этих потоков. Структурная карта Константайна для разрабатываемой системы представлена на рис. 12.

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

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

Рис. 12. Структурная карта Константайна

1.5.4 Спецификации программных модулей

Таблица 5

Спецификация модуля uAuthorize.pas

Наименование модуля

uAuthorize.pas

Цель

Идентификация пользователя и предоставление доступа к системе

Входные данные

Логин, пароль и имя БД

Навигация

Вызывается при запуске программы. При успешной авторизации управление передается в модуль uMain.pas, в противном случае управление остается в модуле uAuthorize.pas

Действия

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

Обработка ошибок

Если логин и/или пароль не были заданы вообще, на экран должно быть выведено сообщение с требованием заполнить поля ввода

Таблица 6

Описание процедур и функций модуля uAuthorize.pas

Название

Описание

procedure TfrAuthourize. BitBtn1Click(Sender: TObject)

Процедура, проверяющая наличие зарегистрированного пользователя с введенным логином и паролем. Если логин и пароль введены правильно, разрешает вход в систему, открыв главное окно программы, если неверно – запрашивает ввести логин и пароль заново

Реализация процедуры модуля uAuthorize.pas, описанной в табл.6, представлено в прил. 2 (стр. 108).

Таблица 7

Спецификация модуля uMain.pas

Наименование модуля

uMain.pas

Цель

Инициирование процессов для работы со справочниками и документами

Навигация

Управление получает из модуля авторизации uAuthorize.pas, передает – в вызываемые модули справочников, документов, добавления (редактирования), поиска данных и печати.

Действия

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

Таблица 8

Описание процедур и функций модуля uMain.pas

Название

Описание

1

2

function frmRefresh (var instance; FormClass: Tformclass): boolean

Функция, проверяющая, существует (обновилась) ли дочерняя форма. В качестве входных параметров получает имя класса формы и экземпляр данного класса. В случае успеха возвращает true, иначе – false

procedure TfrMain.CreateChildProf (const childName : string)

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

(Аналогичные процедуры существуют для каждой дочерней формы, которую можно открыть из модуля uMain.pas)

procedure TfrMain.N2Click (Sender: TObject)

Процедура, создающая и открывающая дочернюю форму (в данном случае справочник должностей) путем вызова описанной выше процедуры TfrMain.CreateChildProf

(Аналогичные процедуры существуют для каждой дочерней формы, которую можно открыть, используя главное меню и панель инструментов формы модуля uMain.pas)

procedure TfrMain.ToolButton1Click (Sender: TObject)

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

Продолжение табл. 8

1

2

procedure TfrMain.ToolButton2Click

(Sender: TObject)

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

procedure TfrMain.ToolButton3Click (Sender: TObject);

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

procedure TfrMain.ToolButton5Click (Sender: TObject)

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

procedure TfrMain.ToolButton6Click (Sender: TObject);

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

procedure TfrMain.CloseAllForms (Sender: TObject);

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

Реализация процедур и функций модуля uMain.pas, описанных в табл.8, приведено в прил. 2 (стр. 108 – 123).

Приложение содержит 8 модулей справочников:

  • uEmp.pas (справочник сотрудников);

  • uSiz.pas (справочник СИЗ);

  • uStP.pas (справочник подразделений);

  • uProf.pas (справочник должностей);

  • uPost.pas (справочник постановлений);

  • uSupplier.pas (справочник поставщиков);

  • uCity.pas (справочник городов);

  • uNorm.pas (справочник нормативов).

Ниже приведена спецификация модуля справочника сотрудников uEmp.pas (табл. 9, 10). Остальные модули справочников построены по аналогичному принципу.

Таблица 9

Спецификация модуля uEmp.pas

Наименование модуля

uEmp.pas

Цель

Вывести на экран данные из справочника сотрудников

Входные данные

Данные, считанные из таблицы БД «Сотрудники»

Навигация

Управление получает из модуля uMain.pas, возвращает управление в него же

Действия

Если пользователь выбрал пункт главного меню Справочники→Сотрудники – считать соответствующие данные из таблицы БД «Сотрудники» и вывести их на экран в табличной форме

Обработка ошибок

В случае если БД или запрашиваемая таблица не существуют, пользователю должно выводиться соответствующее сообщение

Таблица 10

Описание процедур и функций модуля uEmp.pas

Название

Описание

function frmRefresh (var instance; FormClass: Tformclass): boolean

Функция, проверяющая, существует (обновилась) ли форма редактирования записей в справочнике. В качестве входных параметров получает имя класса формы и экземпляр данного класса. В случае успеха возвращает true, иначе – false

procedure TfrEmp.CreateChildNewEmp (const childName : string)

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

procedure TfrEmp.FormCreate (Sender: TObject)

Процедура, считывающая данные из таблицы БД «Сотрудники» и выводящая их на экран в табличной форме

procedure TfrEmp. DBGridEh1DrawColumnCell

Процедура, выделяющая текущую строку таблицы справочника

procedure TfrEmp.DBGridEh1DblClick (Sender: TObject)

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

procedure TfrEmp.DBGridEh1CellClick (Column: TColumnEh)

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

Реализация процедур и функций модуля uEmp.pas, описанных в табл.10, приведено в прил. 2 (стр. 123 – 124). Реализация остальных модулей справочников представлена в прил. 2 на стр. 124 – 132.

Приложение содержит 5 модулей журналов документов, открывающих список имеющихся в БД соответствующих документов:

  • uCrOrd.pas (журнал приходных ордеров);

  • uCard.pas (журнал карточек складского учета материалов);

  • uLichCard.pas (журнал личных карточек сотрудников);

  • uEntry.pas (журнал проводок);

  • uRequest.pas (журнал заявок на получение СИЗ).

И три модуля, открывающих сами документы:

  • uOpenCard.pas (карточка складского учета материалов);

  • uOpenLichCard.pas (личная карточка сотрудника);

  • uTabReq.pas (заявка на получение СИЗ).

Ниже приведена спецификация модуля журнала личных карточек сотрудников uLichCard.pas (табл. 11, 12) и модуля личной карточки сотрудника uOpenLichCard.pas (табл. 13, 14). Остальные модули журналов документов и самих документов построены по аналогичному принципу.

Таблица 11

Спецификация модуля uLichCard.pas

Наименование модуля

uLichCard.pas

Цель

Вывести на экран данные из журнала личных карточек

Входные данные

Данные, считанные из таблицы БД «Выдача»

Навигация

Управление получает из модуля uMain.pas, возвращает управление в него же

Действия

Если пользователь выбрал пункт главного меню Документы→Личные карточки – считать соответствующие данные из таблицы БД «Выдача» и вывести их на экран в табличной форме

Обработка ошибок

В случае если БД или таблица не существуют, пользователю должно выводиться сообщение об этом

Таблица 12

Описание процедур и функций модуля uLichCard.pas

Название

Описание

function frmRefresh (var instance; FormClass: Tformclass): boolean

Функция, проверяющая, существует (обновилась) ли форма личной карточки сотрудника. В качестве входных параметров получает имя класса формы и экземпляр данного класса. В случае успеха возвращает true, иначе – false

procedure TfrLichCard. CreateChildOpenLichCard (const childName : string)

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

procedure TfrLichCard. FormCreate (Sender: TObject)

Процедура, считывающая данные из таблицы БД «Выдача» и выводящая их на экран в табличной форме

procedure TfrLichCard. DBGridEh1DrawColumnCell

Процедура, выделяющая текущую строку таблицы справочника

procedure TfrLichCard. DBGridEh1DblClick (Sender: TObject)

Процедура, создающая и открывающая после двойного щелчка по строке таблицы дочернюю форму личной карточки сотрудника путем вызова описанной выше процедуры TfrLichCard. CreateChildOpenLichCard и заполняющая ее поля данными выбранной записи журнала

procedure TfrLichCard. DBGridEh1CellClick (Column: TColumnEh)

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

Реализация процедур и функций модуля uLichCard.pas, описанных в табл.12, приведено в прил. 2 (стр. 135 – 136).

Таблица 13

Спецификация модуля uOpenLichCard.pas

Наименование модуля

uOpenLichCard.pas

Цель

Вывести на экран данные из выбранной в журнале личной карточки

Входные данные

Данные, считанные из таблиц БД «Выдача» и «ТЧ_Выдача»

Навигация

Управление получает из модуля uLichCard.pas, возвращает управление в него же

Действия

После двойного щелчка мышью по записи в журнале личных карточек сотрудников считать соответствующие данные из таблиц БД «Выдача» и «ТЧ_Выдача» и вывести их на экран: из первой таблицы – в соответствующие поля, из второй – в табличную часть документа

Обработка ошибок

В случае если БД или запрашиваемые таблицы не существуют, пользователю должно выводиться соответствующее сообщение

Таблица 14

Описание процедур и функций модуля uOpenLichCard.pas

Название

Описание

1

2

procedure TfrOpenLichCard. CreateChildNorm (const childName : string)

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

Продолжение табл. 14

1

2

function frmRefresh (var instance; FormClass: Tformclass): boolean

Функция, проверяющая, существует (обновилась) ли форма справочника нормативов и форма добавления данных в табличную часть личной карточки. В качестве входных параметров получает имя класса формы и экземпляр данного класса. В случае успеха возвращает true, иначе – false

procedure TfrOpenLichCard. CreateChildNewTabLich (const childName : string)

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

procedure TfrEmp. DBGridEh1DrawColumnCell

Процедура, выделяющая текущую строку таблицы справочника

procedure TfrOpenLichCard. BitBtn2Click(Sender: TObject)

Процедура, открывающая дочернюю форму справочника нормативов с нормами выдачи СИЗ для данного сотрудника путем вызова описанной выше процедуры TfrOpenLichCard. CreateChildNorm

procedure TfrOpenLichCard. ToolButton1Click(Sender: TObject)

Процедура добавления новой записи в табличную часть личной карточки. Создает и открывает дочернюю форму для добавления данных путем вызова описанной выше процедуры TfrOpenLichCard. CreateChildNewTabLich и открывает таблицу БД «ТЧ_Выдача» для добавления

Продолжение табл. 14

1

2

procedure TfrOpenLichCard. ToolButton2Click(Sender: TObject)

Процедура изменения записи в табличной части личной карточки. Создает и открывает форму для редактирования, заполняет ее поля данными выбранной записи и открывает таблицу БД «ТЧ_Выдача» для редактирования

procedure TfrEmp.DBGridEh1CellClick (Column: TColumnEh)

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

procedure TfrOpenLichCard. DBGridEh1DblClick (Sender: TObject)

Процедура изменения записи в табличной части личной карточки. После двойного щелчка мышью по строке в табличной части личной карточки создает и открывает форму для редактирования, заполняет ее поля данными выбранной записи и открывает таблицу БД «ТЧ_Выдача» для редактирования

Реализация процедур и функций модуля uOpenLichCard.pas, описанных в табл.14, приведено в прил. 2 (стр. 140 – 143). Реализация остальных модулей документов представлена в прил. 2 на стр. 132 – 135, 136 – 139, 143 – 145.

Для добавления и редактирования записей справочников и документов используются одни и те же модули. Всего их в приложении 13:

  • uNewEmp (добавить/редактировать данные о сотруднике);

  • uNewSiz (добавить/редактировать данные о СИЗ);

  • uNewStP (добавить/редактировать данные о подразделении);

  • uNewProf (добавить/редактировать данные о должности);

  • uNewPost (добавить/редактировать данные о постановлении);

  • uNewSup (добавить/редактировать данные о поставщике);

  • uNewCity (добавить/редактировать данные о городе);

  • uNewNorm (добавить/редактировать данные о нормативе);

  • uNewCrOrd (добавить/редактировать данные о приходном ордере);

  • uNewTabCr (добавить/редактировать данные табличной части приходного ордера );

  • uNewCard (добавить/редактировать данные о карточке складского учета материалов);

  • uNewLichCard (добавить/редактировать данные о личной карточке сотрудника);

  • uNewTabLich (добавить/редактировать данные табличной части личной карточки сотрудника);

  • uNewReq (добавить/редактировать данные заявки на получение СИЗ);

  • uNewTabReq (добавить/редактировать данные табличной части заявки);

  • uNewEntry (добавить/редактировать данные проводок).

Ниже приведена спецификация модуля добавления/редактирования данных в личной карточке сотрудника uNewLichCard.pas (табл. 15, 16). Остальные модули добавления/редактирования данных построены по аналогичному принципу.

Таблица 15

Спецификация модуля uNewLichCard.pas

Наименование модуля

uNewLichCard.pas

1

2

Цель

Вывести на экран форму ввода данных и произвести добавление/редактирование данных личной карточки сотрудника

Входные данные

В случае добавления – данные, введенные с клавиатуры или выбранные из справочников, в случае добавления – данные, считанные из таблицы БД «Выдача»

Продолжение табл. 15

1

2

Действия

При добавлении новой записи все поля ввода на форме ввода являются пустыми, при редактировании – соответствующие поля ввода заполнены реквизитами выбранной личной карточки, которые считываются из таблицы БД «Выдача»

Обработка ошибок

В случае если пользователь не заполнил хотя бы одно из обязательных полей ввода или добавляемая новая запись дублирует уже существующую, должно выводиться соответствующее сообщение

Таблица 16

Описание процедур и функций модуля uNewLichCard.pas

Название

Описание

1

2

function frmRefresh (var instance; FormClass: Tformclass): boolean

Функция, проверяющая, существует (обновилась) ли форма справочника сотрудников. В качестве входных параметров получает имя класса формы и экземпляр данного класса. В случае успеха возвращает true, иначе – false

procedure TfrNewLichCard. CreateChildEmp(const childName : string)

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

procedure TfrNewLichCard. BitBtn1Click(Sender: TObject)

Процедура, создающая и открывающая дочернюю форму справочника сотрудников путем вызова описанной выше процедуры TfrNewLichCard. CreateChildEmp

Продолжение табл. 16

1

2

procedure TfrNewLichCard. BitBtn2Click(Sender: TObject)

Процедура, которая проверяет, является ли добавляемая запись дублирующей, добавляет новую запись (изменяет существующую запись) в таблицу БД «Выдача», обновляет журнал личных карточек сотрудников

Реализация процедур и функций модуля uNewLichCard.pas, описанных в табл.16, приведено в прил. 2 (стр. 160 – 161). Реализация остальных модулей добавления и редактирования записей справочников и документов представлена в прил. 2 на стр. 145 – 159, 161 – 166.

Для поиска записей в справочниках и документах используются 15 модулей:

  • uFindEmp (поиск сотрудника);

  • uFindSiz (поиск СИЗ);

  • uFindStP (поиск подразделения);

  • uFindProf (поиск должности);

  • uFindPost (поиск постановления);

  • uFindSup (поиск поставщика);

  • uFindCity (поиск города);

  • uFindNorm (поиск норматива);

  • uFindCrOrd (поиск приходного ордера);

  • uFindCard (поиск о карточки складского учета материалов);

  • uFindLichCard (поиск личной карточки сотрудника);

  • uFindReq (поиск заявок на получение СИЗ);

Ниже приведена спецификация модуля поиска данных в справочнике подразделений uFindStP.pas (табл. 17, 18). Остальные модули поиска данных построены по аналогичному принципу.

Таблица 17

Спецификация модуля uFindLichCard.pas

Наименование модуля

uFindLichCard.pas

Цель

Вывести на экран форму поиска и осуществить поиск записи по указанным полям и введенным данным

Входные данные

Выбранное поле поиска и строка для поиска

Действия

В зависимости от указанного пользователем поля поиска найти введенную информацию в соответствующем поле таблицы БД «Выдача»; это может быть несколько записей. Для поиска не обязательно вводить строку целиком. По нажатию на кнопку «Искать далее» поочередно осуществить переход к другим найденным записям

Обработка ошибок

В случае если пользователь не заполнил поле ввода вывести соответствующее сообщение. При поиске числовых значений блокировать ввод символов в поле ввода

Таблица 18

Описание процедур и функций модуля uFindLichCard.pas

Название

Описание

1

2

procedure TfrFindLichCard. Edit1Change(Sender: TObject)

Процедура находит первую строку, удовлетворяющую условиям поиска. Реагирует на каждое нажатие на клавиши клавиатуры. Если после ввода очередного символа выясняется, что такой записи нет в БД, то строка в поле ввода выделяется красным жирным шрифтом

Продолжение табл. 18

1

2

procedure TfrFindLichCard. DBDateTimeEditEh1 Change (Sender: TObject)

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

procedure TfrFindLichCard. BitBtn1Click(Sender: TObject)

Процедура, осуществляющая переход по множеству найденных записей, удовлетворяющих заданному условию

Реализация процедур и функций модуля uFindLichCard.pas, описанных в табл.18, приведено в прил. 2 (стр. 176 – 177). Реализация остальных модулей поиска записей в справочниках и документах системы представлена в прил. 2 на стр. 165 – 176, 177 – 178.