Jump to content
Odacil

Tenho um projecto em pascal para fazer e gostaria de receber ajudaaa

Recommended Posts

Odacil

Boas bem eu venho aqui pedir ajuda.

Eu tenho aqui um projeto, e o que pretendo era conseguir mostrar os quartos no programa principal, mas apenas consigo mostrar o 1º quarto , o resto nao :( , e gostaria de saber como alterar os quartos, e apagar ... Gostaria muito que me puddessem Ajudar. Abraços Obrgadooo

program untitled;
uses crt;
Type Quartos= record
codigo:integer;
descricao:string;
preco:real;
end;
var quartos1: file of  quartos;
quartos2:quartos;
Begin

Assign (quartos1,'Quartos.dat');
rewrite(quartos1);
quartos2.Codigo:= 1;
quartos2.descricao:= ('280 m2 de puro luxo | Design Excepcional | Muito conforto e vistas arrebatadoras| Serviço de babysitting | Capacidade de 3 adultos e 2 criancas');
quartos2.Preco:= 30000.00;
seek (quartos1,filesize(quartos1));
write (quartos1,quartos2);

quartos2.Codigo:= 2;
quartos2.descricao:= ('115 m2 de puro luxo | Capacidade de 3 adultos e 1 criancas | Serviço de aluguer de carros');
quartos2.Preco:= 2003.500;
seek (quartos1,filesize(quartos1));
write (quartos1,quartos2);

quartos2.Codigo:= 3;
quartos2.descricao:=('32 m2 de puro luxo | Não se aceita a entrada de animais de estimacao | Wifi gratis ');
quartos2.Preco:=2501.000 ;
seek (quartos1,filesize(quartos1));
write (quartos1,quartos2);

quartos2.Codigo:= 4;
quartos2.descricao:=('20 m2 de puro luxo | Muito conforto e vistas arrebatadoras | Capacidade de 2 adultos | Design Excepcional');
quartos2.Preco:= 12050.00 ;
seek (quartos1,filesize(quartos1));
write (quartos1,quartos2);
close(quartos1);
end.

--------------------------------////------------------- --////------------------- --////------------------- --////------------------- --////------------------- --////------------------- --////------------------- --////------------------- --////------------------- --////-------------------  

Programa Principal


Program projeto;
uses crt;
Type cliente=record
nome:string;
idade:integer;
quarto:string;
pagamento:string;
codigocliente:integer;
end;

Quartos= record
codigo:integer;
descricao:string;
preco:real;
end;

type admin=record
password:string[10];
end;

label localmenu;
var quartos1: file of  quartos;
quartos2:quartos;
op:string;
op_admin:char;
admin2:admin;

procedure quartos3;
begin
{$I-};
reset (quartos1);
close (quartos1);
{$I+};
if ioresult<>0 then
 writeln ('Não existem quartos')
else
reset (quartos1);
clrscr;
while not eof (quartos1) do
begin
 read (quartos1,quartos2);
end;
seek (quartos1,-0);
while not eof (quartos1) do
begin
textcolor(yellow);
read (quartos1,quartos2);
writeln('Codigo',quartos2.Codigo);
writeln('Descricao',quartos2.descricao);
writeln ('Preco',quartos2.preco:5:2,chr(36) );
readln;
end;
close (quartos1);
end;

procedure alterar_quartos;
begin
seek(quartos1,0);
Read(quartos1,quartos2);
quartos2.codigo:=1;
quartos2.descricao:= (' ');
quartos2.preco:= 0 ;
Seek(quartos1,0);
Write(quartos1,quartos2);
end;

Procedure Admin1;
begin
writeln;
writeln('***************BEM VINDO A PARTE ADMINISTRATIVA *********');
writeln;
writeln('<----- POR FAVOR INTRODUZA A PASSWORD ---->');
writeln;
write('Password: ');
repeat
readln (admin2.password);
if admin2.password > 'admin2014' then
writeln('Password errada');
until (admin2.password='admin2014');
end;

//Programa principal
Begin

textbackground ( blue) ;
assign(quartos1,'Quartos.dat');
Writeln ('**********		 Hotel de Odacil	**********');
writeln ('***** Deseja entrar na parte do Admin ou do Cliente?*****');
repeat
read(op);
clrscr;
if op='Admin' then ;
Admin1;
localmenu:
writeln;
writeln(' ----- Menu do admin ------ ');
writeln('1 - Quartos ');
writeln('2 - Alterar os dados dos quartos ');
writeln('3 - Remover quartos ');
writeln('4 - Voltar ao menu inical ');
repeat
readln(op_admin);
until (op_admin= '1') or (op_admin='2') or
(op_admin='3') or (op_admin='4');
if op_admin = '1' then
Quartos3;
goto localmenu;

alterar_quartos;
until (op= '0')
end.

--////------------------- --////------------------- --////------------------- --////-------------------

Edited by nunopicado
Adicionadas tags GeShi

Share this post


Link to post
Share on other sites
thoga31

Bem-vindo.

Primeiro que nada, se não te importares, gostaria que alterasses o título para algo mais objectivo - se estás no quadro de Pascal, então deves estar a trabalhar num programa em Pascal, e se vieste até nós é porque precisas de ajuda.

Podes-nos dizer qual é o propósito do programa?

Quanto ao teu código, uma mão cheia de conselhos:

  • Indenta o código, tudo alinhado à esquerda ao mesmo nível torna o programa ilegível.
  • A falta de comentários no programa leva-me a não entender bem o que é suposto ele fazer e como está organizado.
  • Não se distingue bem as várias variáveis, é confuso - quarto1 é um ficheiro, mas quartos2 já é um record. Rapidamente me esqueço disto enquanto leio o código, e, volta e meia, tenho de ir acima rever.
  • Porque fazes tanto seek? Quando fazes rewrite, o ficheiro é criado ou então apagado, e a partir daí só tens de escrever tudo de seguida, o seek é desnecessário.
  • admin tem de ser mesmo um record? Só tem um campo.
  • Creio que tens umas falhas em begin e end. Não te faltam em número, mas faltam-te em lógica. Aqui, por exemplo:
    if ioresult<>0 then
     writeln ('Não existem quartos')
    else
    reset (quartos1);
    // o que está a seguir, é para executar mesmo que não haja ficheiro??
    clrscr;
    while not eof (quartos1) do
    begin
     read (quartos1,quartos2);
    end;
    


  • Cuidado com a utilização de read e readln, há sítios onde usas mal um ou outro.


Knowledge is free!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.