Смекни!
smekni.com

Обучающе-контроллирующая система для подготовки студентов (стр. 10 из 13)

· количество разновидностей форм входной информации;

· количество разновидностей форм выходной информации;

· степень новизны задачи;

· сложность алгоритма;

· вид используемой информации;

· сложность контроля входной и выходной информации;

· язык программирования;

· объем входной информации;

· использование типовых решений, типовых проектов и программ,

· стандартных модулей.

Предусмотрено четыре степени новизны разрабатываемых задач:

· А — разработка задач, предусматривающая применение принципиально новых методов разработки, проведение научно-исследовательских работ;

· Б — разработка типовых проектных решений, оригинальных задач и систем, не имеющих аналогов;

· В — разработка проекта с использованием типовых проектных решений при условии их изменения, разработка проектов, имеющих аналогичные решения;

· Г — привязка типовых проектных решений.

Сложность алгоритма представлена тремя группами:

· 1 — алгоритмы оптимизации и моделирования систем и объектов;

· 2 — алгоритмы учета, отчетности, статистики и поиска;

· 3 — алгоритмы, реализующие стандартные методы решения, а также не предусматривающие применения сложных численных и логических методов.

Пакет программ, представленный в настоящем проекте, относится к степени В новизны разрабатываемой задачи. Сложность алгоритма решаемой задачи — 3.

Плановая прибыль на программу определяется по формуле

Пр = Спрп,, (7.22.)

гдеСпр — себестоимость программы, руб.,

Нп — норма прибыли проектной организации (Нп = 0.25).

Себестоимость программы определяется по формуле

Спр = Зрз*F+Зот, (7.23.)

гдеF — коэффициент накладных расходов проектной организации без учета эксплуатации ЭВМ (F = 1.15),

Зот — затраты на отладку программы.

Затраты на отладку программы определяются по формуле

Зот = Тотл*Sмч, (7.24.)

гдеТотл — трудоемкость отладки программы, час. (Тотл = 32).

Зот = 32* 2504.96 = 80159 (руб),
Спр = 4667840.77*1.15+80159= 5448175.89 (руб).

Оптовая цена программы определяется по формуле

Цо = Спрр. (7.25.)
Пр = 5448175.89 *0.25 = 1362043.97 (руб),
Цо = 5448175.89 + 1362043.97 = 5440712.13 (руб),
Цпр = 5440712.13+(4667840.77+1362043.97)*0.2 = 6646689.08 (руб).

Ожидаемый годовой экономический эффект от сокращения ручного труда при обработке информации определяется по формуле

ЭФ = Пу-Е*Ко = Пу-Е*(Кзпр), (7.26.)

гдеЕ — коэффициент эффективности, равный ставке за кредиты на рынке долгосрочных кредитов (Е = 0.25).

Ко = 175175+6646689.08 = 6821864.08 (руб),
ЭФ = 4657863.54 -0.25*6821864.08= 2952397.52 (руб).

Срок возврата инвестиций определяется по формуле

Тв = Коу, (7.27.)
Тв = 6821864.08/ 4657863.54 = 1.46 (лет).

Результаты расчета сведены в табл. 7.2.

Таблица 7.2

Технико‑экономические показатели проекта

Наименование показателя Базовый вариант Проектный вариант
Трудоемкость решения задачи, час. 4 0.182
Периодичность решения задачи, раз/год 200 200
Годовые текущие затраты, связанные с решением задачи, млн. руб. 7.080 0.335
Отпускная цена программы, млн. руб. 6.647
Степень новизны программы В
Группа сложности алгоритма 3
Прирост условной прибыли, млн. руб. 4.658
Ожидаемый годовой экономический эффект, млн. руб. 2.952
Срок возврата инвестиций, лет 1.46

Разработанная «Обучающе-контролирующая система» обеспечивает получение годового экономического эффекта в сумме 2.952 млн. рублей. Прирост условной прибыли составляет 4.658 млн. рублей. При отпускной цене программы в 6.647 млн. рублей проект обеспечивает возврат инвестиций за 1.46 года.


ЗАКЛЮЧЕНИЕ

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

1) программа для создания и модификации тестов;

2) сервисная программа администрирования;

3) программа контроля знаний.

Разработанная универсальная обучающе-контролирующая система обладает следующими возможностями:

· создание на основе имеющихся баз знаний тестов по различным предметам;

· модификация созданных тестов;

· формирование билетов;

· задание времени ответа на вопросы билета;

· задание системы оценки результатов тестирования;

· контроль знаний обучаемых посредством тестирования;

· возможность работы системы в ЛВС;

· просмотр и распечатка результатов (протокола) тестирования на принтере

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

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

Все задачи, поставленные при постановке задания, выполнены. Проведенный расчет говорит о экономической целесообразности разработки системы и возможности использования ее в учебном процессе.


Приложение 1

ТЕКСТПРОГРАММЫ TESTBUILDER

program TestBuilder;

uses

Forms,

S2 in 'S2.PAS' {TreeForm},

db_unit in 'db_unit.pas' {EditForm},

addtema in 'addtema.pas' {WinEditTema},

progrInd in 'progrInd.pas' {ProcessForm};

{$R *.RES}

begin

Application.Title:= 'TestBuilder';

Application.CreateForm(TTreeForm, TreeForm);

Application.CreateForm(TEditForm, EditForm);

Application.CreateForm(TWinEditTema, WinEditTema);

Application.CreateForm(TProcessForm, ProcessForm);

Application.Run;

end.

Текстмодуля DB_Unit

unit S2;

interface

uses

SysUtils, WinTypes,{ Windows,} Messages, Classes, Graphics, Controls,

Forms, Dialogs, Buttons, StdCtrls, Grids, Outline, ComCtrls, DBCtrls,

DBTables, DB;

type

TTreeForm = class(TForm)

MainTree: TOutline;

AddDocBut: TSpeedButton;

DeleteBut: TSpeedButton;

FullExpBut: TSpeedButton;

FullColBut: TSpeedButton;

ExitBut: TSpeedButton;

AddTemaBut: TSpeedButton;

TemaSource: TDataSource;

QuestSource: TDataSource;

DBTema: TTable;

DBTemaTema_id: TAutoIncField;

DBTemaTema_name: TStringField;

DBQuest: TTable;

DBQuestTema_id: TIntegerField;

DBQuestQuest_id: TAutoIncField;

DBQuestQuest_name: TMemoField;

procedure AddDocButClick(Sender: TObject);

procedure MainTreeClick(Sender: TObject);

procedure DeleteButClick(Sender: TObject);

procedure FullExpButClick(Sender: TObject);

procedure FullColButClick(Sender: TObject);

procedure ExitButClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure AddTemaButClick(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure FormResize(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure AppendQuestion(temaId: longint);

procedure ClearQuestion;

private

{ Private declarations }

x1,x2: integer; {вспомогательныепеременные}

CreateMainForm: boolean;

public

{ Public declarations }

end;

var

TreeForm: TTreeForm;

implementation

uses db_unit, addtema, progrInd;

{$R *.DFM}

procedure TTreeForm.AddDocButClick(Sender: TObject);

var

Nodename: string;

number,ind,docindex: longint;

begin

If MainTree.Items[MainTree.SelectedItem].Level = 1 then Exit;

If MainTree.Items[MainTree.SelectedItem].Level = 2 then {в NUMBER заноситсяномертемы }

begin

number:= longint(MainTree.Items[MainTree.SelectedItem].Data);{в NUMBER заноситсяномертемы}

ind:= MainTree.SelectedItem;

end

else

begin

number:= longint(MainTree[MainTree.SelectedItem].Parent.Data);

ind:= MainTree[MainTree.SelectedItem].Parent.Index;

end;

AppendQuestion(number); {добавление нового вопроса в БД вопросов}

With MainTree.Items[ind] do

If HasItems then number:= GetLastChild - GetFirstChild + 2 {определениечислапотомков + 2}

else number:= 1;

Str(number,Nodename); {номервопросавтеме}

If MainTree.Items[MainTree.SelectedItem].Level = 2 then

begin

docIndex:= MainTree.AddChildObject(MainTree.SelectedItem,NodeName,

pointer(DBQuest.Fields[1].AsInteger));

MainTree.Items[MainTree.SelectedItem].Expand;

end

else {if... = 3}

docIndex:= MainTree.AddObject(MainTree.SelectedItem,NodeName,

pointer(DBQuest.Fields[1].AsInteger));

MainTree.Selecteditem:= docIndex; {установлениефокусана new вопрос}

end;

procedure TTreeForm.MainTreeClick(Sender: TObject);

Var

cur_id: longint;

NewAnswer: TAnswer;

del_count,i: integer;

begin

if MainTree.Items[MainTree.SelectedItem].Level = 1 then

begin

EditForm.QuestLabel.Hide;

EditForm.DBEditTema.Hide;

EditForm.MemoQuest.Hide;

EditForm.MemoScroll.Enabled:= False;

EditForm.AddAnswerBut.Enabled:= False;

EditForm.DelAnswerBut.Enabled:= False;

Exit;

end;

cur_id:= Longint(MainTree.Items[MainTree.SelectedItem].Data);

EditForm.QuestLabel.Show;

if MainTree.Items[MainTree.SelectedItem].Level = 3 then

begin

With TreeForm.DBQuest do begin {установкафильтранаБДвопросов }

SetKey;

Fields[1].AsInteger:= cur_id;

GotoKey;

end;

EditForm.DBEditTema.Hide;

EditForm.QuestLabel.Caption:= 'Текствопроса';

EditForm.MemoQuest.Show;

EditForm.MemoScroll.Enabled:= True;

EditForm.AddAnswerBut.Enabled:= True;

EditForm.DelAnswerBut.Enabled:= True;

i:= 0; {индекс ДЛЯ ОБЪЕКТА TMemo в списке}

EditForm.DBAnswer.First; {чтобы не было глюков при повторном щелчке на вопросе}

while NOT EditForm.DBAnswer.Eof do

begin

If (i+1) > EditForm.MemoScroll.ComponentCount then

NewAnswer:= TAnswer.Create(EditForm.MemoScroll,100); {добавление new вариантаответавсписок}

TMemo(EditForm.MemoScroll.Components[i]).Text:=

EditForm.DBAnswer.Fields[2].AsString; {Otvet_name}

TCheckBox(EditForm.MemoScroll.Components[i+1]).Checked:=

EditForm.DBAnswer.Fields[3].AsBoolean; {Otvet_name}

inc(i,2); // <--- увеличение индекса ДЛЯ ОБЪЕКТА TMemo в списке

EditForm.DBAnswer.Next;

end;

While i< EditForm.MemoScroll.ComponentCount do {удаление из списка лишних вариантов ответа}

TAnswer.DeleteAnswer(EditForm.MemoScroll,EditForm.MemoScroll.ComponentCount - 2);

If EditForm.MemoScroll.ComponentCount > 0 then TMemo(EditForm.MemoScroll.Components[0]).SetFocus; {Set focus on first answer.}

end

else {if level = 2, т.е. выбранатема}

begin

With TreeForm.DBTema do begin {установкафильтранаБДтем }

SetKey;

Fields[0].AsInteger:= cur_id;

GotoKey;

end;

EditForm.AddAnswerBut.Enabled:= False;

EditForm.DelAnswerBut.Enabled:= False;

EditForm.MemoScroll.Enabled:= False;

EditForm.MemoQuest.Hide;

EditForm.QuestLabel.Caption:= 'Названиетемы';

EditForm.DBEditTema.Show;

end;

end;

procedure TTreeForm.DeleteButClick(Sender: TObject);

begin

If Maintree.SelectedItem = 1 then Exit;

If MainTree.Items[MainTree.SelectedItem].Level = 3 then

begin

If Application.MessageBox('Удалить вопрос ?','Удаление вопроса',

mb_YesNo+mb_IconQuestion+MB_DEFBUTTON2) = IdYes then

begin

ClearQuestion; // логическое удаление вопроса из БД