Автор: Пользователь скрыл имя, 25 Февраля 2013 в 20:55, курсовая работа
В настоящее время нельзя назвать область человеческой деятельности, в которой в той или иной степени не использовались бы методы моделирования. Особенно это относится к сфере управления различными производствами и системами, где основными являются процессы принятия решений на основе получаемой информации.
Определим через слово "объект" все то, на что направлена человеческая деятельность (лат.Objectum-предмет). Выработка методологии направлена на упорядочение получения и обработки информации об объектах, которые существуют вне нашего сознания и взаимодействуют между собой и внешней средой.
Техническое щзадание с практики ТРПО
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
Введение
В настоящее время в процесс обучения активно внедряются программные технологии на базе персональных ЭВМ, применяемые для передачи ученику учебного материала и контроля степени его усвоения. Данная автоматизированная обучающая система разработана с учетом графика выполнения учебного плана, а так же индивидуальных способностей к обучению каждого студента.
2.1. Основания для разработки
Основанием для разработки программного продукта служит приказ ректора Брянского государственного технического университета (БГТУ)
проф. Лагерева А.В. за номером № ........ от 2007 г. о назначении темы дипломной работы студентке очного отделения группы 03--ПО1 Сазоновой А.С. Тема дипломной работы: “Разработка автоматизированной обучающей системы по дисциплине «Структуры и алгоритмы обработки данных»”.
2.2. Назначение разработки
Назначением разработки автоматизированной обучающей системы является предоставление обучающей системы для обучения студентов по дисциплине «Структуры и алгоритмы обработки данных».
В процессе работы с обучающей программой обучаемый должен получить:
знания по данной предметной области;
умения применять применять полученные знания на;
умение применять различные методы и алгоритмы;
умение строить алгоритмы самостоятельно;
навыки написания программ;
навыки решения задач;
навыки самостоятельно изучать схожие предметные области;
оценку своих знаний в виде отчета по выполнению практических и тестовых заданий.
2.3. Требования к программному изделию
2.3.1. Требования к функциональным характеристикам
Обучающая часть предназначена для прохождения процесса обучения (изучения теоретического материала, практического решения задач и тестирования). Система должна выполнять функцию регистрации и идентификации пользователя в системе. В зависимости от роли пользователя, можно выделить три группы функциональных требований:
1) Администратор:
· добавление/редактирование/
· добавление/редактирование/
· изменение базы данных системы.
2) Преподаватель:
· добавление/редактирование/
· добавление/редактирование/
· добавление/редактирование/
· просмотр статистики выполнения тестов:
· просмотр результатов тестирования всех обучаемых и каждого обучаемого в отдельности;
· формирование отчета.
3) Обучаемый:
· изучение теоретического материала;
· выполнение практических заданий;
· выполнение тестов;
· просмотр результатов своего обучения.
Требования к теоретическому курсу.
В систему закладываются учебные курсы по дисциплине «Структуры и алгоритмы обработки данных». Количество курсов, которые могут быть заложены, неограниченно. Каждый курс может разбиваться на темы, а каждая тема - на дидактические единицы. Количество тем не может быть более двадцати (иначе будет присутствовать сложность в усвоении материала и дальнейшем контроле знаний). В каждой теме есть пять дидактических единиц,
Приложение Б
(информационное)
Руководство пользователя
Рисунок 1 - программа расчета задач методом потенциалов.
Рисунок 2 - Количество колонок и строк.
Для того чтобы установить программу на ваш компьютер вам нужно вставить диск с программой CD-ROM, затем нажать ПКМ на папку «Программа», появится контекстное меню и нажмите ЛКМ на строку копировать. Далее следует на рабочем столе нажать ПКМ и выбрать строку вставить. После того когда вы скопируете программу двойным щелчком мыши нажмите на папку с программой. Затем выбрать файл с под названием «pm.exe».
При запуске программы открывается окно «Form1» (рисунок 1), далее нажимаете кнопку «Задать размер» появляется окно «Количество» (рисунок 2). Затем задаете количество строк и столбцов с помощью клавиатуры. Затем заполняете таблицу этим же способом и нажимаете кнопку «Расчитать». Далее ведется расчет который можно увидеть на окне (рисунок 1) в нижней части.
Приложение В
(справочное)
Листинг программы
unit p1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Math, ComCtrls, ExtCtrls;
const
fFigSize: integer = 10; // half size
type
TFigure = class
public
x,y: integer;
num: integer;
flag: integer; // type
val: integer;
p: integer; // при выводе в стринггрид
end;
TLine = class
public
i1, i2: integer;
val: integer;
end;
TData = class
public
Width, Height: integer;
Arr: array [0..99, 0..99] of integer;
Left, Top: array[0..99] of integer;
constructor Create;
procedure Reset;
procedure Assign( data: TData );
procedure AssignLT( data: TData );
function NoNulls: integer;
function Min: integer;
end;
TEquation = record
p1, p2: integer;
sum: integer;
solved: boolean;
end;
TVar = record
v: integer;
solved: boolean;
end;
TEqSolve = class
public
Eq: array [0..100] of TEquation;
fV: array [0..100] of TVar;
fEqCount, fVarCount, fH: integer;
function GetU( index: integer ): TVar;
function GetV( index: integer ): TVar;
procedure AddEq( p1, p2, s: integer );
// Количество уравнений динамическое.Количество переменных можно узнать
// сразу.
constructor Create( h, v_c: integer );
procedure Solve;
property U[index: integer]: TVar read GetU;
property V[index: integer]: TVar read GetV;
end; {}
TForm1 = class(TForm)
Memo1: TMemo;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Button1: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
StringGrid1: TStringGrid;
Button2: TButton;
Panel1: TPanel;
PaintBox1: TPaintBox;
Button6: TButton;
Button7: TButton;
Button8: TButton;
procedure Button1Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1Paint(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
fData: TData;
fFigures: TList;
fLines: TList;
fMouseState : integer;
fMouseInd: integer;
{ Public declarations }
function Check( data: TData ): boolean;
procedure CalcNorthWest( data: TData; var plan: TData );
procedure CalcMinEl( data: TData; var plan: TData );
procedure CalcPotential( data: TData; var plan, x: TData );
procedure Dump( data: TData; fl: integer );
function CalcSum( data, plan: TData ): integer;
procedure ShiftPlan( var data, plan, potential: TData );
// graphics
procedure Redraw;
function IsOver( x,y: integer ): integer;
procedure AddRemoveLine( i1, i2: integer );
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses size;
procedure TForm1.Button1Click(Sender: TObject);
var
index, s: integer;
begin
if Size_f1.ShowModal () <> mrOk then
exit;
s := StrToInt( Size_f1.Cols_e1.Text );
StringGrid1.ColCount := s + 2;
for index := 1 to s do
StringGrid1.Cells[index+1,0] := IntToStr( index );
s := StrToInt( Size_f1.Rows_e1.Text );
StringGrid1.RowCount := s + 2;
for index := 1 to s do
StringGrid1.Cells[0, index+1] := IntToStr( index );
end;
procedure TForm1.StringGrid1KeyPress(
begin
if (StringGrid1.Col = 1) and (StringGrid1.Row = 1) then
begin
Key := #0;
exit;
end;
if (Key < '0') or (Key > '9') then
Key := #0;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[1,0] := 'Магазины';
StringGrid1.Cells[0,1] := 'Склады';
StringGrid1.Cells[1,1] := 'Наличие \ Потребность';
FillChar( fData, sizeof(fData), 0 );
fFigures := TList.Create;
fLines := TList.Create;
fMouseState := 0;
end;
procedure TForm1.Button2Click(Sender: TObject);
function GetInt( x, y: integer ): integer;
begin
Result := StrToInt( StringGrid1.Cells[ x, y ] );
end;
var
index, index2, s, old_s: integer;
data, plan, potential: TData;
begin
Memo1.Lines.Clear;
// Прочитать данные из грида
data := TData.Create;
data.Width := StringGrid1.ColCount-2;
data.Height := StringGrid1.RowCount-2;
for index := 0 to data.Height-1 do
for index2 := 0 to data.Width-1 do
data.Arr[index2,index] := GetInt( index2+2, index+2 );
for index := 0 to data.Width-1 do
data.Top[index] := GetInt( index+2, 1 );
for index := 0 to data.Height-1 do
data.Left[index] := GetInt( 1, index+2 );
plan := TData.Create;
potential := TData.Create;
Memo1.Lines.Add( 'Data' );
Dump( data, 7 );
Memo1.Lines.Add( 'Plan:' );
CalcNorthWest( data, plan );
Dump( plan, 1 );
Memo1.Lines.Add( 'Sum: ' + IntToStr( CalcSum(data, plan) ) ); {}
{ CalcMinEl( data, plan );
Dump( plan, 7 );
Memo1.Lines.Add( 'Sum: ' + IntToStr( CalcSum(data, plan) ) ); {}
old_s := 0;
while (true) do
begin
CalcPotential( data, plan, potential );
Memo1.Lines.Add( 'Potential:' );
Dump( potential, 1 ); {}
if (potential.Min >= 0) then
begin
Memo1.Lines.Add( 'Finished' );
break;
end;
ShiftPlan( data, plan, potential );
s := CalcSum(data, plan);
Memo1.Lines.Add( 'res:' );
Dump( plan, 1 );
Memo1.Lines.Add( 'Sum: ' + IntToStr(s) ); {}
if (old_s = s) then
break
else
old_s := s;
end;
end;
{ TData }
procedure TData.Assign(data: TData);
var
index, index2: integer;
begin
AssignLT( data );
for index := 0 to Height-1 do
for index2 := 0 to Width-1 do
Arr[index2,index] := data.Arr[index2,index];
end;
procedure TData.AssignLT(data: TData);
var
index: integer;
begin
Reset;
Width := data.Width;
Height := data.Height;
for index := 0 to Width-1 do
Top[index] := data.Top[index];
for index := 0 to Height-1 do
Left[index] := data.Left[index];
end;
constructor TData.Create;
begin
Reset;
end;
function TForm1.Check(data: TData): boolean;