Проектирование управляющей программы в Delpi7

Программа для создания упорядоченного каталога книг. Описание предметной области в табличной форме. Грамматика входного языка. Описание логической структуры программы и данных. Модуль лексического разбора. Результаты выполнения программы. Тексты модулей.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 20.01.2012
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ,

СТАТИСТИКИ И ИНФОРМАТИКИ

ИНСТИТУТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИЙ

Контрольная работа

По дисциплине «Проектирование и стандартизация прикладного программного обеспечения»

Задание: Проектирование управляющей программы ППП

МОСКВА 2011

Содержание

1. Руководство пользователя

1.1 Назначение программы

1.2 Описание предметной области в табличной форме

1.3 Граф предметной области

1.4 Грамматика входного языка

1.5 Примеры задания программ на входном языке

2. Описание программы

2.1 Общие сведения

2.2 Описание логической структуры программы

2.3 Вызов и загрузка

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

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

2.6 Модуль лексического разбора

3. Приложения к программе

3.1 Результаты выполнения программы

3.2 Тексты модулей

Список использованной литературы

Приложение

1. Руководство пользователя

1.1 Назначение программы

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

1.2 Описание предметной области в табличной форме

Область деятельности, к которой относятся задачи, решаемые ППП, называется предметной областью пакета.

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

Модель предметной области может быть представлена следующими вариантами:

- с помощью таблиц;

- с помощью графа предметной области.

Использование табличного варианта предполагает формирование нескольких таблиц (табл.№1, табл.№2, табл.№3).

Таблица №1. Таблица данных.

Номер п\п

Старшее данное

Подчиненное данное

1

Name

KolKn,

Avtor,

Izdat

Таблица №2. Таблица связей по определению,

Номер п\п

Название данного

Тип данного

I

Количество книг

KolKn

Целое

2

Наименование книги

Name

Текстовый

3

Автор книги

Avtor

Текстовый

4

Издательство

Izdat

Текстовый

5

И т.д.

Таблица №3. Таблица задач.

Номер п\п

Функции модуля

Идентификатор модуля

Входные параметры

Выходные параметры

1

Модуль обмена

OBMEN

VHOD

INFORM

2

Лексический разбор

LAN

VHOD

INFORM, YV

3

Синтаксический анализ

SAN

YV

PAR, INFORM

4

Модуль управления

YPRAVA

YV PAR

INFORM

5

Информатор

INFORM

INFORM

KODV

б

Модуль помощи

HELP

1.3 Граф предметной области

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

Вершинами обозначены следующие стадии обработки:

1. Ввод информации о книгах;

2. Работа с уже введенной информацией;

3. Сохранение информации;

4. Обработка информации;

5. Выдача результатов обработки;

6. Завершение работы.

Дугами обозначены следующие алгоритмы:

1. Ввод данных с клавиатуры;

2. Просмотр введенной информации;

3. Редактирование введенной информации;

4. Сохранение каталога на жестком диске;

5. Упорядочение данных о книгах в алфавитном порядке для получения каталога;

6. Вывод на экран сформированного каталога;

7. Вывод на печать готового каталога.

Массив ГПО имеет вид:

1

2

2

3

2

3

3

4

4

5

5

б

5

6

1.4 Грамматика входного языка

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

::= - по описанию есть;

| - логическое сложение (или);

<...> - скобка для обозначения нетерминального символа;

[...] - обозначение необязательного элемента.

Формальная грамматика G задается четырьмя элементами:

G={N,Z,T,F}, где N - множество нетерминальных символов (нетерминальный словарь);

Z - начальный символ (аксиома);

Т - множество терминальных символов

(терминальный словарь);

F - множество порождений.

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

1.5 Примеры задания программ на входном языке

<ПВЯ>::=<оператор>[<оператор>]

<оператор>::=<имя оператора> <разделитель> [<параметр>]

<признак конца оператора>

<имя оператора>::=ввод| просм| ред сохр| упоряд| экр |

печ

<разделитель>::= =

<параметр>::=<символьная константа>

<символьная константа>::=<буква>[<буква>|<цифра>]

<буква>::=А Б..Я

<цифра>::=0|1..9

<признак конца оператора>::= ;

Пример:

ВВОД=КЛАВИАТУРА; ПРОСМ=НАБОКОВ\C:\Мои документы\Таблица; СОХР=С:\Мои документы;

УПОРЯД=АВТОР \C:\Мои документы\Таблица; ЭКР=ЭКРАН;

2. Описание программы

2.1 Общие сведения

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

Управляющая программа составлена из следующих модулей:

2.2 Описание логической структуры программы

Управляющая программа состоит из следующих модулей:

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

2. Модуль обмена предназначен для обеспечения связи ППП с источниками и получателями информации. Он обеспечивает: ввод ПВЯ; ввод словарей; ввод данных и вывод результатов решения.

3. Модуль лексического разбора предназначен для распознавания лексических конструкций (лексем) и преобразования ПВЯ в вид, удобный для дальнейшей обработки.

4. Модуль синтаксического анализа предназначен осуществлять проверку грамматической правильности программы на входном языке посредством анализа управляющего вектора. Он обеспечивает следующие действия: контролирует соответствие управляющего вектора графу предметной области; обеспечивает использование аппарата умолчания; обеспечивает использование макрокоманд.

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

6. Модуль информатора предназначен для выдачи сообщений о ходе решения задачи.

7. Модуль помощи предназначен для руководства действиями пользователя. Организация помощи пользователю является непременным условием эффективного функционирования прикладного программного обеспечения.

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

2.3 Вызов и загрузка

Вызов и загрузка осуществляется запуском файла “Project1.PAS” из среды Delphi.

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

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

2.6 Модуль лексического разбора

Модуль лексического разбора предназначен для распознавания лексических конструкций (лексем) и преобразования ПВЯ в вид, удобный для дальнейшей обработки.

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

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

А = (X,S,S0,B,F) , где

X - множество входных символов;

S - множество внутренних состояний;

S0 - начальное состояние;

В - функция, отображающая переход в новое состояние;

F - заключительное состояние.

Таблица конечного автомата представлена далее:

Таблица №4. Таблица конечного автомата.

Ввод

ПроемРедакт

Сохр

Упорядочен

ЭкрПеч

--

Пробел

;

Конец строки

Неопозн символ

SOST=0

l/Fl

1/F1

1/F1

1/F1

1/F1

0

KODV =0

KODV=4

SOST=1

2/F2

1

KODV=5

KODV= 6

SOST=2

2

0/F3

KODV=7

2

F1- соответствует формированию управляющего вектора;

F2- поиск начала параметра;

F3- формирование вектора параметров.

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

X = {ВВОД, ПРОСМ, РЕДАКТ, УПОРЯД, ЭКР, ПЕЧ,=,,;} S={SOST=0, SOST=1, SOST=2} S0={SOST=0} B={F1, F2, F3} F={SOST=0}

3. Приложения к программе

3.1 Результаты выполнения программы

Пример 1:

Пользователем введена следующая программа: В

ВОД= C:\Мои документы \ Таблица; ПРОСМ=НАБОКОВ;РЕД=НАИМЕНОВАНИЕ; СОХР=С:\МОИ ДОКУМЕНТЫ ; УПОРЯД=АВТОР; ЭКР=ВЫВОД ; ПЕЧАТ=ПРИНТЕР;

Вершинами обозначены следующие стадии обработки:

1. Ввод информации о книгах;

2. Работа с уже введенной информацией;

3. Сохранение информации;

4. Обработка информации;

5. Выдача результатов обработки;

6. Завершение работы.

Дугами обозначены следующие модули:

1. Ввод данных с диска;

2. Просмотр введенной информации;

3. Редактирование введенной информации;

4. Сохранение каталога на жестком диске;

5. Упорядочение данных о книгах в алфавитном порядке;

6. Вывод на экран;

7. Вывод на печать.

Массив ГПО имеет вид:

1

2

2

3

3

4

4

5

5

6

5

6

6

7

YV: 1;2;3;4; 5;6;7.

KODV=0 - операторы введены грамматически правильно и в нужной последовательности.

Пример 2:

Пользователем введена следующая программа:

ПРОСМ=НАБОКОВ; ВВОД=КЛАВИАТУРА; ПЕЧ=ПРИНТЕР;

YV: 2;1;7;

KODV=8 - операторы введены грамматически правильно, но их последовательность не соответствует ГПО.

Приложения

ПВЯ :

'ВВОД=C: \Мои документы \ Таблица; ПРОСМ=НАБОКОВ; РЕД=НАИМЕНОВАНИЕ; СОХР=С:/МОИ ДОКУМЕНТЫ;УПОРЯД=АВТОР;ЭКР=ВЫВОД;ПЕЧАТ=ПРИНТЕР;

3.2 Тексты модулей

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

cmdInput: TButton;

cmdProcess: TButton;

cmdExit: TButton;

lbPVJA: TLabel;

edPVJA: TEdit;

mesInf: TMemo;

lbHelp1: TLabel;

lbHelp2: TLabel;

cmdHelp: TButton;

procedure FormActivate(Sender: TObject);

procedure cmdProcessClick(Sender: TObject);

procedure cmdInputClick(Sender: TObject);

procedure cmdExitClick(Sender: TObject);

procedure cmdHelpClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

PVJA: string; {Программа на входном языке}

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);

begin

Caption:='Управляющая программа';

cmdInput.Caption:='Ввод ПВЯ';

cmdProcess.Caption:='Выполнение';

cmdExit.Caption:=' Выход ';

cmdHelp.Caption:='Справка';

lbPVJA.Caption:='Программа на входном языке';

lbPVJA.AutoSize:=true;

mesInf.Text:='Выполняется управляющая программа';

lbHelp1.Visible:=false;

lbHelp2.Visible:=false;

edPVJA.Text:= ``;

edPVJA.SetFocus;

end;

procedure TForm1.cmdInputClick(Sender: TObject);

{Ввод программы на входном языке пакета }

begin

PVJA:=edPVJA.Text;

cmdProcess.SetFocus;

end;

procedure TForm1.cmdProcessClick(Sender: TObject);

{Нажатие клавиши «Выполнение»}

Type

TypeTinf= Record

KV: integer; {Код возврата}

PB: integer; {Признак блока}

end; {TypeTinf}

T_YV=array[1..80] of integer;

T_Par=array [1..80] of string;

Var

YV: T_YV; {Управляющий вектор}

Par: T_Par; {Вектор параметров}

Ksl: integer; {Количество расшифрованных слов ПВЯ}

Tinf: TypeTinf; {Таблица информатора}

Procedure Lan (PVJA: string

var YV: T_YV;

var Par: T_par;

var Ksl: integer;

var Tinf: TypeTinf);

{Блок лексического разбора}

var

Slov: array [1..7] of string; {Терминальный словарь}

Kts: integer; {Количество элементов в терминальном словаре}

Sost: integer; {Состояние системы}

Stroka: string; {Рабочие переменные}

i,j,l,nom,ls,ln: integer;

begin

with Tinf do

begin

PB:=1;

KV:=0;

Ksl:=0;

Kts:=7;

Sost:=0;

Slov[1]:='ВВОД';

Slov[2]:= 'ПРОСМ';

Slov[3]:= ' РЕД'

Slov[4]:='СОХР;

Slov[5]:=' УПОРЯД ';

Slov[6]:= ЭКРАН ';

Slov[7]:='ПЕЧАТ';

j:=1;

ln:=length(PVJA);

while (j<=ln) and (KV=0) do

begin

Stroka:=copy(PVJA,j,ln-j+1);

if copy(Stroka,1,1)=' ' then

j:=j+1

else

begin

case Sost of

0: begin {Поиск оператора}

ls:=0;

for l:=1 to Kts do

begin

nom:=Pos(Slov[l],Stroka);

if nom=1 then

begin

Ksl:=Ksl+1;

YV[Ksl]:=l;

Par[Ksl]:='';

ls:=length(Slov[l]);

j:=j+ls;

Sost:=1;

end;

end;

if ls=0 then KV:=4; {Оператор не найден}

end;

1: begin {Поиск разделителя}

if copy(Stroka,1,1)='=' then

begin

Sost:=2;

j:=j+1;

