- •1 Постановка задачі
- •2 Алгоритм розробки програми
- •3 Практична реалізація
- •3.1 Опис структури даних та вимоги до них
- •3.2 Опис файлів та їх призначення
- •3.3 Опис процедур та функцій користувача
- •3.4 Опис процедур та функцій, що використовувалися у програмі
- •4 Інструкція для роботи з програмою
- •Приклади тестування та результати роботи програми
- •Література
- •Додаток а (Обов’язковий) Лістинг основної програми
- •Додаток б (Обов’язковий) Лістинг модуля Navchannia
- •Додаток в. (Обов’язковий) Лістинг модуля finder
Додаток в. (Обов’язковий) Лістинг модуля finder
unit Finder;
{$S-}
interface
uses Crt;
type students=record
prizv: string;
name: string;
po_batkovi: string;
stat: char;
vik: integer;
kurs: 1..7;
end;
var f: file of students;
n, m, w, find: integer;
mv,wv:real;
st:students;
u: string;
procedure Poisk1;
procedure Poisk2;
implementation
procedure Poisk1;
begin
textbackground(10);
clrscr;
textcolor(14);
gotoxy(25,10);
repeat
write('Vvedite nomer kursa: ');
readln(find);
until(find>0)or(find<7);
writeln;
clrscr;
assign(f,'students.dat');
reset (f);
writeln;
m:=0; w:=0;
while not(eof(f)) do
begin
read(f, st);
if find=st.kurs then
if st.stat='m' then
m:=m+1
else
w:=w+1;
end;
n:=m+w;
if n=0 then begin gotoxy(15,9); write('Na kursi nemae studentiv!'); readkey; exit; end
else if n>0 then
begin
mv:=100/n*m;
wv:=100/n*w;
gotoxy(10, 9);
writeln('Na ',find,' kurse navchaetsa', mv:4:2,'% hloptsiv i ', wv:4:2,'% divchat');
end;
readkey;
close(f);
end;
procedure Poisk2;
var q,i,j:integer;
m:students;
tmp:array[1..20]of students;
begin
textbackground(10);
clrscr;
textcolor(14);
gotoxy(10,1);
reset(f);
for q:=1 to filesize(f) do
begin
read(f,m);
tmp[q]:=m;
end;
for i:=1 to q-1 do
begin
for j:=1 to q do
if tmp[i].vik>tmp[j].vik then
begin
m:=tmp[i];
tmp[i]:=tmp[j];
tmp[j]:=m;
end;
end;
writeln('Spisok otsortirovanniy po vozrastu');
writeln('---------------------------------------------------------');
for i:=1 to q do
begin
write(i);
gotoxy(3,wherey); write('Э');
gotoxy(4,wherey); write (tmp[i].prizv);
gotoxy(15,wherey); write('Э');
gotoxy(16,wherey); write (tmp[i].name);
gotoxy(27,wherey); write('Э');
gotoxy(28,wherey); write(tmp[i].po_batkovi);
gotoxy(44,wherey); write('Э');
gotoxy(45,wherey); write(tmp[i].stat);
gotoxy(49,wherey); write('Э');
gotoxy(50,wherey); write(tmp[i].vik);
gotoxy(54,wherey); write('Э');
gotoxy(55,wherey); write(tmp[i].kurs);
gotoxy(58,wherey); write('Э');
writeln;
end;
writeln;
writeln('Naistarsiy studenty');
writeln(tmp[1].prizv);
write(tmp[1].vik);gotoxy(4,wherey);write('year');
readkey;
close (f);
end;
end.
Додаток Г.
Лістинг модуля MYGRAPH
unit Mygraph;
interface
procedure Mygraphinit;
implementation
uses CRT, Graph;
var gd, gm, errorcode: integer;
procedure Mygraphinit;
begin
gd:=detect;
initgraph(gd, gm, ' ');
errorcode:=graphresult;
if errorcode<>grok then
begin
writeln('Oshibka: ', grapherrormsg(errorcode));
writeln('Rabota zavershena');
halt(1);
end;
end;
end.
Додаток Д.
Лістинг модуля GRAPHIKA
unit Graphika;
interface
procedure Privetstvie;
procedure Mywork;
procedure KONETS;
implementation
uses Graph, Mygraph;
var k,x,y: integer;
s:string;
procedure Privetstvie;
begin
Mygraphinit;
x:=350;
y:=200;
s:='PRIVET!';
k:=6;
setbkcolor(2);
setcolor(4);
settextstyle(0,0,5);
outtextxy(x,y,s);
setcolor(4);
circle(200,200,100);
setfillstyle(1,14);
floodfill(200,200,4);
circle(160,180,20);
setfillstyle(1,12);
floodfill(160,180,4);
circle(240,180,20);
floodfill(240,180,4);
ellipse(200,220,180,0,70,50);
settextstyle(0,0,1);
outtextxy(200,430,'Dlia prodolzhenia nazhmite klavishu ENTER...');
readln;
ClearDevice; Closegraph; end;
procedure Mywork;
begin
Mygraphinit;
setbkcolor(2);
setcolor(1);
rectangle(70,60,600,250);
setfillstyle(1,1);
floodfill(100,100,1);
setcolor(14);
settextstyle(0,0,3);
outtextxy(100,100,'Vykonala Susyk Alina');
outtextxy(200,200,'Variant 21');
readln;
Cleardevice;
Closegraph;end;
procedure KONETS;
begin
Mygraphinit;
setbkcolor(10);
setcolor(4);
settextstyle(0,0,5);
outtextxy(100,300,'DO SVIDANIA!');
setfillstyle(1,4);
line(290,220,170,100);
line(290,220,410,100);
ellipse(230,100,0,180,60,50);
ellipse(350,100,0,180,60,50);
floodfill(230,100,4); readln;
ClearDevice; Closegraph;
end;end.