Cadastro usando arquivos .txt para guardar dados

Publicado por Jonatan Gomes (última atualização em 19/09/2010)

[ Hits: 8.274 ]

Homepage: Em construção xD

Download cadasfull.pl




É bem simples e amador esse script, ele pega seu nome e seu rg e usa para criar um arquivo .txt (seu nome e seu rg será o nome do arquivo) e usa um arquivo chamado pc.txt para mostrar o número de pessoas que já foram cadastradas, aí sempre que abrir o script vai estar lá o número correto de cadastros.

Fiz esse script usando um pc com Windows, então vai ter que mudar os direitos para pegar certinho em Linux, é bem amador pois sou iniciante ainda, mas talvez tire algumas dúvidas que eu não achei em lugar nenhum respostas.

Eu tentei explicar o máximo possível =), qualquer erro ou "noobise" pode relatar pois só estou estudando linguagens de programação a 3 semanas =), caso consigam resumir mais o programa ou melhorá-lo, fique a vontade, =) se tiver algumas dicas para mim também eu agradeço pois preciso muito de ajuda xD.

Flw...

__R4$T4__

  



Esconder código-fonte

#!/usr/bin/perl
#Programa bem simples para tirar uma carteira de motorista
# caso seja menor de idade é reiniciado o programa e mostra uma mensagem de erro
# e cria um arquivo .txt com os dados do cadastrado o nome e o RG
# e grava em outro .txt o numero de pessoas cadastradas =) é bem amador (pois eu sou amador =P )
# mas pode tirar algumas dúvidas como eu tive e  não achei em lugar nenhum a resposta
# bye bye...



# __R4$T4__





open ($cadas, "+<","c:/pc.txt"); # aqui cria-se o arquivo onde fica armazenado o número de cadastros realizados
while (<$cadas>){
$cadastrados= $_;
}
close ($cadas);

inicio:
print "#_______________Carteira de Motorista_______________#\n";
print "Numeros de inscritos\t $cadastrados\n";  #tela inicial
sleep 3;

print "Digite \"cadastro\" para se cadastrar ou digite \"sair\" para finalizar o programa:\t";
chomp ($passe= <STDIN>);
if ($passe eq "sair") #se o usuário optar por sair:
 { # "IF" Caso o usuário digite "sair"
print "_____SAINDO_____\n";
sleep 2;
print " Bye, Bye... ";
sleep 2;
exit;
 } # Fecha "IF" de SAIR e finaliza o programa
print "###______CADASTRO______###\n \n"; #caso o usuário quiser fazer o cadastro:
print "Digite seu primeiro nome:\t";
chomp ($nome= <STDIN>);

print "Agora digite seu sobrenome:\t";
chomp ($snome= <STDIN>);

print "Digite sua idade: (Ex: 25)\t";
chomp ($idade= <STDIN>);

print "Digite o seu RG:\t";
chomp ($rg= <STDIN>);
$nomeaq= $nome;
$nomeaq.= $rg;  # aqui juntou o nome+rg em uma só string
$arquivo =">>c:/$nomeaq.txt"; # e aqui faz com que o nome e o RG sejam o nome do arquivo onde fica os dados do cadastro

# Caso não seja maior de idade:
if ($idade < 18)
  { # "IF" de $idade caso não seja maior de 18
 print "Voce ainda nao tem idade suficiente\n";
 sleep 3;
 goto inicio; # Linha 16
  } # Fecha "IF" de $idade caso não seja maior de 18

push (@cadastro, $nome, $snome, $idade, $rg); # aqui poem o nome, sobre nome, idade e rg em uma array

print "#___Cadastro realizado com Sucesso!___#\n";
open (num, ">c:/pc.txt"); #caso o cadastro seja realizado com sucesso então acrescenta 1 no número de cadastros
print num ++$cadastrados;
close (num);
$reg=  join(":", @cadastro); # aqui poem : (dois pontos) entre cada elemento da array com os dados do cadastro
                             # fazendo com que não fique tudo junto (obvio)
open (open dados, $arquivo);
print dados "$reg\n";#aqui cria um .txt com o nome+rg de quem se cadastrou e insere os seus dados

close(dados);
goto inicio; # sei que é errado usar goto mas... esse volta para o início linha 16

Scripts recomendados

Queimando CDs on-the-fly

Saiba quanto de energia seu PC gasta aproximadamente por mês

Renomeando arquivos de forma padronizada

Fatorial

Gerando senhas aleatórias


  

Comentários
[1] Comentário enviado por acpguedes em 24/10/2011 - 21:11h

