Práce s databází - Pascal – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Práce s databází - Pascal – Pascal – Fórum – Programujte.comPráce s databází - Pascal – Pascal – Fórum – Programujte.com

 

El97za0
Duch
3. 5. 2016   #1
-
0
-

Zdravím,

mám udělat program,který pracuje s databází obchodů (s alternetivní medicínou). Zatím mám proceduru přidání položky a vypsání všch položek. Potřebovala bych poradit s procedůrou,která vypíše ty obchody podle otevírací doby (resp. uživatel napíše např. že je pondělí 15.30 a program by měl vypsat všechny obchody,které jsou otevřené..). Nejspíš tam mám špatně už tu proměnou u otevírací doby.

Děkuju za rady :)

Vkládám strukturu programu,který zatím mám (a funguje):

program alterna;
uses CRT;

type obchod=record
        nazev:array[1..50] of char;
        adresa: array [1..50]of char;
        kontakt:array [1..50]of char;
        eshop: array [1..50] of char;
        odvetvi : (homeopatie, fytoterapie, psychotronika, akupunktura, akupresura, reflexniterapie, aromaterapie,jine);
        otviracidoba: integer; end;
var obchody: file of obchod;
        jeden:obchod;
        rozhod:char;

procedure PRIDANI;
begin clrscr;
reset(obchody);
seek(obchody,filesize(obchody));
writeln('Zadejte nazev:');
readln(jeden.nazev);
writeln('Zadejte adresu');
readln(jeden.adresa);
writeln('Zadejte kontakt:');
readln(jeden.kontakt);
writeln('Zadejte eshop:');
readln(jeden.eshop);
writeln('Zadejte odvetvi:');
writeln('Homeopatie....<H>');
writeln('Fytoterapie...<F>');
writeln('Akupresura...<E>');
writeln('Akupunktura...<U>');
writeln('Psychotronika...<T>');
writeln('Jin‚...<J>');
writeln('Reflexnˇ terapie...<R>');
writeln('Aromaterapie...<A>');
rozhod:=readkey;
if upcase(rozhod) in['H','F','E','U','T','J','R','A']
then case upcase(rozhod) of
'H':jeden.odvetvi:=homeopatie;
'F':jeden.odvetvi:=fytoterapie;
'E':jeden.odvetvi:=akupresura;
'U':jeden.odvetvi:=akupunktura;
'T':jeden.odvetvi:=psychotronika;
'J':jeden.odvetvi:=jine;
'R':jeden.odvetvi:=reflexniterapie;
'A':jeden.odvetvi:=aromaterapie;
end;

writeln('Zadejte otviraci dobu :');
readln(jeden.otviracidoba);
write(obchody,jeden);
close(obchody)
end;


procedure VYPIS;
begin clrscr;
reset(obchody);
repeat
if not(eof(obchody)) then  begin
read(obchody,jeden);
writeln('N zev: ',jeden.nazev);
writeln('Adresa: ',jeden.adresa);
writeln('Kontakt: ',jeden.kontakt);
writeln('Eshop: ',jeden.eshop);
writeln('OdvŘtvˇ: ',jeden.odvetvi);
writeln('Otvˇracˇ doba: ' ,jeden.otviracidoba);
end;
until eof(obchody);
close(obchody);
readln();
end;


begin
clrscr;
assign (obchody, 'SEZNAMZ.DTA');{$I-}
reset (obchody); {$I+}
if IOResult>0 then begin
rewrite(obchody);
close(obchody);
reset(obchody);
end;

repeat clrscr;
gotoxy(33,2);
write('Datab ze obchod…');
gotoxy(25,8);
write('Pýidat obchod.............. <P>');
gotoxy(25,10);
write('Věpis vçech obchod…......... <V>');
gotoxy(25,12);
write('Smazat........<S>');
gotoxy(25,14);
write('Konec.................... <K>');
rozhod:=readkey;
if upcase(rozhod) in['P','V','S']
then case upcase(rozhod) of
'P':PRIDANI;
'V':VYPIS;
'S': SMAZAT;
end;

until upcase(rozhod)='K';

end.

Nahlásit jako SPAM
IP: 194.228.13.–
El97za0
Duch
3. 5. 2016   #2
-
0
-

Jaj, teď se dívám,že mě to trošku přepsalo háčky ..Tak se omlouvám za trošku nesrozumitelné slova...

Nahlásit jako SPAM
IP: 194.228.13.–
JoDiK
~ Anonymní uživatel
987 příspěvků
4. 5. 2016   #3
-
0
-

#2 El97za
Pokud si nechceš čas nějak kódovat do toho jednoho celého čísla typu integer (ne že by to nešlo, třeba 1000=16:40), tak si čas ulož třeba jako záznam:

 cas = record 
    	 hod:byte;
    	 min:byte; 
       end;

a podle toho to pak hledej.

PS: pro zjednodušení zápisu si nastuduj příkaz with:

with jeden do 
  begin
    writeln('Název: ',nazev);
    writeln('Adresa: ',adresa);
    ...
    with otviracidoba do
      writeln('Otvírací doba: ',hod,':',min);
  end;
Nahlásit jako SPAM
IP: 88.103.228.–
El97za0
Duch
4. 5. 2016   #4
-
0
-

#3 JoDiK
Díky za radu,ale už sem to nějak vyřešila...Sice ne moc elegantně,ale funguje to podle potřeby..

Nahlásit jako SPAM
IP: 194.228.13.–
Mircosoft+1
Věrný člen
9. 5. 2016   #5
-
0
-

Hlavně by to chtělo mít uložený začátek a konec otvírací doby, tedy dva časy místo jednoho. Potom už by to bylo něco ve smyslu:

if (AktualniHodina>=HodinaOtevreni) and (AktualniHodina<=HodinaZavreni) then ...právě je otevřeno...

Nahlásit jako SPAM
IP: 212.79.106.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý