IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Мини-СУБД
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Пожалуйста, помогите исправить ошибки в программе.
Условия задачи таковы:
В деканате ВУЗа хранятся сведения о студентах: ФИО, форма обучения (очная, вечерняя, заочная), факультет, специальность, номер группы, домашний адрес и адрес родителей, дата поступления в ВУЗ, курс. Создать СУБД «Диплом». СУБД должна выдавать следующие сведения: список студентов по номеру группы; список студентов на заочной форме обучения; сведения о студенте по введенным ФИО.

Обязательные процедуры в СУБД:
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.


Сообщение отредактировано: Nolan -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.12.2024 20:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name