program lab9_10;
uses crt, graph;
label main;
type
student = record
name: string[64];
result: integer;
group_number: integer;
count_students: integer;
end;
var
file_name: string;
file_object: file of student;
select_char: char;
group_number: integer;
count_students: integer;
students: array [1..64] of student;
procedure setwindowstyles;
begin
clrscr;
textbackground(7);
clrscr;
window(1,1,80,1);
textbackground(3);
clrscr;
textcolor(0);
clrscr;
end;
procedure writetowindow(x, y: integer; text: string);
begin
gotoxy(x,y);
write(text);
end;
procedure enterfilename;
begin
clrscr;
window(2,1,79,25);
textbackground(7);
textcolor(5);
clrscr;
write('Enter file name: ');
readln(file_name);
end;
procedure writetofile;
var
i: integer;
begin
assign(file_object, file_name);
rewrite(file_object);
for i := 1 to count_students do
begin
students[i].group_number := group_number;
students[i].count_students := count_students;
write(file_object, students[i]);
end;
close(file_object);
end;
procedure readfromfile;
var
i: integer;
tmp: student;
begin
assign(file_object, file_name);
reset(file_object);
i := 1;
repeat
read(file_object, tmp);
students[i].name := tmp.name;
students[i].result := tmp.result;
students[i].group_number := tmp.group_number;
students[i].count_students := tmp.count_students;
group_number := tmp.group_number;
count_students := tmp.count_students;
i := i + 1;
until EOF(file_object);
close(file_object);
end;
procedure input;
var
i: integer;
begin
clrscr;
window(2,1,79,25);
textbackground(7);
textcolor(5);
clrscr;
write('Enter group number: ');
readln(group_number);
write('Ender number of students: ');
readln(count_students);
for i := 1 to count_students do
begin
write('Enter full name: ');
readln(students[i].name);
write('Enter time in seconds: ');
readln(students[i].result);
end;
end;
procedure output;
var
i: integer;
average: real;
begin
clrscr;
window(1, 1, 79, 25);
textbackground(3);
textcolor(0);
clrscr;
gotoxy(20,1);
write('running results for 100m of group number ', group_number, '.');
window(3, 3, 78, 23);
textbackground(7);
textcolor(0);
clrscr;
writetowindow(2, 1, '#');
writetowindow(5, 1, 'Student full name');
writetowindow(47, 1, 'Time in sec');
for i := 1 to count_students do
begin
gotoxy(2, 2 + i);
write(i, '.');
gotoxy(5, 2 + i);
write(students[i].name);
gotoxy(50, 2 + i);
write(students[i].result);
end;
gotoxy(20, 4 + count_students);
textcolor(0 + 128);
average := 0;
for i := 1 to count_students do
begin
average := average + students[i].result;
end;
if (count_students <> 0) then average := average / count_students;
writeln('average time of students: ', average:4:2, ' sec.');
repeat
window(24, 20, 56, 20);
textbackground(9);
clrscr;
i := random(10) + 1;
textcolor(i);
write(' GOOD LUCK IN COMPETITIONS !!!');
delay(10);
until keypressed;
end;
procedure loadscrean;
var
g, h, x, y, color: integer;
begin
g := detect;
initgraph(g, h, 'C:/TPWDB/BGI');
color := 8;
for x := 2 to 10 do
begin
setcolor(color);
setfillstyle(1, color);
line(40 + 40 * x, 40, 80 + 40 * x, 40);
line(80 + 40 * x, 40, 80 + 40 * x, 80);
line(80 + 40 * x, 80, 40 + 40 * x, 80);
line(40 + 40 * x, 80, 40 + 40 * x, 40);
floodfill(40 + 1 + 40 * x, 40 + 1 + 40 * x, color);
if color = 8 then color := 15 else color := 8;
end;
cleardevice;
setbkcolor(7);
setcolor(1);
settextstyle(0,0,2);
outtextxy(229, 30, 'DB Runners');
setcolor(4);
settextstyle(0, 0, 2);
outtextxy(30, 450, 'Pavel Konin A.');
settextstyle(0, 0, 2);
outtextxy(370, 450, 'Group number 2');
setcolor(15);
setfillstyle(1, 15);
line(100, 100, 500, 100);
line(500, 100, 500, 199);
line(500, 199, 100, 199);
line(100, 199, 100, 100);
floodfill(150, 150, 15);
setcolor(8);
setfillstyle(1, 8);
line(100, 200, 120, 200);
line(120, 200, 120, 400);
line(120, 400, 100, 400);
line(100, 400, 100, 200);
floodfill(110, 210, 8);
setcolor(8);
setfillstyle(1, 8);
line(480, 200, 500, 200);
line(500, 200, 500, 400);
line(500, 400, 480, 400);
line(480, 400, 480, 200);
floodfill(490, 210, 8);
floodfill(490, 210, 8);
settextstyle(0, 0, 5);
outtextxy(150, 135, 'THE END!');
readkey;
closegraph;
end;
begin
loadscrean;
enterfilename;
main:
setwindowstyles;
writetowindow(3, 1, 'i - input');
writetowindow(34, 1, 'o - output');
writetowindow(66, 1, 'esc - exit');
repeat
select_char := readkey;
case select_char of
#105: begin
input;
writetofile;
clrscr;
goto main;
end;
#111: begin
readfromfile;
output;
clrscr;
goto main;
end;
end;
until select_char = #27;
clrscr;
end.