• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Remy

Editar e Apagar dados em Ficheiros

2 mensagens neste tópico

Boa noite,

este é o primeiro tópico que crio aqui no fórum, ainda nem sei as regras ao certo mas aqui vai...

Tenho aqui este programinha que grava os dados que introduzir para um ficheiro e bla bla bla...

O meu problema é saber como tenho que fazer o procedimento para editar os dados que inseri e claro que fiquem gravados no ficheiro para futura edição ou exclusão.

Se pudessem explicar por passos o que tenho de fazer (ex: fazes um array [1..6]) :-[

Alguma coisa que precisem de saber digam :down:

program csg_alunos_database;
uses crt;

type alunos = record
numero, nome, morada, turma : string;
idade, telefone : integer;
end;

frase = string;

var
ficheiro : file of alunos;
C : alunos;
escolha : integer;

procedure centro (S:frase);
var x : integer;

begin
x := 40 + (length(S)) DIV 2;
writeln (S:x);
end;

{ ECRA 1.1.1 [iNCLUSAO] }

procedure AddReg;
var conf, escol : char;

begin
reset (ficheiro);
seek (ficheiro,FileSize(ficheiro));
escol := 's';
while escol = 's' do
begin
	clrscr;
	centro ('Colegio de S. Goncalo');
	centro ('Base de Dados Alunos');
	writeln (' ');
	centro ('INTRODUCAO DE CONTA');
	readln;
	gotoxy (10,8); write ('NOME : ');
	readln (C.nome);
	gotoxy (10,10); write ('MORADA : ');
	readln (C.morada);
	gotoxy (10,12); write ('IDADE : ');
	readln (C.idade);
	gotoxy (10,14); write ('TELEFONE : ');
	readln (C.telefone);
	gotoxy (10,16); write ('TURMA : ');
	readln (C.turma);
	gotoxy (10,18); write ('NUMERO INTERNO : ');
	readln (C.numero);
	gotoxy (24,20); write ('CONFIRMA INTRODUCAO ( S/N ) ? _');
	gotoxy (54,20); readln (conf);
	if conf = 's' then write (ficheiro,C);
	gotoxy (27,22); write ('NOVA ALTERACAO ( S/N ) ? _');
	gotoxy (52,22); read (escol);
end;
close (ficheiro);	
end;

{ ECRA 1.1.2 [ALTERACAO] }

procedure EditReg;

begin
write (':S');
end;

{ ECRA 1.1.3 [CONSULTA] }

procedure InquiryReg;
var numero : string;
escol : char;

begin
reset (ficheiro);
escol := 's';
while escol = 's' do
begin
	clrscr;
	centro ('Colegio de S. Goncalo');
	centro ('Base de Dados Alunos');
	writeln (' ');
	centro ('CONSULTA DE ALUNO');
	readln;
	gotoxy (10,8); write ('NUMERO INTERNO : ');
	gotoxy (27,8); readln (numero);
	seek (ficheiro,0);
	while not eof (ficheiro) do
	begin
		read (ficheiro,C);
		if Pos (numero, C.numero) <> 0 then
		begin
			gotoxy (10,11); write ('NOME : ',C.nome);
			gotoxy (10,13); write ('MORADA : ',C.morada);
			gotoxy (10,15); write ('IDADE : ',C.idade);
			gotoxy (10,17); write ('TELEFONE : ',C.telefone);
			gotoxy (10,19); write ('TURMA : ',C.turma);
			gotoxy (10,21); write ('NUMERO INTERNO : ',C.numero);
		end;
	end;
gotoxy (27,24); write ('NOVA CONSULTA ( S/N ) ? _');
gotoxy (51,24); read (escol);
end;
close (ficheiro);
end;

{ ECRA 1.1.4 [EXCLUSAO] }

procedure DeleteReg;

begin
write (':S');
end;

{ ECRA 1.1 [ALUNOS] }

procedure Student;
var choo : integer;

begin
repeat
clrscr;
centro ('Colegio de S. Goncalo');
centro ('Base de Dados Alunos');
writeln (' ');
centro ('ALUNOS');
gotoxy (25,8); writeln ('1 - INCLUSAO');
gotoxy (25,10); writeln ('2 - ALTERACAO');
gotoxy (25,12); writeln ('3 - CONSULTA');
gotoxy (25,14); writeln ('4 - EXCLUSAO');
gotoxy (25,16); writeln ('0 - RETORNAR');
gotoxy (34,20); writeln ('A OPCAO : _');
repeat
gotoxy (44,20);
read (choo);
until (choo >= 0 ) and (choo < 5 );
case choo of
	1 : AddReg;
	2 : EditReg;
	3 : InquiryReg;
	4 : DeleteReg;
end;
until choo = 0;
end;

{ECRA 1.2 [TURMAS] }

procedure Classes;

begin
writeln ('procedu Cla')
end;

{ECRA 1.3 [RELATORIOS] }

procedure Reports;

begin
writeln ('procedu Rep')
end;

{ PROGRAMA PRINCIPAL }

begin
assign (ficheiro,'c:\csg_alunos_db.dta');
reset (ficheiro);
if IOresult <> 0 then rewrite (ficheiro);
close (ficheiro);
repeat
clrscr;
centro ('Colegio de S. Goncalo');
centro ('Base de Dados Alunos');
writeln (' ');
centro ('MENU PRINCIPAL');
gotoxy (25,8); writeln ('1 - ALUNOS');
gotoxy (25,10); writeln ('2 - TURMAS');
gotoxy (25,12); writeln ('3 - RELATORIOS');
gotoxy (25,14); writeln ('0 - FINALIZAR');
gotoxy (34,18); writeln ('A OPCAO : _');
repeat
gotoxy (44,18);	read (escolha);
until (escolha >= 0 ) and (escolha < 4 );
case escolha of
	1 : Student;
	2 : Classes;
	3 : Reports;
end;
until escolha = 0;
clrscr;
gotoxy (34,18); writeln ('A FINALIZAR . . . BYE!');
delay (700);
readln;
end.

Obrigado pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A opção mais simples é leres o ficheiro para memória, fazes as operações que entenderes e depois gravas o ficheiro por cima do actual, ficando assim o ficheiro com os registos no estado actual.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora