Автор: Пользователь скрыл имя, 05 Февраля 2013 в 20:13, курсовая работа
Целью данной курсовой работы является создание программного продукта «электронного учебника». Эту программу я смог составить после того, как просмотрел несколько различных примеров создания программы-теста и изучил их основные принципы. Тест-программа как и электронный учебник предназначены для проверки знаний по различным темам, в зависимости от того какие вопросы будут находится в базе данных. Данная програма была разработана в среде программирование Delphi7. Имеющая довольно простой интерфейс, позволяющий свободно работать учащимся с лекционным материалом, и проходить соответствующие тесты для проверки полученных знаний.
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
vopros: TLabel;
N8: TMenuItem;
N9: TMenuItem;
procedure chtenie_voprosov;
procedure CancelClick(Sender: TObject);
procedure nachaloClick(Sender: TObject);
procedure vivod_voprosa;
procedure vivod_poley_voprosa;
procedure OtvetgotovClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
function resultat:integer;
procedure zapis_v_data_base;
function proverka:boolean;
procedure n7click(sender:tobject);
procedure otvetkeypress(sender:tobject;
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
private
{ Private declarations }
vse_voprosy:array[1..max_
ispol_voprosy:array[1..
schitano_voprosov:integer;
tek_vopros,nomer:integer;
file_s_voprosami:text;
otvety_na_voprosy:array[1..
public
student:tstudents;
students:array[1..200] of tstudents;
end;
var
FormOsnova: TFormOsnova;
s:tstrings;
implementation
uses Unit1, Unit7, Unit4, Unit3;
{$R *.dfm}
function tFormOsnova.proverka:boolean;
var file_db:textfile;
n,vsego_proshli:integer;
str:string;
begin
if not fileexists(put_k_data_base+
begin
proverka:=false;
exit;
end;
assignfile(file_db,put_k_data_
reset(file_db);
if ioresult=0 then
begin {n 103}
n:=0;
while not(eof(file_db))do
begin {n 101}
n:=n+1;
readln(file_db,students[n].
delete(students[n].name,1,4);
readln(file_db,students[n].
delete(students[n].familiya,1,
readln(file_db,str);
readln(file_db,str);
readln(file_db,str);
readln(file_db,str);
end; {k 101}
vsego_proshli:=n;
for n:=1 to vsego_proshli do
begin {n 102}
if (students[n].name=student.name
(students[n].familiya=student.
begin
messagedlg('Извините,
вы уже проходили этот тест
отойдите пожалуйста от
proverka:=true;
exit;
end;
end; {k 102}
end {k 103}
else proverka:=false;
closefile(file_db);
end;
procedure tFormOsnova.otvetkeypress(
begin
if key=#13 then
otvetgotov.Click;
end;
procedure tFormOsnova.zapis_v_data_base;
var file_db:textfile;
begin
if fileexists(put_k_data_base+
begin
assignfile(file_db,put_k_data_
append(file_db);
end
else
begin
assignfile(file_db,put_k_data_
rewrite(file_db);
end;
writeln(file_db,'Имя: '+student.name);
writeln(file_db,'____________'
writeln(file_db,'Фамилия: '+student.familiya);
writeln(file_db,'____________'
writeln(file_db,'Группа: '+student.group);
writeln(file_db,'____________'
writeln(file_db,'Дата: '+datetostr(date));
writeln(file_db,'____________'
writeln(file_db,'Время: '+timetostr(time));
writeln(file_db,'____________'
writeln(file_db,'Результат: '+student.resultat);
writeln(file_db,'____________'
writeln(file_db,' ');
{ flush(file_db);}
closefile(file_db);
end;
function tFormOsnova.resultat:integer;
var i,kol_vo_pravilnyh:integer;
begin
kol_vo_pravilnyh:=0;
for i:=1 to voprosov_v_teste do
begin
if formosnova.otvety_na_voprosy[
kol_vo_pravilnyh:=kol_vo_
end;
resultat:=round(10*(kol_vo_
end;
procedure tFormOsnova.chtenie_voprosov;
label 1,2;
var
schyotchik,i,j:integer;
str:string;
b1,b2:boolean;
begin
str:=put_k_voprosam1;
b1:=FileExists(put_k_
b2:=FileExists(put_k_
if (b1) and (b2 )then
begin
str:=put_k_voprosam1;
end;
if (b1) and (not (b2))then
begin
str:=put_k_voprosam1;
end;
if (b2) and (not (b1)) then
begin
str:=put_k_voprosam2;
end;
if (not (b1))and(not (b2)) then
begin
showmessage('Не найден файл с вопросами');
halt;
end;
try
schyotchik:=0;
assignfile(file_s_voprosami,
reset(file_s_voprosami);
while not(seekeof(file_s_voprosami)) do
begin {n 001}
schyotchik:=schyotchik+1;
i:=0;
repeat
i:=i+1;
readln(file_s_voprosami,vse_
until vse_voprosy[schyotchik].
vse_voprosy[schyotchik].
for i:=1 to max_otvetov-1 do
begin {n 003}
readln(file_s_voprosami,vse_
if vse_voprosy[schyotchik].
begin {n 004}
for j:=i to max_otvetov do
vse_voprosy[schyotchik].
goto 1;
end; {k 004}
end; {k 003}
1:end; {k 001} 2:
closefile(file_s_voprosami);
schitano_voprosov:=schyotchik;
if schitano_voprosov<voprosov_v_
begin
MessageDlg('Количество
exit;
end;
except
MessageDlg('Неверен формат Базы Данных',mterror,[mbok],0);
end;
end;
procedure tFormOsnova.vivod_poley_
var sam_vopros:string;
i:integer;
begin
labelvopros.Visible:=true;
vopros.Visible:=true;
otvet.Visible:=true;
labelotvet.Visible:=true;
otvetgotov.Visible:=true;
sam_vopros:='';
for i:=1 to strok_v_voprose do
sam_vopros:=sam_vopros+vse_
if length(sam_vopros)>7*109 then
begin
//vopros.ScrollBars:=
vopros.Height:=100
end
else
begin
//vopros.ScrollBars:=ssnone;
vopros.Height:=17*(trunc(
end;
end;
procedure tFormOsnova.vivod_voprosa;
label 1;
var i,j:integer;
begin
formosnova.vopros.Caption:='';
randomize;
labelvopros.Caption:='Вопрос №'+inttostr(tek_vopros);
1:nomer:=trunc(random(
if tek_vopros>=1 then
for i:=1 to tek_vopros do
begin
if (ispol_voprosy[i]=nomer) or (nomer>schitano_voprosov) then goto 1;
end
else nomer:=trunc(schitano_
ispol_voprosy[tek_vopros]:=
formosnova.vivod_poley_
j:=1;
for i:=1 to strok_v_voprose do
begin // n 301
for j:=1 to Trunc(length(vse_voprosy[
if not((i=1) and (j=1)) then
vopros.Caption:=vopros.
else
vopros.Caption:=vopros.
end; // k 301
otvet.Text:='';
end;
procedure TFormOsnova.CancelClick(
begin
formosnova.close;
form1.show;
end;
procedure TFormOsnova.nachaloClick(
begin
formosnova2.ShowModal;
if not(formosnova2.vvedenie_
else
begin
student.name:=formosnova2.
student.familiya:=formosnova2.
student.group:=formosnova2.
if formosnova.proverka then close;
end;
screen.Cursor:=crappstart;
formosnova.chtenie_voprosov;
screen.Cursor:=crdefault;
tek_vopros:=1;
formosnova.vivod_voprosa;
otvet.SetFocus;
N5.Enabled:=true;
end;
procedure TFormOsnova.OtvetgotovClick(
var i:integer;
begin
for i:=1 to max_otvetov-1 do
begin //n 200
if otvet.Text=vse_voprosy[nomer].
begin //n 201
messagedlg('Ответ правильный',mtconfirmation,[
otvety_na_voprosy[tek_vopros]:
tek_vopros:=tek_vopros+1;
otvet.SetFocus;
if tek_vopros=voprosov_v_teste+1 then
begin //n 202
messagedlg('Вы закончили тест и получили
(из 10 возможных баллов) - '+inttostr(formosnova.
student.resultat:=inttostr(
formosnova.zapis_v_data_base;
form4.Show;
formosnova.Close;
form4.Font.Color:=clred;
end; //k 202
formosnova.vivod_voprosa;
exit;
end; // k 201
end; // k 200
if not(otvety_na_voprosy[tek_
begin //n 203
messagedlg('Ответ неправильный',mtconfirmation,[
otvety_na_voprosy[tek_vopros]:
tek_vopros:=tek_vopros+1;
if tek_vopros=voprosov_v_teste+1 then
begin //n 204
messagedlg('Вы закончили тест и получили
(из 10 возможных баллов) - '+inttostr(formosnova.
student.resultat:=inttostr(
formosnova.zapis_v_data_base;
form4.Font.Color:=clred;
form4.BitBtn1.Hint:='Покинуть программу';
form4.Show;
formosnova.Close;
end; // k 204
formosnova.vivod_voprosa;
end; // k 203
{otvet.SetFocus;}
end;
procedure TFormOsnova.FormCreate(Sender: TObject);
var i,j:integer;
begin
for j:=1 to max_voprosov do
for i:=1 to strok_v_voprose do
begin
vse_voprosy[j].vopros[i]:='';
end;
for i:=1 to voprosov_v_teste do
begin
otvety_na_voprosy[i]:=false;
ispol_voprosy[i]:=0;
end;
if fileexists(put_k_parolu) then
begin
end;
end;
procedure tFormOsnova.n7click(sender:
begin
form7.ShowModal;
end;
procedure TFormOsnova.N8Click(Sender: TObject);
begin
form4.show;
end;
procedure TFormOsnova.N9Click(Sender: TObject);
begin
formosnova.Hide;
form3.show;
end;
end.
unit NameEntr;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TFormOsnova2 = class(TForm)
name: TEdit;
Familiya: TEdit;
gruppa: TEdit;
Escape: TButton;
Dalee: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Image1: TImage;
procedure DaleeClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure EscapeClick(Sender: TObject);
procedure nameKeyPress(Sender: TObject; var Key: Char);
procedure FamiliyaKeyPress(Sender: TObject; var Key: Char);
procedure FormShow(Sender: TObject);
procedure gruppaKeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
private
{ Private declarations }
public
vvedenie_imeni:boolean;
{ Public declarations }
end;
var
FormOsnova2: TFormOsnova2;
implementation
uses Unit4, Unit1;
{$R *.dfm}
procedure TFormOsnova2.DaleeClick(
begin
if not((name.Text='') or
(familiya.Text='') or
(gruppa.Text='')) then
begin
vvedenie_imeni:=true;
Close;
exit;
end
else
if messagedlg('Вы не ввели свои данные',mterror,[mbretry,
begin
vvedenie_imeni:=false;
Close;
end
else
begin
// vvedenie_imeni:=true;
// Close;
// exit;
end;
//Close;
end;
procedure TFormOsnova2.FormCreate(
begin
gruppa.Text:='';
name.Text:='';
familiya.Text:='';
end;
procedure TFormOsnova2.EscapeClick(
begin
vvedenie_imeni:=false;
formosnova2.Close;
form1.show;
end;
procedure TFormOsnova2.nameKeyPress(
begin
if key=#13 then
familiya.SetFocus;
end;
procedure TFormOsnova2.FamiliyaKeyPress(
begin
if key=#13 then
gruppa.SetFocus;
end;
procedure TFormOsnova2.FormShow(Sender: TObject);
begin
name.SetFocus;
end;
procedure TFormOsnova2.gruppaKeyPress(
begin
if key=#13 then
dalee.Click;
end;
procedure TFormOsnova2.Button1Click(
begin
form4.show;
end;
procedure TFormOsnova2.Image1Click(
begin
end;
end.