Наименование процесса
|
Назначение процесса
|
OutPutFile
|
Ввод координат точек множества из файла
|
Search
|
Поиск точки Bi для каждой точки Aj
множества
|
readFromGrid
|
Ввод координат точек множества из таблицы на экране
|
sgDataSelectCell
|
Расчет разницы между индексами строки и столбца для
выбранного элемента.
|
pryamaya
|
Вычисляет коэффициенты уравнения прямой для двух заданных
точек
|
znak
|
Определяет по какую строну от заданной прямой лежит точка
множества
|
MakePicture
|
Рисует на экране точки множества согласно координатам
|
PaintStr
|
Рисует прямую между заданными точками
|
Тестирование
программы
Программа и её модули были протестированы методами "чёрного
ящика" -- предположение об ошибке и эквивалентное разбиение и "Белого
ящика" - покрытие всех условий/решений.
Часть проводимых тестов приведена в разделе 2.3 Рабочем проекте и Приложении
В Программа и методика испытаний. Ошибки, обнаруженные в процессе тестирования
были устранены.
Программа соответствует требованиям Технического задания.
Выводы
В результате дипломного проектирования были достигнуты цели заявленные во
введении - решение задачи определения в заданном множества точек M, верно ли,
что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по
разные стороны от прямой AB.
Было выяснено что существуют точки, для которых данное утверждение не
верно ,как показано на рисунке ниже.
Полученная программа соответствует требованиям Технического задания.
Пользователь получил возможность просматривать результаты как в графическом так
и в текстовом виде.
Задача решалась в несколько этапов:
§ Определение требований и постановка задачи;
§ Разработка Эскизного проекта;
§ Разработка Технического проекта;
§ Разработка рабочего проекта;
Все этапы полностью или частично задокументированы и представлены в
настоящей пояснительной записке. Создана сопровождающая документация в составе:
§ Техническое задание;
§ Описание программы;
§ Программа и методика испытаний;
§ Руководство пользователя.
Программа предназначена для использования в средних и высших учебных
заведениях всех профилей и специализации.
Приложение А
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
. Введение.
Полное наименование программного изделия: Программа, позволяющая
проверить для заданного множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB.
Краткая характеристика области применения: решение задачи определения в
заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB.
Программное изделие предназначается для использования в средних и высших
учебных заведениях всех профилей и специализаций.
. Основания для разработки.
Условное обозначение программного изделия: Программа.
Документ: Задание на курсовую работу.
Утвердил: Суслов С.В.
Дата утверждения: 15.02.2010
Плановые сроки начала и окончания работы по созданию программного
изделия:
начало: 15.02.2010
окончание: 31.05.2010
. Назначение разработки.
Функциональное назначение: решение задачи определения в заданном
множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB.
Эксплуатационное назначение: использование программного изделия для
наглядного доказательства определения в заданном множества точек M, верно ли,
что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по
разные стороны от прямой AB.
. Требования к программному изделию.
.1. Требования к функциональным характеристикам.
.1.1. Требования к организации входных и выходных данных.
1) Входными данными для Программы
являются:
·
количество точек
множества (N);
·
координаты точек
(xi; yi);
·
Точка Ai,
для которой пользователь хочет построить прямую.
2) Входные данные Программа получает:
- из файла, где они располагаются следующим образом:
пользователь вводит с клавиатуры
) Выходными данными для Программы являются:
координаты точки B для каждой точки A, если такая существует.
визуализация точек множества на плоскости
визуализация прямой AB, для заданной пользователем точки A.
.1.2. Требования к составу выполняемых функций.
Программа должна иметь следующие функции:
7) ввод данных о множестве точек из файла
8) вывод введенных данных на экран
) ввод данных о множестве с клавиатуры
) построение прямой AB для указанной точки A.
) Визуализация точек множества на экране
.1.3. Требования к интерфейсу
1) Интерфейс графический
2) Вывод множества в табличной форме с прорисовкой границ.
) Вывод множества в графической форме
.2. Требования к надежности.
) Программное изделие должно быть защищено от непродуманных действий
пользователя. Должен быть предусмотрен максимально возможный анализ входной
информации, вводимой пользователем. В случае ввода некорректных данных
игнорировать попытку ввода и выдать сообщение об ошибке и подсказку.
) В случае ошибки при выполнении Программы выдать сообщение об ошибке и
прекратить работу.
.3. Условия эксплуатации.
Программный продукт должен быть рассчитан на работу в диалоговом режиме с
пользователем, не являющимся профессиональным программистом.
Условия эксплуатации гибких и жёсткого дисков, являющимися основными
носителями информации для проектируемого ПО, должны соответствовать всем
основным требованиям их эксплуатации (температура воздуха, относительная
влажность и т.п.), определенных тестированием их при производстве и занесённых
в документацию, которая предоставляется при покупке этих устройств.
.4. Требования к составу и параметрам технических средств.
Процессор: 1 ГГц и выше.
Оперативная память - минимум 256 Мб.
Дисплей. Необходим цветной или монохромный дисплей типа VGA, SVGA.
Наличие клавиатуры и манипулятора мышь.
.5. Требования к информационной и программной совместимости.
Программа рассчитана для работы в среде Windows'7/Vista/XP.
Для Программы входной информацией являются файлы пользователя.
Структура хранения информации определена в пункте 4.1.1.
.6. Требования к маркировке и упаковке.
Маркировка и упаковка проектируемого программного продукта должны
соответствовать всем стандартным требованиям, применяемым к маркировке,
вариантам и способам упаковки.
.7. Требования к транспортированию и хранению.
Для данного программного продукта должны быть соблюдены все условия
транспортирования, места хранения, условия складирования, сроки хранения в
различных условиях, которые соответствуют всем стандартам и требованиям для
программного обеспечения по данному пункту.
. Требования к программной документации.
Полный пакет документов должен включать :
Пояснительная записка.
Описание программы.
Текст программы.
Методика испытаний.
Руководство пользователя.
. Технико-экономические показатели.
Программа поможет существенно сократить время у улучшить наглядность при
доказательстве теорем теории множеств в учебных заведениях.
. Стадии и этапы разработки.
·
Техническое
задание
Плановые сроки начала и окончания работы:
Начало: 15.02.10
Окончание:3.03.10
·
Эскизный проект
Плановые сроки начала и окончания работы:
Начало: 04.03.10
Окончание:1.04.10
·
Технический
проект
Плановые сроки начала и окончания работы:
Начало: 2.04.10
Окончание: 16.04.10
·
Рабочий проект
Плановые сроки начала и окончания работы:
Начало: 16.04.10
Окончание: 30.05.10
. Порядок контроля и приёмки.
Программа должна быть протестирована в соответствии с программой и
методикой испытаний.
Приемку программы производит руководитель проекта.
Приложение Б
Описание
программы
Общие
сведения
Наименование программы: Программа, позволяющая проверить для заданного
множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB. Программное
обеспечение, необходимое для функционирования программы: программа
предназначена для работы в среде Windows’7/Vista/XP.
Функциональное
назначение.
Функциональное назначение разработки: решение задачи определения в
заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB.
Описание
логической структуры.
Программа выполнена на объектно-ориентированном языке Delphi
7.0.Программа состоит из файлов: Unit1.pas, Unit2.pas., Picture.pas,
lib.pas.pas содержит код проверки предположения о том, что для заданного
множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB.pas содержит
код панели с сообщением об ошибке..pas содержит функции, вычисляющие
коэффициенты перевода реальных координат в экранные для графического
представления множества..pas - библиотечный файл, содержит описание введенных
типов и глобальных переменных.
Все файлы объединены в проект Poisktochki.dpr
Основные процедуры рассматриваются в Таблице 3.1.
Таблица 3.1. Функции процессов.
Наименование процессаНазначение процесса
|
|
OutPutFile
|
Ввод координат точек множества из файла
|
Search
|
Поиск точки Bi для каждой точки Aj
множества
|
readFromGrid
|
Ввод координат точек множества из таблицы на экране
|
sgDataSelectCell
|
Расчет разницы между индексами строки и столбца для
выбранного элемента.
|
pryamaya
|
Вычисляет коэффициенты уравнения прямой для двух заданных
точек
|
znak
|
Определяет по какую строну от заданной прямой лежит точка
множества
|
MakePicture
|
Рисует на экране точки множества согласно координатам
|
PaintStr
|
Рисует прямую между заданными точками
|
Используемые
технические средства
Процессор: 1 ГГц и выше.
Оперативная память - минимум 256 Мб.
Дисплей. Необходим цветной или монохромный дисплей типа VGA, SVGA.
Наличие клавиатуры и манипулятора мышь.
Вызов и
загрузка
Вызов Программы осуществляется посредством запуска файла poisktochki.exe
Входные
данные
Входные
данные
1) Входными данными для Программы
являются:
·
количество точек
множества (N);
·
координаты точек
(xi; yi);
·
Точка Ai,
для которой пользователь хочет построить прямую.
2) Входные данные Программа получает:
- из файла, где они располагаются следующим образом:
- пользователь вводит с клавиатуры
3 Выходные
данные
Приложение В
Программа и методика испытаний
Объект испытаний
Программа, позволяющая проверить для заданного множества точек M, верно
ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух точек множества M, которые
лежат по разные стороны от прямой AB
Цель испытаний
Проверить соответствие программы техническому заданию.
Требования к программе
13) ввод данных о множестве точек из файла
14) вывод введенных данных на экран
) ввод данных о множестве с клавиатуры
) построение прямой AB для указанной точки A.
) Поиск точек Bi для каждой точки множества Ai
и вывод на экран
) Визуализация точек множества на экране
Средства и порядок испытаний
.1 Технические средства
Процессор: 1 ГГц и выше.
Оперативная память - минимум 256 Мб.
Дисплей. Необходим цветной или монохромный дисплей типа VGA, SVGA.
Наличие клавиатуры и манипулятора мышь.
.2 Программные средства
Операционная система Windows’7/Vista/XP
4.3 Порядок испытаний
1. Создать файл исходных данных как указано в и Приложении Б
Инструкция пользователя
2. Запустить файл poisktochki.exe.
. Следовать указаниям приведённых перед тестовыми заданиями для
каждой функции.
. Проводить испытания в порядке, предложенном в методике
испытаний, так как некоторые используют результаты предыдущих.
5 Методы
испытаний
1) ввод данных из файла и вывод данных на экран
Первоначальный вид окна программы
Содержимое файла data.txt
4
5
-4
1
Вид окна программы после нажатия кнопки "Ввести данные из
файла"
2) Поиск точек Bi для каждой точки множества Ai
и вывод на экран
Нажать кнопку "Найти"
Как видно из этого теста, не для всех точек множества AÎM существует точка B (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB
3) Визуализация точек множества на экране
Нажать кнопку "Изображение"
4) построение прямой AB для указанной точки A.
Сначала построим прямую для точек для которых это возможно.
Например для первой точки.
Для второй точки
Теперь вводим номер точки 5 и нажимаем "Нарисовать пямую"
-я точка обведена другим цветом кружком большего диаметра. Видно, что она
находится в центре множества, и при соединении ее с любой их точек остальные
будут всегда по разные стороны.
Приложение Г
Руководство пользователя
Введение
Программа предназначена для использования в средних и высших учебных
заведениях всех профилей и специализации.
Программное изделие предполагается использовать для наглядного
доказательства определения в заданном множества точек M, верно ли, что для
каждой точки AÎM
существует точка B (A¹B), такая что не существует двух точек множества M, которые лежат по
разные стороны от прямой AB
Пользователь должен иметь навыки работы с компьютером в операционной
системе Windows.
Для работы с программой пользователю необходимо ознакомиться с данным
руководством.
1 Общие
сведения о программе
Наименование программы: Программа, позволяющая проверить для заданного
множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB.
Функциональное назначение разработки: решение задачи определения в
заданном множества точек M, верно ли, что для каждой точки AÎM существует точка B (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB.
Программное обеспечение, необходимое для функционирования программы:
программа предназначена для работы в среде Windows XP/Vista/7.
2 Входные
данные
1) Входными данными для Программы являются:
·
количество точек
множества (N);
·
координаты точек
(xi; yi);
·
Точка Ai,
для которой пользователь хочет построить прямую.
2) Входные данные Программа получает:
- из файла, где они располагаются следующим образом:
пользователь вводит с клавиатуры
3 Выходные
данные
Работа с
программой
Для запуска программы нужно запустить файл poisktochki.exe. Об успешном
запуске свидетельствует появление окна (рис.1.)
Рис. 1 - Главное окно программы
где
"Ввести данные из файла"- кнопка ввода данных из файла
data.txt.
"Найти"- кнопка поиска точки B, для каждой точки AÎM, (A¹B), такая что не существует двух
точек множества M, которые лежат по разные стороны от прямой AB.
"Изображение" - служит для ввода команды нарисовать точки
множества в области под кнопкой. Становится доступна после выполнения поиска.
"Нарисовать прямую" - служит для ввода команды рисования на
множестве прямой, соединяющей точки в полях ввода слева от кнопки. Становится
доступна после отрисовки множества.
Таблица слева содержит в первом столбце номера точек множества, во втором
координаты абсцисс точек множества, в третьем координаты ординат точек
множества, в четвертый выводится номер точки b после поиска.
Приложение Д
ТЕКСТ ПРОГРАММЫ
Unit1;
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,, StdCtrls, ExtCtrls, Grids, lib;
type
TForm1 = class(TForm): TStringGrid;: TButton;: TImage;:
TButton;: TButton;: TButton;: TLabel;: TEdit;: TButton;: TButton;:
TEdit;OutPutFileClick(Sender: TObject);SGEnter(Sender:
TObject);SearchClick(Sender: TObject);ExitClick(Sender:
TObject);MakePictureClick(Sender: TObject);PaintStrClick(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm1;
uses picture, Unit2;
{$R *.dfm}XI(XW:real):integer; // перевод в Х-экранную
кординатуXI:=Round((XW-Xmin)*Mx+Sx/2) end;YI(YW:real):integer; // перевод в
Y-экранную кординатуYI:=Round((Ymax-YW)*My+Sy/2); end;
procedure TForm1.OutPutFileClick(Sender: TObject);
var f:textfile;:integer;,y:integer;(f,'data.txt');(f);(f,nt);i:=1 to nt
do(f,x,y);.Cells[0,i]:=floattostr(i);.Cells[1,i]:=floattostr(x);.Cells[2,i]:=floattostr(y);;.Enabled:=True;;
procedure TForm1.SGEnter(Sender: TObject);
begin.Cells[0,0]:='№
точки';.Cells[1,0]:='X';.Cells[2,0]:='Y';.Cells[3,0]:='№ 2-й точки';;
procedure readFromGrid(var nt:integer; var t:mnogina);
var i,j:integer;:=1;
j:=1;nt:=0;(Form1.sg.cells[i,j]<>'')do:=nt+1;[j].x:=strtofloat(Form1.sg.cells[i,j]);[j].y:=strtoFloat(Form1.sg.cells[i+1,j]);:=j+1;;;
procedure pryamaya(i,j:integer;var a,b:real);
begint[i].x=t[j].x then:=1;b:=t[i].xt[i].y=t[j].y
then:=0;b:=t[i].y:=(t[i].y-t[j].y)/(t[i].x-t[j].x);:=(t[j].y*t[i].x-t[i].y*t[j].x)/(t[i].x-t[j].x);;;
function znak(a,b:real;k,i,j:integer):real;
begin:=t[k].y-a*t[k].x-b;
//(t[k].x-t[i].x)/(t[i].x-t[j].x)-(t[k].y-t[i].y)/(t[i].y-t[j].y)
//;
procedure poisk(i,j:integer;var r:integer);
var k:integer;,b:real;
pryamaya(i,j,a,b);
r:=0;k:=1 to nt do(k<>i)and(k<>j) thenznak(a,b,k,i,j)>=0
then r:=r+1;
end;TForm1.SearchClick(Sender: TObject);
var i,j,r:integer;(nt,t);i:=1 to nt do.SG.Cells[3,i]:='-';i:=1 to nt
doj:=1 to nt doi<>j then(i,j,r);(r=0)or(r=nt-2) then
sg.Cells[3,i]:=floattostr(j);;
//if (r>0)and(r<nt-2) then sg.Cells[3,i-1]:='-'();.Enabled:=True;;
procedure TForm1.ExitClick(Sender: TObject);
begin;;
procedure TForm1.MakePictureClick(Sender: TObject);
var
i:integer;.Picture:=nil;.Canvas.Pen.Color:=clRed;.Canvas.Pen.Width:=2;i:=1 to
nt do.Canvas.Ellipse(XI(t[i].x)-3,YI(t[i].y)-3,XI(t[i].x)+3,YI(t[i].y)+3);.Canvas.TextOut(XI(t[i].x)-10,YI(t[i].y)-10,sg.Cells[0,i]);;.Refresh;.Enabled:=true;;
procedure TForm1.PaintStrClick(Sender: TObject);
var i,j:integer;:=strtoint(EditPointNumber.Text);(i>0)and(i<=nt)
then.Canvas.Pen.Color:=clBlue;.Canvas.pen.Width:=2;sg.Cells[3,i]<>'-'
then.Text:=sg.Cells[3,i];:=strtoint(sg.Cells[3,i]);.Canvas.MoveTo(XI(t[i].x),YI(t[i].y));.Canvas.LineTo(XI(t[j].x),YI(t[j].y));.Text:='-';.Canvas.Ellipse(XI(t[i].x)-4,YI(t[i].y)-4,XI(t[i].x)+4,YI(t[i].y)+4);;.ShowModal();;.Picture;Classes,
Graphics, lib,unit1;minmax();SetWind(Xmin,Ymin,Xmax,Ymax:real);//вычисление
коэффициентов для перевода в экранные координаты:=50; Sy:=50;
Mx:=(Form1.Image1.Width-Sx)/(Xmax-Xmin);:=(Form1.Image1.Height-Sy)/(Ymax-Ymin);
end;minmax();i:integer;:=t[1].x;:=t[1].x;:=t[1].y;:=t[1].y;i:=1 to nt
doXmax < t[i].x then Xmax:=t[i].x elseXmin > t[i].x then
Xmin:=t[i].x;;i:=1 to nt doYmax < t[i].y then Ymax:=t[i].y elseYmin >
t[i].y then Ymin:=t[i].y;;
SetWind(Xmin,Ymin,Xmax,Ymax);
end;.Lib;n=100;tochka = record,y:real;;= array [1..n] of
tochka;t:mnogina;
nt:integer;,sy:integer;,Xmax,Ymin,Ymax,Mx,My:real;
implementation.