Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Pascal работа с БД

26K
25 июня 2008 года
kl1shny
16 / / 09.12.2007
Здраствуйте! Помогите пожалуста до делать программу...Вот вообще задание:

Организация «Национальное содействие потерпевшим убытки» выделяет поощрительные стипендии студентам университетов и колледжей, утратившим возможность продолжать учебу. Эти студенты сдают в управление анкеты, в которых указывают:
Перечень требований, которым должен удовлетворять претендент на такую стипендию, следующий:
а) индекс доходов не выше среднего
б) возраст (старше 30 лет)
в) наличие собственной семьи
г) осталось закончить один или два курса
Написать программу, которая на основании введенных анкет составляет и печатает список фамилий студентов, имеющих право претендовать на поощрительные стипендии.

Я вывожу саму созданную БД...но ни как ни могу составить условие вывода котрое указано в условии задачи.

Код:
Program XXXXXXX;
Uses CRT;

Type
Tdata = record
fa         : string[10];
v          :  word;
ind,k      :  word;
cp,cy      : word;
end;

datfile = file of Tdata;

Var r: Tdata;
    f: datfile;
    q,k: byte;


{=========================================}
procedure color(s,p:byte);         {óñòàíàâëèâàåì öâåò äëÿ çàäíåãî\ïåðåäíåãî ôîíà}
begin
     if s=p then
     begin
      TextBackGround(white);
      TextColor(black);
     end
     else
         begin
      TextBackGround(black);
      TextColor(white);
    end;
end;
{=========================================}
procedure InpDate;                   {Ââîäèì â áàçó äàííûõ}
begin
     write('Ôàìèëèÿ: ');
     readln(r.fa);
     write('Èíäåêñ äîõîäîâ (í-1,ñ-2,âñ-3): ');
     readln(r.ind);
     write('Âîçðàñò: ');
     readln(r.v);
     write('Ñåìåéíîå ïîëîæåíèå (0-1): ');
     readln(r.cp);
     write('Êóðñ îáó÷åíèÿ (1-4): ');
     readln(r.cy);

end;
{=========================================}
Procedure OutDate;                   {Ââûâîä äàííûõ}
begin
     gotoxy(2,whereY);
     write(r.fa);             {Ôàìèëèÿ}
     gotoxy(10,whereY);
     write('|',r.ind);      {Èíäåêñ äîõîäà}
     gotoxy(26,whereY);
     write('|',r.v);      {Âîçðàñò}
     gotoxy(36,whereY);
     write('|',r.cp);    {Ñåìåéíîå ïîëæåíèå}
     gotoxy(57,whereY);
     writeln('|',r.cy); {êóðñ îáó÷åíèÿ}
end;

{=========================================}
procedure add;                           {Äàáàâëåíèå äàííûõ}
var c:char;
begin
     clrscr;
     assign(f,'dates.db');
     reset(f);
     seek(f,filesize(f));

     repeat
       InpDate;
       write(f,r);
       writeln;
       write('Äîáàâèòü åùå çàïèñü (Yes/No)? ');
       readln(c);
       writeln;
     until (c='N') or (c='n');
     close(f);
end;
{========================================= }

procedure create;                             {Ñîçäàíèå ñ 0 äàííûõ}
var c:char;
begin
     clrscr;
     write('Âñå äàííûå î ñòóäåíòàõ áóäóò óíè÷òîæåíû. Ïðîäîëæèòü (Y/N)? ');
     readln(c);
        if (c='Y') or (c='y') then
        begin
      assign(f,'dates.db');
      rewrite(f);
        close(f);
          clrscr;
              writeln('Äàííûå óñïåøíî îòôàðìàòèðîâàíû');
      end else halt;

end;
 {=========================================}
procedure write_title;                    {Çàãîëîâî÷íîå ìåíþ}
var i:byte;
begin
     gotoxy(2,1);
     write('Ôàìèëèÿ');
     gotoxy(10,1);
     write('| Èíäåêñ äîõîäà');
     gotoxy(26,1);
     write('| Âîçðàñò');
     gotoxy(36,1);
     write('| Ñåìåéíîå ïîëîæåíèå |');
     gotoxy(59,1);
     writeln('Êóðñ îáó÷åíèÿ ');
   for i:=1 to 80 do write('-');
end;

