Определение достижимости города в изменяемой системе двусторонних дорог
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?роверить достижимость;
Ожидаемый результат: вывод сообщения на главную форму о достижимости или не достижимости из указанного города А в указанный город В. (Приложение Г, рисунок 6)
7.Случай использования: достижимости до всех городов из заданного города А.
Предусловие: задана система дорог и городов, заданный город А.
Тестовый случай: нажатие пользователя на кнопку Проверить достижимость;
Ожидаемый результат: вывод результата на главную форму в виде графического решения с цветом дорог:
если дороги зеленые - все города достижимы из города А;
если дороги желтые - не все города достижимы из города А; (Приложение Г, рисунок 7(а,б))
8.Случай использования: задание определенного количества городов через счетчик.
Предусловие: на компоненте Image1 имеется хотя бы 1 город.
Тестовый случай: увеличение или уменьшение счетчика количества городов.
Ожидаемый результат: на компоненте Image1 появится заданное количество город. (Приложение Г, рисунок 8)
9.Случай использования: загрузка графа из файла.
Предусловие: имеется файл формата *.gph с данными матрицы смежности.
Тестовый случай: нажатие пользователя на кнопку Загрузить файл графа с файла и указание файла через проводник.
Ожидаемый результат: заполнение матрицы смежности по данным из файла и графическое отображение городов на компоненте Image1. (Приложение Г, рисунок 9)
10.Случай использования: сохранения текущего графа в файл.
Предусловие: имеется система дорог и городов.
Тестовый случай: нажатие пользователя на кнопку Сохранить текущий граф в файл, указание места сохранения через проводник и имя файла.
Ожидаемый результат: на диске появится файл с именем, который задал пользователь и форматом *.gph, содержащий данные матрицы смежности. (Приложение Г, рисунок 10)
11.Случай использования: удаление всех дорог;
Предусловие: имеется система дорог и городов.
Тестовый случай: нажатие пользователя на кнопку Удалить все дороги;
Ожидаемый результат: в имеющейся системе дорог и городов будут удалены все дороги. (Приложение Г, рисунок 11)
Заключение
Таким образом, данный программный продукт полностью реализует поставленную задачу. Программа предоставляет возможность для создания системы дорог и городов, а так же быстро и точно определяет достижимость до всех других городов и изменяемой системе дорог. Также проект содержит понятный пользователю интерфейс, на котором предоставляется решение задачи в виде системы дорог и городов и полученных в результате решения данных.
Список использованных источников
1.Круз Р.Л. Структуры данных и проектирование программ / Р.Л. Круз; пер.с англ. - М.: БИНОМ. Лаборатория знаний, 2008 - 765 с.: ил. - (Программисту).
2.Кузнецов А.В., Сакович В.А., Холод Н.И. Высшая математика. Математическое программирование. - Минск: Высшая школа, 2010 г.- С.792.
.Оре О. Теория Графов. - М.: Наука, 2010 г.
.Белов. Теория Графов. - М.: Наука, 2011 г.
.Нефедов В.Н., Осипова В.А. Курс дискретной математики. - М.: МАИ, 2010 г.
Приложение А
Листинг программы
дорога город достижимость интерфейс
unit Unit1; // модуль формы 1 Проверка достижимости из города А до всех других дорог в изменяемой системе дорог
interface// стандартные модули, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids, ExtCtrls, ComCtrls, Menus, ExtDlgs, Spin, XPMan;
type= class(TForm) // типы объектов графического интерфейса и процедуры модуля
Image1: TImage;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;
OpenDialog1: TOpenDialog;: TSaveDialog;: TMenuItem;
PopupMenu1: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TGroupBox;: TPageControl;: TTabSheet;: TButton;: TButton;: TButton;: TButton;: TGroupBox;: TButton;: TButton;: TButton;: TXPManifest;: TGroupBox;: TLabel;: TLabel;: TSpinEdit;: TLabel;: TSpinEdit;: TButton;: TMenuItem;: TLabel;: TTabSheet;: TStringGrid;: TButton;: TButton;: TSpinEdit;: TLabel;: TTabSheet;: TLabel;: TStringGrid;: TSpinEdit;: TButton;: TButton;FormCreate(Sender: TObject);Button2Click(Sender: TObject);Image1MouseMove(Sender: TObject; Shift: TShiftState; X,: Integer);Image1MouseUp(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);redrow;Button1Click(Sender: TObject);Button9Click(Sender: TObject);Button5Click(Sender: TObject);Button4Click(Sender: TObject);Button10Click(Sender: TObject);N5Click(Sender: TObject);N2Click(Sender: TObject);N3Click(Sender: TObject);N4Click(Sender: TObject);StringGrid3KeyPress(Sender: TObject; var Key: Char);Edit1Change(Sender: TObject);Image1MouseDown(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);N7Click(Sender: TObject);N8Click(Sender: TObject);N9Click(Sender: TObject);Button6Click(Sender: TObject);Button7Click(Sender: TObject);Button8Click(Sender: TObject);N10Click(Sender: TObject);Button11Click(Sender: TObject);StringGrid3KeyUp(Sender: TObject; var Key: Word;: TShiftState);vvChange(Sender: TObject);isvChange(Sender: TObject);N6Click(Sender: TObject);StringGrid3Set(Sender: TObject; ACol,: Integer; const Value: String);Button3Click(Sender: TObject);Button12Click(Sender: TObject);IzverChange(Sender: TObject);
{ Private declarations }
{ Public declarations };= record
x,y:Integer;:Integer;
end;: TForm1;,pos2:Integer;,xx,yy,xb,yb,ugol,doroga,vver,i,j,k:Integer;,reb,reb2,del_ver,result:Boolean;:array[1..100] of vv;:array of array of integer;Math, Unit2, Unit3, Unit4;
{$R *.dfm}findver(x,y,rad:integer):Integer; // находит вершину в графе на которую указали сейчас.
vers[i].x-rad)and(x0 then[i-1,j-1]:=1 else dost[i-1,j-1]:=0;i:=1 to pos doj:=1 to pos dodost[j-1,i-1]=0 then doroga:=doroga+1;
for k:=0 to pos-1 do // ищем можно ли сократить путь через третью вершину К
for i:=0 to pos-1 doj:=0 to pos-1 do[i,j]:= dost[i,j] or (dost[i,k] and dost[k,j]) ;i:=1 to pos doj:=1 to pos dodost[j-1,i-1]=0 then vver:=vver+1;.StringGrid1.Cells[j,i]:=inttostr(dost[i-1,j-1]);
end;;TForm1.redrow; // перерисовка изображения графа на картинкеi,j:Integer; // вспомогательные переменные
0then.Canvas.MoveTo(vers[i].x,vers[i].y);.Canvas.lineTo(vers[j].x,vers[j].y)