Jump to content

Sistema de Mensagens - dúvida


gotak
 Share

Recommended Posts

boas, estou a fazer um programa em c, mas estou com uma dúvida se alguem me pudesse esclarecer, agradecia

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

#define MAX_MENSAGEM 500
#define MAX_USER 50

struct tagUser{
char idUser[20];
char password[10];
char nome[20];
};

struct tagNew{
char newUser[10];
char newPassword[10];
};

struct tagMensag{
int user_orig;
int user_dest;
int data;
int hora;
int assunto;
int corpo_mensag;
};

void menu_principal();
void menu_admin();
void menu_geral();
int main ()
{

int result;
int opcao2;
int opcao;
struct tagUser username;
struct tagNew newacc;
struct tagMensag mensagem;

do{
	menu_principal();
	scanf("%i", &opcao);

	if(opcao==1)
		switch (opcao)
	{
		case 1:
			printf("\nUsername: \n");
			fflush(stdin);
			gets(username.idUser);
			printf("\nPassword: \n");
			gets(username.password);

			result = strcmp(username.idUser, "sa");
			result = strcmp(username.password, "sa");
			if(result==0){

		menu_admin();
		scanf("%i", &opcao2);

		switch (opcao2)
		{
		case 1:
			if(opcao==1)
				printf("ID do User: \n");
			fflush(stdin);
			gets(newacc.newUser);
			printf("Password do User: \n");
			gets(newacc.newPassword);
			break;
		}
		}
		else
		{
			printf("Erro\n");
		}
		break;
}
}while(opcao != 2);

return 0;
}
void menu_principal()
{
printf("\n******** Menu ********\n");
printf("*   1 - Log On:      *\n");
printf("*   2 - Terminar     *\n");
printf("**********************\n");
printf("Indique a opcao pretendida:");
}
void menu_admin()
{
printf("\n********* System Menu *********\n");
printf("*   1 - Criar Utilizadores      *\n");
printf("*   2 - Apagar Utilizadores     *\n");
printf("*   3 - Ler Mensagens           *\n");
printf("*   4 - Enviar Mensagens        *\n");
printf("*   5 - Apagar Mensagens        *\n");
printf("*                               *\n");
printf("*   0 - Sair                    *\n");
printf("*********************************\n");
printf("Indique a opcao pretendida:");
}

só que quero guardar os utilizadores criados, mas não sei como guardar, penso q seja com o array mas nao tenho a certeza se puderem ajudar.

cumps,

gotak

Link to comment
Share on other sites

Boa noite,

Basicamente, a tua pergunta é "Como armazenar dados?" . Como deves calcular, essa pergunta tem uma resposta bastante complexa. Porém, no âmbito do que pretendes fazer, a resposta é simples: ou usas um array, ou uma lista, ou uma Hash table, ou uma árvore, ou qualquer outra estrutura de dados simples. Parece-me que o que pretendes é somente algo que funcione e seja o mais simples possível, pelo que eu diria que o pretendes é realmente um array, como dizes.

Escreves no teu código "#define MAX_USER 50", pelo que depreendo que não vai ser possível criar mais que 50 utilizadores. Sendo assim, crias um vector de 50 utilizadores:

struct tagUser utilizadores[50];

Agora, precisas de um índice que te indique a última posição do vector que contém um utilizador.

int i = -1;

Sempre que i < 0, não existem utilizadores criados.

Agora, cada vez que pretendes criar um utilizador:

struct tagUser novo_utilizador;

/*inicialização do novo_utilizador*/

utilizadores[++i] = novo_utilizador;

Nota que: ++i é diferente de i++.

Espero ter ajudado,

Tomás

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.