Welcome to Shadow Network

Seja bem-vindo ao nosso fórum, registre-se para poder interagir em nosso fórum

Entre para seguir isso  
Seguidores 0
zykaimo

[ESTUDO]
Cadastro Básico em C

4 posts neste tópico

======================================================================
[Objetivo: Aplicação Cadastro de Alunos]
[Estrutura de Dados: Arquivo] [Versão Modularizada]
[Declaração de Tipos Globais]
[Os tipos globais são visíveis em todos os módulos]
[São declarados fora dos módulos]
Treg_alunos = Registro
matricula: inteiro
nome: literal[30]
endereco: literal[40]
cidade: literal[15]
telefone: literal[15]
Fim-Registro
Tarq_alunos = arquivo de Treg_alunos
======================================================================
[Módulo Principal]
Algoritmo Cadastro_Alunos
1-[Início]
2-[Declaração de Variáveis Locais]
reg_alunos : Treg_alunos
opcao, matricula: inteiro
cidade: literal[30]
3-[Processamento]
Repita
Escreva("1 - Cadastro de Alunos")
Escreva("2 – Pesquisa por Matrícula")
Escreva("3 – Pesquisa por Cidade")
Escreva("4 – Relatório Geral")
Escreva("5 - Sair")
Escreva("Escolha Opção: ")
Leia(opcao)
Escolha (opcao)
Caso opcao = 1 : cadastro()
Caso opcao = 2 : Escreva(“Matricula:”)
Leia(matricula)
reg_alunos  Pesquisa_matricula(matricula)
Se (reg_alunos.matricula <> 0)
Entao
Escreva(reg_alunos.nome)
Escreva(reg_alunos.endereco)
Escreva(reg_alunos.cidade)
Escreva(reg_alunos.telefone)
Senao
Escreva(“Matrícula Inexistente!”)
Fim-Se
Caso opcao = 3 : Escreva(“Cidade:”)
Leia(cidade)
Pesquisa_cidade(cidade)
Caso opcao = 4 : relatorio_geral()
Caso opcao = 5 : Escreva(“Encerrando!”)
Senao
Escreva(“Opção Inválida!”)
Fim-escolha
Ate (opcao = 5)
4-[Fim]
======================================================================
[Módulo Cadastro]
Procedimento cadastro()
1–[Início]
2-[Declaração de Variáveis Locais]
reg_alunos : Treg_alunos
arq_alunos : Tarq_alunos
3-[Processamento]
Abra arquivo(arq_alunos)
Leia(reg_alunos.matricula)
Enquanto (reg_alunos.matricula > 0) Faca
Repita
Leia(reg_alunos.nome)
Ate (reg_alunos.nome <> “”)
Leia(reg_alunos.endereco)
Leia(reg_alunos.cidade)
Leia(reg_alunos.telefone)
Escreva registro(arq_alunos, reg_alunos)
Leia (reg_alunos.matricula)
Fim_Enquanto
Feche arquivo(arq_alunos)
4-[Fim]
======================================================================
[Módulo pesquisa_matricula]
Funcao pesquisa_matricula(matricula: inteiro) : Treg_alunos
1–[Início]
2-[Declaração de Variáveis Locais]
reg_alunos : Treg_alunos
arq_alunos : Tarq_alunos
3-[Processamento]
Abra arquivo(arq_alunos)
Leia registro(arq_alunos, reg_alunos)
Enquanto (nao EOF(arq_alunos)) E (reg_alunos.matricula <> matricula) Faca
Leia registro(arq_alunos, reg_alunos)
Fim-Enquanto
Se (EOF(arq_alunos)= verdadeiro) [se fim de arquivo]
Entao
Reg_alunos.matricula  0
Fim-Se
Feche arquivo(arq_alunos)
Retorne reg_alunos
4-[Fim]
======================================================================
[Módulo pesquisa_cidade]
Funcao pesquisa_cidade(cidade: literal[15])
1–[Início]
2-[Declaração de Variáveis]
reg_alunos : Treg_alunos
arq_alunos : Tarq_alunos
3-[Processamento]
Abra arquivo(arq_alunos)
Leia registro(arq_alunos, reg_alunos)
Enquanto (nao EOF(arq_alunos)) Faca
Se (reg_alunos.cidade = cidade)
Entao
Escreva(reg_alunos.matricula)
Escreva(reg_alunos.nome)
Escreva(reg_alunos.endereco)
Escreva(reg_alunos.telefone)
Fim-Se
Leia registro(arq_alunos, reg_alunos)
Fim-Enquanto
Feche arquivo(arq_alunos)
4-[Fim]
======================================================================
[Módulo relatorio_geral]
Funcao relatorio_geral()
1–[Início]
2-[Declaração de Variáveis]
reg_alunos : Treg_alunos
arq_alunos : Tarq_alunos
3-[Processamento]
Abra arquivo(arq_alunos)
Leia registro(arq_alunos, reg_alunos)
Enquanto (nao EOF(arq_alunos)) Faca
Escreva(reg_alunos.matricula)
Escreva(reg_alunos.nome)
Escreva(reg_alunos.endereco)
Escreva(reg_alunos.cidade)
Escreva(reg_alunos.telefone)
Leia registro(arq_alunos, reg_alunos)
Fim-Enquanto
Feche arquivo(arq_alunos)
4-[Fim]

-1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito legal, não sei qual o nível que está o código, não sou programador C.

Mas deve ajudar muitos que está aprendendo essa área.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem... de fato eh um sistema de cadastro básico, mas não acho que possa dizer que está em C... Tá mais pra lógica de programação básica x^D

 

além disso o código está um pouco confuso de se entender ainda mais pra quem esta começando pois não tem nenhum tipo de comentario explicativo.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom já que se passou algum tempo e o dono do tópico ainda não se manifestou eu resolvi transcrever o pseudocódigo para C...

 

CABEÇALHO :

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    int matricula;
    char nome[30];
    char endereco[60];
    char cidade[15];
    char telefone[15];
}Treg_alunos;

typedef FILE *Tarq_alunos;

void cadastro();
Treg_alunos pesquisa_matricula(int matricula);
void pesquisa_cidade(char cidade[15]);
void relatorio_geral();
void registro(Tarq_alunos arq_alunos, Treg_alunos* reg_alunos);

 

MÓDULO PRINCIPAL :

#include "cadastro_alunos.h"

void registro(Tarq_alunos arq_alunos, Treg_alunos* reg_alunos)
{
    char str_matricula[5];
	fscanf(arq_alunos, "%[^';'];%[^';'];%[^';'];%[^';'];%s", str_matricula, reg_alunos->nome, reg_alunos->endereco, reg_alunos->cidade, reg_alunos->telefone);
   	reg_alunos->matricula = atoi(str_matricula);
}

int main()
{
    Treg_alunos reg_alunos;
    int opcao, matricula;
    char cidade[15];

    while(opcao != 5)
    {
        printf("1 - Cadastro de Alunos\n");
        printf("2 - Pesquisa por Matricula\n");
        printf("3 - Pesquisa por Cidade\n");
        printf("4 - Relatorio Geral\n");
        printf("5 - Sair\n");
        printf("Escolha Opcao: ");
        scanf("%d", &opcao);

        switch(opcao)
        {
            case 1: {cadastro(); break;}
            case 2:
            {
                printf("Matricula: ");
                setbuf(stdin, NULL);
                scanf("%d", &matricula);
                reg_alunos = pesquisa_matricula(matricula);
                if(reg_alunos.matricula != 0)
                {
                    printf("%s\n", reg_alunos.nome);
                    printf("%s\n", reg_alunos.endereco);
                    printf("%s\n", reg_alunos.cidade);
                    printf("%s\n", reg_alunos.telefone);
                }
                else printf("Matricula Inexistente!\n");
                break;
            }
            case 3:
            {
                printf("Cidade: ");
                setbuf(stdin, NULL);
                scanf("%14[^\n]", cidade);
                pesquisa_cidade(cidade);
                break;
            }
            case 4: {relatorio_geral(); break;}
            case 5: {printf("Encerrando!\n"); break;}
            default: {printf("Opcao Invalida!\n"); break;}
        }

    }
    return 0;
}

 

CADASTRO :

#include "cadastro_alunos.h"

