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