- •1 Постановка задачі
- •2 Алгоритм розробки програми
- •3 Практична реалізація
- •3.1 Опис структури даних та вимоги до них
- •3.2 Опис файлів та їх призначення
- •3.3 Опис процедур та функцій користувача
- •3.4 Опис процедур та функцій, що використовувалися у програмі
- •4 Інструкція для роботи з програмою
- •Приклади тестування та результати роботи програми
- •Література
- •Додаток а (Обов’язковий) Лістинг основної програми
- •Додаток б (Обов’язковий) Лістинг модуля Navchannia
- •Додаток в. (Обов’язковий) Лістинг модуля finder
Додаток б (Обов’язковий) Лістинг модуля Navchannia
unit Navchannia;
interface
uses Crt;
type students=record
prizv: string;
name: string;
po_batkovi: string;
stat: char;
vik: integer;
kurs: 1..7;
end;
var f, f1: file of students;
l, i, n, m, w, find, a: integer;
mv,wv:real;
st: students;
u: string;
procedure Vvod;
procedure Vyvod;
procedure Redaktirovanie;
procedure Delete;
implementation
procedure Vvod;
begin
textbackground(5);
clrscr;
rewrite(f);
textcolor(8);
for i:=1 to 10 do
begin
write ('Vvedite prizvische studenta: ');
readln(st.prizv);
write ('Vvedite imia studenta: ');
readln(st.name);
write ('Vvedite po-batkovi studenta: ');
readln(st.po_batkovi);
repeat
write ('Vvsedite stat studenta m abo w: ');
readln(st.stat);
until (st.stat='m') or (st.stat='w');
write ('Vvedite vik studenta: ');
readln (st.vik);
write ('Vvedite kurs, na yakomu navchaetsa student: ');
readln(st.kurs);
write(f, st);
i:=i+1;
end;
close (f);
end;
procedure Vyvod;
begin
textbackground(3);
clrscr;
assign(f,'students.dat');
reset (f);
textcolor(1);
gotoxy(4,3);
writeln(' Students of facultet ');
writeln(' ----------------------------------------------------------------');
if filesize(f)=0 then
begin
textcolor (14);
writeln(' NO INFO! ');
textcolor (7); end
else
for i:=1 to filesize(f) do
begin
read(f,st);
gotoxy(2,wherey);
write(i);
gotoxy(5,wherey); write('|');
gotoxy(6,wherey); write (st.prizv);
gotoxy(17,wherey); write('|');
gotoxy(18,wherey); write (st.name);
gotoxy(29,wherey); write('|');
gotoxy(30,wherey); write(st.po_batkovi);
gotoxy(46,wherey); write('|');
gotoxy(48,wherey); write(st.stat);
gotoxy(51,wherey); write('|');
gotoxy(52,wherey); write(st.vik);
gotoxy(56,wherey); write('|');
gotoxy(57,wherey); write(st.kurs);
gotoxy(60,wherey); write('|');
writeln;
end;
writeln(' -------------------------------------------------------------');
close (f);
readkey;
end;
procedure Redaktirovanie;
begin
textbackground(8);
clrscr;
textcolor(14);
assign(f,'students.dat');
reset(f);
FileMode:=2;
while not (eof(f)) do
begin
for i:=1 to filesize(f) do
begin
read(f,st);
write(i);
gotoxy(3,wherey); write('|');
gotoxy(4,wherey); write (st.prizv);
gotoxy(15,wherey); write('|');
gotoxy(16,wherey); write (st.name);
gotoxy(27,wherey); write('|');
gotoxy(28,wherey); write(st.po_batkovi);
gotoxy(44,wherey); write('|');
gotoxy(45,wherey); write(st.stat);
gotoxy(49,wherey); write('|');
gotoxy(50,wherey); write(st.vik);
gotoxy(54,wherey); write('|');
gotoxy(55,wherey); write(st.kurs);
gotoxy(58,wherey); write('|');
writeln;
end; end;
close(f);
writeln;
writeln;
writeln('1-Redaktirovat suschestvuyschie zapisi');
writeln('2-Dobavit eshe');
writeln('3-Vyhod');
readln(l);
case l of
1:begin
clrscr;
reset(f);
writeln('Vvedite nomer zapisi');
readln(n);
if n>filesize(f) then write('Takoj zapisi net')
else
begin
seek(f,n-1);
write ('Vvedite prizvische studenta: ');
readln(st.prizv);
write ('Vvedite imia studenta: ');
readln(st.name);
write ('Vvedite po-batkovi studenta: ');
readln(st.po_batkovi);
repeat
write ('Vvsedite stat studenta m abo w: ');
readln(st.stat);
until (st.stat='m') or (st.stat='w');
write ('Vvedite vik studenta: ');
readln (st.vik);
write ('Vvedite kurs, na yakomu navchaetsa student: ');
readln(st.kurs);
write(f,st);
write('Zapis izmenena =)');
end;
readkey;
close(f);
end;
2: begin
clrscr;
reset(f);
seek(f, filesize(f));
i:=filesize(f);
u:='d';
while u='d' do
begin
clrscr;
write ('Vvedite prizvische studenta: ');
readln(st.prizv);
write ('Vvedite imia studenta: ');
readln(st.name);
write ('Vvedite po-batkovi studenta: ');
readln(st.po_batkovi);
repeat
write ('Vvedite stat studenta m abo w: ');
readln(st.stat);
until (st.stat='m') or (st.stat='w');
write ('Vvedite vik studenta: ');
readln (st.vik);
write ('Vvedite kurs, na yakomu navchaetsa student: ');
readln(st.kurs);
write(f,st);
i:=i+1;
write('Hotite prodolzhit (d/n)');
readln(u);
end;
close(f);
end;
3:
end;
end;
procedure Delete;
begin
clrscr;
assign(f,'students.dat');
reset(f);
while not (eof(f)) do
begin
for i:=1 to filesize(f) do
begin
read(f,st);
write(i);
gotoxy(3,wherey); write('|');
gotoxy(4,wherey); write (st.prizv);
gotoxy(15,wherey); write('|');
gotoxy(16,wherey); write (st.name);
gotoxy(27,wherey); write('|');
gotoxy(28,wherey); write(st.po_batkovi);
gotoxy(44,wherey); write('|');
gotoxy(45,wherey); write(st.stat);
gotoxy(49,wherey); write('|');
gotoxy(50,wherey); write(st.vik);
gotoxy(54,wherey); write('|');
gotoxy(55,wherey); write(st.kurs);
gotoxy(58,wherey); write('|');
writeln;
end; end;
close(f);
writeln;
writeln('1-Prodolzt proceduru udalenia');
writeln('2-Otmenit');
readln(a);
case a of
1: begin reset(f);
writeln('Vvedite nomer udaljaemoj zapisi'); readln(n);
if n>filesize(f) then write('Takoj zapisi net')
else
begin
assign(f1,'stud2.dat');
reset(f);
rewrite(f1);
for i:=1 to filesize(f) do
begin
read(f,st);
if filepos(f)<>n then write (f1,st);
end;
close(f1); close(f);
erase(f);
rename(f1,'students.dat');
write('Zapis udalena');
end;
readkey;
end;
2:
end;
end;
end.