Cadastro usando arquivos .txt para guardar dados

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

[ Hits: 8.767 ]

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

Calculadora

Programa que separa os dígitos de um inteiro

Anagrama usando Perl

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

Escrevendo varias linhas em um arquivo qualquer


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts