programação c# - classes,heranças
TRANSCRIPT
Projecto Programação II Formação/Explicações
Ana Rodrigues Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Índice Breve Descrição: ...................................................................................................................................... 2
UML: ........................................................................................................................................................ 3
Apresentação: ......................................................................................................................................... 4
Form Login(frmLogin): ......................................................................................................................... 4
Form Principal(frmFormacao): ............................................................................................................ 8
Form Principal (Menus): .................................................................................................................... 11
O Que Aprendi com este projecto? ....................................................................................................... 16
• Utilizar a propriedade MDI do Formulário, em que podemos definir um formulário como principal e todos os outros serem visíveis dentro deste. .................................................................. 16
• Utilizar propriedades dos comandos, como: KeyPreview e Comandos, como: KeyDown, onde no formulário do Login substitui o TAB pelo ENTER. ........................................................................ 16
• Fazer uso do Evento Closing do Formulário, poder colocar informação ao utilizador quando fecha um formulário/Aplicação, o que por vezes se torna útil pois pode ser feito sem intenção por parte do utilizador. ............................................................................................................................ 16
• O controlo MasKedTextBox, que ao contrário da TextBox podemos criar uma máscara para o campo, o que se torna bastante útil e pratico para o utilizador. ...................................................... 16
• Código Postal, inseri mascara como em outros campos mas restringi o campo a números, não deixa digitar letras, onde inseri o código no Evento KeyPress do Formulário (frmcodPostal) ......... 16
• Descobri que o erro: C# program that throws typeInitializationException, significa que é alguma da informação do… ............................................................................................................... 17
Conclusão: ............................................................................................................................................. 19
Código Fonte: ........................................................................................................................................ 20
class clsCodigoPostal ............................................................................................................. 20
class clsCursos .......................................................................................................................... 21
class clsFormacao ..................................................................................................................... 22
class clsFormador:clsPessoa ................................................................................................ 24
class clsFormando:clsPessoa ................................................................................................ 25
class clsInscricaoCursos ...................................................................................................... 27
class clsMetodosPagamento .................................................................................................... 29
class clsPessoa .......................................................................................................................... 30
static class Program ............................................................................................................... 33
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Breve Descrição:
Pretende-se neste trabalho fazer uma gestão de formandos, formadores e respectivas formações/explicações/eventos.
Pretende-se saber em que cursos o aluno se inscreve, assim como a idade, o nível escolar e o educador atribuído para que se possa saber quem é o responsável.
Com toda esta informação, pretende-se obter o que cada formando frequenta e em quantos cursos se encontra inscrito, como também as datas e métodos de pagamento a que se propõe fazer.
Irão ser utilizadas as seguintes classes:
• Pessoa • Códigos Postais • Cursos • Formação • Formador • Formando • Inscrição Cursos • Métodos de Pagamento
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
UML:
IncricaoCursos
Formacao Formador Formando
Pessoa CodigoPostal
MetodosPagamento
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Apresentação:
O Sistema de Formação/Explicações tem como objectivo guardar informação sobre cursos e formandos inscritos no mesmo.
Cada formando, é identificado pelo NIF e pode-se inscrever em um ou nos mais variados cursos.
Para poder ter um controlo do sistema, foi criado um Login, ou seja só tem acesso ao sistema quem conhecer as credenciais:
Form Login(frmLogin):
Ao abrir o sistema é despoletada a caixa de Login, onde é pedido o Utilizador e a Password.
Para facilitar o trabalho do utilizador, a tecla Enter após digitar o Utilizador ou a senha funciona como se fosse a tecla TAB, para isso utilizei a Propriedade KeyPreview=True do FrmLogin:
Obtém ou define um valor indicando se o formulário receberá eventos antes do evento que é passado para o controle que tem o foco .
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Depois utilizei o evento KeyDown:
/** Converte a tecla TAB para Enter no formulário **/ private void frmLogin_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return) { SelectNextControl(this.ActiveControl, true, false, false, true); } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Quando o utilizador faz Entrar, se as credenciais estiverem correctas é aberto o Form Principal (frmFormacao), caso haja algum erro, é enviada uma caixa de mensagem a informar e ambas as caixas de texto (Utilizador/Password) são limpas.
/** Verifica se utilizador e password estão correctos, se sim abre o Form Empresa **/ if (txtUtilizador.Text == "ADMIN" && txtPassword.Text == "XPTO") { frmFormacao EMP = new frmFormacao(); utilizador = txtUtilizador.Text; this.Close(); } else /* se não envia uma caixa de mensagem a informar que esta errado e limpa as caixas de texto */ MessageBox.Show("Utilizador ou Password Inválidos", "ATENÇÃO:"); //Limpa as caixas de texto txtUtilizador.Text = ""; txtPassword.Text = ""; //Coloca o cursor na caixa de Texto do Utilizador txtUtilizador.Focus(); }
O utilizador pode selecionar os botões Entrar ou Cancelar com o rato normalmente ou então com as combinação de teclas ALT+(letra sublinhada), esta opção deve-se a quando se dá o nome ao botão nas Propriedades, seleccionamos a letra pretendida para a conjugação com & atras, neste caso &Entrar, conjugamos as teclas: ALT+e
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
No Form de Login(frmLogin), foram criados 2 atributos:
/** Atributos **/ public static string utilizador; public static string password; /** Fim Atributos **/ /******************/
Isto para que depois do o Login ser sucedido, se possa ter a variável utilizador para poder apresentar no Form Pricipal(frmFormacao), quem acedeu ao sistema.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
O Form de Login é colocado no Load do Form Principal( frmFormacao):
private void frmFormacao_Load(object sender, EventArgs e) { frmLogin login = new frmLogin(); login.ShowDialog(); //Vamos buscar a Form de Login o atributo estático que criamos (utilizador) //Mostra o formulário de Apresentação/Identificação frmApresentacao frmApp = new frmApresentacao(); //Torna o formulario "child" do principal(FrmFormacao) frmApp.MdiParent = this; //Vamos buscar a Form de Login o atributo estatico que criamos (utilizador) this.Text += " ********** Bem Vindo:" + "-> " + frmLogin.utilizador + " ********** "; frmApp.Show(); }
Form Principal(frmFormacao):
Quando o UJtilizador e a Password estão correctas, é então aberto o Form Principal(frmFormacao).
O Form Principal(frmFormacao), e um formulário MDIContainer, isto é, é um formulário que irá conter formulários dentro, é o formulário principal, todos os outros são Childs (“filhos”):
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Na abertura deste formulário, é apresentado o Menu com as Opções que o programa tem, assim como um formulário de apresentação.
O formulário Apresentação(frmApresentacao), existe somente para identifica o criador, é um formulário Child, inserido dentro do Form Principal (frmFormacao), esta apresentação do formulário de apresentação é feita no Form_Load do Formulário Principal (frmFormacao):
private void frmFormacao_Load(object sender, EventArgs e) { frmLogin login = new frmLogin(); login.ShowDialog(); //Vamos buscar a Form de Login o atributo estatico que criamos (utilizador) //Mostra o formulário de Apresentação/Identificação frmApresentacao frmApp = new frmApresentacao(); //Torna o formulario "child" do principal(FrmFormacao) frmApp.MdiParent = this; //Vamos buscar a Form de Login o atributo estatico que criamos (utilizador) this.Text += " ********** Bem Vindo:" + "-> " + frmLogin.utilizador + " ********** "; frmApp.Show(); }
Informa que a FormApresentacao (frmAPP), é Child da
FrmFormacao Ana Isabel Rodrigues – Licenciatura Informática
1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Na Form Principal(frmFormacao), também foi criado um evento ao fechar a mesma:
Quando o utilizador, fecha a aplicação:
private void frmFormacao_FormClosing(object sender, FormClosingEventArgs e) { /* Ao seleccionar a opção sair, é enviada uma mensagem ao utilizador a informar que vai fechar a aplicação e se é isso que pretende */ if (MessageBox.Show("Vai sair da aplicação, tem a certeza? ", "Até a próxima :: " + frmLogin.utilizador + " ::", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No) { e.Cancel = true; } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
É apresentado uma caixa de mensagem a Informar o utilizador de que vai sair da Aplicação e se é isso mesmo que quer, se sim, fecha a mesma.
A variável (public static string utilizador;) que criamos no Form Login(frmLogin) é utilizada no titulo da caixa da mensagem. Form Principal (Menus): No Form Principal conforme vimos atras, quando é acedido, mostra os menus/opções a que o utilizador tem acesso:
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Para cada menu, foi criado um formulário.
No Menu Tabelas, todos os formulários existentes foram criado para inserção de dados, para posterior utilização no Menu de Inscrições e Listar Cursos.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Todos os formulários tem opções de Inserir e Sair dos mesmos.
No formulário de Inscrições (frmInscricoes), só é inserida a Data de Inicio de Curso(DTInicio) e a Data de Termino do mesmo (DTFim).
Todas as restantes informações, são escolhidas através de opções já inseridas, porque excepto a Data Inicio e Data Fim, todos os outro campos são Caixas de Listagem (combobox)…
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
… onde os dados vem de outras tabelas e os quais neste formulário não podem ser alterados, só seleccionados para a inserção dos formandos nos respectivos cursos.
No Menu Listar Cursos, verificamos os Nº de Cursos que cada formando se inscreveu:
Ao selecionar a coluna Nome, vamos ter o Curso em que se encontra Inscrito, assim como toda a Informação do curso em questão.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
A imagem do Curso aparece se houver inscrição, caso não exista inscrição em nenhum curso, aparece a Informação “Sem Inscrições” e sem imagem associada:
Este código, encontra-se adicionado no Evento:
private void dgCursos_CellContentClick(object sender, DataGridViewCellEventArgs e) { int inx = e.RowIndex; try { clsFormando ver = (clsFormando)Program.EP.lstA[inx]; if (ver.NCursos > 0) { lblDescricao.Text = ver.ListarCursos(); if (clsInscricaoCursos._Curso == "Scratch - Aprender a Programar com Scratch | 20H | 75€") { erros.Clear(); dgCursos.DataSource = Program.EP.lstA; dgCursos.Refresh(); pbScratch.Visible = true; clsInscricaoCursos._Curso = ""; } } else { lblDescricao.Text = "Sem Inscrições"; pbScratch.Visible = false; } } catch { } }
Estas linhas foram adicionadas, para cada vez que o click seja feito na linha, o conteúdo do DataSource
seja limpo e o clsInscricaoCursos._Curso seja mudado para a linha seguinte e assim controlar a visibilidade
da imagem.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
O Que Aprendi com este projecto?
• Utilizar a propriedade MDI do Formulário, em que podemos definir um formulário como principal e todos os outros serem visíveis dentro deste.
• Utilizar propriedades dos comandos, como: KeyPreview e Comandos, como: KeyDown, onde no formulário do Login substitui o TAB pelo ENTER.
• Fazer uso do Evento Closing do Formulário, poder colocar informação ao utilizador quando fecha um formulário/Aplicação, o que por vezes se torna útil pois pode ser feito sem intenção por parte do utilizador.
• O controlo MasKedTextBox, que ao contrário da TextBox podemos criar uma máscara para o campo, o que se torna bastante útil e pratico para o utilizador.
Quando o utilizador insere os dados em campos com máscara, já insere sem ter a preocupação se os campos estão ou não bem formatados.
• Código Postal, inseri mascara como em outros campos mas restringi o campo a números, não deixa digitar letras, onde inseri o código no Evento KeyPress do Formulário (frmcodPostal)
private void mtxtCodPostal_KeyPress(object sender, KeyPressEventArgs e) { /** Vamos colocar aqui o modo de controlar os caracteres introduzidos, só podem ser introduzidos numeros, caso sejam introduzidas letras são apagadas **/ if (char.IsLetter(e.KeyChar)) { e.Handled = true; } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
• Descobri que o erro: C# program that throws typeInitializationException, significa que é alguma da informação do…
private void InicializarInfoBase() { /** Inicializamos com alguma informação de base **/ /** Alguns Cursos **/ lstCR.Add(new clsCursos("Scratch", "Aprender a Programar com Scratch", "20", "75€")); lstCR.Add(new clsCursos("Legos", "Aprender a Programar com Legos", "50", "100€")); /** Metodos Pagamento **/ lstMP.Add(new clsMetodosPagamento("Dinheiro")); //[0] lstMP.Add(new clsMetodosPagamento("MB")); //[1] lstMP.Add(new clsMetodosPagamento("Cheque"));//[2] lstMP.Add(new clsMetodosPagamento("Transferência"))//;[3] //- Alguns Códigos Postais lstCPostal.Add(new clsCodigoPostal("4100-123", " Porto")); lstCPostal.Add(new clsCodigoPostal("4430-393" ," Vila Nova Gaia")); lstCPostal.Add(new clsCodigoPostal("4425-051", " Aguas Santas")); lstCPostal.Add(new clsCodigoPostal("4425-001", " Maia")); //- Alguns Formadores lstF.Add(new clsFormador("Claudia Araujo","102846589", "2", "Scratch", "Rua D. Afonso Henriques","913511212","[email protected]", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[1])); lstF.Add(new clsFormador("Silvia Cunha", "200584789", "3", "Scratch", "Rua 14 de Outubro", "920010056", "[email protected]", (clsCodigoPostal)lstCPostal[3], (clsMetodosPagamento)lstMP[0])); lstF.Add(new clsFormador("Ana Rodrigues", "590875457", "1", "Legos", "Rua da Praia", "915361981", "[email protected]", (clsCodigoPostal)lstCPostal[2], (clsMetodosPagamento)lstMP[3])); //- Alguns Formandos lstA.Add(new clsFormando("Filipa Gomes","91 000 00 00","1-05-2007","000000000","111111111","Rua Praia", "2º Ciclo", "Ana Rodrigues", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[0])); lstA.Add(new clsFormando("Gil Pinho", "91 000 00 10", "08-12-2000","000000000", "111111111", "Rua Chico","10º Ano", "Cristina Gomes", (clsCodigoPostal)lstCPostal[1],(clsMetodosPagamento)lstMP[1])); lstA.Add(new clsFormando("Zahira Rosa", "91 000 00 20", "16-07-2007", "000000000", "111111111", "Rua Maia", "2º Ciclo", "Asha Rosa", (clsCodigoPostal)lstCPostal[2], (clsMetodosPagamento)lstMP[2]));
Neste caso temos o campo formatado para o Código Postal.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
lstA.Add(new clsFormando("Sofia Cruz", "91 000 00 30", "16-05-2008", "000000000", "111111111", "Rua Afurada", "2º Ciclo", "Joana Cruz", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[3])); } … que está em fala ou não existe, por exemplo, se : lstA.Add(new clsFormando("Sofia Cruz", "91 000 00 30", "16-05-2008", "000000000", "111111111", "Rua Afurada", "2º Ciclo", "Joana Cruz", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[4]));
Vai dar o referido erro, porque o métod de pagamento no vector 4 não
existe, temos do [0] ao [3]
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Conclusão:
Foi um trabalho que achei interessante e motivador, gostei de o fazer dediquei o máximo de tempo disponível. A cada passo que trabalhava no mesmo fazia melhorias e acrescentava o que achava que poderia tornar o trabalho melhor. Penso que neste trabalho, consegui aplicar tudo aquilo que fomos aprendendo ao longo deste semestre, junto com as pesquisas que efectuei na Internet para tornar o trabalho melhor e aproveitei de aprofundar mais conhecimentos nesta matéria. A maior dificuldade no trabalho é fazer os relatórios segundo o Novo Acordo Ortográfico, pelo que para evitar erros de Ortografia preferi optar pelo Antigo.
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Código Fonte:
Classes:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsCodigoPostal { /** Atributos **/ private string _codPostal; private string _Localidade; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string Codigo_Postal { get { return _codPostal; } } public string Localidade { get { return _Localidade; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsCodigoPostal(string CodPostal, string Local) { _codPostal = CodPostal; _Localidade = Local; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string ToString() { return _codPostal + " " + _Localidade; } /** Fim Métodos **/ /*********************/ } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsCursos { /** Atributos **/ protected string _Curso; private string _Descricao; private string _NHoras; private string _Valor; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string Curso { get { return _Curso; } } public string Desc { get { return _Descricao; } } public string NHoras { get { return _NHoras; } } public string Val { get { return _Valor; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsCursos() : base() { } public clsCursos(string C, string CD, string NH, string Val) { _Curso = C; _Descricao = CD; _NHoras = NH; _Valor = Val; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string ToString() { return _Curso + " - " + _Descricao + " | " + _NHoras + "H | " + _Valor; } /** Fim Métodos **/ /*********************/ } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsFormacao { /** Atributos **/ private string _nome; public List<clsFormador> lstF; public List<clsFormando> lstA; public List<clsCursos> lstCR; public List<clsCodigoPostal> lstCPostal; public List<clsMetodosPagamento> lstMP; public List<clsInscricaoCursos> lstIC; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string Nome { get { return _nome; } set { _nome = value; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsFormacao(string nome) { _nome = nome; lstF = new List<clsFormador>(); lstA = new List<clsFormando>(); lstCR = new List<clsCursos>(); lstCPostal = new List<clsCodigoPostal>(); lstMP = new List<clsMetodosPagamento>(); lstIC = new List<clsInscricaoCursos>(); InicializarInfoBase(); } /** Fim Construtctors **/ /**********************/ private void InicializarInfoBase() { /** Inicializamos com alguma informação de base **/ /** Alguns Cursos **/ lstCR.Add(new clsCursos("Scratch", "Aprender a Programar com Scratch", "20", "75€")); lstCR.Add(new clsCursos("Legos", "Aprender a Programar com Legos", "50", "100€")); /** Metodos Pagamento **/ lstMP.Add(new clsMetodosPagamento("Dinheiro")); lstMP.Add(new clsMetodosPagamento("MB"));
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
lstMP.Add(new clsMetodosPagamento("Cheque")); lstMP.Add(new clsMetodosPagamento("Transferência")); //- Alguns Códigos Postais lstCPostal.Add(new clsCodigoPostal("4100-123", " Porto")); lstCPostal.Add(new clsCodigoPostal("4430-393" ," Vila Nova Gaia")); lstCPostal.Add(new clsCodigoPostal("4425-051", " Aguas Santas")); lstCPostal.Add(new clsCodigoPostal("4425-001", " Maia")); //- Alguns Formadores lstF.Add(new clsFormador("Claudia Araujo","102846589", "2", "Scratch", "Rua D. Afonso Henriques","913511212","[email protected]", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[1])); lstF.Add(new clsFormador("Silvia Cunha", "200584789", "3", "Scratch", "Rua 14 de Outubro", "920010056", "[email protected]", (clsCodigoPostal)lstCPostal[3], (clsMetodosPagamento)lstMP[0])); lstF.Add(new clsFormador("Ana Rodrigues", "590875457", "1", "Legos", "Rua da Praia", "915361981", "[email protected]", (clsCodigoPostal)lstCPostal[2], (clsMetodosPagamento)lstMP[3])); //- Alguns Formandos lstA.Add(new clsFormando("Filipa Gomes","91 000 00 00","1-05-2007","000000000","111111111","Rua Praia", "2º Ciclo", "Ana Rodrigues", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[0])); lstA.Add(new clsFormando("Gil Pinho", "91 000 00 10", "08-12-2000","000000000", "111111111", "Rua Chico","10º Ano", "Cristina Gomes", (clsCodigoPostal)lstCPostal[1],(clsMetodosPagamento)lstMP[1])); lstA.Add(new clsFormando("Zahira Rosa", "91 000 00 20", "16-07-2007", "000000000", "111111111", "Rua Maia", "2º Ciclo", "Asha Rosa", (clsCodigoPostal)lstCPostal[2], (clsMetodosPagamento)lstMP[2])); lstA.Add(new clsFormando("Sofia Cruz", "91 000 00 30", "16-05-2008", "000000000", "111111111", "Rua Afurada", "2º Ciclo", "Joana Cruz", (clsCodigoPostal)lstCPostal[1], (clsMetodosPagamento)lstMP[3])); } } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { /** Herança, Formador herda propriedades da Classe Pessoa **/ class clsFormador:clsPessoa { /** Atributos **/ private string _NrFormador; private string _Especialidade; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string NrFormador { get { return _NrFormador; } } public string Especialidade { get { return _Especialidade; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsFormador() : base() { } public clsFormador(string Nome, string NIF, string Nr, string Esp, string Morada, string Contacto, string Email, clsCodigoPostal CP, clsMetodosPagamento MP) : base(Nome, CP) { _Nome = Nome; _Morada = Morada; _NrFormador = Nr; _NIF = NIF; _Especialidade = Esp; _Contacto = Contacto; _Email = Email; _MP = MP; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string Mostrar() { string Info = "Formador: " + _UID + "; " + _Nome + "; Nº: " + _NrFormador + "; " + _Especialidade + "\n"; return Info; } /** Fim Métodos **/ /*********************/ } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { /** Herança, Formadando assim como o Formador, herda propriedades da Classe Pessoa **/ class clsFormando:clsPessoa { /** Atributos **/ private string _NEscolaridade; private string _EncEducacao; private List<clsInscricaoCursos> _IC; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string NEscolaridade { get { return _NEscolaridade; } } public string EncEducacao { get { return _EncEducacao; } } public int NCursos { get { if (_IC != null) { return _IC.Count; } return 0; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsFormando() : base() { } public clsFormando(string Nome, string Contacto,string DN,string BI, string NIF, string Morada, string NEscolaridade, string EncEducacao, clsCodigoPostal CP, clsMetodosPagamento MP) : base(Nome, CP) { _Nome = Nome; _DNascimento = DN; _Contacto = Contacto; _BI = BI; _NIF = NIF; _Morada = Morada; _NEscolaridade = NEscolaridade; _EncEducacao = EncEducacao; _CP = CP; _MP = MP; _IC = new List<clsInscricaoCursos>(); } /** Adiciona Inscrição **/ public void InscricaoAdicionar(clsInscricaoCursos I) { _IC.Add(I);
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
} /** Lista os Cursos **/ public string ListarCursos() { string Lista = ""; if (NCursos > 0) { foreach (clsInscricaoCursos I in _IC) { Lista += I.relatorioCurso() + "\n"; } } return Lista; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string ToString() { return _Nome + " | " + _NEscolaridade + " | Enc. Educação: " + _EncEducacao; } public static implicit operator clsFormando(clsInscricaoCursos v) { throw new NotImplementedException(); } /** Fim Métodos **/ /*********************/ } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsInscricaoCursos { /** Atributos **/ public enum Estado { Inscrito, N_Inscrito }; private DateTime _DTInicio; private DateTime _DTFim; private Estado _Estado; public static string _Curso; private clsFormando _F; /** Fim Atributos **/ /*********************/ /** Costructors **/ public string Curso { get { return _Curso; } set { _Curso = value; } } public DateTime DTInicio { get { return _DTInicio; } set { _DTInicio = value; } } public DateTime DTFim { get { return _DTFim; } set { _DTFim = value; } } public clsInscricaoCursos(string C,string DTInicio,string DTFim) { _DTInicio = Convert.ToDateTime(DTInicio); _DTFim = Convert.ToDateTime(DTFim); _Estado = Estado.Inscrito; _Curso = C; _F = null; } public string relatorioCurso() { string Info = "Inscrição Curso: \n"; if (_Estado == Estado.Inscrito) {
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
Info += "Curso: " + _Curso + "\n" + "Inicio em: " + _DTInicio.ToShortDateString() + "\n" + "Termina em: " + _DTFim.ToShortDateString(); } return Info; } /** Fim Constructors **/ /*********************/ } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsMetodosPagamento { /** Atributos **/ private string _TPagamento; /** Fim Atributos **/ /*********************/ /** Propriedades **/ public string Pagamento { get { return _TPagamento; } } /** Fim Propriedades **/ /*********************/ /** Constructors **/ public clsMetodosPagamento(string TP) { _TPagamento = TP; } /** Fim Constructors **/ /*********************/ /** Métodos **/ public override string ToString() { return _TPagamento ; } /** Fim Métodos **/ /*********************/ } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Formacao { class clsPessoa { /** Atributos **/ protected string _UID; protected string _Nome; protected string _Morada; protected string _BI; protected string _NIF; protected string _DNascimento; protected string _Contacto; protected string _Email; protected clsCodigoPostal _CP; protected clsMetodosPagamento _MP; /** Fim Atributos **/ /******************/ /** Propriedades */ /***************************************************/ /** Campos a utilizar **/ /**************************************************/ /****************** Nome *******************/ public string Nome { get { return _Nome; } set { _Nome = value; } } /****************** Morada *******************/ public string Morada { get { return _Morada; } set { _Morada = value; } } /***************** BI ********************/ public string BI { get { return _BI; } set { _BI = value; } } /***************** NIF ******************/ public string NIF { get { return _NIF; } set { _NIF = value; } } /********* Data Nascimento *************/ public string DNascimento { get { return _DNascimento; } set { _DNascimento = value; } } /************** Contacto ***************/ public string Contacto {
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
get { return _Contacto; } set { _Contacto = value; } } /*************** Email ****************/ public string Email { get { return _Email; } set { _Email = value; } } /*********** Codigo Postal ************/ public clsCodigoPostal CP { get { return _CP; } set { _CP = value; } } /****** Métodos de Pagamento *********/ public clsMetodosPagamento MP { get { return _MP; } set { _MP = value; } } /** Fim Propriedades **/ /*********************/ /** Contructors **/ public clsPessoa() { } public clsPessoa(string Nome) { _UID = Guid.NewGuid().ToString(); _Nome = Nome; _Morada = Morada; _BI = BI; _NIF = NIF; _DNascimento = DNascimento; _Contacto = Contacto; _Email = Email; _CP = null; _MP = null; } public clsPessoa(string Nome, string Morada, string BI, string NIF, string DNascimento, string Contacto, string Email, clsCodigoPostal CP, clsMetodosPagamento MP) { _UID = Guid.NewGuid().ToString(); _Nome = Nome; _Morada = Morada; _BI = BI; _NIF = NIF; _DNascimento = DNascimento; _Contacto = Contacto; _Email = Email; _CP = CP; _MP = MP; } public clsPessoa(string nome, clsCodigoPostal CP) { _Nome = nome; _CP = CP;
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
} /** Fim Constructors **/ /*********************/ /** Métodos Públicos **/ public virtual string Mostrar() { string Info = "Info: " + _UID + "; " + _Nome + "; " +"; Morada " + _Morada + _BI + "; " + _NIF + "; " + _DNascimento + "; " + _Contacto + "; " + _Email + "; Método Pagamento: " + _MP + "; Codigo Postal: "; if (_CP != null) Info += _CP.Codigo_Postal; else Info += "****"; return Info; } /** Fim Métodos Publicos */ /************************/ } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558
Projecto Programação II - 1º Ano Licenciatura Informática
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace Formacao { static class Program { /** Torna visivel a CLSFORMAÇÃO por toda a aplicação **/ public static clsFormacao EP = new clsFormacao("Formação"); /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmFormacao()); } } }
Ana Isabel Rodrigues – Licenciatura Informática 1º Ano – Nº 558