Спецификация программы

В разделе спецификация приводится точное название программы и ее состав. Форма спецификации приведена в приложении А. Графы спецификации заполняют следующим образом:

- в графе “Обозначение” указывают обозначение основных программных компонентов;

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

- в графе “Примечание” – дополнительные сведения, относящиеся к записанным в специи-фикации программам.

Пример

Исполняемый файл программы “Игра “Лабиринт” имеет название Labirint.exe и расположен на компакт-диске (дискете) в каталоге Kursov\Labirint. Состав проекта.

Текст программы

Приводится полный листинг программы.

Пример листинга:

unit Unit1;

interface

uses

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

StdCtrls, Buttons, Menus, ExtCtrls;

type

TForm1 = class(TForm)

Image1: TImage;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Panel1: TPanel;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Label3: TLabel;

BitBtn3: TBitBtn;

Label4: TLabel;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

BitBtn6: TBitBtn;

BitBtn7: TBitBtn;

BitBtn8: TBitBtn;

Panel2: TPanel;

Memo1: TMemo;

ListBox1: TListBox;

Button1: TButton;

N4: TMenuItem;

N5: TMenuItem;

Label5: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn7Click(Sender: TObject);

procedure ListBox1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var Form1: TForm1;

//Перечисляемый тип для определения направления движения

 Type Trend = (nord, ost, zued, west);

// Структура элемента списка

Uk = ^Room;

Room = Record Num: Integer;

             Door: Array [Trend] Of Uk;

             Next: Uk;

      End;

// Структура компонента файла помощи

THelp = Record v: String[100];

            otv: Array [1..4] Of String[100];

       End;

TNameFile = String[20];

Var Spi, pp, Iroom: Uk;

r: Trend; ff: File Of THelp;

// Spi – указатель на начало списка; pp, Iroom –рабочие указатели;

// r – для определения направления движения;

// ff – файловая переменная для обращения к файлу помощи.

implementation

 Uses Unit2, Unit3;

{$R *.DFM}

Function Nroom(Spi: Uk; n: Integer): Uk;

// В списке помещений находим указатель на n - oe

Var q: Uk;

Begin

q:= Spi;

While (q<>nil) and (q^.num<>n) Do q:= q^.next;

Nroom:= q;

End;

 

procedure TForm1.BitBtn1Click(Sender: TObject);

// Построение связанного списка помещений

Var FileName: TNameFile; f: TextFile;

p: Uk; i, nr: Integer;

begin

 FileName:= InputBox(‘План помещений’,’Введите имя файла ‘,’’);

 AssignFile(f, FileName);

 Reset(f);

//Считываем только номера помещений и составляем связанный список

Spi:= nil;

While not Eof(f) Do

Begin

New(p);

Readln(f, i);

p^.Num:= i;

For r:= nord To west Do p^.Door [r]:= nil;

p^.next:= Spi;

Spi:= p;

End;

//Еще раз считываем из файла, но уже с дверьми

Reset (f);

While not Eof(f) Do

Begin

Read(f, i);

p:= Nroom(Spi, i);

For r:= nord To west Do

Begin Read(f, nr);

       If nr = 0 Then p^.Door[r]:= nil

                 Else p^.Door[r]:= Nroom(Spi, nr);

End;

End;

// Подготовка формы для ввода номера начала помещения

 label1.Caption:= ‘Введите № комнаты, с которой хотите начать движение’;

 Edit1.Visible:= True;

 label1.Visible:= True;

 Button1.Visible:= True;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

// Защита от недопустимых символов (вводятся только цифры)

begin

If not (key in [‘1’..’9']) Then Key:= #27;

end;

 

procedure TForm1.BitBtn3Click(Sender: TObject);

// Перемещение. BitBtn3 – север; BitBtn4 – запад;

//BitBtn5 – восток; BitBtn6 – юг.

Var aa: String[8]; c: Integer; pp: Uk;

//aa – имя кнопки; c – номер кнопки;

//pp – указатель текущего помещения.

begin

pp:= Iroom;

aa:= (sender as TBitBtn).Name;

c:= StrToInt(Copy(aa,7,1));

Case c of

3: r:= nord;

5: r:= ost;

6: r:= zued;

4: r:= west;

End;

Iroom:= Iroom^.Door[r];

If Iroom = nil Then

             Begin ShowMessage(‘Это невозможно!’);Iroom:= pp; End

             Else Label3.Caption:= IntToStr(Iroom^.Num);

 Label4.Caption:= IntToStr(Iroom^.Num);

 If Iroom^.Num = 999 Then

       Begin ShowMessage(‘Свобода!!!’);

       Panel1.hide; label1.Hide; Button1.Hide;

       Exit End;

end;

procedure TForm1.BitBtn7Click(Sender: TObject);

// Вывод содержимого справки в компоненты панели Panel2

Var i: Integer; a: THelp;

Begin

 Panel1.Visible:= False;

 Panel2.Visible:= True;

 Label5.Caption:= IntToStr(Iroom^.Num);

// Устанавливаем указатель текущего компонента файла

 Reset(ff); Seek(ff, Iroom^.Num - 1);

 Read(ff, a); Memo1.Lines.Add(a.v);

 For i:= 1 To 4 Do ListBox1.items[i]:= a.otv[i];

end;

procedure TForm1.ListBox1Click(Sender: TObject);

//Определение направления путем выбора верного ответа в списке

Var r1: Trend;

begin

 pp:= Iroom;

 Panel2.Visible:= False;

 Panel1.Visible:= True;

 for r1:= nord To west Do

 If ListBox1.ItemIndex = ord(r1) + 1 Then r:= r1;

Iroom:= Iroom^.Door[r];

If Iroom = nil Then

             Begin ShowMessage(‘Это невозможно!’);Iroom:= pp; End

             Else Label3.Caption:= IntToStr(Iroom^.Num);

 Label4.Caption:= IntToStr(Iroom^.Num);

If Iroom^.Num = 999 Then

       Begin Writeln(‘Свобода!!!’);

       Panel1.hide; label1.Hide; Button1.Hide;

       Exit End;

end;

procedure TForm1.Button1Click(Sender: TObject);

// Ввод номера начала помещения

Var nr: Integer; FileName: TNameFile;

// nr – номер помещения для начала движения

// File Name – имя файла помощи

begin

If Edit1.Text = ‘’ Then Exit;

nr:= StrToInt(Edit1.Text);

Iroom:= Nroom(Spi, nr);

If Iroom = nil Then

          Begin

           ShowMessage(‘Такого помещения нет!’);

           Edit1.Text:= ‘’; Label1.Caption:= ‘’;

           Exit;

          End;

panel1.Visible:= True;

Label3.Caption:= IntToStr(Iroom^.Num);

Label4.Caption:= IntToStr(Iroom^.Num);

FileName:= InputBox(‘Имя файла помощи’, ‘Введите имя файла помощи’,’’);

AssignFile(ff, FileName);

Edit1.Hide; Label1.Hide; Button1.Hide;

end;

procedure TForm1.N4Click(Sender: TObject);

// Переход к форме №2, осуществляющей запись плана помещений на диск.

Begin

Form1.Hide; Form2.Show;

End;

procedure TForm1.N3Click(Sender: TObject);

//Закрыть приложение

begin

Form1.Close; Form2.Close; Form2.Close;

Application.Terminate;

end;

procedure TForm1.N5Click(Sender: TObject);

//Переход к форме №3, осуществляющей запись на диск файла помощи.

begin

 Form1.Hide; Form3.Show;

end;

end.

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

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

Раздел “Описание программы” согласно ГОСТ 19.402–78* должен содержать следующие подразделы:

· общие сведения;

· функциональное назначение;

· описание логической структуры;

· используемые технические средства;

· вызов и загрузка;

· входные данные;

· выходные данные.

Отдельные разделы можно объединять. Некоторые пункты этого раздела повторяют разделы технического проекта. Такие повторения предусмотрены ГОСТом, так как на этапе рабочего проекта возникают некоторые дополнения или изменения в составе технических средств или программе. Здесь приводятся более конкретные и точные данные.

В подразделе “Общие сведения” должны быть указаны: обозначение и наименование программы; программное обеспечение, необходимое для функционирования программы; языки программирования, на которых написана программа.

В подразделе “Функциональное назначение” должны быть указаны классы решаемых задач и (или) назначение программы и сведения о функциональных ограничениях на применение.

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

В подразделе “Используемые технические средства” должны быть указаны типы ЭВМ и устройств, которые используются при работе программы.

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

В подразделе “Входные данные” должны быть указаны: характер, организация и предварительная подготовка входных данных, формат, описание и способ кодировки входных данных.

В подразделе “Выходные данные” должны быть указаны: характер, организация и предварительная подготовка выходных данных, формат, описание и способ кодировки выходных данных.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: