Розробка програмно-методичного комплексу для шкільного курсу інформатики

Аналіз існуючих підходів використання комп'ютерів в навчальному процесі середньої школи. Вибір та обгрунтування програмних засобів розробки програмно-методичного комплексу. Опис структури та основних процедур інформаційної системи. Модуль даних DM.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 26.03.2012
Размер файла 8,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

mL:= mci_MSF_Minute(mpVideo.Length) div 60;

sL:= mci_MSF_Second(mpVideo.Length);

lblTime.Caption:= Format('%d:%.2d / %d:%.2d', [mP, sP, mL, sL]);

// lblTime.Caption:= FormatTime(mpVideo.Position) + ' / ' + FormatTime(mpVideo.Length);

TrackBar.Position:= mci_MSF_Second(mpVideo.Position); // mpVideo.Position;

end;

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

begin

VideoTimer.Enabled:= false;

mpVideo.Stop;

mpMusic.Stop;

end;

procedure TVideoF.btnCloseClick(Sender: TObject);

begin

Close;

end;

// Включение-ВЫключение фоновой музыки

procedure TVideoF.mpVideoClick(Sender: TObject; Button: TMPBtnType;

var DoDefault: Boolean);

begin

case Button of

btPlay: if FileExists(VideoPath + BG_Video_Filename) then

mpMusic.Play;

btPause: mpMusic.Pause;

btStop: mpMusic.Stop;

else ;

end;

end;

end.

Додаток 4

Вихідний код модуля головного вікна ПМК

unit frmMain;

interface

uses

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

Dialogs, ExtCtrls, jpeg, Buttons, StdCtrls, XPMan, ShellAPI, MPlayer;

type

TMainF = class(TForm)

Image1: TImage;

XPManifest1: TXPManifest;

btnExit: TBitBtn;

btnDemo: TBitBtn;

btnPract: TBitBtn;

btnLessons: TBitBtn;

btnTests: TBitBtn;

procedure btnExitClick(Sender: TObject);

procedure btnLessonsClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure btnPractClick(Sender: TObject);

procedure btnTestsClick(Sender: TObject);

procedure btnDemoClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainF: TMainF;

implementation

uses frmPickLesson, frmPickPractice, uShared, frmVideo, frmPickTest;

{$R *.dfm}

// Выход

procedure TMainF.btnExitClick(Sender: TObject);

begin

Application.Terminate;

end;

procedure TMainF.FormCreate(Sender: TObject);

begin

ContentPath:= ExtractFilePath(ParamStr(0))+'Content\';

PracticePath:= ContentPath + 'Practice\';

VideoPath:= ExtractFilePath(ParamStr(0))+'Video\';

end;

// Выбор уроков

procedure TMainF.btnLessonsClick(Sender: TObject);

begin

PickLessonF := TPickLessonF.Create(Application);

with PickLessonF do

try

ShowModal;

finally

Free;

end;

end;

// Выбор практических занятий

procedure TMainF.btnPractClick(Sender: TObject);

begin

PickPracticeF := TPickPracticeF.Create(Application);

with PickPracticeF do

try

ShowModal;

finally

Free;

end;

end;

// Выбор тестов

procedure TMainF.btnTestsClick(Sender: TObject);

begin

PickTestF := TPickTestF.Create(Application);

with PickTestF do

try

ShowModal;

finally

Free;

end;

end;

// Запуск демонстрации

procedure TMainF.btnDemoClick(Sender: TObject);

var

FileName: string;

begin

FileName:= ExtractFilePath(ParamStr(0)) + 'Content\' + Demo_Filename;

if FileExists(FileName) then

begin

if ShellExecute(0, nil, PChar(FileName), nil, nil, SW_SHOW) < 32 then

MessageDlg(Format('Не удаётся запустить "%S"', [FileName]), mtError, [mbOK], 0);

end

else

MessageDlg(Format('Файл "%S" не найден.', [FileName]), mtError, [mbOK], 0);

end;

end.

Додаток 5

Вихідний код модуля головного вікна вибору уроків

nit frmPickLesson;

interface

uses

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

Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons;

type

TPickKind = (pkLesson, pkPractice, pkTest);

TPickLessonF = class(TForm)

Image1: TImage;

btnHome: TBitBtn;

lblLesson1: TLabel;

procedure btnHomeClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure lblLesson1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

private

{ Private declarations }

protected

LessonList: TStringList;

procedure MultiplyLabels;

public

{ Public declarations }

IsPractice: boolean;

PickKind: TPickKind;

end;

var

PickLessonF: TPickLessonF;

implementation

uses uShared, frmLessons;

{$R *.dfm}

procedure TPickLessonF.btnHomeClick(Sender: TObject);

begin

Close;

end;

procedure TPickLessonF.FormCreate(Sender: TObject);

begin

LessonList:= TStringList.Create;

end;

procedure TPickLessonF.FormDestroy(Sender: TObject);

begin

LessonList.Free;

end;

// Типа "гиперссылка"

procedure TPickLessonF.lblLesson1Click(Sender: TObject);

begin

LessonsF.ShowLesson(IsPractice, TLabel(Sender).Caption);

end;

// Создать гиперссылки для каждого урока

procedure TPickLessonF.MultiplyLabels();

var

i: integer;

lbl: TLabel;

begin

lblLesson1.Caption:= LessonList[0];

if LessonList.Objects[0] <> nil then

lblLesson1.Tag:= integer(LessonList.Objects[0]);

for i := 1 to LessonList.Count-1 do

begin

lbl:= TLabel.Create(Self);

lbl.Parent:= Self;

lbl.Alignment:= lblLesson1.Alignment;

lbl.Anchors:= lblLesson1.Anchors;

lbl.AutoSize:= lblLesson1.AutoSize;

lbl.Color:= lblLesson1.Color;

lbl.Transparent:= lblLesson1.Transparent;

lbl.Cursor:= lblLesson1.Cursor;

lbl.Font.Assign(lblLesson1.Font);

lbl.Left:= lblLesson1.Left;

lbl.Height:= lblLesson1.Height;

lbl.Top:= lblLesson1.Top + 50*i;

lbl.Width:= lblLesson1.Width;

lbl.WordWrap:= lblLesson1.WordWrap;

lbl.Caption:= LessonList[i];

lbl.OnClick:= lblLesson1Click;

if LessonList.Objects[i] <> nil then

lbl.Tag:= integer(LessonList.Objects[i]);

lbl.Show;

end;

end;

procedure TPickLessonF.FormShow(Sender: TObject);

begin

FindFiles('*.mht', ContentPath, LessonList);

IsPractice:= false;

MultiplyLabels();

end;

Додаток 6

Вихідний код модуля uShared

unit uShared;

interface

uses

SysUtils, Classes;

// Поиск файлов заданного типа в заданной папке

procedure FindFiles(Mask, Path: string; var FileList: TStringList);

const

BG_Video_Filename = 'BG_Video.mp3';

BG_Demo_Filename = 'BG_Demo.mp3';

Demo_Filename = 'Примеры рисунков.pps';

var

ContentPath, PracticePath, VideoPath: string;

implementation

// Поиск файлов заданного типа в заданной папке

procedure FindFiles(Mask, Path: string; var FileList: TStringList);

var

FSearchRec: TSearchRec;

FindResult: integer;

begin

FindResult:= FindFirst(Path + Mask, faAnyFile, FSearchRec);

try

while FindResult=0 do

begin

FileList.Add(ChangeFileExt(FSearchRec.Name, ''));

FindResult:= FindNext(FSearchRec);

end;

finally

FindClose(FSearchRec);

end;

end;

end.

Додаток 7

Вихідний код модуля вікна вибору практичних занять

unit frmPickPractice;

interface

uses

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

Dialogs, frmPickLesson, StdCtrls, Buttons, jpeg, ExtCtrls;

type

TPickPracticeF = class(TPickLessonF)