{=========================================}
{procedure vivods;
var i:byte;
begin
  assign(f,'dates.db');
   reset(f);
       write_title;
     while not eof(f) do
     begin
       read(f,r);
if (ind <> 3) and (v >= 30) and (cp = 1) and (cy >= 3)  then вот тут само
       write(ind,v,cp,cy);                                                   условие      
 end;  }
{=========================================}
procedure print;                         {&#194;&#251;&#226;&#238;&#228; &#226; &#242;&#224;&#225;&#235;&#232;&#246;&#243;}
var i:byte;
begin
     assign(f,'dates.db');
     reset(f);
     clrscr;
     write_title;
     while not eof(f) do
     begin
       read(f,r);
   OutDate;
     end;
     for i:=1 to 80 do write('-');
     readkey;
     close(f);
end;
{=========================================}
procedure run;
begin
     case q of
     1: create;
     2: add;
     3: print;
     4: halt;
     end;
end;
{=========================================}
Begin
q:=1;
Repeat

GotoXY (20,4);
clrscr;

GotoXY (20,4);
write ('        -==&#193;&#224;&#199;&#224; &#196;&#224;&#237;&#237;&#219;&#245; &#207;&#197;&#205;&#210;&#192;&#195;&#206;&#205;&#192;==-  ');
GotoXY (20,5);
write ('             ***&#199;&#192;&#209;&#197;&#202;&#208;&#197;&#215;&#197;&#205;&#206;***   ');

color(1,q);
gotoxy(23,10);
Write('           &#212;&#238;&#240;&#236;&#224;&#242;&#232;&#240;&#238;&#226;&#224;&#237;&#232;&#229; &#193;&#196;         ');

color(2,q);
gotoxy(23,11);
Write('         &#196;&#238;&#225;&#224;&#226;&#235;&#229;&#237;&#232;&#229; &#228;&#224;&#237;&#237;&#251;&#245; &#226; &#193;&#196;       ');

color(3,q);
gotoxy(23,12);
Write('            &#194;&#251;&#226;&#238;&#228; &#193;&#224;&#231;&#251; &#196;&#224;&#237;&#237;&#251;&#245;         ');

color(4,q);
gotoxy(23,13);
Write('                 &#194;&#251;&#245;&#238;&#228;                ');

color(1,2);
gotoxy(1,25);
write(q);

k:=ord(readkey);

 {if k=0 then k:=ord(readkey); }
case k of
72: if q<>1 then q:=q-1 else q:=4; {&#241;&#242;&#240;&#229;&#235;&#234;&#224; &#226;&#226;&#229;&#240;&#245;}
80: if q<>4 then q:=q+1 else q:=1; {&#241;&#242;&#240;&#229;&#235;&#234;&#224; &#226;&#237;&#232;&#231;}
13: run;  {enter}
end;

until k=27;
end.
26K
26 июня 2008 года
kl1shny
16 / / 09.12.2007
Вот значит сама проверка условия...но выводится лишь последние данное в таблицы , если оно конечно удовлетворяет условие...Помогите пожалуста сделать чтоб процедура работала ко всем введенным данным таблицы...

 
Код:
Procedure infdata;
begin

  if (r.ind <=2) and  (r.v >= 30) and (r.cp = 1) and (r.cy >= 3 )  then
 write(r.fa);
       end;
325
26 июня 2008 года
Franky
723 / / 10.08.2005
ну так сделай в цикле обход всей таблицы ;)
26K
26 июня 2008 года
kl1shny
16 / / 09.12.2007
Вот я и прошу помощи это сделать...чтоб данные корректно отбражались ниже...общих введеных дынных
325
27 июня 2008 года
Franky
723 / / 10.08.2005
вообще я Паскалем не занимаюсь давно, но что если так:
 
Код:
Procedure infdata;
begin
assign(f,'dates.db');
   reset(f);
       write_title;
     while not eof(f) do
  if (r.ind <=2) and  (r.v >= 30) and (r.cp = 1) and (r.cy >= 3 )  then
 writeln(r.fa);
 end;
431
30 июня 2008 года
sherry
207 / / 16.10.2006
Цитата: kl1shny

Перечень требований, которым должен удовлетворять претендент на такую стипендию, следующий:
а) индекс доходов не выше среднего
б) возраст (старше 30 лет)
в) наличие собственной семьи
г) осталось закончить один или два курса
Написать программу, которая на основании введенных анкет составляет и печатает список фамилий студентов, имеющих право претендовать на поощрительные стипендии.

Я вывожу саму созданную БД...но ни как ни могу составить условие вывода котрое указано в условии задачи.


Так и не понял - в чём трудность возникает-то?..
Условие будет иметь следующий вид:

if [COLOR="Navy"]индекс_доходов[/COLOR] <= [COLOR="Navy"]средний_индекс_доходов[/COLOR] and [COLOR="Sienna"]возраст[/COLOR] > [COLOR="Sienna"]30_лет[/COLOR] and [COLOR="DarkGreen"]наличие_собственной_семьи[/COLOR] = TRUE and [COLOR="DarkRed"]количество_неоконченных_курсов[/COLOR] < 3 then вывод_данных_на_экран;

26K
02 июля 2008 года
kl1shny
16 / / 09.12.2007
Да слжность в том, что после выведеных данных нужно вывести ещё фамили...то есть мне нужно вывести фамилии ниже таблицы... у меня вот не получается...данные накладываются на данные
431
02 июля 2008 года
sherry
207 / / 16.10.2006
kl1shny
Как накладываются?? Скрин в студию.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог