Ir para conteúdo
Fórum Script Brasil
  • 0

Problema para editar compromiso em agenda


AurélioG

Pergunta

Bom.. Eu fiz uma agenda de compromissos..

e to tendo problemas na hora de editar o compromisso!

o codigo esta com algum erro

plz respondam!

/**  == Includes ================================================================================== **/
#include <iostream>  //Agenda de compromissos
#include <fstream>
#include <string>
#include <conio.h>
#include <stdio.h>

/**  == Defines e Variaveis Globais =============================================================== **/
#define MaxReg 200
int controledecampo;

using namespace std;

/**  == Structs =================================================================================== **/
struct Data
{                                //structs para serem lidos no arquivo principal
    int dia;
    int mes;
    int ano;
};

struct Horario
{
   int hora;
   int min;
};

struct Compromisso
{
    char descricao[200];
    char prioridade[6];
};

struct Exibecompromisso
{
    Data data;
    Horario horario;
    Compromisso compromisso;
};

/**  == Declarando Funções ======================================================================== **/
void inserircompromisso(Exibecompromisso exibecompromisso[MaxReg], int i);   //protótipo das funções
void pesquisarcompromisso(Exibecompromisso exibecompromisso[MaxReg], int i);
void mostratudo(Exibecompromisso exibecompromisso[MaxReg], int i);
void menueditar();
void editar(Exibecompromisso exibecompromisso[MaxReg], int i);

/**  == Main ====================================================================================== **/
int main()
{
    int opcao;
    controledecampo = 0;
    struct Exibecompromisso exibecompromisso[MaxReg];
    do
    {
        system("cls");
        cout<<"*****Agenda de compromissos*****"<<endl<<endl;
        cout<<"Menu de opcoes: - Registros: "<< controledecampo <<endl<<endl;
        cout<<"(0) Inserir novo compromisso"<<endl ;
        cout<<"(1) Pesquisar compromisso"<<endl;
        cout<<"(2) Sair"<<endl<<endl;
        cout<<"Digite a opcao desejada:"<<endl;
        cin>>opcao;
        switch(opcao)
        {
            case 0:
                 inserircompromisso(exibecompromisso,controledecampo);
                 break;
            case 1:
                 pesquisarcompromisso(exibecompromisso,controledecampo);
                 break;
            default:
                 cerr<<"Opcao invalida"<<endl<<endl;
        }
    } while(opcao!=2);
}

/**  == Funções =================================================================================== **/
void mostratudo(Exibecompromisso exibecompromisso[MaxReg], int i)
{
    char a;
    char decide;
    cout<<"Os compromissos são:"<<endl;
    system("pause");
    cout<<"\nData:"<<endl;
    cout<<exibecompromisso[i].data.dia<<"/";
    cout<<exibecompromisso[i].data.mes<<"/";
    cout<<exibecompromisso[i].data.ano<<endl;

    system("pause");
    cout<<"\nHorario:"<<endl;
    cout<<exibecompromisso[i].horario.hora<<":";
    cout<<exibecompromisso[i].horario.min<<" h"<<endl;

    system("pause");
    cout<<"\nDescricao:"<<endl;
    cout<<exibecompromisso[i].compromisso.descricao<<"."<<endl;

    system("pause");
    cout<<"\nPrioridade:"<<"\n";
    cout<<exibecompromisso[i].compromisso.prioridade<<"."<<endl;
    cout<<"Deseja Editar/Remover/Continuar?E/R/C"<<endl;
    cin>>decide;
    if(decide=='E' || decide=='e')
    {
         editar(exibecompromisso,i);          
    }
    if(decide=='R' || decide=='r')
    {
         exibecompromisso[i]=exibecompromisso[--controledecampo]; 
         exibecompromisso[i].data.dia=0;
         exibecompromisso[i].data.mes=0;
         exibecompromisso[i].data.ano=0;
         exibecompromisso[i].horario.hora=0;
         exibecompromisso[i].horario.min=0;         
         cout<<"\n Este compromisso foi removido"<<endl; 
         system("pause");
    }
           
} // fecha a funcao mostratudo     


void inserircompromisso(Exibecompromisso exibecompromisso[MaxReg],int iRegistro)
{
    int i;
    bool bVerify;

    ofstream escritor;
    escritor.open("agenda.txt",ios::app);

    if(escritor.is_open())
    {
        i = iRegistro;
        bVerify = true;

        while(bVerify)
        {
            cout<<"Digite o dia do compromisso(entre 1 e 31)"<<endl;
            cin>>exibecompromisso[i].data.dia;

            if(exibecompromisso[i].data.dia>31 || exibecompromisso[i].data.dia<0){
                cerr<<"Dia invalido!\n"<<endl;
            } else {
                escritor<<exibecompromisso[i].data.dia<<"/";
                bVerify = false;
            }
        }
        bVerify = true;

        while(bVerify)
        {
            cout<<"Digite o mes do compromisso(entre 1 e 12)"<<endl;
            cin>>exibecompromisso[i].data.mes;

            if(exibecompromisso[i].data.mes>12 || exibecompromisso[i].data.mes<0){
                cerr<<"Mes invalido!\n"<<endl;
            } else {
                escritor<<exibecompromisso[i].data.mes<<"/";
                bVerify = false;
            }
        }
        bVerify = true;

        cout<<"Digite o ano do compromisso"<<endl;
        cin>>exibecompromisso[i].data.ano;
        escritor<<exibecompromisso[i].data.ano<<endl;

        while(bVerify)
        {
            cout<<"Digite a hora do compromisso"<<endl;
            cin>>exibecompromisso[i].horario.hora;

            if(exibecompromisso[i].horario.hora>23 || exibecompromisso[i].horario.hora<0){
                cerr<<"Hora invalida!\n"<<endl;
            } else {
                escritor<<exibecompromisso[i].horario.hora<<":";
                bVerify = false;
            }
        }
        bVerify = true;


        while(bVerify)
        {
            cout<<"Digite os minutos do compromisso"<<endl;
            cin>>exibecompromisso[i].horario.min;

            if(exibecompromisso[i].horario.min>59 || exibecompromisso[i].horario.min<0)
            {
                cerr<<"Minutos Invalidos!\n"<<endl;
            } else {
                escritor<<exibecompromisso[i].horario.min<<endl;
                bVerify = false;
            }
        }
        bVerify = true;

        cout<<"Descreva o compromisso(usando_nos espacos em branco)"<<endl;
        cin>>exibecompromisso[i].compromisso.descricao;
        escritor<<exibecompromisso[i].compromisso.descricao<<endl;

        while(bVerify)
        {
            cout<<"Informe a prioridade do compromisso: alta, media ou baixa?"<<endl;
            cin>>exibecompromisso[i].compromisso.prioridade;

            if ( strcmp(exibecompromisso[i].compromisso.prioridade, "alta") != 0
            && strcmp(exibecompromisso[i].compromisso.prioridade, "media") != 0
            && strcmp(exibecompromisso[i].compromisso.prioridade, "baixa") != 0
            )
            {
                cerr<<"Prioridade Invalida!\n"<<endl;
            } else {
                escritor<<exibecompromisso[i].compromisso.prioridade<<endl;
                bVerify = false;
            }
        }
        bVerify = true;

        cout<<"\n\n Compromisso salvo com sucesso"<<endl;
        escritor.close();
        controledecampo++;

    } else {
        cerr<<"Erro ao abrir o arquivo"<<endl;
    }
   system("pause");
}


void pesquisarcompromisso(Exibecompromisso exibecompromisso[MaxReg], int i)
{
    ifstream leitor;
    char a,b,c[100],d[5];
    leitor.open("agenda.txt");
    if(! leitor.is_open())
    {
    cerr<<"Erro ao abrir o arquivo"<<endl;
    system("pause");
    }
    leitor>>controledecampo;
    while(controledecampo>0)
    {
        Exibecompromisso registro;
        leitor>>a;
        leitor>>b;
        leitor>>c;
        leitor>>d;
        cout<<a<<endl;
        cout<<b<<endl;
        cout<<c<<endl;
        cout<<d<<endl;
        system("pause");
        controledecampo--;
        }
        leitor.close();
}

void menueditar(){
    cout << "\n\tVoce deseja editar:\n\n";
    cout << "\n\n\t  \xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB\n";
    cout << "\t  \xBA \t\t\t1) Dia.\t\t\t\t\xBA\n";
    cout << "\t  \xBA \t\t\t2) Mes.\t\t\t\t\xBA\n";
    cout << "\t  \xBA \t\t\t3) Ano.\t\t\t\t\xBA\n";
    cout << "\t  \xBA \t\t\t4) Horas.\t\t\t\t\xBA\n";
    cout << "\t  \xBA \t\t\t5) Minutos.\t\t\t\t\xBA\n";
    cout << "\t  \xBA \t\t\t6) Descricao.\t\t\t\t\xBA\n";
    cout << "\t  \xBA \t\t\t7) Prioridade.\t\t\t\t\xBA\n";
    cout << "\t  \xBA \t\t\t8) Sair.\t\t\t\t\xBA\n";
    cout << "\t  \xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC\n";
}// fecha a funcao menueditar


void editar(Exibecompromisso exibecompromisso[MaxReg], int i)
{
     system("cls");
     int opcao,valor;
     char vetor[200];
     menueditar();
     while(opcao !=8)
     {
           cout << "\n\t   Codigo: ";      
           cin>>opcao;      
           switch(opcao)
           {
              case 1:
                   cout << "\n\n\tDia: ";
                        cin>>valor;
                        if(valor==exibecompromisso[i].data.dia)
                        {
                            exibecompromisso[i].data.dia=valor;
                        } else {
                            getch();
                            system ("cls");
                            mostratudo( exibecompromisso, i);
                            menueditar();
                        }
                        break;                                   
              
              case 2:
                   cout << "\n\n\tMes:  ";
                        cin>>valor;
                        if(exibecompromisso[i].data.mes == valor)
                        {
                            valor = exibecompromisso[i].data.mes;
                        } else {
                            getch();
                            system ("cls");
                            mostratudo( exibecompromisso, i);
                            menueditar();
                        }
                        break;
              
              case 3:
                        cout << "\n\nAno\t:  ";
                        cin>>valor;
                        if(exibecompromisso[i].data.ano == valor)
                        {
                            valor = exibecompromisso[i].data.ano;
                        } else {
                            getch();
                            system ("cls");
                            mostratudo( exibecompromisso, i);
                            menueditar();
                        }
                        break;
              
              case 4:
                        cout << "\n\nHoras\t:  ";
                        cin>>valor;
                        if(exibecompromisso[i].horario.hora == valor)
                        {
                            valor = exibecompromisso[i].horario.hora;
                        } else {
                            getch();
                            system ("cls");
                            mostratudo( exibecompromisso, i);
                            menueditar();
                        }
                        break;
               
               case 5 :
                        cout << "\n\nMinutos\t:  ";
                        cin>>valor;
                        if(exibecompromisso[i].horario.min == valor)
                        {
                            valor = exibecompromisso[i].horario.min;
                        } else {
                            getch();
                            system ("cls");
                            mostratudo( exibecompromisso, i);
                            menueditar();
                        }
                        break;

                case 6 :
                        cout << "\n\nDescricao\t:  ";
                        cin>>vetor;
                        if(exibecompromisso[i].compromisso.descricao == vetor)
                        {
                            strcpy(exibecompromisso[i].compromisso.descricao, vetor);
                        } else {
                            getch();
                            system ("cls");
                            mostratudo( exibecompromisso, i);
                            menueditar();
                        }
                        break;
                case 7 :
                        cout << "\n\nPrioridade\t:  ";
                        cin>>vetor;
                        if(exibecompromisso[i].compromisso.prioridade == vetor)
                        {
                            strcpy(exibecompromisso[i].compromisso.prioridade, vetor);
                        } else {
                            getch();
                            system ("cls");
                            mostratudo( exibecompromisso, i);
                            menueditar();
                        }
                        break;
                     default:
                         cerr<<"Codigo invalido"<<endl;
}//fecha switch
}//fecha while
}//fecha função editar

vlw

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu to com um problema tamem sabe , é tipo alguma coisa que eu não sei falar.

-.-'

Fala qual é o problema , se é uma variavel ou coisa assim , ae evita ter que ler o código todo .

Outra coisa , pelo amor de deus NÃO USA O SYSTEM("PAUSE") , isso não segue os padrões , use scanf("%*s");

E me fala , seu código é em C ou C++ ?

iostream é C++

stdio é C

CONIO.H É uma biblioteca MUITO ANTIGA , e NÃO deve ser usada Nunca.

misturar códigos C com C++ não segue os padrões.

Melhora seu código que eu animo olhar ele.

E outra coisa , pensa um pouco no que ta fazendo antes de começar , prefira escrever a lógica do programa , e depois partir pra escrita dele.

Exemplo

Iniciar -> Chamar o Menu -> Valor digitado { Opção 1 : Funcao1(); Opção 2 : OutraFuncao(); Opção 3 : Sair() }

Funcao1() {

Inserir dados na estrutura XXX;

...

Perguntar se quer continuar s/n

caso s : Menu(); do contrario Sair();

Pode tambem ser usado a linguagem UML para diagramação das funções e variaveis o que torna seu código muito mais eficiente e te ajuda na criação.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...