diff --git "a/Documenta\303\247\303\243o/Backlog sprint 2.jpeg" "b/Documenta\303\247\303\243o/Backlog sprint 2.jpeg" new file mode 100644 index 0000000..5bce896 Binary files /dev/null and "b/Documenta\303\247\303\243o/Backlog sprint 2.jpeg" differ diff --git a/Minimum Viable Product/TelaLogin.py b/Minimum Viable Product/TelaLogin.py new file mode 100644 index 0000000..68b2e2f --- /dev/null +++ b/Minimum Viable Product/TelaLogin.py @@ -0,0 +1,40 @@ +import PySimpleGUI as sg +import pandas as pd + +sg.theme('LightGreen1') +layout = [ + [sg.Text('Usuário',font=('Arial', 15))], [sg.Input(font=('Arial', 15), key='usuário', size=(30,30))], + [sg.Text('Senha',font=('Arial', 15))], [sg.Input(font=('Arial', 15),key='senha', password_char= '*', size=(30,30))], + [sg.Button('Entrar',font=('Arial', 15))] +] + +janela = sg.Window('Tela de Login', layout=layout, margins=(20,20),finalize=True) + +while True: + eventos, valores = janela.read() + if eventos == sg.WINDOW_CLOSED: + break + if eventos == 'Entrar': + + df = pd.read_excel('arquivo.xlsx') + df.head() + + login = df['Matricula'] + senha = df['Senha'] + + + if valores ['usuário'] == '' or valores ['senha'] == '': + sg.popup_quick("Preencha Todos os campos") + else: + x = 0 + for usuario in login: + if valores['usuário'] == str(usuario): + if valores['senha'] == str(senha[x]): + sg.popup_quick("Bem Vindo") + + x=0 + break + + x += 1 + if x > 0: + sg.popup_quick("Verifique seu login ou senha.") diff --git a/Minimum Viable Product/adm_editor.py b/Minimum Viable Product/adm_editor.py new file mode 100644 index 0000000..3e1b0ac --- /dev/null +++ b/Minimum Viable Product/adm_editor.py @@ -0,0 +1,10 @@ +import pandas as pd + +editor_df = pd.read_excel('arquivo.xlsx') +editor_df.head() +print(editor_df) + +linha = int(input('Qual Matrícula você deseja visualizar? ')) +coluna = input('Qual informação você deseja visualizar? (Nome; Senha; Time; Cargo) ') + +print(editor_df.loc[linha,coluna]) \ No newline at end of file diff --git a/Minimum Viable Product/gif_tela_login.gif b/Minimum Viable Product/gif_tela_login.gif new file mode 100644 index 0000000..e3f79cb Binary files /dev/null and b/Minimum Viable Product/gif_tela_login.gif differ diff --git a/Minimum Viable Product/win_adm.py b/Minimum Viable Product/win_adm.py new file mode 100644 index 0000000..86f4517 --- /dev/null +++ b/Minimum Viable Product/win_adm.py @@ -0,0 +1,72 @@ +from sre_constants import IN +import PySimpleGUI as sg # Importação da lib PySimpleGUI como "sg" +import tkinter +import pandas as pd # Importação da lib pandas como "pd" + +excel_header = ['Matricula', 'Nome','Senha','Time','Cargo'] # Aqui estamos informando os nomes das colunas +cadastro_df = pd.DataFrame(data = pd.read_excel('arquivo.xlsx', engine='openpyxl'), columns=excel_header) # Aqui estamos criando um DataFrame com as informações do arquivo excel, mudar o endereco da pasta + +sg.theme('LightGreen1') # Aqui definimos o tema que será usado no layout + +def fun_adm(): #Criação da tela principal do administrador + layout_adm = [ + [sg.Text('Bem vindo', expand_x=True, justification='center', font=('Arial', 20))], + [sg.pin(sg.Button('Consultar alunos',font=('Arial',20), key='-ALUNOS-')), + sg.pin(sg.Button('Consultar times', font=('Arial',20), key='-TIMES-')), + sg.pin(sg.Button('Consultar notas', font=('Arial',20), key='-NOTAS-'))] + ] + return sg.Window('ADMINISTRADOR', layout=layout_adm, margins=(10, 10), finalize=True) + +def fun_adm_alunos(): #Criação da tela de consulta da lista de alunos + nomes = cadastro_df['Nome'] + + layout_adm_alnos = [ + [sg.Text('ALUNOS CADASTRADOS:', expand_x=True, justification='center', font=('Arial', 20))], + [sg.Listbox(cadastro_df['Nome'], expand_x=True, size=(20, 5), font=('Arial', 20))], + [sg.Button('Retornar', expand_x=True, font=('Arial', 20), key='-ToADM-')] + ] + return sg.Window('ALUNOS', layout=layout_adm_alnos, margins=(10, 10), finalize=True) + +def fun_adm_times(): #Criação da tela de consulta da lista de times + layout_adm_alnos = [ + [sg.Text(cadastro_df.loc[:,'Time'], expand_x=True, justification='center', font=('Arial', 20))], + [sg.Button('Retornar', expand_x=True, font=('Arial', 20), key='-ToADM-')] + ] + return sg.Window('TIMES', layout=layout_adm_alnos, margins=(10, 10), finalize=True) + +def fun_adm_notas(): #Criação da tela de consulta das notas + layout_adm_alnos = [ + [sg.Text('CRUZAR AS NOTAS NO PANDAS', expand_x=True, justification='center', font=('Arial', 20))], + [sg.Button('Retornar', expand_x=True, font=('Arial', 20), key='-ToADM-')] + ] + return sg.Window('NOTAS', layout=layout_adm_alnos, margins=(10, 10), finalize=True) + +win_adm, con_alunos, con_times, con_notas = fun_adm(), None, None, None + +while True: # Este comando serve para iniciar uma repetição, para que o programa funcione continuamente + window, eventos, valores = sg.read_all_windows() + # Este comando a cima serve para armazenar as informações de qual janela está aberta no momento, qual evento foi realizado e também qual valor foi inserido + # window = serve para especificar a janela que está aberta no momento + # eventos = serve para capturar alguma ação realizada na janela, como clicar em algum botão + # valores = serve para receber o valor de um input, ou alguma outra forma de o usuário inserir infromações + + if eventos == sg.WINDOW_CLOSED: # Aqui estamos especificando o que será feito quando clicar no X da janela sendo "sg.WINDOW_CLOSE" o evento + break # Este comando serve para encerrar uma repetição + if window == win_adm and eventos in ['-ALUNOS-']: #Navega da pagina do adm para a pagina de consulta dos alunos + con_times = fun_adm_alunos() + win_adm.hide() + if window == win_adm and eventos in ['-TIMES-']: #Navega da tela do adm para a tela de consulta de times + con_times = fun_adm_times() + win_adm.hide() + if window == win_adm and eventos in ['-NOTAS-']: #Navega da tela do adm para a tela da consulta de notas + con_notas = fun_adm_notas() + win_adm.hide() + elif window == con_times and eventos in ['-ToADM-']: #Retorna para a pagina do adm + win_adm = fun_adm() + con_times.hide() + elif window == con_times and eventos in ['-ToADM-']: #Retorna para a pagina do adm + win_adm = fun_adm() + con_times.hide() + elif window == con_notas and eventos in ['-ToADM-']: #Retorna para a pagina do adm + win_adm = fun_adm() + con_notas.hide() \ No newline at end of file diff --git a/README.md b/README.md index 6827bbc..c173204 100644 --- a/README.md +++ b/README.md @@ -1,63 +1,36 @@ -# APRENDIZAGEM POR PROJETOS INTEGRADOS +# 📦 Entrega: __Sprint 2__ -> Status Do Projeto : Em Desenvolvimento ⚠️ +Abaixo encontram-se todos os itens produzidos durante a __SPRINT 2__: -## Fatec São José dos Campos, SP - PBLTeX -Aprendizagem por Projetos Integrados de 2022-2, Avaliação Democratizada baseada na técnica de Avaliação 360º, trabalho realizado pelo 1º Semestre -do curso de Banco De Dados na FATEC de São José dos Campos, para a empresa PBLTeX. +## 1 - 📅 Planejamento da Sprint: -## Equipe First: Integrantes -- [Brendel Marques ](https://github.com/BrendelMarques) -- [Caio Costa Santos](https://github.com/Caio-eng-gif) +### 📋 Sprint Backlog -- [Cristine Gomes](https://github.com/CristineGomes) +*A imagem abaixo mostra como os itens do [__Product Backlog__](https://github.com/laroyprado/Projeto-API-Equipe-First/blob/main/Documentacao/Backlog_(API_1_Semestre_Banco_De_Dados).pdf) que foram desenvolvidos durante a __Sprint 2__:* -- [Gustavo Henrique Silva](https://github.com/Gustavo394) +![](https://github.com/laroyprado/Projeto-API-Equipe-First/blob/Sprint-2/Documenta%C3%A7%C3%A3o/Backlog%20sprint%202.jpeg) -- [Laroy Bersot Ribeiro do Prado](https://github.com/laroyprado) `Scrum Master` -- [Pablo Cunha](https://github.com/pabloo-cunha) `Product Owner` +## 2 - 🖥️ Wireframe Desktop -- [Roberto Tsushima](https://github.com/Roberto-tsushima) +Acesse os links para visualizar: -- [Willian Danko Leite Caboski](https://github.com/DankoCaboski) +> * [Telas do ADM - Mac](https://github.com/laroyprado/Projeto-API-Equipe-First/tree/Sprint-2/Telas%20ADM%20-%20Mac) +> * [Telas do ADM - Microsoft](https://github.com/laroyprado/Projeto-API-Equipe-First/tree/Sprint-2/Telas%20ADM%20-%20Microsoft) -## Disciplinas Integradas: +> * [Protótipo interativo no Figma](https://www.figma.com/file/2JpDTLguDtheecLGFKWxwX/Projeto-First---Telas?node-id=0%3A1) -- Arquitetura e Organização De Computadores - Professor Fabiano Sabha -- Algoritmos - Professor Lucas Nadalete -- Laboratório De Desenvolvimento Em Banco De Dados - Professor Lucas Nadalete + +## 3 - 🚲 Mínimo Produto Viável (MVP) -## Objetivo -Desenvolver uma aplicação para Avaliação Democratizada, porém incluindo uma avaliação técnica adicional feita pelo Líder do Grupo e uma avaliação de produto/negócio realizada pelo Fake Client. - - Deve possuir um controle de usuários mínimo; - - Deve possuir um controle de perfis (instrutores e integrantes do time); - - Deve possuir um controle de Times; - - Deve possuir um controle de Sprints, representando os ciclos de desenvolvimento a -partir do qual cada integrante será avaliado; - - Deve possibilitar a realização, por um determinado integrante do Time, da avaliação -dos demais integrantes, incluindo a sí próprio, de forma individualizada. -- Deve possibilitar a realização das seguintes avaliações adicionais: - - Instrutor Líder do Grupo avaliando o aluno Líder Técnico do Time - - Instrutor Fake Client avaliando o aluno PO do Time -- Deve prover um ou mais Dashboards de acompanhamento +*Abaixo temos o endereço dos MVPs entregues nessa Sprint, bem como um Gif demonstrando o comportamento da tela de login quando: são inseridas credenciais corretas; quando alguma informação não é preenchida; e quando a senha informada é incorreta.* -## Descritivo do Projeto +* [Código - Tela Login](https://github.com/laroyprado/Projeto-API-Equipe-First/blob/main/Avaliador%20360%C2%BA%20-%20PBLTeX/Tela_Login.py) -Para a empresa PBLTeX , que deseja realizar suas avaliações democraticas, recebendo os dados -em um dashboard, de forma ágil e simples. +* [Código - Janela Consulta](https://github.com/laroyprado/Projeto-API-Equipe-First/blob/main/Avaliador%20360%C2%BA%20-%20PBLTeX/win_adm.py) -### Entregas -- [X] [Kick-Off] - 15/08/2022 a 19/08/2022 -- [ ] [Sprint 1] - 29/08/2022 a 18/09/2022 -- [ ] [Sprint 2] - 19/09/2022 a 09/10/2022 -- [ ] [Sprint 3] - 17/10/2022 a 06/11/2022 -- [ ] [Sprint 4] - 07/11/2022 a 27/11/2022 - -# A Visualização Do Desenvolvimento -A visualização do desenvolvimento das atividades do projeto, **kanban**, poderá ser acompanhada por meio da plataforma Trello do Trello: -[Visualização Do Projeto No Trello](https://trello.com/invite/api_grupofirst/619326ffbe4ce1ebe44ef2187f49dc94) +![](https://github.com/laroyprado/Projeto-API-Equipe-First/blob/Sprint-2/Minimum%20Viable%20Product/gif_tela_login.gif) diff --git a/Telas ADM - Mac/Tela do ADM 1 - Mac.png b/Telas ADM - Mac/Tela do ADM 1 - Mac.png new file mode 100644 index 0000000..bf0b49d Binary files /dev/null and b/Telas ADM - Mac/Tela do ADM 1 - Mac.png differ diff --git a/Telas ADM - Mac/Tela do ADM 2 - Alunos - Mac.png b/Telas ADM - Mac/Tela do ADM 2 - Alunos - Mac.png new file mode 100644 index 0000000..e16b702 Binary files /dev/null and b/Telas ADM - Mac/Tela do ADM 2 - Alunos - Mac.png differ diff --git a/Telas ADM - Mac/Tela do ADM 3 - Times - Mac.png b/Telas ADM - Mac/Tela do ADM 3 - Times - Mac.png new file mode 100644 index 0000000..5308fa4 Binary files /dev/null and b/Telas ADM - Mac/Tela do ADM 3 - Times - Mac.png differ diff --git a/Telas ADM - Mac/Tela do ADM 4 - Notas - Mac.png b/Telas ADM - Mac/Tela do ADM 4 - Notas - Mac.png new file mode 100644 index 0000000..371566d Binary files /dev/null and b/Telas ADM - Mac/Tela do ADM 4 - Notas - Mac.png differ diff --git a/Telas ADM - Microsoft/Tela do ADM 1 - Microsoft.png b/Telas ADM - Microsoft/Tela do ADM 1 - Microsoft.png new file mode 100644 index 0000000..a0f7223 Binary files /dev/null and b/Telas ADM - Microsoft/Tela do ADM 1 - Microsoft.png differ diff --git a/Telas ADM - Microsoft/Tela do ADM 2 - Alunos - Microsoft.png b/Telas ADM - Microsoft/Tela do ADM 2 - Alunos - Microsoft.png new file mode 100644 index 0000000..bd09334 Binary files /dev/null and b/Telas ADM - Microsoft/Tela do ADM 2 - Alunos - Microsoft.png differ diff --git a/Telas ADM - Microsoft/Tela do ADM 3 - Times - Microsoft.png b/Telas ADM - Microsoft/Tela do ADM 3 - Times - Microsoft.png new file mode 100644 index 0000000..135c886 Binary files /dev/null and b/Telas ADM - Microsoft/Tela do ADM 3 - Times - Microsoft.png differ diff --git a/Telas ADM - Microsoft/Tela do ADM 4 - Notas - Microsoft.png b/Telas ADM - Microsoft/Tela do ADM 4 - Notas - Microsoft.png new file mode 100644 index 0000000..1c6a7b8 Binary files /dev/null and b/Telas ADM - Microsoft/Tela do ADM 4 - Notas - Microsoft.png differ diff --git a/Wireframe - Tela de Login/Tela de Login - Mac.png b/Wireframe - Tela de Login/Tela de Login - Mac.png new file mode 100644 index 0000000..16bd5c9 Binary files /dev/null and b/Wireframe - Tela de Login/Tela de Login - Mac.png differ diff --git a/Wireframe - Tela de Login/Tela de Login - Microsoft.png b/Wireframe - Tela de Login/Tela de Login - Microsoft.png new file mode 100644 index 0000000..23b60ae Binary files /dev/null and b/Wireframe - Tela de Login/Tela de Login - Microsoft.png differ diff --git a/main.py b/main.py deleted file mode 100644 index 8992eab..0000000 --- a/main.py +++ /dev/null @@ -1,38 +0,0 @@ -import PySimpleGUI as sg -import pandas as pd - -sg.theme('LightGreen1') - -class First(): - def __init__(): - layout_principal = [ - [sg.Button('Matricular', font=('Arial', 20), key='-4-')] - ] - return sg.Window('FIRST', layout=layout_principal, margins=(50,50), finalize=True) - - def fun_matricula(): - layout_cadastro = [ - [sg.Text('Matrícula', expand_x=True, font=('Arial', 20)), sg.Input('', font=('Arial', 20), key='-MATRICULA-')], - [sg.Text('Nome', expand_x=True, font=('Arial', 20)), sg.Input('', font=('Arial', 20), key='-NOME-')], - [sg.Text('Senha', expand_x=True, font=('Arial', 20)), sg.Input('', font=('Arial', 20), key='-SENHA-')], - [sg.Text('Turma', expand_x=True, font=('Arial', 20)), sg.Combo('A B C D', expand_x=True, font=('Arial', 20), key='-TURMA-')], - [sg.Button('Confirmar', expand_x=True, font=('Arial', 20))] - ] - return sg.Window('Matrícula', layout=layout_cadastro, margins=(10, 10), finalize=True) - - principal, matricula, login = __init__(), None, None - - while True: - window, eventos, valores = sg.read_all_windows() - - if window == principal and eventos == sg.WIN_CLOSED: - break - - if window == principal and eventos in ['-4-']: - principal.hide() - matricula = fun_matricula() - - if window == matricula and eventos == sg.WINDOW_CLOSED: - break - -First() \ No newline at end of file