Анализ технического задания и возможные способы его реализации

Автор: Пользователь скрыл имя, 18 Февраля 2013 в 18:38, курсовая работа

Описание работы

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

Содержание

Введение
1 Анализ технического задания и возможные способы его реализации
2 Обоснование выбора инструментальных программных средств
3 Обоснование выбора технических средств
4 Описание программного продукта
4.1 Описание блок-схемы алгоритма работы программы
4.2 Организация входных и выходных данных
4.3 Структура базы данных
4.4 Описание структуры запросов базы данных
4.5 Описание листинга программы
5 Тестирование программного продукта
6Защита программного продукта
7Руководство пользователя
Заключение
Литература

Работа содержит 1 файл

ТРПП Курсовой.docx

— 324.52 Кб (Скачать)

elseShowMessage('Введите, пожалуйста, ВСЕ необходимые значения, а так  же проверьте ограничения');

end;

{переход на сл. форму

(делаем данную форму  невидимой, а сл. показываем)}

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

{вывод сообщения при  некорректно введенных параметрах}

If (i=1) or (n=1) then ShowMessage('"i" и "j" должнобыть> 1')

else  begin

Form1.Visible:=False;

Form2.Visible:=True;

end;

end;

{Применение начальных  значений полям ввода}

procedure TForm1.FormCreate(Sender: TObject);

begin

i:=1;

n:=1;

end;

{ограничение 1 поля ввода  на доступность вводимых символов}

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

const Digit: Set of Char=['0' .. '9'];

begin

if not (Key in Digit) then

Key:=#0;

end;

{ограничение 2 поля ввода  на доступность вводимых символов}

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

const Digit: Set of Char=['0' .. '9'];

begin

if not (Key in Digit) then          

Key:=#0;

end;

end.

unit Unit2;

interface

uses

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

Dialogs, ComCtrls, Grids, StdCtrls, Buttons;

type

TForm2 = class(TForm)

StatusBar1: TStatusBar;

StringGrid1: TStringGrid;

BitBtn1: TBitBtn;

Label1: TLabel;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

StringGrid2: TStringGrid;

BitBtn4: TBitBtn;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

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

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

{объявление переменных  прогона циклов матрицы критерия  Лапласа}

a,b:integer;

implementation

uses Unit1, Unit3;

{$R *.dfm}

{закрытие главной, а  следовательно и этой формы}

procedure TForm2.BitBtn1Click(Sender: TObject);

begin

Form1.Close;

end;

{переход на пр. форму

(делаем данную форму  невидимой, а пр. показываем)}

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

Form2.Visible:=False;

Form1.Visible:=True;

{прописываем подсказку  и очищаем поле вывода решения}

Form1.StatusBar1.Panels[2].Text:=('Уточните "I","J"');

Label4.Caption:='';

end;

procedure TForm2.BitBtn3Click(Sender: TObject);

var

{объявление переменной  типа с плавающей точкой для  суммирования построчно}

s:real;

begin

{прогон цикла с целью  ...}

for a:=0 To StringGrid1.RowCount-1 Do

begin

s:=0;

for b:=0 To StringGrid1.ColCount-1 Do

begin

{...проверки и ...}

if StringGrid1.Cells[b,a]<>('')

{...суммированияпострочно}

then s:=s+StrToFloat(StringGrid1.Cells[b,a])

else

begin

{вывод сообщения при  некорректно введенных параметрах}

ShowMessage('Заполните, пожалуйста, матрицу критерия Лапласа!');

Exit;

end;

{Присвоение "проверочной"  таблице сумм}

StringGrid2.Cells[0,a]:=FloatToStr(s);

end;

end;

{обнулениесуммы}

s:=0;

for a:=0 to StringGrid2.RowCount-1 do

begin

{вывод средного из  сумм последовательно}

StringGrid2.Cells[0,a]:=FloatToStr(StrToFloat(StringGrid2.Cells[0,a])/i);

if s<StrToFloat(StringGrid2.Cells[0,a])

then s:=StrToFloat(StringGrid2.Cells[0,a]);

end;

{выводрезультата}

Label4.Caption:=FloatToStrF(s,ffFixed,5,5);

end;

{очистка...}

procedure TForm2.BitBtn4Click(Sender: TObject);

begin

{...матрицыкритерияЛапласа}

For a:=0 to StringGrid1.ColCount-1 do

StringGrid1.Cols[a].Clear;

{..."проверочной" матрицы}

For a:=0 to StringGrid2.RowCount-1 do

StringGrid2.Rows[a].Clear;

{...полявыводарешения}

Label4.Caption:='_____________';

end;

{ограничение матрицы  критерия Лапласа на ввод допустимых  символов}

procedure TForm2.StringGrid1KeyPress(Sender: TObject; var Key: Char);

const Digit: Set of Char=['0' .. '9'];

begin

if not (Key in Digit) then

Key:=#0;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls, xpman;

type

TForm3 = class(TForm)

Image1: TImage;

Memo1: TMemo;

Memo2: TMemo;

Image2: TImage;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

  Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

{переход на сл. форму

(делаем невидимым стартовую  форму, а сл. показываем)}

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

Form3.Visible:=False;

Form1.Visible:=True;

end;

{закрытие этой и главной  формы}

procedure TForm3.BitBtn2Click(Sender: TObject);

begin

Form1.Close;

end;

end. 

    1. Структурабазыданных

Одно из транспортных предприятий  должно определитьуровень своих  провозных возможностей так, чтобы  удовлетворитьспрос клиентов на транспортные услуги на планируемый период.Спрос  на транспортные услуги не известен, но ожидается (прогнозируется),что он может  принять одно из четырех значений: 10,15, 20 или 25 тыс. т. Для каждого уровня спроса существует наилучшийуровень провозных  возможностей транспортного предприятия(с  точки зрения возможных затрат). Отклонения от этих уровнейприводят  к дополнительным затратам либо из-за превышения провозныхвозможностей  над спросом (из-за простоя подвижного состава),либо из-за неполного удовлетворения спроса на транспортныеуслуги. Ниже приводится таблица 4, определяющая возможныепрогнозируемые затраты на развитие провозных возможностей:

Таблица 3 – Вероятности состояния спроса на транспортные услуги

Варианты  провозных возможностей транспортного  предприятия

Варианты  спроса на

транспортные услуги, д. е.

1

2

3

4

1

6

12

20

24

2

9

7

9

28

3

23

18

15

19

4

27

24

21

15


Необходимо выбрать оптимальную  стратегию.

Имеются четыре варианта спроса натранспортные услуги, что равнозначно наличию четырех состояний«природы»: S1, S2, S3, S4 и четыре стратегии развитияпровозных возможностей транспортного предприятия: R1, R2, R3, R4. Затраты на развитие провозныхвозможностей при каждойпареS1иR1  заданы таблицей 5:

Таблица 4 - Матрица значений

V=

 

S1

S2

S3

S4

R1

6

12

20

24

R2

9

7

9

28

R3

23

18

15

19

R4

27

24

21

15


Принцип Лапласа предполагает, что S1, S2, S3, S4равновероятны.

Следовательно,Р{S=Si} = 1/n =1/4 = 0,25, i = 1, 2, 3, 4 и ожидаемыезатраты при различных действиях R1, R2, R3, R4составляют:

W{R1} = 0,25 (6 4 + 12 + 20 + 24) = 15,5;

W{R2} = 0,25 (9 + 7 + 9 + 28) = 13,25;

W{R3} = 0,25 (23 + 18 + 15 + 19) = 18,75;

W{R4} = 0,25 (27 + 24 + 21 + 15) = 21,75.

Таким образом, наилучшей  стратегией развития провозных возможностейв соответствии с критерием Лапласа будет R4.

    1. Описание структуры запросов базы данных

Решимодин пример с помощью нашей программы. Для этого запускаем скомпилированную программу, имеющую соответствующее курсовому проекту название. Видим форму, вид которой показан на рисунке 1:

Для дальнейшей работы программного продукта в поля «Размер матрицы  в столбцах» и «Размер матрицы в строках» вводим начальные значения и нажимаем «Принять изменения».

 

 

 

 

 

 

 

 

 

 

 

Нажатием на клавишу «далее», выделенную выше, переходим к самой матрице для решения критерия Лапласа.

Затем вписываем необходимые значения в ячейки матрицы критерия Лапласа (1), после чего нажатием на кнопку «Решение» (2), в автоматизированном режиме производятся необходимые подсчеты, которые выводятся в предварительную таблицу для самопроверки (3) и результат решения в специально отведенное поле под словом «Ответ» (4).

 

 

 

 

 

 

 

 

 

 

Так же предусмотрен вывод сообщений  при не своевременной попытке  перехода далее, без заполнения, либо, некорректного ввода данных. Примеры таких сообщений приведены на рисунках с3 по 5.


 

 

 

 


 

 

 


 

 

 

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

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

    1. Описание листинга программы

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

Результаты, полученные во время аналитического решения задачи, представлены выше в виде алгоритма последовательности действий. Наилучшим решение, в данном случае, является позиция R4, равная 21,75.


 

 

 

 

 

 

 

 

 

Результаты, полученные во время программного решения задачи, представлены на рисунке 6. Наилучшим решение, в данном случае, является позиция третья, равная 21,75000.

  1. Тестирование программного продукта
  2. Защита программного продукта
  3. Руководство пользователя

 

Заключение

Есть много способов создания модели, решающей задачу нахождения вероятностей состояния в условиях неопределенности путем разработки и внедрения программного продукта, позволяющего быстро и эффективно проводить соответствующие расчеты [6]. Можно искать оптимальный план только от одной и до другой вершины, а можно до всех вершин, в зависимости от условий задачи.

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

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

Информация о работе Анализ технического задания и возможные способы его реализации