end

else KV:=6; {Разделитель не найден}

end;

2: begin {Засылка параметра}

if copy(Stroka,1,1)=';' then

begin

Sost:=0;

j:=j+1;

end

else

begin

Par[Ksl]:=Par[Ksl]+copy(Stroka,1,1);

j:=j+1;

end;

end;

end; {case}

end; {else}

end; {while}

if (Sost=1) and (KV=0) then KV:=5;

if (Sost=2) and (KV=0) then KV:=7;

end; {with}

end; {procedure Lan}

Procedure San (YV: T_YV; Ksl: integer; var Tinf: TypeTinf);

{Блок лексического анализа}

var

GPO: array[1..1,1..2] of integer; {Граф предметной области}

n_ver: integer; {номер начальной вершины}

k_ver: integer; {номер конечной вершины}

i: integer;

begin

with Tinf do

begin

PB:=2;

KV:=0;

{загрузка ГПО}

GPO[1,1]:=1; GPO[1,2]:=2;

GPO[2,1]:=1; GPO[2,2]:=2;

GPO[3,1]:=2; GPO[3,2]:=3;

GPO[4,1]:=2; GPO[4,2]:=3;

GPO[5,1]:=3; GPO[5,2]:=4;

GPO[6,1]:=3; GPO[6,2]:=4;

GPO[7,1]:=4; GPO[7,2]:=5;

n_ver:=1;

k_ver:=5;

i:=1;

while (i<=Ksl) and (KV=0) do

begin

if GPO[YV[i],1]=n_ver

then n_ver:=GPO[YV[i],2]

else KV:=8;

i:=i+1;

end;

if (n_ver<>k_ver) and (KV=0) then KV:=16;

end; {with}

end; {procedure San}

Procedure Yprava (YV: T_YV; Par: T_Par; Ksl: integer; var Tinf: TypeTinf);

{Модуль управления}

var

Parm: string;

j,Kvo: integer;

procedure Vvodk (Parm: string; var Kvo: integer);

{ заглушка STUB процедуры, предназначенной для ввода информации с клавиатуры}

begin

Kvo:=0;

end;

procedure Pechat (Parm: string; var Kvo: integer);

{ заглушка STUB процедуры, предназначенной для распечатки информации }

begin

Kvo:=0;

end;

procedure Ekran (Parm: string; var Kvo: integer);

{ заглушка STUB процедуры, предназначенной для информации на экран }

begin

Kvo:=0;

end;

procedure Soxr (Parm: string; var Kvo: integer);

{ заглушка STUB процедуры, предназначенной для сохранения информации на диске }

begin

Kvo:=0;

end;

procedure Korr (Parm :string; var Kvo: integer);

{заглушка STUB процедуры, предназначенной для проверки}

begin

Kvo:=0;

end;

procedure Uporyad (Parm :string; var Kvo : integer);

{заглушка STUB процедуры, предназначенной для упорядочивания по автору}

begin

Kvo:=0;

end;

procedure Prosm (Parm: string; var Kvo : integer) ;

{заглушка STUB процедуры, предназначенной для просмотра}

begin

Kvo:=0;

end;

begin

with Tinf do

begin

PB:=3; KV:=0;

Kvo:=0;

for j:=1 to Ksl do

begin

Parm:=Par[j];

Case YV[j] of

1: Vvodk (Parm,Kvo);

2: Prosm (Parm,Kvo);

3: Korr (Parm,Kvo);

4: Soxr (Parm,Kvo);

5: Uporyad (Parm,Kvo);

6: Ekran (Parm,Kvo);

7: Pechat (Parm,Kvo);

end; {case}

if KV<Kvo then KV:=Kvo;

end; {for}

end; {with}

end; {procedure Yprava}

Procedure Inform (Tinf: TypeTinf);

{Блок информатора}

begin

with Tinf do begin

case PB of

1: begin

mesInf.Lines.add('Выполнен лексический разбор');

Case KV of

0: mesInf.Lines.add('Нормальное завершение');

4: mesInf.Lines.add('Оператор задан не верно');

5: mesInf.Lines.add('Отсутствует параметр после имени оператора');

6: mesInf.Lines.add('Разделитель задан неверно');

7: mesInf.Lines.add('Отсутствует символ конца оператора');

end;

end;

2: begin

mesInf.Lines.add('Выполнен синтаксический анализ');

Case KV of

0: mesInf.Lines.add('Нормальное завершение');

8: mesInf.Lines.add('Неверный порядок операторов');

16: mesInf.Lines.add('Программа не завершена');

end;

end;

3: mesInf.Lines.add('Выполнились обрабатывающие процедуры');

end; {case}

end; {with}

end; {procedure}

begin

with Tinf do

begin

Lan (PVJA, YV, Par, Ksl, Tinf); {Выполнение блока лексического разбора}

Inform (Tinf);

If KV=0 then

begin

San (YV, Ksl, Tinf); {Выполнение блока синтаксического анализа}

Inform (Tinf);

If KV=0 then

begin

Yprava (YV, Par, Ksl, Tinf); {Выполнение блока управления}

Inform (Tinf);

end;

end;

end; {with}

mesInf.lines.add ('Завершение работы управляющей программы');

end;

procedure TForm1.cmdExitClick(Sender: TObject);

begin

Close;

end;

procedure TForm1.cmdHelpClick(Sender: TObject);

{Метод, обеспечивающий помощь пользователю}

begin

lbHelp1.Caption:='Структура оператора';

lbHelp2.Caption:='<Имя оператора>=<Параметр>;';

lbHelp1.AutoSize:=true;

lbHelp2.AutoSize:=true;

lbHelp1.Visible:=true;

lbHelp2.Visible:=true;

cmdProcess.SetFocus;

end;

end.

программа язык данные модуль

Список литературы

1. Смирнов А.А. «Разработка прикладного программного обеспечения», М. 2004г. Изд. МЭСИ

Приложение

Таблица

НАИМЕНОВАНИЕ

АВТОР

ИЗДАТЕЛЬСТВО

ГОД ИЗДАНИЯ

КОЛ-ВО СТР

«Машенька»

Владимир Набоков

«АСТ»

2003

451

Казус Кукоцкого

Людмила Улицкая

«КРОН-ПРЕСС»

2005

478

Иерусалим обреченный

Стивен Кинг

«АСТ»

1997

331

Белая гвардия

Михаил Булгаков

«Классика»

2003

504

Размещено на Allbest.ru


Подобные документы

  • Функции компилятора как системной обрабатывающей программы. Этапы компиляции: анализ и синтез. Разработка лексического анализатора. Алгоритм и программа лексического анализа. Реализация двухфазного компилятора. Описание логической структуры программы.

    курсовая работа [310,4 K], добавлен 26.03.2010

  • Требования к функциональным характеристикам программы, составу и параметрам технических средств, программной совместимости. Особенности программирования в среде Access. Описание интерфейса программы, ввод и редактирование данных, добавление новых книг.

    курсовая работа [1,5 M], добавлен 17.11.2010

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

    курсовая работа [107,5 K], добавлен 07.09.2015

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

    курсовая работа [4,3 M], добавлен 27.03.2011

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

    контрольная работа [94,5 K], добавлен 24.12.2017

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

    дипломная работа [154,6 K], добавлен 08.02.2013

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

    курсовая работа [22,0 K], добавлен 29.11.2009

  • Развитие компьютерных технологий. Системы корпоративной безопасности. Особенности среды MASM32. Анализ математических методов. Постановка задачи. Описание программы. Назначение и логическая структура. Экранные формы программы. Тексты модулей программы.

    курсовая работа [381,6 K], добавлен 08.01.2009

  • Проектирование и описание логической структуры программы для работы электронного магазина в среде Microsoft Visual C++. Инструкция, описывающая сведения для запуска программы. Обновление данных о доступных товарах. Поиск по каталогу доступных товаров.

    курсовая работа [27,6 M], добавлен 27.04.2012

  • Создание программы для обработки информации об объектах предметной области "Бытовая техника" в среде визуального программирования C++. Иерархия родственных классов. Описание логической структуры программы. Реализация файлового ввода/вывода данных.

    курсовая работа [711,4 K], добавлен 27.07.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.