procedure FormShow(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

PickPracticeF: TPickPracticeF;

implementation

uses uShared;

{$R *.dfm}

procedure TPickPracticeF.FormShow(Sender: TObject);

begin

FindFiles('*.mht', PracticePath, LessonList);

IsPractice:= true;

MultiplyLabels();

end;

end.

Додаток 8

Вихідний код модуля вікна вибору тестів

nit frmPickTest;

interface

uses

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

Dialogs, frmPickLesson, StdCtrls, Buttons, jpeg, ExtCtrls;

type

TPickTestF = class(TPickLessonF)

procedure FormShow(Sender: TObject);

procedure lblLesson1Click(Sender: TObject);

private

{ Private declarations }

procedure MultiplyLabels;

public

{ Public declarations }

end;

var

PickTestF: TPickTestF;

implementation

uses uDM, DB, frmTesting;

{$R *.dfm}

procedure TPickTestF.FormShow(Sender: TObject);

begin

with DM.sqlTopics do

begin

First;

while not Eof do

begin

LessonList.AddObject(FieldByName('TopicName').AsString, TObject(FieldByName('TopicID').AsInteger));

Next;

end;

end;

MultiplyLabels();

end;

procedure TPickTestF.lblLesson1Click(Sender: TObject);

begin

TestingF.StartTest(TLabel(Sender).Tag);

end;

procedure TPickTestF.MultiplyLabels;

var

i: integer;

begin

inherited MultiplyLabels;

for i := 0 to ControlCount-1 do

if Controls[i] is TLabel then

TLabel(Controls[i]).OnClick:= lblLesson1Click;

end;

end.

Додаток 9. Вихідний код модуля даних.

unit uDM;

interface

uses

Windows, Messages, SysUtils, Classes, Forms, DB, ADODB;

type

TDM = class(TDataModule)

ADOConnection: TADOConnection;

sqlTopics: TADODataSet;

sqlQuestions: TADODataSet;

dsTopics: TDataSource;

dsQuestions: TDataSource;

procedure DataModuleCreate(Sender: TObject);

procedure sqlQuestionsAfterInsert(DataSet: TDataSet);

procedure sqlQuestionsAfterScroll(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

const

QUESTION_SCROLL = WM_USER + 1000;

implementation

{$R *.dfm}

procedure TDM.DataModuleCreate(Sender: TObject);

var

i: integer;

begin

ADOConnection.Connected:= false;

ADOConnection.ConnectionString:= Format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%S%S;',

[ExtractFilePath(ParamStr(0)), 'Tests.mdb']);

ADOConnection.Connected:= true;

sqlTopics.Open;

end;

procedure TDM.sqlQuestionsAfterInsert(DataSet: TDataSet);

var

i: integer;

begin

with sqlQuestions do

begin

FieldByName('TopicID').Value:= sqlTopics.FieldByName('TopicID').Value;

for i := 1 to 7 do

FieldByName(Format('OK%D', [i])).AsBoolean:= false;

end;

end;

procedure TDM.sqlQuestionsAfterScroll(DataSet: TDataSet);

begin

PostMessage(Application.MainForm.Handle, QUESTION_SCROLL, 0, 0);

end;

end.

Додаток 10. Вихідний код модуля вікна тестів .

unit frmTesting;

interface

uses

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

Dialogs, ExtCtrls, StdCtrls, DBCtrls, Buttons, ImgList;

type

TTestingF = class(TForm)

DBMemo1: TDBMemo;

Panel1: TPanel;

ImgsPanel: TPanel;

BtnsPanel: TPanel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

BitBtn6: TBitBtn;

BitBtn7: TBitBtn;

btnNext: TBitBtn;

Image1: TImage;

ImgList: TImageList;

Image2: TImage;

Image3: TImage;

Image4: TImage;

Image5: TImage;

Image6: TImage;

Image7: TImage;

ShowMissingTimer: TTimer;

procedure btnNextClick(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure ShowMissingTimerTimer(Sender: TObject);

private

{ Private declarations }

procedure ShowQuestion();

procedure ShowResult();

function CheckAnswer(Sender: TBitBtn): boolean;

procedure ShowRight(const AnsNum: integer);

procedure ShowWrong(const AnsNum: integer);

procedure ClearImg(const AnsNum: integer);

function GetPoints(const RightsPercent: Single): integer;

public

{ Public declarations }

procedure StartTest(const TopicID: integer);

end;

var

TestingF: TTestingF;

implementation

uses uDM, DB, ADODB;

{$R *.dfm}

{ TTestingF }

var

QueCount, // кол-во вопросов

RightsCount, // кол-во правильных (должно быть)

TryCount, // кол-во нажатых вариантов

TotalRightsCount, // общее кол-во правильных (должно быть)

TotalFactCount: integer; // общее фактическое кол-во правильных

sRightNums: string; // номера правильных вариантов строкой

// Начало тестирования

procedure TTestingF.StartTest(const TopicID: integer);

begin

TotalRightsCount:= 0; // обнуляем общее кол-во правильных (должно быть)

TotalFactCount:= 0; // обнуляем общее фактическое кол-во правильных

with DM.sqlTopics do

begin

Locate('TopicID', TopicID, []);

Caption:= Format('Тестирование по теме "%S"', [FieldByName('TopicName').AsString]);

end;

with DM.sqlQuestions do

begin

if Active then

Close;

Parameters.ParamByName('TopicID').Value:= TopicID;

Open;

QueCount:= RecordCount;

First;

end;

ShowQuestion();

Show;

end;

// Показ вопроса

procedure TTestingF.ShowQuestion();

var

i: integer;

sAns: string;

Btn: TBitBtn;

begin

TryCount:= 0; // обнуляем кол-во нажатых вариантов

RightsCount:= 0; // обнуляем кол-во правильных (должно быть)

sRightNums:= ''; // обнуляем номера правильных вариантов

with DM.sqlQuestions do

for i := 1 to 7 do

begin

sAns:= FieldByName(Format('Ans%D', [i])).AsString;

Btn:= TBitBtn(Self.FindComponent(Format('BitBtn%D', [i])));

Btn.Caption:= sAns;

Btn.Enabled:= sAns <> '';

ClearImg(i); // очищаем картнку

if FieldByName(Format('OK%D', [i])).AsBoolean then

begin

Inc(RightsCount);

sRightNums:= sRightNums + IntToStr(i);

end;

end;

Inc(TotalRightsCount, RightsCount);

end;

// Следующий вопрос

procedure TTestingF.btnNextClick(Sender: TObject);

begin

btnNext.Enabled:= false;

ShowMissingTimer.Enabled:= false;

DM.sqlQuestions.Next;

if not DM.sqlQuestions.Eof then

ShowQuestion()

else

ShowResult();

end;

// Показать как правильный

procedure TTestingF.ShowRight(const AnsNum: integer);

var

Img: TBitmap;

begin

Img:= TImage(FindComponent(Format('Image%D', [AnsNum]))).Picture.Bitmap;

ImgList.GetBitmap(1, Img);

end;

// Показать как НЕправильный

procedure TTestingF.ShowWrong(const AnsNum: integer);

var

Img: TBitmap;

begin

Img:= TImage(FindComponent(Format('Image%D', [AnsNum]))).Picture.Bitmap;

ImgList.GetBitmap(0, Img);

end;

// Очистить рисунок

procedure TTestingF.ClearImg(const AnsNum: integer);

begin

TImage(FindComponent(Format('Image%D', [AnsNum]))).Picture:= nil; // очищаем картнку

end;

// Проверка правильности варианта ответа

function TTestingF.CheckAnswer(Sender: TBitBtn): boolean;

var

AnsNum, p: integer;

begin

AnsNum:= Sender.Tag;

Result:= DM.sqlQuestions.FieldByName(Format('OK%D', [AnsNum])).AsBoolean;

if Result then

begin

ShowRight(AnsNum);

Inc(TotalFactCount);

p:= Pos(IntToStr(AnsNum), sRightNums);

if p > 0 then

Delete(sRightNums, p, 1);

end

else

ShowWrong(AnsNum);

Sender.Enabled:= false;

end;

// Мигание недостающих правильных

procedure TTestingF.ShowMissingTimerTimer(Sender: TObject);

var

i, Num: integer;

Bmp: TBitmap;

begin

for i := 1 to Length(sRightNums) do

begin

Num:= StrToInt(sRightNums[i]);

Bmp:= TImage(FindComponent(Format('Image%D', [Num]))).Picture.Bitmap;

if Bmp.Empty then

ShowRight(Num)

else

ClearImg(Num);

end;

end;

// Нажатие кнопки ответа

procedure TTestingF.BitBtn1Click(Sender: TObject);

var

i: integer;

begin

Inc(TryCount);

CheckAnswer(TBitBtn(Sender)); // проверяем нажатый

if TryCount >= RightsCount then // если нажато нужное кол-во вариантов

begin

if sRightNums <> '' then // и не все правильные отмечены

ShowMissingTimer.Enabled:= true; // то включаем мигание недостающих правильных

for i := 1 to 7 do // отключаем доступность всех ответов

TBitBtn(Self.FindComponent(Format('BitBtn%D', [i]))).Enabled:= false;

btnNext.Enabled:= true; // включаем доступность следующего вопроса

end;

end;

// Показ результата

procedure TTestingF.ShowResult();

var

Percent: Single;

Points: integer;

begin

Percent:= TotalFactCount * 100 / TotalRightsCount;

Points:= GetPoints(Percent);

MessageDlg(Format('Ваш результат: %D б. (%F%%)', [Points, Percent]), mtInformation, [mbOK], 0);

end;

// Официальная шкала оценивания (наказ № 341 МОН України від 25.04.2001 р.)

function TTestingF.GetPoints(const RightsPercent: Single): integer;

begin

if RightsPercent >= 99.999 then

Result:= 11

else if RightsPercent >= 95 then

Result:= 10

else if RightsPercent >= 85 then

Result:= 9

else if RightsPercent >= 80 then

Result:= 8

else if RightsPercent >= 75 then

Result:= 7

else if RightsPercent >= 65 then

Result:= 6

else if RightsPercent >= 55 then

Result:= 5

else if RightsPercent >= 45 then

Result:= 4

else if RightsPercent >= 30 then

Result:= 3

else if RightsPercent >= 20 then

Result:= 2

else Result:= 1;

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Обґрунтування побудови апаратно-програмного комплексу, вибір апаратних та програмних засобів та введення комплексу в дію. Опис основних сервісних функцій мобільних телефонів стандарту GSM. Створення програми для ведення статистики використання комплексу.

    дипломная работа [830,9 K], добавлен 07.06.2010

  • Розробка комплексу інтерактивних програмних засобів для обліку і продажу товарів в Інтернет-магазині. Консультативні та довідкові функції інформаційної системи. Створення і реалізація структурної моделі бази даних. Вимоги до ресурсів сервера і ПК клієнта.

    дипломная работа [891,6 K], добавлен 14.02.2015

  • Характеристика функціональної структури предметної області програмного комплексу. Розробка архітектури програмної системи. Вибір типу архітектури й зразків проектування. Опис декомпозиції, залежностей та інтерфейсу. Детальне проектування модулів та даних.

    курсовая работа [462,2 K], добавлен 19.12.2013

  • Варіантний аналіз та вибір методів розв’язування, основні поняття та визначення, особливості розробки баз даних. Описовий алгоритм головної програми та її структури, опис авторської заставки. Структура модулів та опис функцій, лістинг програми.

    курсовая работа [2,6 M], добавлен 30.11.2009

  • Газотурбінна установка ГТН 6. Формування вимог до програмно-технічного комплексу. Опис інформаційного забезпечення ПТКЗА. Розрахунок надійності реалізації функцій. Порядок перевірки системи автоматизації. Опис рішень супервізорного, локального рівнів.

    курсовая работа [10,3 M], добавлен 23.12.2013

  • Цілі і завдання розробки, її предмет і актуальність. Опис предметної області, цілі і завдання програми. Вибір методу рішення, опис процесу програмування і вибір інструментальних засобів для реалізації проекту, опис вхідних та вихідних даних, інтерфейсу.

    курсовая работа [327,1 K], добавлен 01.09.2014

  • Специфікація програмного модуля. Документація, що створюється і використовується в процесі розробки програмних засобів. Інструменти комп’ютерної підтримки. Вимоги до користувальницького інтерфейсу. Програма для розрахунку значень складної функції.

    контрольная работа [34,5 K], добавлен 21.09.2009

  • Поняття та характеритсики комп'ютерних мереж. Огляд існуючих варіантів побудови інформаційної системи для торгівельного підприємства. Побудова локальної мережі, загальної структури інформаційної системи, бази даних. Аналіз санітарно-гігієнічних умов.

    курсовая работа [624,4 K], добавлен 19.05.2015

  • Аналіз системи збору первинної інформації та розробка структури керуючої ЕОМ АСУ ТП. Розробка апаратного забезпечення інформаційних каналів, структури програмного забезпечення. Алгоритми системного програмного забезпечення. Опис програмних модулів.

    дипломная работа [1,9 M], добавлен 19.08.2012

  • Аналіз предметної області і постановка задачі на розробку програми для автоматизації роботи автопідприємства. Перелік та опис використаних компонентів та основних процедур програми. Опис структур та методів обробки даних. Інструкція для користувача.

    курсовая работа [2,3 M], добавлен 15.02.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.