Odacil 0 Posted December 22, 2013 Report Share Posted December 22, 2013 (edited) 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 December 22, 2013 by nunopicado Adicionadas tags GeShi Link to post Share on other sites
thoga31 569 Posted December 22, 2013 Report Share Posted December 22, 2013 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! Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now