void cadastro()
{
    Treg_alunos reg_alunos, tmp;
    
    printf("Matricula: ");
    setbuf(stdin, NULL);
    scanf("%d", &reg_alunos.matricula);
    
    if(reg_alunos.matricula > 0)
	{
	    Tarq_alunos arq_alunos = fopen("Registro.txt", "a+");
	    registro(arq_alunos, &tmp);
		while(!feof(arq_alunos) && tmp.matricula != reg_alunos.matricula)
			registro(arq_alunos, &tmp);
		if(tmp.matricula == reg_alunos.matricula)
		{
			printf("Erro: Numero de Matricula ja esta cadastrado!\n");
			cadastro();	
		}
		else
		{
			printf("Nome: ");
			setbuf(stdin, NULL);
			scanf("%29[^\n]", reg_alunos.nome);
			    
		    printf("Endereco: ");
		    setbuf(stdin, NULL);
		    scanf("%59[^\n]", reg_alunos.endereco);
		    
		    printf("Cidade: ");
		    setbuf(stdin, NULL);
		    scanf("%14[^\n]", reg_alunos.cidade);
			    
		    printf("Telefone: ");
		    setbuf(stdin, NULL);
		    scanf("%14[^\n]", reg_alunos.telefone);
			
		    fprintf(arq_alunos, "%d;%s;%s;%s;%s\n", reg_alunos.matricula, reg_alunos.nome, reg_alunos.endereco, reg_alunos.cidade, reg_alunos.telefone);
		    printf("Cadastrado com sucesso!\n");
		}
	    fclose(arq_alunos);
	}
}

 

PESQUISA POR MATRICULA:

#include "cadastro_alunos.h"

Treg_alunos pesquisa_matricula(int matricula)
{
    Treg_alunos reg_alunos;
    
    Tarq_alunos arq_alunos = fopen("Registro.txt", "r");
    
	if(arq_alunos != NULL)
    {
    	registro(arq_alunos, &reg_alunos);
        while((!feof(arq_alunos)) && (reg_alunos.matricula != matricula))
			registro(arq_alunos, &reg_alunos);
        if(feof(arq_alunos)) reg_alunos.matricula = 0;
        fclose(arq_alunos);
    }
    else perror("Error: ");
    return reg_alunos;
}

 

PESQUISA POR CIDADE :

#include "cadastro_alunos.h"
#include <string.h>

void pesquisa_cidade(char cidade[15])
{
    Treg_alunos reg_alunos;

    Tarq_alunos arq_alunos = fopen("Registro.txt", "r");    
    if(arq_alunos == NULL) return perror("Error: ");
    
	registro(arq_alunos, &reg_alunos);
    while(!feof(arq_alunos))
    {
        if(strcmp(reg_alunos.cidade, cidade) == 0)
        {
            printf("%d\n",reg_alunos.matricula);
            printf("%s\n",reg_alunos.nome);
            printf("%s\n",reg_alunos.endereco);
            printf("%s\n",reg_alunos.telefone);
        }
        registro(arq_alunos, &reg_alunos);
    }
    
    fclose(arq_alunos);
}

 

RELATÓRIO GERAL :

#include "cadastro_alunos.h"

void relatorio_geral()
{
    Treg_alunos reg_alunos;
    
    Tarq_alunos arq_alunos = fopen("Registro.txt", "r");
    if(arq_alunos == NULL) return perror("Error: ");
    
    registro(arq_alunos, &reg_alunos);
    while(!feof(arq_alunos))
    {
        printf("%d\n",reg_alunos.matricula);
        printf("%s\n",reg_alunos.nome);
        printf("%s\n",reg_alunos.endereco);
        printf("%s\n",reg_alunos.cidade);
        printf("%s\n",reg_alunos.telefone);
        registro(arq_alunos, &reg_alunos);
    }
    fclose(arq_alunos);
}

 

2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora
Entre para seguir isso  
Seguidores 0

Shadow Network

Seja Bem-Vindo ao nosso fórum, construído com o intuito de compartilhar idéias e conhecimentos ao alcance de qualquer pessoa que tenha vontade de aprender.

Atencao

Em caso de bugs/erros no forum, entre em contato com algum membro da equipe.