Mudanças entre as edições de "Projeto de Programação 1 - Programa Controle de Acesso"
Ir para navegação
Ir para pesquisar
Linha 14: | Linha 14: | ||
== Implementações básicas para a Interface GUI == | == Implementações básicas para a Interface GUI == | ||
==== Criando e configurando a janela do Administrador ==== | ==== Criando e configurando a janela do Administrador ==== | ||
− | + | ||
+ | <syntaxhighlight lang=c> | ||
/** Funções para se iniciar e configurar a janela administrador do Controle de Acesso de usuário **/ | /** Funções para se iniciar e configurar a janela administrador do Controle de Acesso de usuário **/ | ||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | ||
Linha 21: | Linha 22: | ||
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); | gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); | ||
gtk_container_set_border_width(GTK_CONTAINER(window), 5); | gtk_container_set_border_width(GTK_CONTAINER(window), 5); | ||
− | + | </syntaxhighlight> | |
==== Criando frames para divisão de espaços para a janela ==== | ==== Criando frames para divisão de espaços para a janela ==== | ||
− | + | <syntaxhighlight lang=c> | |
/** Funções para dividir a janela em dois frames: o primeiro (da esquerda) será um campo fixo e o segundo(da direita) conterá as atividades do administrador **/ | /** Funções para dividir a janela em dois frames: o primeiro (da esquerda) será um campo fixo e o segundo(da direita) conterá as atividades do administrador **/ | ||
table1 = gtk_table_new(2, 2, TRUE); | table1 = gtk_table_new(2, 2, TRUE); | ||
Linha 41: | Linha 42: | ||
gtk_table_attach_defaults(GTK_TABLE(table1), frame2, 1, 2, 0, 2); | gtk_table_attach_defaults(GTK_TABLE(table1), frame2, 1, 2, 0, 2); | ||
gtk_table_attach_defaults(GTK_TABLE(table1), frame3, 0, 1, 1, 2); | gtk_table_attach_defaults(GTK_TABLE(table1), frame3, 0, 1, 1, 2); | ||
− | + | </syntaxhighlight> | |
==== Botão HOME e mensagen de Boas Vindas ==== | ==== Botão HOME e mensagen de Boas Vindas ==== | ||
− | + | <syntaxhighlight lang=c> | |
/** Caixa que conterá itens do menu esquerdo - campo fixo **/ | /** Caixa que conterá itens do menu esquerdo - campo fixo **/ | ||
/** Funções para criar o botão HOME **/ | /** Funções para criar o botão HOME **/ | ||
Linha 66: | Linha 67: | ||
/** Função do botão HOME **/ | /** Função do botão HOME **/ | ||
g_signal_connect(G_OBJECT(botaoHome), "clicked", G_CALLBACK(gtk_widget_show_all), NULL); | g_signal_connect(G_OBJECT(botaoHome), "clicked", G_CALLBACK(gtk_widget_show_all), NULL); | ||
− | + | </syntaxhighlight> | |
==== Funções para fechar a janela e mostrar todos os seus itens ==== | ==== Funções para fechar a janela e mostrar todos os seus itens ==== | ||
− | + | <syntaxhighlight lang=c> | |
g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), G_OBJECT(window)); | g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), G_OBJECT(window)); | ||
/** Função para mostrar todos os itens da janela **/ | /** Função para mostrar todos os itens da janela **/ | ||
gtk_widget_show_all(window); | gtk_widget_show_all(window); | ||
− | + | </syntaxhighlight> | |
== Ações do Administrador == | == Ações do Administrador == | ||
==== Bloquear Usuário ==== | ==== Bloquear Usuário ==== | ||
− | + | <syntaxhighlight lang=c> | |
case 1: /*** PARA BLOQUEAR USUÁRIO ***/ | case 1: /*** PARA BLOQUEAR USUÁRIO ***/ | ||
printf("\nPara bloquear usuário:\n"); | printf("\nPara bloquear usuário:\n"); | ||
Linha 106: | Linha 107: | ||
printf("\nUsuário não cadastrado!\n"); | printf("\nUsuário não cadastrado!\n"); | ||
break; | break; | ||
− | + | </syntaxhighlight> | |
+ | |||
==== Cadastrar novo Usuário ==== | ==== Cadastrar novo Usuário ==== | ||
− | + | <syntaxhighlight lang=c> | |
case 2: /*** PARA CADASTRAR NOVO USUÁRIO ***/ | case 2: /*** PARA CADASTRAR NOVO USUÁRIO ***/ | ||
printf("\nPara cadastrar novo usuário: "); | printf("\nPara cadastrar novo usuário: "); | ||
Linha 147: | Linha 149: | ||
} | } | ||
break; | break; | ||
+ | </syntaxhighlight> | ||
==== Desbloquear um Usuário ==== | ==== Desbloquear um Usuário ==== | ||
− | + | <syntaxhighlight lang=c> | |
case 3: /*** PARA DESBLOQUEAR USUÁRIO ***/ | case 3: /*** PARA DESBLOQUEAR USUÁRIO ***/ | ||
printf("\nPara desbloquear usuário:\n"); | printf("\nPara desbloquear usuário:\n"); | ||
Linha 176: | Linha 179: | ||
printf("\nUsuário não cadastrado!\n"); | printf("\nUsuário não cadastrado!\n"); | ||
break; | break; | ||
− | + | </syntaxhighlight> | |
==== Excluir um Usuário ==== | ==== Excluir um Usuário ==== | ||
− | + | <syntaxhighlight lang=c> | |
case 4: /*** PARA EXCLUIR UM USUÁRIO ***/ | case 4: /*** PARA EXCLUIR UM USUÁRIO ***/ | ||
printf("\nDigite o nome de usuário que deseja excluir: "); | printf("\nDigite o nome de usuário que deseja excluir: "); | ||
Linha 205: | Linha 208: | ||
break; | break; | ||
+ | </syntaxhighlight> | ||
==== Imprimir Tabela de Usuários ==== | ==== Imprimir Tabela de Usuários ==== | ||
− | + | <syntaxhighlight lang=c> | |
case 5: /*** PARA IMPRIMIR TABELA DE USUÁRIOS. ***/ | case 5: /*** PARA IMPRIMIR TABELA DE USUÁRIOS. ***/ | ||
printf("\nListando tabela de usuários cadastrados...\n"); | printf("\nListando tabela de usuários cadastrados...\n"); | ||
Linha 217: | Linha 221: | ||
printf("\n\nNúmero de usuários cadastrados: %d\n", cont); | printf("\n\nNúmero de usuários cadastrados: %d\n", cont); | ||
break; | break; | ||
− | + | </syntaxhighlight> | |
==== Limpar Lista de Usuários ==== | ==== Limpar Lista de Usuários ==== | ||
− | + | <syntaxhighlight lang=c> | |
case 6: /*** PARA LIMPAR LISTA DE USUÁRIOS ***/ | case 6: /*** PARA LIMPAR LISTA DE USUÁRIOS ***/ | ||
printf("\nLimpando tabela de usuários...\n"); | printf("\nLimpando tabela de usuários...\n"); | ||
Linha 230: | Linha 234: | ||
} | } | ||
break; | break; | ||
− | + | </syntaxhighlight> | |
==== Modificar mensagem particular do Usuário ==== | ==== Modificar mensagem particular do Usuário ==== | ||
− | + | <syntaxhighlight lang=c> | |
case 7: /*** PARA MODIFICAR MENSAGEM PARTICULAR DO USUÁRIO. ***/ | case 7: /*** PARA MODIFICAR MENSAGEM PARTICULAR DO USUÁRIO. ***/ | ||
printf("\nPara modificar mensagem particular do usuário:\n"); | printf("\nPara modificar mensagem particular do usuário:\n"); | ||
Linha 256: | Linha 260: | ||
printf("\nUsuário não cadastrado!\n"); | printf("\nUsuário não cadastrado!\n"); | ||
break; | break; | ||
− | + | </syntaxhighlight> | |
==== Modificar mensagem padrão ==== | ==== Modificar mensagem padrão ==== | ||
− | + | <syntaxhighlight lang=c> | |
case 13: /*** PARA MODIFICAR MENSAGEM PADRAO ***/ | case 13: /*** PARA MODIFICAR MENSAGEM PADRAO ***/ | ||
printf("\nPara modificar mensagem padrão:\n"); | printf("\nPara modificar mensagem padrão:\n"); | ||
Linha 269: | Linha 273: | ||
printf("\nMensagem padrão modificada com sucesso!\n"); | printf("\nMensagem padrão modificada com sucesso!\n"); | ||
break; | break; | ||
− | + | </syntaxhighlight> | |
==== Modificar senha do Administrador ==== | ==== Modificar senha do Administrador ==== | ||
− | + | <syntaxhighlight lang=c> | |
case 15: /*** PARA MODIFICAR SENHA DO ADMINISTRADOR ***/ | case 15: /*** PARA MODIFICAR SENHA DO ADMINISTRADOR ***/ | ||
printf("\nPara modificar senha do administrador:\n"); | printf("\nPara modificar senha do administrador:\n"); | ||
Linha 300: | Linha 304: | ||
} | } | ||
break; | break; | ||
− | + | </syntaxhighlight> | |
== Interface do Administrador (GUI) == | == Interface do Administrador (GUI) == | ||
Linha 307: | Linha 311: | ||
Abaixo encontra-se um exemplo de chamada de funções do GTK para acessar opções de atividades do Administrador: | Abaixo encontra-se um exemplo de chamada de funções do GTK para acessar opções de atividades do Administrador: | ||
− | + | <syntaxhighlight lang=c> | |
/** Chamadas funções para usuário **/ | /** Chamadas funções para usuário **/ | ||
void BloquearUser_clicked(GtkWidget *widget, gpointer data) | void BloquearUser_clicked(GtkWidget *widget, gpointer data) | ||
Linha 320: | Linha 324: | ||
administrar(8, userID, senha); | administrar(8, userID, senha); | ||
} | } | ||
− | + | </syntaxhighlight> | |
==== Tabela contendo os botões de atividades do Administrador ==== | ==== Tabela contendo os botões de atividades do Administrador ==== | ||
Tais botões estarão chamando os tipos de funções mostrados acima e são criados seguindo o exemplo abaixo: | Tais botões estarão chamando os tipos de funções mostrados acima e são criados seguindo o exemplo abaixo: | ||
− | + | <syntaxhighlight lang=c> | |
/** Caixa que conterá as atividades do administrador **/ | /** Caixa que conterá as atividades do administrador **/ | ||
vbox1 = gtk_vbox_new(FALSE, 1); | vbox1 = gtk_vbox_new(FALSE, 1); | ||
Linha 350: | Linha 354: | ||
/* Função do botão "Bloquear administrador"*/ | /* Função do botão "Bloquear administrador"*/ | ||
g_signal_connect(G_OBJECT(BloquearAdmin), "clicked", G_CALLBACK(BloquearAdmin_clicked), NULL); | g_signal_connect(G_OBJECT(BloquearAdmin), "clicked", G_CALLBACK(BloquearAdmin_clicked), NULL); | ||
+ | </syntaxhighlight> |
Edição das 21h30min de 8 de abril de 2013
Proposta de trabalho:
- Sistema de controle de acesso;
- Interface GUI para o administrador;
- Interface usuário GUI simulando o display LCD;
- Arquivo de log de entrada/saída de usuários com horário e data;
- Armazenamento da base de dados em arquivo;
- Prever possibilidade de vários administradores;
Sistema de controle de acesso
Implementações básicas para a Interface GUI
Criando e configurando a janela do Administrador
/** Funções para se iniciar e configurar a janela administrador do Controle de Acesso de usuário **/
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Controle de Acesso de Usuário - Administrador");
gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(window), 5);
Criando frames para divisão de espaços para a janela
/** Funções para dividir a janela em dois frames: o primeiro (da esquerda) será um campo fixo e o segundo(da direita) conterá as atividades do administrador **/
table1 = gtk_table_new(2, 2, TRUE);
gtk_table_set_row_spacings(GTK_TABLE(table1), 10);
gtk_table_set_col_spacings(GTK_TABLE(table1), 10);
gtk_container_add(GTK_CONTAINER(window), table1);
frame1 = gtk_frame_new("Bem Vindo");
gtk_frame_set_shadow_type(GTK_FRAME(frame1), GTK_SHADOW_IN);
frame2 = gtk_frame_new("Opções de Gerenciamento");
gtk_frame_set_shadow_type(GTK_FRAME(frame2), GTK_SHADOW_IN);
frame3 = gtk_frame_new("Log de acesso");
gtk_frame_set_shadow_type(GTK_FRAME(frame3), GTK_SHADOW_IN);
gtk_table_attach_defaults(GTK_TABLE(table1), frame1, 0, 1, 0, 1);
gtk_table_attach_defaults(GTK_TABLE(table1), frame2, 1, 2, 0, 2);
gtk_table_attach_defaults(GTK_TABLE(table1), frame3, 0, 1, 1, 2);
Botão HOME e mensagen de Boas Vindas
/** Caixa que conterá itens do menu esquerdo - campo fixo **/
/** Funções para criar o botão HOME **/
/** Mensagem de boas vindas ao usuário **/
vbox2 = gtk_vbox_new(FALSE, 10);
hbox2 = gtk_hbox_new(FALSE, 10);
halign2 = gtk_alignment_new (0,1,0,0);
botaoHome = gtk_button_new_with_label ("Home");
gtk_widget_set_size_request(botaoHome, 70, 35);
boasvindas = gtk_label_new ("Bom Dia Administrador!");
gtk_box_pack_start(GTK_BOX (hbox2), botaoHome, FALSE, TRUE, 10);
gtk_box_pack_start(GTK_BOX (hbox2), boasvindas, FALSE, TRUE, 10);
gtk_container_add (GTK_CONTAINER (halign2), hbox2);
gtk_box_pack_start(GTK_BOX (vbox2), halign2, FALSE, FALSE, 0);
gtk_container_add(GTK_CONTAINER(frame1), vbox2);
/** Função do botão HOME **/
g_signal_connect(G_OBJECT(botaoHome), "clicked", G_CALLBACK(gtk_widget_show_all), NULL);
Funções para fechar a janela e mostrar todos os seus itens
g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), G_OBJECT(window));
/** Função para mostrar todos os itens da janela **/
gtk_widget_show_all(window);
Ações do Administrador
Bloquear Usuário
case 1: /*** PARA BLOQUEAR USUÁRIO ***/
printf("\nPara bloquear usuário:\n");
printf("\nEntre com o nome do usuário a ser bloqueado: ");
scanf(" %s", userID);
/* Loop para encontrar o usuário na tabela */
for (aux=0, userEncontrado=1;aux<TAB_USER && userEncontrado;aux++) {
if( strcmp(userID, TabelaUsuarios[aux].UserId)==0)
userEncontrado=0;
}
/* Se o usuário for encontrado será bloqueado */
if (userEncontrado==0) {
aux--;
if (TabelaUsuarios[aux].ContUser>=3) {
printf("\nUsuário encontrado já bloqueado!\n");
} else{
printf("\nBloqueando usuário...\n");
TabelaUsuarios[aux].ContUser = 3;
/* Condição para verificar o sucesso da operação.*/
if(TabelaUsuarios[aux].ContUser>=3)
printf("\nUsuário bloqueado com sucesso!\n");
}
} else
printf("\nUsuário não cadastrado!\n");
break;
Cadastrar novo Usuário
case 2: /*** PARA CADASTRAR NOVO USUÁRIO ***/
printf("\nPara cadastrar novo usuário: ");
/* Loop para encontrar o final da tabela */
for(i=0;TabelaUsuarios[i].UserId[0] && i<TAB_USER;i++)
aux++;
/* Condição para novo cadastro.*/
if (i==TAB_USER)
printf("\nLimite de cadastro de usuários atingido.\n");
else {
printf("\nEntre com um novo nome de Usuário:\n");
scanf(" %s", userID);
/* Loop para encontrar o usuário na tabela */
for (i=0; i<aux && userEncontrado; i++) {
if( strcmp(userID, TabelaUsuarios[i].UserId)==0)
userEncontrado=0;
}
/* Se o usuário for encontrado já está cadastrado. */
if (userEncontrado==0)
printf("\nUsuário já cadastrado.Tente novamente com outro usuário.\n");
else {
strcat(TabelaUsuarios[aux].UserId,userID);
printf("\nEntre com uma nova senha para o novo usuário %s:\n", userID);
scanf(" %s", senha);
strcat(TabelaUsuarios[aux].Senha,senha);
strcat(TabelaUsuarios[aux].MsgUser,"Bom Dia");
/* Condição para verificar o sucesso da operação.*/
if(strcmp(userID, TabelaUsuarios[aux].UserId)==0 && strcmp(senha, TabelaUsuarios[aux].Senha)==0)
printf("\nNovo usuário '%s' cadastrado com sucesso!\n", TabelaUsuarios[aux].UserId);
}
}
break;
Desbloquear um Usuário
case 3: /*** PARA DESBLOQUEAR USUÁRIO ***/
printf("\nPara desbloquear usuário:\n");
printf("\nEntre com o nome do usuário a ser desbloqueado: ");
scanf(" %s", userID);
/* Loop para encontrar o usuário na tabela */
for (aux=0;aux<TAB_USER && userEncontrado;aux++) {
if( strcmp(userID, TabelaUsuarios[aux].UserId)==0)
userEncontrado=0;
}
/* Se o usuário for encontrado será desbloqueado */
if (userEncontrado==0) {
aux--;
if (TabelaUsuarios[aux].ContUser>=3) {
printf("\nUsuário encontrado bloqueado! Desbloqueando usuário...");
TabelaUsuarios[aux].ContUser=0;
/* Condição para verificar o sucesso da operação.*/
if(TabelaUsuarios[aux].ContUser<=3)
printf("\nUsuário desbloqueado com sucesso!\n");
} else
printf("\nUsuário encontrado desbloqueado! Tente novamente com outro usuário.\n");
} else
printf("\nUsuário não cadastrado!\n");
break;
Excluir um Usuário
case 4: /*** PARA EXCLUIR UM USUÁRIO ***/
printf("\nDigite o nome de usuário que deseja excluir: ");
scanf(" %s", userID);
/* Loop para encontrar o usuário na tabela.*/
for (i=0;i<TAB_USER && userEncontrado; i++) {
if( strcmp(userID, TabelaUsuarios[i].UserId)==0)
userEncontrado=0;
}
/* Se usuário for encontrado será deletado */
if (userEncontrado==0) {
printf("\nExcluindo usuário...\n");
i--;
TabelaUsuarios[i].UserId[0]='\0';
TabelaUsuarios[i].Senha[0]='\0';
TabelaUsuarios[i].ContUser=0;
TabelaUsuarios[i].MsgUser[0]='\0';
/* Condição para verificar o sucesso da operação.*/
if(TabelaUsuarios[i].UserId[0]==0)
printf("\nUsuário excluído com sucesso!\n");
} else
printf("\nUsuário não cadastrado!\n");
break;
Imprimir Tabela de Usuários
case 5: /*** PARA IMPRIMIR TABELA DE USUÁRIOS. ***/
printf("\nListando tabela de usuários cadastrados...\n");
for(aux=0;TabelaUsuarios[aux].UserId[0] && aux<TAB_USER;aux++) {
printf("\n%s",TabelaUsuarios[aux].UserId);
cont++;
}
printf("\n\nNúmero de usuários cadastrados: %d\n", cont);
break;
Limpar Lista de Usuários
case 6: /*** PARA LIMPAR LISTA DE USUÁRIOS ***/
printf("\nLimpando tabela de usuários...\n");
for(i=0;TabelaUsuarios[i].UserId[0];i++) {
TabelaUsuarios[i].UserId[0]='\0';
TabelaUsuarios[i].Senha[0]='\0';
TabelaUsuarios[i].ContUser=0;
TabelaUsuarios[i].MsgUser[0]='\0';
}
break;
Modificar mensagem particular do Usuário
case 7: /*** PARA MODIFICAR MENSAGEM PARTICULAR DO USUÁRIO. ***/
printf("\nPara modificar mensagem particular do usuário:\n");
printf("\nEntre com o nome de usuário que deseja modificar a mensagem: ");
scanf(" %s", userID);
/* Loop para encontrar o usuário na tabela.*/
for (i=0;i<TAB_USER && userEncontrado; i++) {
if( strcmp(userID, TabelaUsuarios[i].UserId)==0)
userEncontrado=0;
}
/* Se usuário for encontrado será modificado a mensagem particular. */
if (userEncontrado==0) {
printf("\nEntre com a nova mensagem: ");
i--;
scanf(" %s", TabelaUsuarios[i].MsgUser);
/* Verificação do sucesso da operação.*/
printf("\nA nova mensagem é '%s'.\n", TabelaUsuarios[i].MsgUser);
printf("\nMensagem particular modificada com sucesso!\n");
}else
printf("\nUsuário não cadastrado!\n");
break;
Modificar mensagem padrão
case 13: /*** PARA MODIFICAR MENSAGEM PADRAO ***/
printf("\nPara modificar mensagem padrão:\n");
printf("\nEntre com a nova mensagem: ");
scanf(" %s", MsgPadrao);
/* Verificação do sucesso da operação.*/
printf("\nA nova mensagem é '%s'.\n", MsgPadrao);
printf("\nMensagem padrão modificada com sucesso!\n");
break;
Modificar senha do Administrador
case 15: /*** PARA MODIFICAR SENHA DO ADMINISTRADOR ***/
printf("\nPara modificar senha do administrador:\n");
printf("\nEntre com a senha atual do admin: ");
scanf(" %s", senha);
for (i=0;i<TAB_ADMIN && userEncontrado; i++) {
if( strcmp(userID, TabelaAdmin[i].UserAdmin)==0)
userEncontrado=0;
}
/* Condição para modificar a atual senha do administrador.*/
if (userEncontrado==0) {
i--;
if (strcmp(senha, TabelaAdmin[i].SenhaAdmin)==0) {
printf("\nEntre com a nova senha: ");
scanf(" %s", senha);
printf("\nConfirme a nova senha: ");
scanf(" %s", TabelaAdmin[i].SenhaAdmin);
/* Condição para verificar o sucesso da operação.*/
if (strcmp(senha, TabelaAdmin[i].SenhaAdmin)==0)
printf("\nSenha do administrador modificada com sucesso!\n");
else
printf("\nFalha ao modificar a senha. Dados incorretos. Tente novamente e verifique a nova senha.\n");
} else
printf("\nDados incorretos. Tente novamente e verifique a senha do administrador fornecida.\n");
}
break;
Interface do Administrador (GUI)
Chamada de funções para Administrar
Abaixo encontra-se um exemplo de chamada de funções do GTK para acessar opções de atividades do Administrador:
/** Chamadas funções para usuário **/
void BloquearUser_clicked(GtkWidget *widget, gpointer data)
{
administrar(1, userID, senha);
}
/** Chamadas funções para administrador **/
void BloquearAdmin_clicked(GtkWidget *widget, gpointer data)
{
administrar(8, userID, senha);
}
Tabela contendo os botões de atividades do Administrador
Tais botões estarão chamando os tipos de funções mostrados acima e são criados seguindo o exemplo abaixo:
/** Caixa que conterá as atividades do administrador **/
vbox1 = gtk_vbox_new(FALSE, 1);
labelopcoes = gtk_label_new("Entre com uma das opções:");
gtk_label_set_justify(GTK_LABEL(labelopcoes), GTK_JUSTIFY_CENTER);
labeluser = gtk_label_new("Para usuário:");
labeladmin = gtk_label_new("Para administrador:");
/** Definição dos textos que representam cada botão de ação **/
BloquearUser = gtk_button_new_with_label("Bloquear usuário");
BloquearAdmin = gtk_button_new_with_label("Bloquear administrador");
/** Criação dos botões para uso nas atividades do admin **/
gtk_box_pack_start(GTK_BOX(vbox1), labelopcoes, 0, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox1), labeluser, 0, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox1), BloquearUser, 0, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox1), CadastrarUser, 0, TRUE, 0);
/* Função do botão "Bloquear usuário"*/
g_signal_connect(G_OBJECT(BloquearUser), "clicked", G_CALLBACK(BloquearUser_clicked), NULL);
/* Função do botão "Bloquear administrador"*/
g_signal_connect(G_OBJECT(BloquearAdmin), "clicked", G_CALLBACK(BloquearAdmin_clicked), NULL);