private void BuscarPorArtista(int codigo) { binarySearchResult = BinarySearch.BinarySearchDisplay(Array.ConvertAll(General.Artistas, a => a.Codigo).Where(a => a > 0).ToArray(), codigo); if (binarySearchResult != -1) { Editar.Click += EditarArtista; LabelNome.Text = "Nome do Artista: " + General.Artistas[binarySearchResult].NomeArtistico + " (" + General.Artistas[binarySearchResult].NomeVerdadeiro + ")"; LabelGridView1.Text = "Músicas"; LabelGridView2.Text = "Álbuns"; LabelNome.Visible = true; Editar.Visible = true; LabelGridView1.Visible = true; LabelGridView2.Visible = true; DataGridView1.Visible = true; DataGridView2.Visible = true; DataGridView1.Columns.Clear(); DataGridView1.Columns.Add("Codigo", "Código"); DataGridView1.Columns.Add("Titulo", "Título"); DataGridView1.Rows.Clear(); General.Cancao[] cancoes = new General.Cancao[0]; for (int i = 0; i < General.CancoesSize; i++) { if (General.Cancoes[i].CodigoCompositor == codigo && General.Cancoes[i].CodigoArtistaPrimeiraGravacao == codigo) { Array.Resize(ref cancoes, cancoes.Length + 1); cancoes[^ 1] = General.Cancoes[i];
private void CancaoForm_Load(object sender, EventArgs e) { if (General.CancoesSize >= General.MaxSize) { MessageBox.Show("O limite de espaço para canções foi atingido", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); Close(); } if (General.ArtistasSize == 0) { MessageBox.Show("É necessário cadastrar ao menos um artista.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); Close(); } for (int i = 0; i < General.ArtistasSize; i++) { General.Artista artistaTemp = General.Artistas[i]; RefCodes.Add(artistaTemp.Codigo); Compositor.Items.Add("(" + artistaTemp.Codigo + ") " + artistaTemp.NomeArtistico); Artista.Items.Add("(" + artistaTemp.Codigo + ") " + artistaTemp.NomeArtistico); } if (Index != -1) { General.Cancao cancaoTemp = General.Cancoes[Index]; Codigo.Text = cancaoTemp.Codigo.ToString(); Titulo.Text = cancaoTemp.Titulo; Letra.Text = cancaoTemp.Letra; Melodia.Text = cancaoTemp.Melodia; Compositor.SelectedIndex = BinarySearch.BinarySearchDisplay(RefCodes, cancaoTemp.CodigoCompositor); Artista.SelectedIndex = BinarySearch.BinarySearchDisplay(RefCodes, cancaoTemp.CodigoArtistaPrimeiraGravacao); } }
private void AlbumForm_Load(object sender, EventArgs e) { toolTip1.SetToolTip(label7, "Digite o código da música e pressione Enter para selecionar a música"); toolTip1.SetToolTip(label8, "Digite o código do artista e pressione Enter para selecionar o artista"); if (General.AlbumsSize >= General.MaxSize) { MessageBox.Show("O limite de espaço para canções foi atingido", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); Close(); } if (General.ArtistasSize == 0) { MessageBox.Show("É necessário cadastrar ao menos um artista.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); Close(); } if (General.CancoesSize == 0) { MessageBox.Show("É necessário cadastrar ao menos uma música.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); Close(); } for (int i = 0; i < General.ArtistasSize; i++) { General.Artista artistaTemp = General.Artistas[i]; ArtistasParticipantes.Items.Add("(" + artistaTemp.Codigo + ") " + artistaTemp.NomeArtistico); RefCodesArtistas.Add(artistaTemp.Codigo); } for (int i = 0; i < General.CancoesSize; i++) { General.Cancao cancaoTemp = General.Cancoes[i]; ListaMusicas.Items.Add("(" + cancaoTemp.Codigo + ") " + cancaoTemp.Titulo); RefCodesMusicas.Add(cancaoTemp.Codigo); } if (Index != -1) { General.Album albumTemp = General.Albums[Index]; Codigo.Text = albumTemp.Codigo.ToString(); Titulo.Text = albumTemp.Titulo; DataLancamento.Text = albumTemp.DataLancamento.ToString("d"); NCopiasVendidas.Text = albumTemp.NumeroCopiasVendidas.ToString(); for (int i = 0; i < albumTemp.CodigosMusicas.Length; i++) { ListaMusicas.SetItemChecked(BinarySearch.BinarySearchDisplay(RefCodesMusicas, albumTemp.CodigosMusicas[i]), true); } for (int i = 0; i < albumTemp.ArtistasParticipantes.Length; i++) { ArtistasParticipantes.SetItemChecked(BinarySearch.BinarySearchDisplay(RefCodesArtistas, albumTemp.ArtistasParticipantes[i]), true); } } }
private void PesquisarArtistas_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (!int.TryParse(PesquisarArtistas.Text, out int codigo) || codigo <= 0) { MessageBox.Show("O código precisa ser um número maior que 0", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } int resultado = BinarySearch.BinarySearchDisplay(RefCodesArtistas, codigo); if (resultado != -1) { ArtistasParticipantes.SetItemChecked(resultado, true); PesquisarArtistas.Text = ""; MessageBox.Show("O artista \"" + General.Artistas[resultado].NomeArtistico + "\" foi selecionado.", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Nenhum resultado encontrado para este código", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } }
private void Salvar_Click(object sender, EventArgs e) { string erro = ""; int codigo = 0; if (Codigo.Text != "" && (!int.TryParse(Codigo.Text, out codigo) || codigo <= 0)) { erro += "- O código precisa ser um número maior que zero\n"; } if (NomeVerdadeiro.Text == "" || NomeArtistico.Text == "" || DataAniversario.Text == "" || (BandaSN.Checked && Banda.Text == "") || Email.Text == "" || Telefone.Text == "" || NomeEmpresario.Text == "" || EmailEmpresario.Text == "" || TipoTrabalho.SelectedIndex == -1 || NAlbunsLancados.Text == "" || NComposicoes.Text == "") { erro += "- Todos os campos precisam ser prenchidos com excessão do código\n"; } if (!DateTime.TryParse(DataAniversario.Text, out DateTime aniversario)) { erro += "- O campo Data de Aniversário não está em um formato válido, utilize o formato dia/mês/ano\n"; } if (!int.TryParse(NAlbunsLancados.Text, out int nAlbunsLancados)) { erro += "- O número de álbuns lançados precisa ser um número\n"; } if (!int.TryParse(NComposicoes.Text, out int nComposicoes)) { erro += "- O número de composições precisa ser um número\n"; } if (!decimal.TryParse(CacheMinimo.Text, out decimal cacheMinimo)) { erro += "- O campo cache mínimo precisa ser um número\n"; } if (Index == -1 && BinarySearch.BinarySearchDisplay(Array.ConvertAll(General.Artistas, a => a.Codigo).Where(a => a > 0).ToArray(), codigo) != -1) { erro += "- Este código já está sendo utilizado\n"; } if (!ValidateMail(Email.Text)) { erro += "- Formato de e-mail do artista inválido, tente o formato [email protected]\n"; } if (!ValidateMail(EmailEmpresario.Text)) { erro += "- Formato de e-mail do empresário inválido, tente o formato [email protected]\n"; } if (erro != "") { MessageBox.Show(erro, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } General.Artista.TipoTrabalho tipoTrabalho = TipoTrabalho.SelectedIndex switch { 0 => General.Artista.TipoTrabalho.Cantor, 1 => General.Artista.TipoTrabalho.Compositor, 2 => General.Artista.TipoTrabalho.Ambos, _ => throw new ArgumentOutOfRangeException(), }; if (Codigo.Text == "") { codigo = General.ArtistasSize != 0 ? General.Artistas[General.ArtistasSize - 1].Codigo + 1 : 1; } if (Index == -1) { General.Artistas[General.ArtistasSize++] = new General.Artista() { Codigo = codigo, NomeVerdadeiro = NomeVerdadeiro.Text, NomeArtistico = NomeArtistico.Text, Aniversario = aniversario, BandaBool = BandaSN.Checked, NomeBanda = Banda.Text, Email = Email.Text, Telefone = Telefone.Text, NomeEmpresario = NomeEmpresario.Text, EmailEmpresario = EmailEmpresario.Text, EmailEmpresarioTabelaHash = HashTable.QuadraticHashInsert(EmailEmpresario.Text), TipoDeTrabalho = tipoTrabalho, NumeroAlbunsLancados = nAlbunsLancados, NumeroComposicoes = nComposicoes, CacheMinimo = cacheMinimo }; // A função Array.ConvertAll pega o vetor da struct Album e retorna um vetor de inteiros com os códigos de cada uma // A função Where remove todos os índices de código 0 pois nestes casos o vetor não está preenchido e não deve ser ordenado MergeSort.Sort(General.Artistas, Array.ConvertAll(General.Artistas, a => a.Codigo).Where(a => a > 0).ToArray()); } else { if (EmailEmpresario.Text != General.Artistas[Index].EmailEmpresario) { HashTable.Edit(General.Artistas[Index].EmailEmpresarioTabelaHash, EmailEmpresario.Text); } General.Artistas[Index] = new General.Artista() { Codigo = General.Artistas[Index].Codigo, NomeVerdadeiro = NomeVerdadeiro.Text, NomeArtistico = NomeArtistico.Text, Aniversario = aniversario, BandaBool = BandaSN.Checked, NomeBanda = Banda.Text, Email = Email.Text, Telefone = Telefone.Text, NomeEmpresario = NomeEmpresario.Text, EmailEmpresario = EmailEmpresario.Text, EmailEmpresarioTabelaHash = General.Artistas[Index].EmailEmpresarioTabelaHash, TipoDeTrabalho = tipoTrabalho, NumeroAlbunsLancados = nAlbunsLancados, NumeroComposicoes = nComposicoes, CacheMinimo = cacheMinimo }; } Program.globalForm.UpdateRows(Main.DataGrid.Artistas); Close(); }
private void Salvar_Click(object sender, EventArgs e) { string erro = ""; int codigo = 0; if (Codigo.Text != "" && (!int.TryParse(Codigo.Text, out codigo) || codigo <= 0)) { erro += "- O código precisa ser um número maior que zero\n"; } if (Titulo.Text == "" || DataLancamento.Text == "" || NCopiasVendidas.Text == "" || ListaMusicas.CheckedItems.Count == 0 || ArtistasParticipantes.CheckedItems.Count == 0) { erro += "- Todos os campos precisam ser prenchidos com excessão do código\n"; } if (Index == -1 && BinarySearch.BinarySearchDisplay(Array.ConvertAll(General.Albums, a => a.Codigo).Where(a => a > 0).ToArray(), codigo) != -1) { erro += "- Este código já está sendo utilizado\n"; } if (!DateTime.TryParse(DataLancamento.Text, out DateTime dataLancamento)) { erro += "- Data de Lançamento inválida\n"; } if (!long.TryParse(NCopiasVendidas.Text, out long nCopiasVendidas)) { erro += "- Número de cópias inválido\n"; } if (erro != "") { MessageBox.Show(erro, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (Codigo.Text == "") { codigo = General.AlbumsSize != 0 ? General.Albums[General.AlbumsSize - 1].Codigo + 1 : 1; } int[] indicesMusicas = ListaMusicas.CheckedIndices.Cast <int>().ToArray(); List <int> codigosMusicas = new List <int>(); for (int i = 0; i < indicesMusicas.Length; i++) { codigosMusicas.Add(RefCodesMusicas[indicesMusicas[i]]); } int[] indicesArtistas = ArtistasParticipantes.CheckedIndices.Cast <int>().ToArray(); List <int> codigosArtistas = new List <int>(); for (int i = 0; i < indicesArtistas.Length; i++) { codigosArtistas.Add(RefCodesArtistas[indicesArtistas[i]]); } if (Index == -1) { General.Albums[General.AlbumsSize++] = new General.Album() { Codigo = codigo, Titulo = Titulo.Text, DataLancamento = dataLancamento, NumeroCopiasVendidas = nCopiasVendidas, CodigosMusicas = codigosMusicas.ToArray(), ArtistasParticipantes = codigosArtistas.ToArray() }; // A função Array.ConvertAll pega o vetor da struct Album e retorna um vetor de inteiros com os códigos de cada uma // A função Where remove todos os índices de código 0 pois nestes casos o vetor não está preenchido e não deve ser ordenado MergeSort.Sort(General.Albums, Array.ConvertAll(General.Albums, a => a.Codigo).Where(a => a > 0).ToArray()); } else { General.Albums[Index] = new General.Album() { Codigo = General.Albums[Index].Codigo, Titulo = Titulo.Text, DataLancamento = dataLancamento, NumeroCopiasVendidas = nCopiasVendidas, CodigosMusicas = codigosMusicas.ToArray(), ArtistasParticipantes = codigosArtistas.ToArray() }; } Program.globalForm.UpdateRows(Main.DataGrid.Albuns); Close(); }
private void Salvar_Click(object sender, EventArgs e) { string erro = ""; int codigo = 0; if (Codigo.Text != "" && (!int.TryParse(Codigo.Text, out codigo) || codigo <= 0)) { erro += "- O código precisa ser um número maior que zero\n"; } if (Titulo.Text == "" || Letra.Text == "" || Melodia.Text == "" || Compositor.SelectedIndex == -1 || Artista.SelectedIndex == -1) { erro += "- Todos os campos precisam ser prenchidos com excessão do código\n"; } if (Index == -1 && BinarySearch.BinarySearchDisplay(Array.ConvertAll(General.Cancoes, a => a.Codigo).Where(a => a > 0).ToArray(), codigo) != -1) { erro += "- Este código já está sendo utilizado\n"; } if (erro != "") { MessageBox.Show(erro, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (Codigo.Text == "") { codigo = General.CancoesSize != 0 ? General.Cancoes[General.CancoesSize - 1].Codigo + 1 : 1; } if (Index == -1) { General.Cancoes[General.CancoesSize++] = new General.Cancao() { Codigo = codigo, Titulo = Titulo.Text, Letra = Letra.Text, Melodia = Melodia.Text, CodigoCompositor = RefCodes[Compositor.SelectedIndex], CodigoArtistaPrimeiraGravacao = RefCodes[Artista.SelectedIndex] }; // A função Array.ConvertAll pega o vetor da struct Album e retorna um vetor de inteiros com os códigos de cada uma // A função Where remove todos os índices de código 0 pois nestes casos o vetor não está preenchido e não deve ser ordenado MergeSort.Sort(General.Cancoes, Array.ConvertAll(General.Cancoes, a => a.Codigo).Where(a => a > 0).ToArray()); } else { General.Cancoes[Index] = new General.Cancao() { Codigo = General.Cancoes[Index].Codigo, // Codigo nao pode ser alterado Titulo = Titulo.Text, Letra = Letra.Text, Melodia = Melodia.Text, CodigoCompositor = RefCodes[Compositor.SelectedIndex], CodigoArtistaPrimeiraGravacao = RefCodes[Artista.SelectedIndex] }; } Program.globalForm.UpdateRows(Main.DataGrid.Musicas); Close(); }