Projecto final Programação - 1º Ano
Transcript of Projecto final Programação - 1º Ano
Projecto Final
1º Ano Licenciatura Informática
Ana Rodrigues Nº 558
Projecto Final - 1º Ano Licenciatura Informática
INTRODUÇÃO: ............................................................................................................................... 2
DESCRIÇÃO PROGRAMA :: REGISTO ALUNOS :: : ........................................................................ 3
1 -INSERIR ALUNOS: .................................................................................................................. 6
2 -EDITAR ALUNOS: .................................................................................................................. 7
3 –PESQUISA ALUNOS NOME: .................................................................................................. 9
4 –PESQUISA ALUNOS NIF: ..................................................................................................... 10
5 - LISTAR ALUNOS: ................................................................................................................ 12
6 - LISTAR POR FORMAÇÃO: ................................................................................................... 12
7 - SAIR: ................................................................................................................................... 13
ESTRUTURA DO PROGRAMA:..................................................................................................... 14
//Variavel Global para o Menu .............................................................................................. 15
/* Estrutura do ficheiro de alunos */..................................................................................... 15
/* Verificação da password */ ............................................................................................... 15
/* Menu */ .............................................................................................................................. 16
/* Opção do Menu – Escolha */ ............................................................................................. 17
/* Main */ ............................................................................................................................... 19
/* Inserção de Alunos */ ........................................................................................................ 19
/* Verificação Caracteres */ ................................................................................................ 21
/* Coloca ID sequencial e automático n ficheiro de alunos*/ ............................................ 21
//Gravar no ficheiro ............................................................................................................ 21
/* Listar Alunos */ .................................................................................................................. 22
/* Listar Formação */ ............................................................................................................. 24
/* Edição de Registos */ ......................................................................................................... 26
/ * Pesquisa por NIF */ ........................................................................................................... 29
/ * Pesquisa por Nome */ ....................................................................................................... 31
WEBGRAFIA: ............................................................................................................................... 33
CONCLUSÃO: ............................................................................................................................... 34
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
INTRODUÇÃO:
Projecto final, realizado no âmbito da unidade curricular de Programação I com o Prof. João Rebelo.
O objeticvo da concepção deste programa é o de aplicar conhecimentos adquiridos ao longo da unidade curricular na linguagem de programação C, assim como conhecimentos adquiridos por auto estudo.
O software utilizado para a realização do programa, foi o mesmo que tem sido utilizado no decorrer da unidade curricular, o CODEBLOCKS.
O programa realizado, chama-se REGISTO DE ALUNOS, e tem como objectivos:
• Inserção de Novos Registos • Edição de Registos por pesquisa de NIF • Pesquisar Alunos por Nome • Pesquisar Alunos por NIF • Listar Alunos • Listar Formações com Alunos Inscritos
Pretendi que o mesmo so iniciasse com a introdução de palavra passe, pelo que antes do Menu ser apresentado, é pedida ao utilizador uma palavra passe, que utilizei como exemplo “XPTO”, case sensitive.
Em cada listagem, pretendia que aparece-se o valor total de cada formação/explicação, pelo que foi criada uma variável PTOTAL, que calcula o preço total de cada formação por aluno, é o Numero de Hora * Preço Hora.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
DESCRIÇÃO PROGRAMA :: REGISTO ALUNOS :: : Para poder iniciar o programa, é necessário a introdução da palavra passe correcta “XPTO”, caso a palavra passe seja validada, passa para o menu, caso a palavra passe esteja errada surge uma mensagem a dizer “PASSWORD ERRADA!”, e torna a pedir para digitar a password.
Utilizei para poder verificar sa password a FUNÇÃO strcmp() – Comparação de strings.
No main, so é chamada a vpass().
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
Depois de a password ter sido validada, entra então no Menu()
A variável xopcao, esta declarada como Global, isto porque precisava de poder passar o valor do teclado para a função opMenu():
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
Caso não criasse uma variável global, a opção não passava e o programa fechava sempre sem qualquer retorno. Para que conseguisse que a opção passasse, foi criando uma variável global.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
1 -INSERIR ALUNOS: Na inserção de alunos, é validado o contacto e o contribuinte de modo a que não tenha menos de 9 dígitos e que nestes 2 campos não sejam inseridas letras.
É colocado em cada registo um ID Aluno sequencial e automático
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
2 -EDITAR ALUNOS: Na edição do registo, é feita inicialmente uma pesquisa por Numero de Contribuinte:
Após a introdução do mesmo,
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
Começa a edição do registo:
Termina a edição do mesmo:
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
3 –PESQUISA ALUNOS NOME:
Pretendia que o nome fosse pesquisado pelos primeiros caracteres mas não consegui utilizar a função substr, deu-me sempre erro.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
4 –PESQUISA ALUNOS NIF:
Temos o mesmo que a pesquisa por nome mas neste caso é por numero de contribuinte.7
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
5 - LISTAR ALUNOS: Pretende-se a listagem de todos os alunos, onde aparece no final o valor total da formação.
6 - LISTAR POR FORMAÇÃO: Aqui, pretende-se que seja listada a formação que se pretende com todos os alunos nelas inscritos, se houver mais que 1 aluno, aparece no fim o valor total de cada aluno, horas*proço hora e também o valor total de todos os alunos.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
7 - SAIR: Como o próprio nome indica, sai do programa.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
ESTRUTURA DO PROGRAMA:
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
#include <stdio.h>
#include <stdlib.h>
//Variavel Global para o Menu int xopcao;
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/* Estrutura do ficheiro de alunos */ struct defAluno{
int ID_Aluno;
char Nome[120];
char Morada[80];
char Contacto[9];
char NIF[9];
char Email[80];
char Formacao[50];
int Horas;
double Preco_Hora;
};
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/* Verificação da password */ int vPass(){
char password[8]="XPTO";
char passcliente[8];
printf("Digite a password para poder aceder:\n");
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
gets(passcliente);
/* Verifica se a password condiz, se SIM passa para o Menu se NÃO dá Mensagem de Erro */
if (strcmp(password, passcliente)==0){
Menu();
opMenu();
}
else{
printf("PASSWORD ERRADA!\n");
main();
}
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/* Menu */ int Menu(){
printf("\n \t\t\t ***************************************** \n");
printf("\n \t\t\t * REGISTO DE ALUNOS *\n");
printf("\n \t\t\t * UC PROGRAMAÇ\707O I - Prof. Jo\706o Rebelo * \n");
printf("\n \t\t\t * 1º Ano Licenciatura Inform\240tica *\n");
printf("\n \t\t\t * Ana Isabel Rodrigues - Nº 558 *\n");
printf("\n \t\t\t ***************************************** \n\n");
printf("\n\t\t\t\t Escolha a opç\706o que pretende: \n");
printf(" **************************************************************************** \n ");
printf(" *\tInserir/Editar Registos: \t||\tPesquisar Registos: *\n");
printf(" ---------------------------------------------------------------------------- \n ");
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
printf(" *\t1-> Inserir Alunos\t\ ||\t3-> Alunos por Nome *\n");
printf(" *\t2-> Editar Alunos \t ||\t4-> Alunos por NIF\t *\n");
printf(" ----------------------------------------------------------------------------- \n ");
printf(" *\t Listar: \n");
printf(" ----------------------------------------------------------------------------- \n ");
printf(" *\t5-> Listar Alunos\t\t|| \t\t\t *\n");
printf(" *\t6-> Listar Forma\207\744es com Alunos ||\t7 -> Sair \t\t *\n");
printf(" **************************************************************************** \n\n");
printf("Op\207\706o: ");
scanf("%s",&xopcao);
return xopcao;
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/* Opção do Menu – Escolha */ int opMenu(){
char opcao;
opcao=xopcao;
switch(opcao){
case '1':
InsereAluno();
break;
case '2':
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
EditarAlunos();
break;
case '3':
pesquisarAlunoNome();
break;
case '4':
pesquisarAlunosNIF();
break;
case '5':
ListarAlunos();
break;
case '6':
ListarFormacao();
break;
case '7':
return 0;
default :
//system("cls");
printf("\n\n Escolha uma op\207\706o valida!");
}
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
/* Main */ int main(){
vPass();
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/* Inserção de Alunos */ void InsereAluno(){
/* Criar um buffer para o cliente*/
struct defAluno A;
FILE *fAlunos;
fAlunos=fopen("alunos.dat","rb+"); /* é aberto o ficheiro para ler/escrever */
/* So entra no if se ficheiro não existir, cria o ficheiro na raiz da aplicação, deveria-se verificar se o ficheiro
é criado mesmo, pode não ter permissões */
if(fAlunos==NULL){ /* vai testar se o ficheiro existe ou não */
fAlunos=fopen("alunos.dat","wb"); /* se nao existir, é criado */
fclose(fAlunos);
}
/*A condição !fAlunos testa se o arquivo foi aberto com sucesso porque no caso de um erro a função fopen()
retorna um ponteiro nullo (NULL). */
if (!fAlunos){
printf ("Erro na abertura do arquivo.");
}
else{
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
fAlunos=fopen("alunos.dat","rb+");/*torna a abrir o ficheiro para leitura e escrita */
}
//Inserção de dados no ficheiro
getchar();
system("cls");
printf(" **************************************************************************** \n");
printf(" *\t\t\tInser\207\706o de Novos Alunos:\t\t\t *\n");
printf(" **************************************************************************** \n");
printf("\n Digite o Nome:");
gets(A.Nome);/* scanf("%s", C.Nome); %s só apanha a primeira palavra ate encontrar o espaço,
exemplo: Ana Rodrigues, so apanha Ana, dai usar gets() */
printf("\n Digite a morada:");
gets(A.Morada);
printf("\n Digite o Contacto:");
gets(A.Contacto);
while(strlen (A.Contacto) <9 ||(isalpha(A.Contacto)!=0)) {
printf(" O CONTACTO \220 INVALIDO.\nO CONTACTO DEVERA TER 9 DIGITOS E N\707O PODE CONTER LETRAS.\n");
printf(" Contacto: ");
gets(A.Contacto);
}
/* Controlo do numero de contribuinte, se tiver menos de 9 digitos e forem letras da erro. */
printf("\n Digite N\243mero Contribuinte:");
gets(A.NIF);
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
/* Verificação Caracteres */ while(strlen (A.NIF) <9 ||(isalpha(A.NIF)!=0)) {
printf(" O N CONTRIBUINTE \220 INVALIDO.\nO N CONTRIBUINTE DEVERA TER 9 DIGITOS E N\707O PODE CONTER LETRAS.\n");
printf(" N\243mero Contribuinte: ");
gets(A.NIF);
}
printf("\n Digite o E-Mail:");
gets(A.Email);
printf("\n Digite a Forma\207\706o/Explica\207\706o:");
gets(A.Formacao);
printf("\n Digite o numero de horas:");
scanf("%d", &A.Horas); //Stock é variavel primitiva, int é um tipo primitivo.
printf("\n Digite o Pre\207o/Hora:");
scanf("%lf", &A.Preco_Hora); //%lf é long float, porque é double, double é um tipo primitivo
/* Coloca ID sequencial e automático n ficheiro de alunos*/ fseek(fAlunos,0,SEEK_END); // vai posicionar o cursor no fim do registo
long nposicao;
nposicao=ftell(fAlunos); //devolve em bytes a posicao do cursor no ficheiro
long nregistos=nposicao/sizeof(A);
nregistos++;
A.ID_Aluno=nregistos;
//Gravar no ficheiro fseek(fAlunos,0,SEEK_END);
fwrite(&A,sizeof(A),1,fAlunos); //escreve no ficheiro
printf("\n ************************************* ALUNO CRIADO COM SUCESSO ************************************* \n");
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
getch();
Menu();
opMenu();
fclose(fAlunos);
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/* Listar Alunos */ void ListarAlunos(){
double PTotal;
struct defAluno L;
FILE *lAlunos;
lAlunos=fopen("alunos.dat","rb"); //Ou o ficheiro existe ou não existe
if (lAlunos==NULL) printf("\nErro de abertura de Ficheiro"); //Instruçao inline, instrução sem chavetas e so pode ter uma instrução.
else {
//Ler os dados do ficheiro
//Garantir que estamos a ler do 1º registo
fseek(lAlunos,0,SEEK_SET);
//Ler ate ao ultimo registo
int saida=0;
//Enquanto não chegar ao fim do ultimo registo
while (!saida){
fread(&L,sizeof(struct defAluno),1,lAlunos);
//Como detectar se esta no fim do ficheiro ou se o ficheiro ainda nao tem nada
if(feof(lAlunos)) saida=1;
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
else {
printf(" ******************************************************************** \n");
printf(" *\t\t\t Listar Alunos:\t\t\t *\n");
printf(" ******************************************************************** \n");
printf("\n Nome: %s \n Morada:%s \n Contacto:%s \n NIF: %s \n E-Mail: %s \n Forma\207\706o:%s \n Horas de Forma\207\706o: %d \n Pre\207o Hora: %lf \n",L.Nome,L.Morada,L.Contacto, L.NIF, L.Email,L.Formacao,L.Horas,L.Preco_Hora);
PTotal= L.Horas*L.Preco_Hora;
printf("\n Pre\207o Total Forma\207\706o/Explica\207\706o: %lf", PTotal);
printf("\n -------------------------------------------------- \n");
}//Fim do else
}//Fim do Listar
printf("\n ******** LISTAGEM CONCLUIDA - PRIMA ENTER PARA VOLTAR AO MENU PRINCIPAL ******** \n");
getch();
Menu();
opMenu();
fclose(lAlunos);
}
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
/* Listar Formação */ void ListarFormacao(){
double PTotal;
double PTotalFormacao;
struct defAluno LF;
FILE *lFAlunos;
char lformacao[50];
getchar();
lFAlunos=fopen("alunos.dat","rb"); //Ou o ficheiro existe ou não existe
printf("Porque Forma\207\706ão pretende?");
gets(lformacao);
if (lFAlunos==NULL) printf("\nErro de abertura de Ficheiro"); //Instruçao inline, instrução sem chavetas e so pode ter uma instrução.
else {
//Ler os dados do ficheiro
//Garantir que estamos a ler do 1º registo
fseek(lFAlunos,0,SEEK_SET);
//Ler ate ao ultimo registo
int saida=0;
//Enquanto não chegar ao fim do ultimo registo
while (!saida){
fread(&LF,sizeof(struct defAluno),1,lFAlunos);
//Como detectar se esta no fim do ficheiro ou se o ficheiro ainda nao tem nada
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
if(feof(lFAlunos)) saida=1;
else {
printf(" ********************************************************** \n");
printf(" *\t\t\t Listar por Forma\207\706o:\t\t *\n");
printf(" ********************************************************** \n");
if(strcmp(LF.Formacao,lformacao)==0){
printf("\n Nome: %s \n Morada: %s \n Contacto: %s \n NIF: %s \n E-Mail: %s \n Forma\207\706o:%s\ \n Horas de Forma\207\706o: %d \n Pre\207o Hora: %lf \n",LF.Nome,LF.Morada,LF.Contacto, LF.NIF, LF.Email,LF.Formacao,LF.Horas,LF.Preco_Hora);
PTotal= LF.Horas*LF.Preco_Hora;
printf("\n Pre\207o Total Forma\207\706o/Explica\207\706o: %lf", PTotal);
PTotalFormacao= +PTotal;
printf("\n Pre\207o Total Forma\207\706o/Explica\207\706o: %lf", PTotalFormacao);
printf("\n -------------------------------------------------- \n");
}
}//Fim do else
}//Fim do Listar
printf("\n ---- LISTAGEM CONCLUIDA - PRIMA ENTER PARA VOLTAR AO MENU PRINCIPAL ---- \n");
getch();
Menu();
opMenu();
fclose(lFAlunos);
}
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
/* Edição de Registos */ void EditarAlunos(){
system("cls");
struct defAluno E;
FILE *eAlunos;
int eID;
int registo=0;
eAlunos = fopen("alunos.dat","rb+");
char pnif[9];
if(eAlunos==NULL){
printf("\n\7 ---- ERRO: FICHEIRO DE AlUNOS NAO EXISTE ---- \n");
printf("\7\n ---- PRIMA ENTER PARA VOLTAR AO MENU PRINCIPAL ---- \n");
getch();
}else if(eAlunos!=NULL){
printf("\n Indique NIF do Aluno a alterar: ");
scanf("%s",&pnif);
system("cls");
if(strcmp(pnif,E.NIF) != 0){ //Foi encontrado o aluno
printf("\n <<< VAI ALTERAR O ALUNO %s, COM O SEGUINTE NIF: %s. >>>\n",E.Nome,E.NIF);
getchar();
system("cls");
eID=E.ID_Aluno;
E.ID_Aluno=eID;
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
printf("\nIntroduza Nome: ");
gets(E.Nome);
printf("Introduza a Morada: ");
gets(E.Morada);
printf("Contacto:: ");
gets(E.Contacto);
printf("N\243mero de Contribuinte: ");
gets(E.NIF);
while(strlen (E.NIF) <9 ||(isalpha(E.NIF)!=0)) {
printf(" O N CONTRIBUINTE \220 INVALIDO.\nO N CONTRIBUINTE DEVERA TER 9 DIGITOS E N\707O PODE CONTER LETRAS.\n");
printf(" N\243mero Contribuinte: ");
gets(E.NIF);
}
printf("E-mail: ");
gets(E.Email);
printf("Digite a Forma\207\706o/Explica\207\706o:");
gets(E.Formacao);
printf("\nDigite o numero de horas:");
scanf("%d", &E.Horas); //Stock é variavel primitiva, int é um tipo primitivo.
printf("\nDigite o Pre\207o/Hora:");
scanf("%lf", &E.Preco_Hora); //%lf é long float, porque é double, double é um tipo primitivo
printf("\n <<< O CLIENTE %s COM O NIF %s FOI ALTERADO >>>\n\n",E.Nome,E.NIF);
printf("\n ---- EDICAO CONCLUIDA - PRIMA ENTER PARA VOLTAR AO MENU PRINCIPAL ---- \n");
getch();
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
fseek(eAlunos,-(sizeof(struct defAluno)),SEEK_CUR); // SEEK_SET inicio - SEEK_END fim - SEEK_CUR contar apartir dum sitio desde o fim ou inicio
// -sizeof nao duplica o registo
fwrite(&E,sizeof(struct defAluno) /*Conta quanto caracteres/espaço ocupa, sizeof é um operador em C */,1,/*
o ponteiro é o fAlunos, o ficheiro*/eAlunos);
system("cls");
}//Fecha o 2º if
}//Fecha 1º elseif
Menu();
opMenu();
fclose(eAlunos);
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
/ * Pesquisa por NIF */ void pesquisarAlunosNIF(){
double PTotal;
getchar();
struct defAluno PA;
char pNIF[9];
FILE *pesqNIF;
pesqNIF=fopen("alunos.dat","rb+");
printf("\n Indique NIF do Aluno a Pesquisar: ");
gets(pNIF);
if(pesqNIF!=NULL){
int registo=0;
int FimFicheiro=0;
while(!FimFicheiro){ //enquanto nao for o fim do ficheiro
fread(&PA,sizeof(struct defAluno),1,pesqNIF);
if(feof(pesqNIF)){
FimFicheiro=1;
}else
if(strcmp(pNIF,PA.NIF)!=0){ //compara o nif introduzido, se existe no ficheiro
system("cls");
printf(" ************************************************************************ \n");
printf(" *\t\t\t Pesquisa Alunos por N Contribuinte:\t\t*\n");
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
printf(" ************************************************************************ \n");
printf("\n Nome: %s \n Morada:%s \n Contacto:%s \n NIF: %s \n E-Mail: %s \n Forma\207\706o:%s \n Horas de Forma\207\706o: %d \n Pre\207o Hora: %lf \n",PA.Nome,PA.Morada,PA.Contacto, PA.NIF, PA.Email,PA.Formacao,PA.Horas,PA.Preco_Hora);
PTotal= PA.Horas*PA.Preco_Hora;
printf("\n Pre\207o Total Forma\207\706o/Explica\207\706o: %lf", PTotal);
printf("\n -------------------------------------------------- \n");
registo=1;
}
}
if(registo==0){
system("cls");
printf("\n <<< NAO ENCONTROU NENHUM ALUNO COM O NIF %s. >>>\n",pNIF);
printf("\n ---- PRIMA ENTER PARA VOLTAR AO MENU ANTERIOR ---- \n");
}
getchar();
Menu();
opMenu();
fclose(pesqNIF);
}//fim do if
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
/ * Pesquisa por Nome */ void pesquisarAlunoNome(){
double PTotal;
struct defAluno pAN;
FILE *pesqAlunos;
char pNome[50];
getchar();
pesqAlunos=fopen("alunos.dat","rb"); //Ou o ficheiro existe ou não existe
printf("Porque Nome pretende a pesquisa?");
gets(pNome);
if (pesqAlunos==NULL) printf("\nErro de abertura de Ficheiro"); //Instruçao inline, instrução sem chavetas e so pode ter uma instrução.
else {
//Ler os dados do ficheiro
//Garantir que estamos a ler do 1º registo
fseek(pesqAlunos,0,SEEK_SET);
//Ler ate ao ultimo registo
int saida=0;
//Enquanto não chegar ao fim do ultimo registo
while (!saida){
fread(&pAN,sizeof(struct defAluno),1,pesqAlunos);
//Como detectar se esta no fim do ficheiro ou se o ficheiro ainda nao tem nada
if(feof(pesqAlunos)) saida=1;
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
else {
if(strcmp(pAN.Nome,pNome)==0){
printf(" ****************************************************** \n");
printf(" *\tPesquisa Alunos por Nome Aluno:\t *\n");
printf(" ****************************************************** \n");
printf("\n Nome: %s \n Morada:%s \n Contacto:%s \n NIF: %s \n E-Mail: %s \n Forma\207\706o:%s \n Horas de Forma\207\706o: %d \n Pre\207o Hora: %lf \n",pAN.Nome,pAN.Morada,pAN.Contacto, pAN.NIF, pAN.Email,pAN.Formacao,pAN.Horas,pAN.Preco_Hora);
PTotal= pAN.Horas*pAN.Preco_Hora;
printf("\n Pre\207o Total Forma\207\706o/Explica\207\706o: %lf", PTotal);
printf("\n -------------------------------------------------- \n");
}
}//Fim do else
}//Fim do Listar
printf("\n ---- LISTAGEM CONCLUIDA - PRIMA ENTER PARA VOLTAR AO MENU PRINCIPAL ---- \n");
getch();
Menu();
opMenu();
fclose(pesqAlunos);
}
}
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
WEBGRAFIA: Livro Programação em C++ - Conceitos Básicos e Algoritmos
http://codigoseficientes.blogspot.pt/2012/10/acentuacao-na-linguagem-c.html
http://pt.wikibooks.org/wiki/Programar_em_C/Entrada_e_sa%C3%ADda_simples
http://programacao1.wikidot.com/exemplos1
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Final - 1º Ano Licenciatura Informática
CONCLUSÃO: Foi um trabalho que achei interessante, gostei de o fazer embora não tivesse dedicado o tempo que pretendia, pois acho que conseguiria fazer melhor. Por motivos profissionais e alguns pessoais, faltou-me tempo para me poder dedicar mais ao trabalho e fazer mesmo o que realmente pretendia alem do que fiz. Pretendia efectuar pesquisas mais elaboradas e apresentar outras opções. Tentei fazer no menu antes da opção de SAIR a exportação dos dados para um ficheiro HTML, mas não consegui fazer tudo pelo que acabei por não por. Penso que no trabalho que efectuei, consigo aplicar tudo aquilo que fomos aprendendo ao longo do semestre, embora ache que poderia ter sido melhor explorado.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558