Relatório Programação - Trabalho Pratico 2
-
Upload
joel-correia-ricardo -
Category
Documents
-
view
128 -
download
7
description
Transcript of Relatório Programação - Trabalho Pratico 2
Instituto Superior Politécnico Gaya Escola Superior de Ciência e Tecnologia
Informática de Gestão
Programação 1 2009/2010
Trabalho Prático 2
Joel Ricardo
Docente: Mário António da Costa Santos
09 De Janeiro de 2010
Instituto Superior Politécnico Gaya
Pág. 2
Índice
Introdução ....................................................................................................................... 3 Desenvolvimento ............................................................................................................. 4 • Linguagem C# ........................................................................................................... 4 • Desempenho Global ................................................................................................ 5 • Fases de elaboração ................................................................................................. 6 • Explicação do código ................................................................................................ 7
class Program ............................................................................................................ 7 public class variaveis ................................................................................................ 9 public class add_util : Form ................................................................................... 10 public class manutencao : Form ............................................................................. 12 public class alteracao : Form .................................................................................. 16 public class entrada : Form ..................................................................................... 18
• Esquema de funções do programa ........................................................................ 19 Conclusões ..................................................................................................................... 20 • Aprendizagem adquirida ....................................................................................... 20 • Dificuldades ultrapassadas .................................................................................... 20
Instituto Superior Politécnico Gaya
Pág. 3
Introdução
A linguagem C# é uma poderosa linguagem de programação orientada a
objectos disponível gratuitamente para todos os entusiastas e publico em geral que
pretenda programar nela.
Neste trabalho será apresentado um pequeno programa que basicamente faz a
gestão de utilizadores. Tem a capacidade de adicionar, editar e eliminar uma conta de
utilizador do seu sistema.
O programa encontra‐se orientado para a simplicidade de introdução de dados
e para a facilidade de manobra dos mesmos. Todas as validações de dados estão
incorporadas e todas as restrições de introdução estão limitadas ao mínimo.
Este trabalho foi desenvolvido no âmbito da disciplina de Programação 1 e é
todo ele direccionado para o meio académico.
Instituto Superior Politécnico Gaya
Pág. 4
Desenvolvimento
• Linguagem C#
Durante o desenvolvimento da plataforma .NET, a Microsoft®, em 1999,
nomeou Anders Hejlsberg para criar uma nova linguagem de programação designada
por Cool. Mais tarde, em 2000, a quando da apresentação da plataforma na PDC1, já
terminada e pronta para ser implementada no mercado, a linguagem anteriormente
designada por Cool foi apresentada como C# e assim se começou uma nova filosofia de
linguagens de programação.
Esta famosa linguagem de programação foi desenvolvida por diversos
programadores, mas o seu sucesso no meio profissional é atribuído a Anders que hoje
é um distinto engenheiro da Microsoft. Anders é também conhecido pela criação do
Turbo Pascal e o Delphi.
_________________________________________________________________
Curiosidade
Muitos pensam que o # do C# é a sobreposição do símbolo +, dando a ideia que é uma continuação do C++, mas veio‐se a saber que esta ideia estava errada. O real sinal não era o # mas sim #. Este ultimo è um símbolo musical que aumenta em meio‐tom uma nota musical. Devido a limitações de tabelas alfanuméricas, ficou normalizado pela ECMA2 ficaria C#.
_________________________________________________________________
Desenvolvida quase do zero, esta linguagem possui um vasto leque de
bibliotecas e a sua compatibilidade é enorme em relação aos sistemas operativos.
Funcionando numa lógica hierárquica, o C# constitui desde as operações
básicas como a adição, multiplicação, subtracção e soma às mais complicadas e únicas
como encapsulamentos e sobrecargas múltiplas. No C# não existe herança múltipla, ou
seja cada classe só pode herdar uma e só uma classe, mantendo assim o código e a
gestão de memória organizada. Possui também uma gestão de memória única
denominada Colector de Lixo que recicla a memória e obtêm uma maior eficiência.
No que diz respeito a passagem de parâmetros, no C# existem dois tipos de
passagem, nomeadamente, passagem por valor e por referência. Na passagem por
1 Professional Developers Conference 2 European Computer Manufacturers Association
Instituto Superior Politécnico Gaya
Pág. 5
valor, é feita uma cópia do argumento para o parâmetro do mesmo, assim garantimos
que as alterações efectuadas dentro do parâmetro não alteram o valor do argumento
externo. Assim mantemos a integridade do argumento inicial sempre saudável.
Falando agora da passagem por referência, pode‐mos dizer que é o oposto da
passagem por valor. Sendo a mais utilizada pelos programadores comuns, na
passagem por referência quando é alterado o valor dentro e fora do método.
• Desempenho Global
No desenvolvimento deste trabalho foram efectuadas várias pesquisas sobre o
tema do trabalho e a linguagem a ser utilizada. Inicialmente ficou estabelecido que a
construção do programa simplesmente deveria executar os requisitos pedidos, não
importando a organização, o design nem a facilidade de utilização. No entanto,
durante a rápida evolução do trabalho, foi notado que era possível aperfeiçoar o
trabalho e facilitar a sua visualização e manutenção. Assim depois de todos os
requisitos essenciais estarem satisfeitos, foi implementado um design para boa
interpretação e organizado todo o código para fácil leitura e percepção de como esta o
programa elaborado.
1. P
2. D
3. E
4. Im
Pesquisa
Desenho do
Esquematiza
mplementa
Instituto Su
s formulário
ação do pro
ção do cód
uperior Polité
os
ograma
igo
écnico Gaya
• Fases de
Esquema d
e elabora
de desenvolvi
Pág. 6
ação
mento
dese
prog
não
remo
___
instr
prim
pesso
Todo o
nvolvido em
rama. A org
sejam abe
over a ambi
________
Este pro
uções são d
eira string
oas.
Segue o
código foi
mbora bási
ganização d
rtos mais
iguidade ne
_______
ograma inic
dadas para o
que entra
código font
Instituto Su
desenvolv
co está mo
deste código
do que 1
este pequen
________
cia pela cla
o arranque
por CMD. E
te documen
uperior Polité
vido pelo a
ontado de u
o esta tamb
formulário
no programa
Esque
________
asse progra
no mesmo
Esta é valid
ntado:
écnico Gaya
• E
autor deste
uma forma
bém feita d
de cada v
a.
ema de distrib
________
am, ou seja
. É na classe
dada, tratad
Explicaçã
e relatório.
que limite
e modo a q
vez. Tentou
buição das cl
_______clas
a é aqui q
e program q
do e inserid
ão do cód
O código
os “crache
que por exe
u‐se ao má
lasses
________ss Prog
ue as prim
que é atribu
da no vecto
Pág. 7
digo
aqui
s” do
emplo
áximo
____ gram
meiras
uída a
or das
Instituto Superior Politécnico Gaya
Pág. 8
//Main do programa---------------------------------------------------------------------- class Program { public static void Main(string[] args) { //Com o try verifico se entra alguma string a partir do CMD try { //Atribuo a string vinda do CMD string[] vector1 = new string[2]; string[] vector2 = new string[2]; string[] vector3 = new string[2]; string[] vector4 = new string[2]; //Separo os cabeçalhos dos reais valores vector1 = Regex.Split(args[0], "="); vector2 = Regex.Split(args[1], "="); vector3 = Regex.Split(args[2], "="); vector4 = Regex.Split(args[3], "="); //Instancio o Vector para validar os tipos de dados int contador = 0; while (contador != 1000) { variaveis.vector[contador] = new variaveis.pessoa(); contador++; } //Adiciono a primeira linha de utilizadores aos correctos campos de pessoa //Utilizo if's para verificar em que posição estão os valores //ID if (vector1[0] == "id" || vector1[0] == "ID") { variaveis.vector[0].id = Convert.ToInt32(vector1[1]); } if (vector2[0] == "id" || vector2[0] == "ID") { variaveis.vector[0].id = Convert.ToInt32(vector2[1]); } if (vector3[0] == "id" || vector3[0] == "ID") { variaveis.vector[0].id = Convert.ToInt32(vector3[1]); } if (vector4[0] == "id" || vector4[0] == "ID") { variaveis.vector[0].id = Convert.ToInt32(vector4[1]); } //NOME if (vector1[0] == "nome" || vector1[0] == "NOME") { variaveis.vector[0].nome = vector1[1]; } if (vector2[0] == "nome" || vector2[0] == "NOME") { variaveis.vector[0].nome = vector2[1]; } if (vector3[0] == "nome" || vector3[0] == "NOME") { variaveis.vector[0].nome = vector3[1]; } if (vector4[0] == "nome" || vector4[0] == "NOME") { variaveis.vector[0].nome = vector4[1]; } //Password if (vector1[0] == "password" || vector1[0] == "PASSWORD") { variaveis.vector[0].password = vector1[1]; } if (vector2[0] == "password" || vector2[0] == "PASSWORD") { variaveis.vector[0].password = vector2[1]; } if (vector3[0] == "password" || vector3[0] == "PASSWORD") { variaveis.vector[0].password = vector3[1];
Instituto Superior Politécnico Gaya
Pág. 9
} if (vector4[0] == "password" || vector4[0] == "PASSWORD") { variaveis.vector[0].password = vector4[1]; } //Login if (vector1[0] == "login" || vector1[0] == "LOGIN") { variaveis.vector[0].login = vector1[1]; } if (vector2[0] == "login" || vector2[0] == "LOGIN") { variaveis.vector[0].login = vector2[1]; } if (vector3[0] == "login" || vector3[0] == "LOGIN") { variaveis.vector[0].login = vector3[1]; } if (vector4[0] == "login" || vector4[0] == "LOGIN") { variaveis.vector[0].login = vector4[1]; } //Instancio e corro o formulário de abertura entrada inicio = new entrada(); Application.Run(inicio); Console.ReadKey(true); } //Se alguma linha der erros, ele executa o catch catch { MessageBox.Show("Atenção que ainda não carregou nenhum utilizador!"); int contador = 0; while (contador != 1000) { variaveis.vector[contador] = new variaveis.pessoa(); contador++; } variaveis.nr_pessoas = 0; entrada inicio = new entrada(); Application.Run(inicio); Console.ReadKey(true); } }
}
_____________________________________________________ public class variaveis
Nesta classe estão definidas todas as variaveis que vão ser globais ao programa
todo, ou seja todas as que são públicas. Esta classe não era necessária para o
funcionamento do programa, porque mais á frente vamos ver que existem outras
variáveis públicas que estão dentro de outras classes. O intuito da sua criação era
aglomerar as variáveis vitais do programa nesta classe, como por exemplo o vector das
pessoas.
Segue o código fonte devidamente documentado:
//Criação da classe variaveis----------------------------------------------------------- public class variaveis { //Crio a minha variavel especial pessoa
Instituto Superior Politécnico Gaya
Pág. 10
public class pessoa { public int id = 0; public string nome = ""; public string login = ""; public string password = ""; //Construo a variavel public pessoa() { id = 0; nome = ""; login = ""; password = ""; } } //Formulários - declaração (Serve para instanciar os formulários uma unica vez) public static manutencao formulario2 = new manutencao(); public static add_util ad_utiliz = new add_util(); public static alteracao altera = new alteracao(); //Criação do contador das pessoas da base de dados public static int nr_pessoas = 1; //Criação da variaves de armazenamento dos indexes das linhas public static int index = 0; //Criação do vector de armazenagem das pessoas public static pessoa[] vector = new pessoa[1000]; //Variavel que detecta formulários abertos public static int f_aberto = 0;
}
____________________________________________________________ public class add_util : Form
Nesta classe encontra‐se somente o formulário de adição manual de
utilizadores. Ao construir uma classe do tipo formulário é obrigatório declarar todos os
componentes que necessitamos dentro do formulário e depois criar a classe
construtora para que o nosso formulário possa ser montado. Esta classe construtora
vai dar forma aos componentes anteriormente declarados.
Segue em seguida então o código declarado:
//Criação do formulário de adição de utilizadores--------------------------------------- public class add_util : Form { //declaração dos componentes do formulário public static Button ad = new Button(); public static Button sair = new Button(); public static Label user = new Label(); public static Label pass = new Label(); public static Label pass2 = new Label(); public static Label id = new Label(); public static Label nome = new Label(); public static Label titulo = new Label(); public static TextBox usert = new TextBox(); public static TextBox passt = new TextBox(); public static TextBox pass2t = new TextBox(); public static TextBox idt = new TextBox(); public static TextBox nomet = new TextBox(); //Compor o formulário com os componentes anteriormente inseridos public add_util() { //designações
Instituto Superior Politécnico Gaya
Pág. 11
titulo.Text = "Adição de utilizadores"; ad.Text = "Adicionar"; sair.Text = "Sair"; user.Text = "USER:"; pass.Text = "PASS:"; pass2.Text = "RE-PASS"; nome.Text = "NOME:"; id.Text = "ID:"; //fazer aparecer os componentes Controls.Add(titulo); Controls.Add(ad); Controls.Add(sair); Controls.Add(user); Controls.Add(pass); Controls.Add(pass2); Controls.Add(nome); Controls.Add(id); Controls.Add(usert); Controls.Add(passt); Controls.Add(pass2t); Controls.Add(nomet); Controls.Add(idt); //tamanhos & costomizações Size = new Size(400, 300); titulo.Size = new Size(400, 50); titulo.Font = new Font("verdana", 14); titulo.TextAlign = ContentAlignment.BottomCenter; sair.Size = new Size(100, 50); ad.Size = new Size(100, 50); id.Font = new Font("verdana", 10); user.Font = new Font("verdana", 10); pass.Font = new Font("verdana", 10); pass2.Font = new Font("verdana", 10); nome.Font = new Font("verdana", 10); usert.Size = new Size(100, 50); idt.Size = new Size(100, 50); passt.Size = new Size(100, 50); pass2t.Size = new Size(100, 50); nomet.Size = new Size(100, 50); //Localizações sair.Location = new Point(100, 200); ad.Location = new Point(200, 200); id.Location = new Point(100, 72); nome.Location = new Point(100, 92); user.Location = new Point(100, 112); pass.Location = new Point(100, 132); pass2.Location = new Point(100, 152); idt.Location = new Point(200, 72); nomet.Location = new Point(200, 92); usert.Location = new Point(200, 112); passt.Location = new Point(200, 132); pass2t.Location = new Point(200, 152); //Funções dos botões sair.Click += new EventHandler(sair_click); ad.Click += new EventHandler(ad_click); StartPosition = FormStartPosition.Manual; Location = new Point(400, 400); ControlBox = false; } //Accções do botão sair private void sair_click(object sender, EventArgs e) { this.Hide(); } //Accções do botão adicionar //Com os if's verifico a possivel existencia de erros e reporto ao utilizador private void ad_click(object sender, EventArgs e) { if (add_util.idt.Text != "" && add_util.usert.Text != "" && add_util.nomet.Text != "" && add_util.passt.Text != "" && add_util.pass2t.Text != "") { if (add_util.passt.Text == add_util.pass2t.Text && add_util.idt.Text != "0") { try
Instituto Superior Politécnico Gaya
Pág. 12
{ variaveis.vector[variaveis.nr_pessoas].id = Convert.ToInt32(add_util.idt.Text); variaveis.vector[variaveis.nr_pessoas].login = add_util.usert.Text; variaveis.vector[variaveis.nr_pessoas].nome = add_util.nomet.Text; variaveis.vector[variaveis.nr_pessoas].password = add_util.passt.Text; variaveis.nr_pessoas++; add_util.idt.Text = ""; add_util.usert.Text = ""; add_util.nomet.Text = ""; add_util.passt.Text = ""; add_util.pass2t.Text = ""; } catch { MessageBox.Show("O ID tem de ser um numero diferente de 0!"); } if (variaveis.f_aberto == 1) { variaveis.formulario2.lista.Items.Clear(); int a = 0; while (a != (variaveis.nr_pessoas)) { variaveis.formulario2.lista.Items.Add(variaveis.vector[a].id + " - " + variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " + variaveis.vector[a].password); a++; } } } else { MessageBox.Show("As password's não coincidem ou o id é 0"); } } else { MessageBox.Show("É necessário inserir todos os dados!"); } }
}
_____________________________________________________ public class manutencao : Form
Nesta classe tal como a anterior é do tipo Form. Segue exactamente os mesmos
padroes explicados na classe anterior e aplica‐se ao formulário da manutenção onde
podemos editar e eliminar os utilizadores.
Segue o código fonte explicado:
//Criação do formulário de mantençã dos utilizadores------------------------------------ public class manutencao : Form { //Crio os componentes public Button eliminar = new Button(); public Button alterar = new Button(); public Button sair = new Button(); public ListBox lista = new ListBox(); public ComboBox ord_valor = new ComboBox(); public ComboBox ord_tipo = new ComboBox(); public Button ordenar = new Button();
Instituto Superior Politécnico Gaya
Pág. 13
//Construir o formulário public manutencao() { StartPosition = FormStartPosition.Manual; Location = new Point(100, 100); //Tamanhos Size = new Size(300, 600); eliminar.Size = new Size(145, 50); alterar.Size = new Size(145, 50); ordenar.Size = new Size(145, 50); ord_tipo.Size = new Size(145, 25); lista.Size = new Size(285, 445); ord_valor.Size = new Size(145, 25); sair.Size = new Size(290, 50); //Localizações alterar.Location = new Point(0, 485); sair.Location = new Point(0, 535); ord_tipo.Location = new Point(0, 460); ord_valor.Location = new Point(0, 435); ordenar.Location = new Point(145, 435); eliminar.Location = new Point(145, 485); //Descrições dos objectos eliminar.Text = "Eliminar"; alterar.Text = "Alterar"; sair.Text = "Sair"; ord_tipo.Text = "por ordem:"; ord_valor.Text = "por valor de:"; ordenar.Text = "Ordenar"; //Atribuição dos controlos aos botoes Controls.Add(eliminar); Controls.Add(alterar); Controls.Add(sair); Controls.Add(ord_valor); Controls.Add(ord_tipo); Controls.Add(ordenar); Controls.Add(lista); //Desactivar os botões de minimizar, maximizar e fechar ControlBox = false; //Atribuir as funções dos botões sair.Click += new EventHandler(sair_click); alterar.Click += new EventHandler(alterar_click); eliminar.Click += new EventHandler(eliminar_click); ordenar.Click += new EventHandler(ordenar_click); //Atribuir valores ás ComboBox's ord_valor.Items.Add("ID"); ord_tipo.Items.Add("Crescente"); ord_tipo.Items.Add("Decrescente"); //Variavel de contagem para controlo do while seguinte int a = 0; //Atribuo valores á Lisbox while (a != (variaveis.nr_pessoas)) { lista.Items.Add(variaveis.vector[a].id + " - " + variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " + variaveis.vector[a].password); a++; } } //Acções do botão ordenar private void ordenar_click(object sender, EventArgs e) { //Ordenação por tipo Crescente e Valor ID if (ord_tipo.Text == "Crescente" && ord_valor.Text == "ID") { //Contadores e variaveis necessárias int a = 0; int aa = 0; int aaa = 0; string nome; string login; string pass; while (a != (variaveis.nr_pessoas)) {
Instituto Superior Politécnico Gaya
Pág. 14
aa = a; while (aa != variaveis.nr_pessoas) { if (variaveis.vector[a].id > variaveis.vector[aa].id) { aaa = variaveis.vector[a].id; nome = variaveis.vector[a].nome; login = variaveis.vector[a].login; pass = variaveis.vector[a].password; variaveis.vector[a].id = variaveis.vector[aa].id; variaveis.vector[a].nome = variaveis.vector[aa].nome; variaveis.vector[a].password = variaveis.vector[aa].password; variaveis.vector[a].login = variaveis.vector[aa].login; variaveis.vector[aa].id = aaa; variaveis.vector[aa].nome = nome; variaveis.vector[aa].login = login; variaveis.vector[aa].password = pass; } aa++; } a++; } //Variavel de controlo do while a = 0; //Limpeza da ListBox lista.Items.Clear(); //Atribuir valores ordenados á ListBox while (a != (variaveis.nr_pessoas)) { lista.Items.Add(variaveis.vector[a].id + " - " + variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " + variaveis.vector[a].password); a++; } } //Ordenação por tipo Decrescente e Valor ID if (ord_tipo.Text == "Decrescente" && ord_valor.Text == "ID") { //Contadores e variaveis necessárias int a = 0; int aa = 0; int aaa = 0; string nome; string login; string pass; while (a != (variaveis.nr_pessoas)) { aa = a; while (aa != variaveis.nr_pessoas) { if (variaveis.vector[a].id < variaveis.vector[aa].id) { aaa = variaveis.vector[a].id; nome = variaveis.vector[a].nome; login = variaveis.vector[a].login; pass = variaveis.vector[a].password; variaveis.vector[a].id = variaveis.vector[aa].id; variaveis.vector[a].nome = variaveis.vector[aa].nome; variaveis.vector[a].password = variaveis.vector[aa].password; variaveis.vector[a].login = variaveis.vector[aa].login; variaveis.vector[aa].id = aaa; variaveis.vector[aa].nome = nome; variaveis.vector[aa].login = login; variaveis.vector[aa].password = pass; } aa++; } a++; } //Variavel de controlo do while a = 0; //Limpar a ListBox lista.Items.Clear();
Instituto Superior Politécnico Gaya
Pág. 15
//Atribuir os valores ordenados while (a != (variaveis.nr_pessoas)) { lista.Items.Add(variaveis.vector[a].id + " - " + variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " + variaveis.vector[a].password); a++; } } } //Acções do botão eliminar private void eliminar_click(object sender, EventArgs e) { //Com este try, remove-se o erro de "crach" quando estou a tentar eliminar algo que ainda não foi seleccionado try { variaveis.index = variaveis.formulario2.lista.SelectedIndex; variaveis.vector[variaveis.index].id = 0; variaveis.vector[variaveis.index].nome = ""; variaveis.vector[variaveis.index].login = ""; variaveis.vector[variaveis.index].password = ""; int a = 0; while (a != 999) { if (variaveis.vector[a].id == 0 && variaveis.vector[a + 1].id != 0) { variaveis.vector[a].id = variaveis.vector[a + 1].id; variaveis.vector[a].nome = variaveis.vector[a + 1].nome; variaveis.vector[a].password = variaveis.vector[a + 1].password; variaveis.vector[a].login = variaveis.vector[a + 1].login; variaveis.vector[a + 1].id = 0; variaveis.vector[a + 1].nome = ""; variaveis.vector[a + 1].password = ""; variaveis.vector[a + 1].login = ""; } a++; } variaveis.nr_pessoas--; variaveis.formulario2.lista.Items.Clear(); a = 0; while (a != (variaveis.nr_pessoas)) { variaveis.formulario2.lista.Items.Add(variaveis.vector[a].id + " - " + variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " + variaveis.vector[a].password); a++; } } catch { MessageBox.Show("Tem de seleccionar o item que pretende modificar ou eliminar!"); } } //Acções do botão sair private void sair_click(object sender, EventArgs e) { variaveis.f_aberto = 0; this.Hide(); } //Acções do botão aterar private void alterar_click(object sender, EventArgs e) { //Este try elimina o crach quando tentamos alterar um valor que ainda não seleccionamos try { variaveis.index = variaveis.formulario2.lista.SelectedIndex; variaveis.altera.Show(); variaveis.ad_utiliz.Hide(); variaveis.formulario2.Hide(); alteracao.idt.Text = Convert.ToString(variaveis.vector[variaveis.index].id);
Instituto Superior Politécnico Gaya
Pág. 16
alteracao.nomet.Text = Convert.ToString(variaveis.vector[variaveis.index].nome); alteracao.usert.Text = Convert.ToString(variaveis.vector[variaveis.index].login); alteracao.pass2t.Text = Convert.ToString(variaveis.vector[variaveis.index].password); alteracao.passt.Text = Convert.ToString(variaveis.vector[variaveis.index].password); } catch { variaveis.altera.Hide(); MessageBox.Show("Tem de seleccionar o item que pretende modificar ou eliminar!"); } } }
_____________________________________________________ public class alteracao : Form
Este formulário tem a única função de alterar os dados de um utilizador
previamente seleccionado, ou seja, é seleccionado o utilizador a alterar e a informação
relativa ao utilizador seleccionado aparece neste formulário. Depois dos dados
estarem alterados são submetidos novamente a critérios de inserção.
Código fonte documentado:
//Criação do formulário de alteração---------------------------------------------------- public class alteracao : Form { //declaração dos componentes do formulário Button ad = new Button(); Button sair = new Button(); Label user = new Label(); Label pass = new Label(); Label pass2 = new Label(); Label id = new Label(); Label nome = new Label(); Label titulo = new Label(); public static TextBox usert = new TextBox(); public static TextBox passt = new TextBox(); public static TextBox pass2t = new TextBox(); public static TextBox idt = new TextBox(); public static TextBox nomet = new TextBox(); //Compor o formulário com os componentes anteriormente inseridos public alteracao() { //designações titulo.Text = "Alteração de utilizadores"; ad.Text = "Alterar"; sair.Text = "Sair"; user.Text = "USER:"; pass.Text = "PASS:"; pass2.Text = "RE-PASS"; nome.Text = "NOME:"; id.Text = "ID:"; //fazer aparecer os componentes Controls.Add(titulo); Controls.Add(ad); Controls.Add(sair); Controls.Add(user); Controls.Add(pass);
Instituto Superior Politécnico Gaya
Pág. 17
Controls.Add(pass2); Controls.Add(nome); Controls.Add(id); Controls.Add(usert); Controls.Add(passt); Controls.Add(pass2t); Controls.Add(nomet); Controls.Add(idt); //tamanhos & costomizações Size = new Size(400, 300); titulo.Size = new Size(400, 50); titulo.Font = new Font("verdana", 14); titulo.TextAlign = ContentAlignment.BottomCenter; sair.Size = new Size(100, 50); ad.Size = new Size(100, 50); id.Font = new Font("verdana", 10); user.Font = new Font("verdana", 10); pass.Font = new Font("verdana", 10); pass2.Font = new Font("verdana", 10); nome.Font = new Font("verdana", 10); usert.Size = new Size(100, 50); idt.Size = new Size(100, 50); passt.Size = new Size(100, 50); pass2t.Size = new Size(100, 50); nomet.Size = new Size(100, 50); //Localizações sair.Location = new Point(100, 200); ad.Location = new Point(200, 200); id.Location = new Point(100, 72); nome.Location = new Point(100, 92); user.Location = new Point(100, 112); pass.Location = new Point(100, 132); pass2.Location = new Point(100, 152); idt.Location = new Point(200, 72); nomet.Location = new Point(200, 92); usert.Location = new Point(200, 112); passt.Location = new Point(200, 132); pass2t.Location = new Point(200, 152); //Funções dos botões sair.Click += new EventHandler(sair_click); ad.Click += new EventHandler(ad_click); StartPosition = FormStartPosition.Manual; Location = new Point(400, 100); ControlBox = false; } //Acções do botão sair private void sair_click(object sender, EventArgs e) { this.Hide(); } //Acções do botão adicionar private void ad_click(object sender, EventArgs e) { if (idt.Text != "" && nomet.Text != "" && usert.Text != "" && passt.Text != "" && passt.Text == pass2t.Text) { variaveis.vector[variaveis.index].id = Convert.ToInt32(idt.Text); variaveis.vector[variaveis.index].password = passt.Text; variaveis.vector[variaveis.index].nome = nomet.Text; variaveis.vector[variaveis.index].login = usert.Text; MessageBox.Show("Dados alterados para o utilizador: " + nomet.Text); variaveis.formulario2.lista.Items.Clear(); int a = 0; while (a != (variaveis.nr_pessoas)) { variaveis.formulario2.lista.Items.Add(variaveis.vector[a].id + " - " + variaveis.vector[a].nome + " - " + variaveis.vector[a].login + " - " + variaveis.vector[a].password); a++; } this.Hide(); } else {
Instituto Superior Politécnico Gaya
Pág. 18
if (passt.Text != pass2t.Text) { MessageBox.Show("Password's não coincidem!"); } else { MessageBox.Show("Os dados não estão todos inseridos!"); } } }
}
_____________________________________________________ public class entrada : Form
Este formulário tem a função de direccionar as vontades do utilizador.
Contendo três botões de controlo, este formulário serve de interface primária para a
interacção com o programa.
Segue o código fonte devidamente documentado:
//Criação do formulario de abertura----------------------------------------------------- public class entrada : Form { //Declaração dos componentes do formulário public Button util = new Button(); public Button man = new Button(); public Button sair = new Button(); public Label titulo = new Label(); //Compor o formulário com o que queremos e o que já foi declarado public entrada() { //tamanho do formulário Size = new Size(400, 300); //fazer aparecer os componentes Controls.Add(util); Controls.Add(man); Controls.Add(titulo); Controls.Add(sair); //tamanhos & costomizações util.Size = new Size(200, 100); man.Size = new Size(185, 100); sair.Size = new Size(385, 65); //localizações util.Location = new Point(0, 120); man.Location = new Point(200, 120); sair.Location = new Point(0, 220); //descrições util.Text = "Adicionar"; sair.Text = "Fechar Aplicação"; man.Text = "Manutenção"; titulo.Text = ("Trabalho Prático 2"); titulo.Size = new Size(400, 50); titulo.Font = new Font("verdana", 14); titulo.TextAlign = ContentAlignment.BottomCenter; util.Click += new EventHandler(ad_click); man.Click += new EventHandler(man_click); sair.Click += new EventHandler(sair_click); StartPosition = FormStartPosition.Manual; Location = new Point(400, 100); ControlBox = false; } //Acções do botão adicionar private void ad_click(object sender, EventArgs e) {
variavaria }
form
prog
vari } //Acções private { Appl } //Acções private {
vari vari int whil {
aveis.vectoraveis.vector } vari }
} }
O progra
ma básica e f
rama.
aveis.ad_ut
do botão svoid sair_c
ication.Exi
do botão mvoid man_cl
aveis.formuaveis.formua = 0; e (a != (va
variaveis.fr[a].nome + r[a].passwora++;
aveis.f_abe
ama, na vist
fácil. A ima
Instituto Su
iliz.Show();
air lick(object
t();
anutenção ick(object s
lario2.Showlario2.lista
riaveis.nr_p
ormulario2.l" - " + varid);
rto = 1;
•
ta do utiliza
gem a segu
uperior Polité
;
sender, Eve
sender, Even
(); a.Items.Clea
pessoas))
lista.Items.iaveis.vecto
• Esque
ador comum
uir demonst
écnico Gaya
entArgs e)
ntArgs e)
ar();
.Add(variaveor[a].login
ema de fu
m encontra
tra como o
eis.vector[a+ " - " +
unções d
a‐se esquem
utilizador v
P
a].id + " -
do progra
matizado de
vê as funçõ
Pág. 19
" +
ama
e uma
es do
Instituto Superior Politécnico Gaya
Pág. 20
Conclusões
• Aprendizagem adquirida
O desenvolvimento deste trabalho foi rico em aprendizagem. A linguagem C# é
muito vasta e complexa, mas ao progredir, o trabalho requereu uma constante
pesquisa de material e funções para satisfazer as dificuldades que iam aparecendo.
Foram estudadas matérias desde tipos de variáveis a funções de separação de
caracteres.
No seu desenvolvimento, o trabalho foi ganhando forma e, como
consequência, foi necessário cada vez mais trabalho de pesquisa.
Contudo, o básico do C# ficou sabido e aplicado neste programa.
• Dificuldades ultrapassadas
As dificuldades foram muitas mas, como tudo na vida, foi possível ultrapassar
com algum esforço.
A primeira dificuldade encontrada foi em criar a classe “pessoa”. Depois de
alguma pesquisa e de ver alguns exemplos, foi possível implementar da melhor forma
o código de criação desta classe. Constituída por três variáveis string e uma variável
integer, esta classe composta permite o armazenamento de utilizadores.
Seguidamente apareceu a dificuldade de instanciar o vector das pessoas. Este
vector é um vector composto pelas quatro variáveis definidas na classe pessoa, ou
seja, cada posição tem 4 variáveis. Uma variável se não for instanciada não armazena
dados e dá o erro de variável nula. Então para corrigir este erro, foi necessário colocar
um ciclo a instanciar o vector desde a posição zero.
Depois de ultrapassado o problema das instâncias do vector, surgiram
problemas relativos a validações de dados e inserções proibidas, por exemplo
inserções de texto em campos de valor inteiro. Foi possível corrigir estes problemas,
que não eram poucos, com as intrusões de decisão IF e TRY. Estas instruções
permitiram negar os acessos e avisar o utilizador do erro que estava a cometer.
Instituto Superior Politécnico Gaya
Pág. 21
Por fim surgiu o problema da inserção do primeiro registo do vector pela linha
de comandos. Este problema foi resolvido em duas fases, numa primeira fase foi
estudada a forma de inserir os valores pela linha de comandos para uma variável. Esta
fase foi ultrapassada introduzindo cada variável de entrada numa variável interna, ou
seja, por exemplo id=2 era o valor de uma variável. Numa segunda e última fase, foi
estudada a maneira de tratar e introduzir os dados os dados de forma definitiva no
vector das pessoas. Assim depois de alguma pesquisa, foi aplicado o Regex.Split para
separar o cabeçalho do conteúdo (id=2) e com instruções de decisão foram tratados os
dados para as variáveis certas.
Ultrapassadas as dificuldades, foi possível aperfeiçoar o trabalho e do código
fonte de modo a ser o mais eficiente possível.
Instituto Superior Politécnico Gaya
Pág. 22
Referencias Bibliográficas
1. http://pt.wikipedia.org/wiki/C_Sharp 2. http://msdn.microsoft.com/en-us/vcsharp/default.aspx 3. http://msdn.microsoft.com/en-
us/library/system.text.regularexpressions.regex.split.aspx 4. http://msdn.microsoft.com/en-us/library/aa332139(VS.71).aspx 5. http://www.devarticles.com/c/a/C-Sharp/Introduction-to-Objects-and-
Classes-in-C-Sharp-Part-2/
Instituto Superior Politécnico Gaya
Pág. 23
Este trabalho é exclusivamente para uso académico e focalizado para a disciplina de Programação 1.
Instituto Superior Politécnico Gaya
Pág. 24