Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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




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

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

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.

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


Поделиться:

Дата добавления: 2015-09-15; просмотров: 84; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты