Пожалуйста, помогите исправить ошибки в программе.
Условия задачи таковы:
В деканате ВУЗа хранятся сведения о студентах: ФИО, форма обучения (очная, вечерняя, заочная), факультет, специальность, номер группы, домашний адрес и адрес родителей, дата поступления в ВУЗ, курс. Создать СУБД «Диплом». СУБД должна выдавать следующие сведения: список студентов по номеру группы; список студентов на заочной форме обучения; сведения о студенте по введенным ФИО.
Обязательные процедуры в СУБД:
1. Создание БД.
2. Вывод БД.
3. Добавление записей.
4. Корректировка сведений в БД.
5. Печать сведений из БД по запросу.
6. Функциональное меню.
Условия задачи таковы:
В деканате ВУЗа хранятся сведения о студентах: ФИО, форма обучения (очная, вечерняя, заочная), факультет, специальность, номер группы, домашний адрес и адрес родителей, дата поступления в ВУЗ, курс. Создать СУБД «Диплом». СУБД должна выдавать следующие сведения: список студентов по номеру группы; список студентов на заочной форме обучения; сведения о студенте по введенным ФИО.
Обязательные процедуры в СУБД:
1. Создание БД.
2. Вывод БД.
3. Добавление записей.
4. Корректировка сведений в БД.
5. Печать сведений из БД по запросу.
6. Функциональное меню.
Вот исходник:
Код
program sema35;program sema35;
uses crt;
const
cr=13;
upkey=72;
downkey=80;
esc=27;
cur_text=yellow;
cur_ground=red;
text=white;
ground=blue;
points: array[0..9] of string = ('Menu',
'1. Enter BD',
'2. Print BD',
'3. Add student',
'4. Correct BD',
'5. Create File',
'6. Spisok po gruppe',
'7. Studenti na zaochn',
'8. Inf abt student',
'End Menu');
type
Diplom = record
Fam: string[14];
Name: string[11];
Otch: string[12];
Form: string[10];
Facult: string[10];
Spez: string[12];
Grnumb: integer;
Homadr: string[15];
Padr: string[15];
Entdate: string[13];
Kurs:string[1];
end;
tF = File of Diplom;
var
G : tF;
aBD : Diplom;
sym:integer;
y:byte;
Function getkey:integer;
var
s: integer;
begin
getkey:=ORD(readkey);
if s=0 then
getkey:=ORD(readkey);
end;
procedure cursor(y,txt,ground:byte);
var
s: string;
i: byte;
begin
gotoxy(1,y);
textcolor(txt);
textbackground(ground);
s:=points[y];
write(s);
end;
Procedure menu(y:byte);
var
i:byte;
begin
window(1,1,80,25);
textbackground(black);
clrscr;
window(30,10,53,17);
textbackground(ground);
clrscr;
textcolor(text);
for i:=0 to 6 do
writeln(points[i]);
window(30,11,53,16);
cursor(y,cur_text,cur_ground);
end;
Function up(y:byte):byte;
begin
if y > 1 then
y:= y - 1
else
y:=5;
up:=y;
end;
Function down(y:byte):byte;
begin
if y < 5 then
y:= y+1
else
y:=1;
down:=y;
end;
procedure Createf(var aG:tF);
var
st:string[8];
begin
clrscr;
writeln('Vvedite imya faila');
readln(st);
assign(aG,st);
readln;
end;
Procedure Enterform (Var aG:tF);
Var
aBD : Diplom;
fm:string[10];
o:string[7];
z:string[9];
v:string[10];
begin
o:='ochnaya';
z:='zaochnaya';
v:='vechernaya';
Writeln ('Vvedite formu obucheniya studenta');
Writeln ('Ochnaya - vvedite "ochnaya"');
Writeln ('Zaochnaya - vvedite "zaochnaya"');
Writeln ('Vechernaya - vvedite "vechernaya"');
Readln (fm);
If fm <> o then
begin
If fm <> z then
begin
If fm <> v then
Writeln ('Oshibka pri vvode');
end;
end;
aBD:=fm;
End;
Procedure CreateBD(var aG : tF);
var
aBD : Diplom;
st : string;
begin
window(1,1,80,25);
gotoxy(1,1);
rewrite(aG);
st := 'y';
repeat
clrscr;
Writeln('Vvedite dannye po studentu');
writeln;
writeln('Familiya');
readln(aBD.fam);
writeln('Imya');
readln(aBD.Name);
writeln('Otchestvo');
readln(aBD.Otch);
Procedure Enterform(Var aG:tF);
writeln('Fakultet');
readln(aBD.Facult);
writeln('Spezialnost');
readln(aBD.spez);
writeln('Nomer gruppi');
readln(aBD.Grnumb);
writeln('Domashnii adres');
readln(aBD.Homadr);
writeln('Adres roditelei');
readln(aBD.Padr);
writeln('Data postupleniya');
readln(aBD.Entdate);
writeln('Kurs obycheniya');
readln(aBD.Kurs);
writeln;
writeln;
writeln('Vvesty dannie ob eshe odnom stydente ? (y/n)');
readln(st);
write(aF,aBD);
until st = 'n';
close(aG);
end;
Procedure AddBD (var aG : tF);
var
aBD : Diplom;
Reset (aG);
Seek (G, filesize);
clrscr;
Writeln('Vvedite dannye po studentu');
writeln;
writeln('Familiya');
readln(aBD.fam);
writeln('Imya');
readln(aBD.Name);
writeln('Otchestvo');
readln(aBD.Otch);
Procedure Enterform(Var aG:tF);
writeln('Fakultet');
readln(aBD.Facult);
writeln('Spezialnost');
readln(aBD.spez);
writeln('Nomer gruppi');
readln(aBD.Grnumb);
writeln('Domashnii adres');
readln(aBD.Homadr);
writeln('Adres roditelei');
readln(aBD.Padr);
writeln('Data postupleniya');
readln(aBD.Entdate);
writeln('Kurs obycheniya');
readln(aBD.Kurs);
close(aG);
end;
Procedure PrintBD (var aG : tF);
var
aBD : Diplom;
Reset (aG);
writeln(& #39;____________________________________________________________________________
___________');
writeln(& #39;|___________Familiya___________|__________Imya__________|__________Otchestvo
___________|');
While not EOF (G) do
Begin
Read (G,aBD);
writeln('|', aBD.fam:16,'|', aBD.Name:13,'|', aBD.Otch:14,'|');
writeln(& #39;|______________________________|________________________|___________________
___________|');
end;
Close (G):
End;
procedure findByGroup(var aG : tF);
var
kod : integer;
flag : boolean;
begin
clrscr;
reset(aF);
Writeln('Vvedite nomer gruppi');
readln(kod);
flag:= true;
writeln('____________________________Spisok studentov gruppi
N',kod,'___________________________');
while not EOF(G) do
begin
read(aF,aBD);
if aBD.Grnumb = kod then
begin
writeln(& #39;____________________________________________________________________________
___________');
writeln(& #39;|___________Familiya___________|__________Imya__________|__________Otchestvo
___________|');
writeln('|', aBD.fam:16,'|', aBD.Name:13,'|', aBD.Otch:14,'|');
writeln(& #39;|______________________________|________________________|___________________
___________|');
readln;
Flag:=true;
end;
Close (G);
If flag then
writeln(‘Studentov iz gruppi’,kod,’ne naideno’);
end;
procedure ZaochGr (var aG : tF);
var
flag : boolean;
begin
clrscr;
reset(aF);
flag:= true;
writeln('____________________________Spisok studentov na zaochnoi forme
obucheniya___________________________');
while not EOF(G) do
begin
read(aF,aBD);
if aBD.Form = 'zaochnaya' then
begin
writeln(& #39;____________________________________________________________________________
___________');
writeln(& #39;|___________Familiya___________|__________Imya__________|__________Otchestvo
___________|');
writeln('|', aBD.fam:16,'|', aBD.Name:13,'|', aBD.Otch:14,'|');
writeln(& #39;|______________________________|________________________|___________________
___________|');
readln;
Flag:=true;
end;
Close (G);
If flag then
writeln('Studentov na zaochnoi forme obucheniya ne naideno');
end;
Procedure Inf_FIO(var aG : tF);
var
flag : boolean;
stfam : string [16];
stname : string[15];
stotch : string [13];
begin
clrscr;
reset(aF);
Writeln('Vvedite familiu studenta');
readln(stfam);
Writeln('Vvedite imya studenta');
readln(stname);
Writeln('Vvedite otchestvo studenta');
readln(stotch);
flag:= true;
writeln('____________________________’Informacia o
studente’___________________________');
while not EOF(G) do
begin
read(aF,aBD);
if (aBD.fam = stfam) and (aBD.Name = stname)and (aBD.Otch = stotch) then
begin
writeln(& #39;____________________________________________________________________________
___________');
writeln('|___________Gruppa___________|__________Kurs__________|__________Forma
obucheniya___________|');
writeln('|', aBD.Grnumb:5,'|', aBD.Kurs:3,'|', aBD.Form:12,'|');
writeln(& #39;|______________________________|________________________|___________________
___________|');
readln;
Flag:=true;
end;
Close (G);
If flag then
writeln('Studentov s dannim FIO ne naideno');
end;
procedure call(y:byte);
begin
window(1,1,80,25);
textbackground(black);
clrscr;
textcolor(white);
gotoxy(20,5);
Case y of
1: Createf (G);
2: Enterform (G);
4: CreateBD(G);
3: Procedure AddBD (G);
5: PrintBD (G);
6: FindByGroup (G);
7: ZaochGr (G);
8: Inf_FIO (G);
end;
delay(6000);
end;
begin
clrscr;
y:=1;
menu(y);
repeat
sym := getkey;
case sym of
cr: begin
Call(y);
menu(y);
end;
upkey: begin
cursor(y,text,ground);
y:=up(y);
cursor(y,cur_text,cur_ground);
end;
downkey:begin
cursor(y,text,ground);
y:=down(y);
cursor(y,cur_text,cur_ground);
end;
esc:;
end;
until sym = esc;
end.
uses crt;
const
cr=13;
upkey=72;
downkey=80;
esc=27;
cur_text=yellow;
cur_ground=red;
text=white;
ground=blue;
points: array[0..9] of string = ('Menu',
'1. Enter BD',
'2. Print BD',
'3. Add student',
'4. Correct BD',
'5. Create File',
'6. Spisok po gruppe',
'7. Studenti na zaochn',
'8. Inf abt student',
'End Menu');
type
Diplom = record
Fam: string[14];
Name: string[11];
Otch: string[12];
Form: string[10];
Facult: string[10];
Spez: string[12];
Grnumb: integer;
Homadr: string[15];
Padr: string[15];
Entdate: string[13];
Kurs:string[1];
end;
tF = File of Diplom;
var
G : tF;
aBD : Diplom;
sym:integer;
y:byte;
Function getkey:integer;
var
s: integer;
begin
getkey:=ORD(readkey);
if s=0 then
getkey:=ORD(readkey);
end;
procedure cursor(y,txt,ground:byte);
var
s: string;
i: byte;
begin
gotoxy(1,y);
textcolor(txt);
textbackground(ground);
s:=points[y];
write(s);
end;
Procedure menu(y:byte);
var
i:byte;
begin
window(1,1,80,25);
textbackground(black);
clrscr;
window(30,10,53,17);
textbackground(ground);
clrscr;
textcolor(text);
for i:=0 to 6 do
writeln(points[i]);
window(30,11,53,16);
cursor(y,cur_text,cur_ground);
end;
Function up(y:byte):byte;
begin
if y > 1 then
y:= y - 1
else
y:=5;
up:=y;
end;
Function down(y:byte):byte;
begin
if y < 5 then
y:= y+1
else
y:=1;
down:=y;
end;
procedure Createf(var aG:tF);
var
st:string[8];
begin
clrscr;
writeln('Vvedite imya faila');
readln(st);
assign(aG,st);
readln;
end;
Procedure Enterform (Var aG:tF);
Var
aBD : Diplom;
fm:string[10];
o:string[7];
z:string[9];
v:string[10];
begin
o:='ochnaya';
z:='zaochnaya';
v:='vechernaya';
Writeln ('Vvedite formu obucheniya studenta');
Writeln ('Ochnaya - vvedite "ochnaya"');
Writeln ('Zaochnaya - vvedite "zaochnaya"');
Writeln ('Vechernaya - vvedite "vechernaya"');
Readln (fm);
If fm <> o then
begin
If fm <> z then
begin
If fm <> v then
Writeln ('Oshibka pri vvode');
end;
end;
aBD:=fm;
End;
Procedure CreateBD(var aG : tF);
var
aBD : Diplom;
st : string;
begin
window(1,1,80,25);
gotoxy(1,1);
rewrite(aG);
st := 'y';
repeat
clrscr;
Writeln('Vvedite dannye po studentu');
writeln;
writeln('Familiya');
readln(aBD.fam);
writeln('Imya');
readln(aBD.Name);
writeln('Otchestvo');
readln(aBD.Otch);
Procedure Enterform(Var aG:tF);
writeln('Fakultet');
readln(aBD.Facult);
writeln('Spezialnost');
readln(aBD.spez);
writeln('Nomer gruppi');
readln(aBD.Grnumb);
writeln('Domashnii adres');
readln(aBD.Homadr);
writeln('Adres roditelei');
readln(aBD.Padr);
writeln('Data postupleniya');
readln(aBD.Entdate);
writeln('Kurs obycheniya');
readln(aBD.Kurs);
writeln;
writeln;
writeln('Vvesty dannie ob eshe odnom stydente ? (y/n)');
readln(st);
write(aF,aBD);
until st = 'n';
close(aG);
end;
Procedure AddBD (var aG : tF);
var
aBD : Diplom;
Reset (aG);
Seek (G, filesize);
clrscr;
Writeln('Vvedite dannye po studentu');
writeln;
writeln('Familiya');
readln(aBD.fam);
writeln('Imya');
readln(aBD.Name);
writeln('Otchestvo');
readln(aBD.Otch);
Procedure Enterform(Var aG:tF);
writeln('Fakultet');
readln(aBD.Facult);
writeln('Spezialnost');
readln(aBD.spez);
writeln('Nomer gruppi');
readln(aBD.Grnumb);
writeln('Domashnii adres');
readln(aBD.Homadr);
writeln('Adres roditelei');
readln(aBD.Padr);
writeln('Data postupleniya');
readln(aBD.Entdate);
writeln('Kurs obycheniya');
readln(aBD.Kurs);
close(aG);
end;
Procedure PrintBD (var aG : tF);
var
aBD : Diplom;
Reset (aG);
writeln(& #39;____________________________________________________________________________
___________');
writeln(& #39;|___________Familiya___________|__________Imya__________|__________Otchestvo
___________|');
While not EOF (G) do
Begin
Read (G,aBD);
writeln('|', aBD.fam:16,'|', aBD.Name:13,'|', aBD.Otch:14,'|');
writeln(& #39;|______________________________|________________________|___________________
___________|');
end;
Close (G):
End;
procedure findByGroup(var aG : tF);
var
kod : integer;
flag : boolean;
begin
clrscr;
reset(aF);
Writeln('Vvedite nomer gruppi');
readln(kod);
flag:= true;
writeln('____________________________Spisok studentov gruppi
N',kod,'___________________________');
while not EOF(G) do
begin
read(aF,aBD);
if aBD.Grnumb = kod then
begin
writeln(& #39;____________________________________________________________________________
___________');
writeln(& #39;|___________Familiya___________|__________Imya__________|__________Otchestvo
___________|');
writeln('|', aBD.fam:16,'|', aBD.Name:13,'|', aBD.Otch:14,'|');
writeln(& #39;|______________________________|________________________|___________________
___________|');
readln;
Flag:=true;
end;
Close (G);
If flag then
writeln(‘Studentov iz gruppi’,kod,’ne naideno’);
end;
procedure ZaochGr (var aG : tF);
var
flag : boolean;
begin
clrscr;
reset(aF);
flag:= true;
writeln('____________________________Spisok studentov na zaochnoi forme
obucheniya___________________________');
while not EOF(G) do
begin
read(aF,aBD);
if aBD.Form = 'zaochnaya' then
begin
writeln(& #39;____________________________________________________________________________
___________');
writeln(& #39;|___________Familiya___________|__________Imya__________|__________Otchestvo
___________|');
writeln('|', aBD.fam:16,'|', aBD.Name:13,'|', aBD.Otch:14,'|');
writeln(& #39;|______________________________|________________________|___________________
___________|');
readln;
Flag:=true;
end;
Close (G);
If flag then
writeln('Studentov na zaochnoi forme obucheniya ne naideno');
end;
Procedure Inf_FIO(var aG : tF);
var
flag : boolean;
stfam : string [16];
stname : string[15];
stotch : string [13];
begin
clrscr;
reset(aF);
Writeln('Vvedite familiu studenta');
readln(stfam);
Writeln('Vvedite imya studenta');
readln(stname);
Writeln('Vvedite otchestvo studenta');
readln(stotch);
flag:= true;
writeln('____________________________’Informacia o
studente’___________________________');
while not EOF(G) do
begin
read(aF,aBD);
if (aBD.fam = stfam) and (aBD.Name = stname)and (aBD.Otch = stotch) then
begin
writeln(& #39;____________________________________________________________________________
___________');
writeln('|___________Gruppa___________|__________Kurs__________|__________Forma
obucheniya___________|');
writeln('|', aBD.Grnumb:5,'|', aBD.Kurs:3,'|', aBD.Form:12,'|');
writeln(& #39;|______________________________|________________________|___________________
___________|');
readln;
Flag:=true;
end;
Close (G);
If flag then
writeln('Studentov s dannim FIO ne naideno');
end;
procedure call(y:byte);
begin
window(1,1,80,25);
textbackground(black);
clrscr;
textcolor(white);
gotoxy(20,5);
Case y of
1: Createf (G);
2: Enterform (G);
4: CreateBD(G);
3: Procedure AddBD (G);
5: PrintBD (G);
6: FindByGroup (G);
7: ZaochGr (G);
8: Inf_FIO (G);
end;
delay(6000);
end;
begin
clrscr;
y:=1;
menu(y);
repeat
sym := getkey;
case sym of
cr: begin
Call(y);
menu(y);
end;
upkey: begin
cursor(y,text,ground);
y:=up(y);
cursor(y,cur_text,cur_ground);
end;
downkey:begin
cursor(y,text,ground);
y:=down(y);
cursor(y,cur_text,cur_ground);
end;
esc:;
end;
until sym = esc;
end.