Сообщение было отмечено ada lavleis как решение
Решение
Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
| unit MainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, jpeg, ExtCtrls,unit2;
const put_k_voprosam1='question.db';
put_k_voprosam2='';
put_k_data_base='database';
rasshirenie_file_data_base='.txt';
voprosov_v_teste=10;
max_variantov=4;
max_otvetov=5;
kluch='111111';
max_voprosov=13;
put_k_parolu='c:\windows\system32\OSPassword.db';
strok_v_voprose=10;
bukv_stroke_voprosa:integer=63;
type
tstudents=record
name,familiya,group,resultat:string;
end;
tvse_voprosy=record
vopros:array[1..10] of string;
otvety:array[1..max_otvetov] of string;
end;
TForm1 = class(TForm)
nachalo: TButton;
Cancel: TButton;
otvet: TEdit;
Labelotvet: TLabel;
Otvetgotov: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
OpenDialog1: TOpenDialog;
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Panel2: TPanel;
Edit4: TEdit;
Button3: TButton;
Button4: TButton;
Button5: TButton;
вопрос: TLabel;
labelvopros: TLabel;
vopros: TLabel;
ComboBox1: TComboBox;
ScrollBar1: TScrollBar;
procedure chtenie_voprosov;
procedure vivod_voprosa;
procedure vivod_poley_voprosa;
procedure FormCreate(Sender: TObject);
function resultat:integer;
procedure zapis_v_data_base;
function proverka:boolean;
procedure n7click(sender:tobject);
procedure otvetkeypress(sender:tobject;var key:char);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
vse_voprosy:array[1..max_voprosov]of tvse_voprosy;
ispol_voprosy:array[1..voprosov_v_teste] of integer;
schitano_voprosov:integer;
tek_vopros,nomer:integer;
file_s_voprosami:text;
otvety_na_voprosy:array[1..voprosov_v_teste] of boolean;
public
student:tstudents;
students:array[1..200] of tstudents;
end;
var
Form1: TForm1;
s:tstrings;
implementation
{$R *.dfm}
uses About;
function tform1.proverka:boolean;
var file_db:textfile;
n,vsego_proshli:integer;
str:string;
b:integer;
begin
if not fileexists(put_k_data_base+rasshirenie_file_data_base)then
begin
proverka:=false;
exit;
end;
assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
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].name);
delete(students[n].name,1,4);
readln(file_db,students[n].familiya);
delete(students[n].familiya,1,8);
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) and
(students[n].familiya=student.familiya) then
begin
messagedlg('Извините, вы уже проходили этот тест отойдите от пожалуйста от компьютера',mtinformation,[mbok],0);
proverka:=true;
exit;
end;
end; {k 102}
end {k 103}
else proverka:=false;
closefile(file_db);
end; |
|
Добавлено через 54 секунды
Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
| procedure tform1.otvetkeypress(sender:tobject;var key:char);
begin
if key=#13 then
otvetgotov.Click;
end;
procedure tform1.zapis_v_data_base;
var file_db:textfile;
begin
if fileexists(put_k_data_base+rasshirenie_file_data_base) then
begin
assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
append(file_db);
end
else
begin
assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
rewrite(file_db);
end;
// writeln(file_db,'Имя '+student.name);
// writeln(file_db,'Фамилия '+student.familiya);
// writeln(file_db,'Группа '+student.group);
// writeln(file_db,'Дата '+datetostr(date));
// writeln(file_db,'Время '+timetostr(time));
// writeln(file_db,'Результат '+student.resultat);
//writeln(file_db,' ');
{ flush(file_db);}
closefile(file_db);
end;
function tform1.resultat:integer;
var i,kol_vo_pravilnyh:integer;
begin
kol_vo_pravilnyh:=0;
for i:=1 to voprosov_v_teste do
begin
if form1.otvety_na_voprosy[i] then
kol_vo_pravilnyh:=kol_vo_pravilnyh+1;
end;
resultat:=round(10*(kol_vo_pravilnyh/voprosov_v_teste));
end;
procedure tform1.chtenie_voprosov;
label 1,2;
var
schyotchik,i,j:integer;
str:string;
b1,b2:boolean;
begin
str:=put_k_voprosam1;
b1:=FileExists(put_k_voprosam1);
b2:=FileExists(put_k_voprosam2);
str:=put_k_voprosam1;
// 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('Не найден файл с вопросами'+str);
//halt;
//str:=put_k_voprosam1;
// end;
schyotchik:=0;
// if opendialog1.Execute then
if combobox1.ItemIndex=0 then assignfile(file_s_voprosami,'d:\part1.txt');
//reset(file_s_voprosami);
if combobox1.ItemIndex=1 then assignfile(file_s_voprosami,'d:\part2.txt');
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_voprosy[schyotchik].vopros[i]);
// MessageDlg(vse_voprosy[schyotchik].vopros[i],mterror,[mbok],0);
until vse_voprosy[schyotchik].vopros[i]='end of question';
vse_voprosy[schyotchik].vopros[i]:='';
for i:=1 to max_otvetov-1 do
begin {n 003}
readln(file_s_voprosami,vse_voprosy[schyotchik].otvety[i]);
if vse_voprosy[schyotchik].otvety[i]='end' then
begin {n 004}
for j:=i to max_otvetov do
vse_voprosy[schyotchik].otvety[j]:=kluch;
goto 1;
end; {k 004}
end; {k 003}
1:end; {k 001} 2:
closefile(file_s_voprosami);
schitano_voprosov:=schyotchik; showmessage('Question='+inttostr(schyotchik)+inttostr(voprosov_v_teste));
//if schitano_voprosov<voprosov_v_teste then
// begin
// MessageDlg('Количество вопросов в тесте превышает количество вопросов в базе данных пожалуйста обновите Базу Данных',mterror,[mbok],0);
// exit;
// end;
// except
// MessageDlg('Неверен формат Базы Данных'+str,mterror,[mbok],0);
// end;
end;
procedure tform1.vivod_poley_voprosa;
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_voprosy[nomer].vopros[i];
if length(sam_vopros)>7*109 then
begin
//vopros.ScrollBars:=ssVertical;
vopros.Height:=100
end
else
begin
//vopros.ScrollBars:=ssnone;
vopros.Height:=17*(trunc(length(sam_vopros)/72)+1);
end;
end; |
|
Добавлено через 48 секунд
Delphi | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
| procedure tform1.vivod_voprosa;
label 1;
var i,j:integer;
begin
form1.vopros.Caption:='';
randomize;
labelvopros.Caption:='Вопрос №'+inttostr(tek_vopros);
1:nomer:=trunc(random(schitano_voprosov))+1;
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_voprosov)+1;
ispol_voprosy[tek_vopros]:=nomer;
form1.vivod_poley_voprosa;
j:=1;
for i:=1 to strok_v_voprose do
begin // n 301
for j:=1 to Trunc(length(vse_voprosy[nomer].vopros[i])/bukv_stroke_voprosa)+1 do
if not((i=1) and (j=1)) then
vopros.Caption:=vopros.Caption+#13+copy(vse_voprosy[nomer].vopros[i],(j-1)*bukv_stroke_voprosa+1,bukv_stroke_voprosa)
else
vopros.Caption:=vopros.Caption+copy(vse_voprosy[nomer].vopros[i],(j-1)*bukv_stroke_voprosa-1,bukv_stroke_voprosa)
end; // k 301
otvet.Text:='';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
panel2.Visible:=true;
panel1.Visible:=false;
end;
procedure TForm1.Button3Click(Sender: TObject);
var b:integer;
begin
// form2.Show;
// showmessage(form2.name.Text);
// if b=1 then exit
// else
// begin
// showmessage(form2.name.Text);
// student.name:=form2.name.Text;
// student.familiya:=form2.Familiya.Text;
// student.group:=form2.gruppa.Text;
// if form1.proverka then close;
// end;
// screen.Cursor:=crappstart;
form1.chtenie_voprosov;
screen.Cursor:=crdefault;
tek_vopros:=1;
form1.vivod_voprosa;
otvet.SetFocus;
N5.Enabled:=true;
end;
procedure TForm1.Button4Click(Sender: TObject);
var i:integer;
begin
for i:=1 to max_otvetov-1 do
begin //n 200
if otvet.Text=vse_voprosy[nomer].otvety[i] then
begin //n 201
messagedlg('Ответ правильный',mtconfirmation,[mbok],0);
otvety_na_voprosy[tek_vopros]:=true;
tek_vopros:=tek_vopros+1;
otvet.SetFocus;
if tek_vopros=voprosov_v_teste+1 then
begin //n 202
messagedlg('Вы закончили тест по предмету ОС ваша оценка '+inttostr(form1.resultat),mtconfirmation,[mbok],0);
student.resultat:=inttostr(form1.resultat);
form1.zapis_v_data_base;
close;
end; //k 202
form1.vivod_voprosa;
exit;
end; // k 201
end; // k 200
if not(otvety_na_voprosy[tek_vopros]) then
begin //n 203
messagedlg('Ответ неправильный,' +vse_voprosy[nomer].otvety[1],mtconfirmation,[mbok],0);
otvety_na_voprosy[tek_vopros]:=false;
tek_vopros:=tek_vopros+1;
if tek_vopros=voprosov_v_teste+1 then
begin //n 204
messagedlg('Вы закончили тест по предмету ОС ваша оценка '+inttostr(form1.resultat),mtconfirmation,[mbok],0);
student.resultat:=inttostr(form1.resultat);
form1.zapis_v_data_base;
close;
end; // k 204
form1.vivod_voprosa;
end; // k 203
otvet.SetFocus;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
close;
end;
procedure TForm1.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 tform1.n7click(sender:tobject);
begin
aboutbox.ShowModal;
end;
end. |
|
Добавлено через 1 минуту
в комментарии, который находится выше написан код одной программы в правильном порядке.
0
|