cara, assim, quando for criar uma porta virtual, evite usar termos com $, seria uma porta string, uma porta string pode ser usada para quando declaramos qual arquivo de saida queremos como o exemplo abaixo:

my $porta = <STDIN>;
if ($porta eq ARQ){
open ARQ,"<". 'nome.txt' or die usage();
}
elsif ($porta eq OUT){
open OUT, 'nome2.txt' "o arwuivo não pode abrir ou não existe";
}
etc...

voce tambem não precisa dar endereço para o arquivo,
se vc usar apenas

print "escreva o nome do cliente seguido de .txt \t\n";
$cliente = <STDIN>;
open IN,"+<", $cliente; #aqui troquei o $caldas por IN

o arquivo é criado na mesma pasta que o programa
ou voce pode fazer

print "escreva o nome do cliente seguido de .txt \t\n";
$cliente = <STDIN>;
open IN,"+<", 'pasta/$cliente'; #aqui não testei mas creio que seja algo assim.

abaixo segue um script para medir IMC que criei pra vc ver as diferenças

#!/usr/bin/perl -w


print "digite seu nome\t\n";
chomp (my $nome =<STDIN>);
print "digite seu peso\t\n";
chomp (my $peso = <STDIN>);
print "digite sua altura\t\n";
chomp (my $altura = <STDIN>);
print "gostaria do resultado em um arquivo externo? sim(s) ou não(n) \t\n";
chomp (my $choice = <STDIN>);

my $imc = $peso / ($altura ** 2) ;
my $max = ($altura ** 2) * 24.9 ;
my $min = ($altura ** 2) * 18.5 ;


if ($choice eq 's'){
print "digite um nome de um arquivo de saida com o final .txt \t\n";
chomp (my $output = <STDIN>);
open OUT,">". $output or die usade ();
print OUT "$nome, seu IMC é $imc \t\n";

if($imc < 18.5 ){
print OUT "Seu peso esta baixo \t\n";
print OUT "Seu peso minimo deveria ser $min\t\n";
}

elsif($imc <= 24.9 && 18.5 <= $imc ){
print OUT "Seu peso esta normal, Parabens \t\n";
print OUT "voce pode pesar entre $min e $max";
}

elsif($imc <= 29.9 && 25 <= $imc){
print OUT "Voce esta acima do peso\t\n";
print OUT "Seu peso maximo deveria ser $max\t\n";
}

elsif($imc <= 34.9 && 30 <= $imc ){
print OUT "Voce esta com obesidade de grau I \t\n";
print OUT "Seu peso maximo deveria ser $max\t\n";
}

elsif($imc <= 39.9 && 35 <= $imc ){
print OUT "Voce esta com obesidade de grau II \t\n";
print OUT "Seu peso maximo deveria ser $max\t\n";
}

elsif( 40 <= $imc ){
print OUT "Voce esta com obesidade de grau III \t\n";
print OUT "Seu peso maximo deveria ser $max\t\n";
}


print OUT "Seu peso minimo pode ser $min e seu peso maximo pode ser $max\t\n";
print OUT "Write by: Aureliano C. Proença Guedes\t\n";
}

elsif ($choice eq 'n') {
print "$nome, seu IMC é $imc \t\n";
if($imc < 18.5 ){
print "Seu peso esta baixo \t\n";
print "Seu peso minimo deveria ser $min\t\n";
}

elsif($imc <= 24.9 && 18.5 <= $imc ){
print "Seu peso esta normal, Parabens \t\n";
print "voce pode pesar entre $min e $max";
}

elsif($imc <= 29.9 && 25 <= $imc){
print "Voce esta acima do peso\t\n";
print "Seu peso maximo deveria ser $max\t\n";
}

elsif($imc <= 34.9 && 30 <= $imc ){
print "Voce esta com obesidade de grau I \t\n";
print "Seu peso maximo deveria ser $max\t\n";
}

elsif($imc <= 39.9 && 35 <= $imc ){
print "Voce esta com obesidade de grau II \t\n";
print "Seu peso maximo deveria ser $max\t\n";
}

elsif( 40 <= $imc ){
print "Voce esta com obesidade de grau III \t\n";
print "Seu peso maximo deveria ser $max\t\n";
}


print "Seu peso minimo pode ser $min e seu peso maximo pode ser $max\t\n";
print "Write by: Aureliano C. Proença Guedes\t\n";

print "posso me desligar? sim(s) ou não (n) \t\n";
my $choicedel = <STDIN>;
if ($choicedel eq 's'){
exit
}


}

depois reviso o seu p ver o que posso melhorar p vc


Contribuir com comentário