Sem resumo de edição
Etiqueta: visualeditor
Sem resumo de edição
Linha 923: Linha 923:
= Escopo =  
= Escopo =  
* Objetivo da aplicação
* Objetivo da aplicação
Desenvolver um software que tenha a capacidade de ler dados decorrentes dos funcionários de uma empresa que apresenta três turnos de serviço (matutino, vespertino e noturno), bem como realizar o cadastro dos mesmos com informações pessoais necessárias para que seja admitido como funcionário (identidade, CPF, data de nascimento, carteira de motorista, carteira de trabalho, etc.). O armazenamento de dados dos funcionários será necessário para que seja calculado o salário final de cada um ao final de cada mês, baseando-se nas horas in itineres (horas extras) e as horas normais de serviço (de acordo com a Lei nº 10.243, de 19 de Junho de 2001), isto é, pelos registros dos horários de entrada e saída bem como dias de domingo e feriados.<br>
** Desenvolver um software que tenha a capacidade de ler dados decorrentes dos funcionários de uma empresa que apresenta três turnos de serviço (matutino, vespertino e noturno), bem como realizar o cadastro dos mesmos com informações pessoais necessárias para que seja admitido como funcionário (identidade, CPF, data de nascimento, carteira de motorista, carteira de trabalho, etc.). O armazenamento de dados dos funcionários será necessário para que seja calculado o salário final de cada um ao final de cada mês, baseando-se nas horas in itineres (horas extras) e as horas normais de serviço (de acordo com a Lei nº 10.243, de 19 de Junho de 2001), isto é, pelos registros dos horários de entrada e saída bem como dias de domingo e feriados.<br>
 
<br>




Linha 931: Linha 931:
** Ex: quais dados serão digitados via teclado
** Ex: quais dados serão digitados via teclado
  Identidade, CPF, data de nascimento, carteira de motorista, carteira de trabalho, email, nome de funcionário, senha para login dos funcionários da empresa.
  Identidade, CPF, data de nascimento, carteira de motorista, carteira de trabalho, email, nome de funcionário, senha para login dos funcionários da empresa.
 
<br>


= Saídas =  
= Saídas =  
Linha 937: Linha 937:
** Ex: quais dados serão publicados na tela ou no papel
** Ex: quais dados serão publicados na tela ou no papel
Data e horário de entrada e saída de cada um dos funcionários e o salário final de cada um deles.<br>
Data e horário de entrada e saída de cada um dos funcionários e o salário final de cada um deles.<br>
 
<br>


= Armazenamento =
= Armazenamento =
* O que será gravado em arquivo
* O que será gravado em arquivo
Indentidade, CPF, data de nascimento, email, senha, carteira de motorista, carteira de trabalho e horas trabalhadas de acordo com os horários de entrada e saída bem como os dias trabalhados para cada um dos funcionários da empresa.<br>
** Indentidade, CPF, data de nascimento, email, senha, carteira de motorista, carteira de trabalho e horas trabalhadas de acordo com os horários de entrada e saída bem como os dias trabalhados para cada um dos funcionários da empresa.<br>
 
<br>


= Cálculos =  
= Cálculos =  
* O que será processado?
* O que será processado?
Calcular o salário líquido final de acordo com o número de horas trabalhadas por dia.<br>
** Calcular o salário líquido final de acordo com o número de horas trabalhadas por dia.<br>
 
<br>




= Desenvolvedores =  
= Desenvolvedores =  
Asaph Souza Diniz, Camila Vieira Verardo, João Vitor Pereira Leite, Leticia de Almeira Takata, Pedro Henrique Machado Rodrigues
* Asaph Souza Diniz
* Camila Vieira Verardo
* João Vitor Pereira Leite
* Leticia de Almeira Takata
* Pedro Henrique Machado Rodrigues
<br>
<br>

Edição das 22h09min de 26 de junho de 2016

Código


<syntaxhighlight lang="python3">

  1. -*- coding: utf-8 -*-

import sys import time import sqlite3


def arqexi(texto):

   try:
       arq = open(texto, "r")
       arq.close()
       return True
   except IOError:
       return False


def cpfv(a, b, c, d, e, f, g, h, i, j, k):

   cpf = [str(a), str(b), str(c), str(d), str(e), str(f), str(g), str(h), str(i), str(j), str(k)]
   A = a * 10 + b * 9 + c * 8 + d * 7 + e * 6 + f * 5 + g * 4 + h * 3 + i * 2
   resto1 = A % 11
   if resto1 == 0 or resto1 == 1:
       j_ = 0
       pass
   else:
       j_ = 11 - resto1
       pass
   B = a * 11 + b * 10 + c * 9 + d * 8 + e * 7 + f * 6 + g * 5 + h * 4 + i * 3 + j_ * 2
   resto2 = B % 11
   if resto2 == 0 or resto2 == 1:
       k_ = 0
       pass
   else:
       k_ = 11 - resto2
   cpfv_ = [str(a), str(b), str(c), str(d), str(e), str(f), str(g), str(h), str(i), str(j_), str(k_)]
   if cpf == cpfv_:
       return True
   else:
       return False


def datav(m1, d1, a1):

   anos = []
   for i in range(1800, 3000, 4):
       if i % 100 == 0:
           if i % 400 == 0:
               anos.append(i)
       elif i % 4 == 0:
           anos.append(i)
   if m1 == 1 or m1 == 3 or m1 == 5 or m1 == 7 or m1 == 8 or m1 == 10 or m1 == 12:
       if d1 <= 31 and d1 > 0:
           return True
       elif d1 > 31 and d1 < 0:
           return False
   elif m1 == 4 or m1 == 6 or m1 == 9 or m1 == 11:
       if d1 <= 30 and d1 > 0:
           return True
       elif d1 > 30 and d1 < 0:
           return True
   elif m1 == 2:
       if a1 in anos:
           if d1 <= 29 and d1 > 0:
               return True
           elif d1 > 29 and d1 < 0:
               return False
       else:
           if d1 <= 28 and d1 > 0:
               return True
           elif d1 > 28 and d1 < 0:
               return False
   else:
       return False


aq = arqexi('tabela.db') if not aq:

   conn = sqlite3.connect('tabela.db')
   cursor = conn.cursor()
   cursor.execute("""
           CREATE TABLE adms (
                   id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                   nome TEXT NOT NULL,
                   usuario TEXT NOT NULL,
                   senha TEXT NOT NULL,
                   data_de_nascimento TEXT NOT NULL,
                   cpf     TEXT NOT NULL,
                   fone TEXT,
                   rg TEXT NOT NULL
           );
           """)
   cursor.execute("""
           CREATE TABLE cadastros (
                   id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                   nome TEXT NOT NULL,
                   usuario TEXT NOT NULL,
                   senha TEXT NOT NULL,
                   data_de_nascimento TEXT NOT NULL,
                   cpf     TEXT NOT NULL,
                   fone TEXT,
                   email TEXT NOT NULL,
                   turno TEXT NOT NULL,
                   rg TEXT NOT NULL,
                   salario NUMERIC NOT NULL,
                   data_de_admissao DATE NOT NULL
           );
           """)
   cursor.execute("""
           CREATE TABLE entrada (
                   id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                   usuario TEXT NOT NULL,
                   senha TEXT NOT NULL,
                   data_de_entrada TEXT NOT NULL,
                   horario_de_entrada TEXT NOT NULL
           );
           """)
   cursor.execute("""
           CREATE TABLE saida (
                   id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                   usuario TEXT NOT NULL,
                   senha TEXT NOT NULL,
                   data_de_saida TEXT NOT NULL,
                   horario_de_saida TEXT NOT NULL
           );
           """)
   print('Tabelas criadas com sucesso.')
   print('Cadastre o adm')
   nome = input("Insira o nome: ")
   print(nome)
   print("Tem certeza ?")
   aysn = input("s/n ?: ")
   if aysn == "n" or aysn == "N":
       while aysn == "n" or aysn == "N":
           nome = input("Insira o nome: ")
           print(nome)
           print("Tem certeza ?")
           aysn = input("s/n ?: ")
   elif aysn == "s" or aysn == "S":
       pass
   usu = input('Insira seu nome de usuário: ')
   print(usu)
   print("Tem certeza ?")
   aysu = input("s/n ?: ")
   if aysu == "n" or aysu == "N":
       while aysu == "n" or aysu == "N":
           usu = input("Insira seu nome de usuário: ")
           print(usu)
           print("Tem certeza ?")
           aysu = input("s/n ?: ")
   elif aysu == "s" or aysu == "S":
       pass
   passw = input('Insira sua senha: ')
   print(passw)
   print("Tem certeza ?")
   aysps = input("s/n ?: ")
   if aysps == "n" or aysps == "N":
       while aysps == "n" or aysps == "N":
           passw = input("Insira sua senha: ")
           print(passw)
           print("Tem certeza ?")
           aysps = input("s/n ?: ")
   elif aysps == "s" or aysps == "S":
       pass
   b = list(input("Data de nascimento(DD/MM/YYYY): "))
   if len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
       while len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
           print("Por favor, verifique a data de nascimento")
           b = input("Data de nascimento(DD/MM/YYYY): ")
   data = b
   m1 = int(data[3] + data[4])
   d1 = int(data[0] + data[1])
   a1 = int(data[6] + data[7] + data[8] + data[9])
   d = datav(m1, d1, a1)
   if d:
       pass
   else:
       while not d:
           print("Data inválida")
           b = list(input("Data de nascimento(DD/MM/YYYY): "))
           if len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
               while len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
                   print("Por favor, verifique a data de nascimento")
                   b = input("Data de nascimento(DD/MM/YYYY): ")
           data = b
           m1 = int(data[3] + data[4])
           d1 = int(data[0] + data[1])
           a1 = int(data[6] + data[7] + data[8] + data[9])
           d = datav(m1, d1, a1)
   br = (
       str(data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6] + data[7] + data[8] + data[9]))
   print(br)
   print("Tem certeza ?")
   aysb = input("s/n?: ")
   if aysb == "n" or aysb == "N":
       while aysb == "n" or aysb == "N":
           b = list(input("Data de nascimento(DD/MM/YYYY): "))
           if len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
               while len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
                   print("Por favor, verifique a data de nascimento")
                   b = input("Data de nascimento(DD/MM/YYYY):  ")
           data = b
           d1 = int(data[0] + data[1])
           m1 = int(data[3] + data[4])
           a1 = int(data[6] + data[7] + data[8] + data[9])
           d = datav(m1, d1, a1)
           if d:
               pass
           else:
               while not d:
                   print("Data inválida")
                   b = list(input("Data de nascimento(DD/MM/YYYY): "))
                   if len(b) != 10 or b[2] != "/" or b[5] != "/":
                       while len(b) != 10 or b[2] != "/" or b[5] != "/":
                           print("Por favor, verifique a data de nascimento")
                           b = input("Data de nascimento(DD/MM/YYYY): ")
                   data = b
                   d1 = int(data[0] + data[1])
                   m1 = int(data[3] + data[4])
                   a1 = int(data[6] + data[7] + data[8] + data[9])
                   d = datav(m1, d1, a1)
           br = (str(
               data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6] + data[7] + data[8] + data[
                   9]))
           print(br)
           print("Tem certeza ?")
           aysb = input("s/n?: ")
   elif aysb == "s" or aysb == "S":
       pass
   cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
   if len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == cpf[2] == cpf[
       4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
       while len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == cpf[
           2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
           print("Por favor, verifique o CPF")
           cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
   else:
       pass
   a = int(cpf[0])
   b = int(cpf[1])
   c = int(cpf[2])
   d = int(cpf[4])
   e = int(cpf[5])
   f = int(cpf[6])
   g = int(cpf[8])
   h = int(cpf[9])
   i = int(cpf[10])
   j = int(cpf[12])
   k = int(cpf[13])
   veri = cpfv(a, b, c, d, e, f, g, h, i, j, k)
   if not veri:
       print("CPF inválido")
       while not veri:
           cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
           if len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == cpf[
               2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
               while len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == \
                       cpf[2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                   print("Por favor, verifique o CPF")
                   cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
           else:
               pass
           a = int(cpf[0])
           b = int(cpf[1])
           c = int(cpf[2])
           d = int(cpf[4])
           e = int(cpf[5])
           f = int(cpf[6])
           g = int(cpf[8])
           h = int(cpf[9])
           i = int(cpf[10])
           j = int(cpf[12])
           k = int(cpf[13])
           veri = cpfv(a, b, c, d, e, f, g, h, i, j, k)
           pass
   cp = (str(
       cpf[0] + cpf[1] + cpf[2] + cpf[3] + cpf[4] + cpf[5] + cpf[6] + cpf[7] + cpf[8] + cpf[9] + cpf[10] + cpf[
           11] + cpf[12] + cpf[13]))
   print(cp)
   print("Tem certeza ?")
   aysc = input("s/n ?: ")
   if aysc == "n" or aysc == "N":
       while aysc == "n" or aysc == "N":
           cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
           if len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == cpf[
               2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
               while len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == \
                       cpf[2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                   print("Por favor, verifique o CPF")
                   cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
           else:
               pass
           a = int(cpf[0])
           b = int(cpf[1])
           c = int(cpf[2])
           d = int(cpf[4])
           e = int(cpf[5])
           f = int(cpf[6])
           g = int(cpf[8])
           h = int(cpf[9])
           i = int(cpf[10])
           j = int(cpf[12])
           k = int(cpf[13])
           veri = cpfv(a, b, c, d, e, f, g, h, i, j, k)
           if not veri:
               print("CPF inválido")
               while veri != True:
                   cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                   if len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == \
                           cpf[2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                       while len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == \
                               cpf[1] == cpf[2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                           print("Por favor, verifique o CPF")
                           cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                   else:
                       pass
                   a = int(cpf[0])
                   b = int(cpf[1])
                   c = int(cpf[2])
                   d = int(cpf[4])
                   e = int(cpf[5])
                   f = int(cpf[6])
                   g = int(cpf[8])
                   h = int(cpf[9])
                   i = int(cpf[10])
                   j = int(cpf[12])
                   k = int(cpf[13])
                   veri = cpfv(a, b, c, d, e, f, g, h, i, j, k)
                   pass
           cp = (str(
               cpf[0] + cpf[1] + cpf[2] + cpf[3] + cpf[4] + cpf[5] + cpf[6] + cpf[7] + cpf[8] + cpf[9] + cpf[
                   10] + cpf[11] + cpf[12] + cpf[13]))
           print(cp)
           print("Tem certeza ?")
           aysc = input("s/n?: ")
   elif aysc == "s" or aysc == "S":
       pass
   p_fone = input('Fone(XX)XXXX-XXXX: ')
   if len(p_fone) == 14:
       if p_fone[4] == '9':
           pass
       elif p_fone[4] != '9':
           while p_fone[4] != '9':
               print('Telefone inválido')
               p_fone = input('Fone(XX)XXXX-XXXX: ')
       elif len(p_fone) < 13:
           while len(p_fone) < 13:
               print('Por favor, verifique seu telefone')
               p_fone = input('Fone(XX)XXXX-XXXX: ')
   p_rg = input('RG: ')
   print(p_rg)
   print('Tem certeza ?')
   aysrg = input('s/n?: ')
   if aysrg == 'n' or aysrg == 'N':
       p_rg = input('RG: ')
       print(p_rg)
       print('Tem certeza ?')
       aysrg = input('s/n?: ')
   else:
       pass
   cursor.execute("""
       INSERT INTO adms (nome, usuario, senha, data_de_nascimento, cpf, fone, rg)
       VALUES (?,?,?,?,?,?,?)
       """, (nome, usu, passw, br, cp, p_fone, p_rg))
   conn.commit()
   print('Dados inseridos com sucesso.')
   conn.close()

else:

   pass

while True:

   usuhellow = (input('Digite seu usuário: '))
   conn = sqlite3.connect('tabela.db')
   cursor = conn.cursor()
   usu1 = []
   pass1 = []
   pass2=[]
   usu2 = []
   cursor.execute("""
       SELECT usuario FROM cadastros
       """)
   for linha in cursor.fetchall():
       usu2.append(linha[0])
   cursor.execute("""
       SELECT senha FROM cadastros
       """)
   for linha in cursor.fetchall():
       pass2.append(linha[0])
   cursor.execute("""
       SELECT usuario FROM adms
       """)
   for linha1 in cursor.fetchall():
       usu1.append(linha1[0])
   cursor.execute("""
       SELECT senha FROM adms
       """)
   for linha1 in cursor.fetchall():
       pass1.append(linha1[0])
   if usuhellow not in usu1 and usuhellow not in usu2:
       while usuhellow not in usu1 and usuhellow not in usu2:
           print('Usuario não cadastrado')
           usuhellow = (input('Digite seu usuário novamente: '))
           
   if usuhellow in usu2:
       passhellow = input('Digite sua senha: ')
       if passhellow not in pass2:
           while passhellow not in pass2:
               print('Senha incorreta')
               passhellow = input('Digite novamente sua senha: ')
           pass
       if passhellow in pass2:
           while True:
               conn = sqlite3.connect('tabela.db')
               cursor = conn.cursor()
               calendario = ['Ano', 'Mês', 'Dia', 'Hora', 'Minuto', 'Segundo']
               a12 = list(time.localtime())
               dic = {}
               for i in range(6):
                   dic[calendario[i]] = a12[i]
                   i -= 1
               data = '{0}/{1}/{2}'.format(dic['Dia'], dic['Mês'], dic['Ano'])
               horario = '{0}:{1}:{2}'.format(dic['Hora'], dic['Minuto'], dic['Segundo'])
               cursor.execute("""
                       INSERT INTO entrada (usuario, senha, data_de_entrada, horario_de_entrada)
                       VALUES (?,?,?,?)
                       """, (usuhellow, passhellow, data, horario))
               conn.commit()
               saida = str('O funcionário ' + usuhellow + ' entrou dia ' + data + ' às ' + horario)
               print(saida)
               conn.close()
               sys.exit(':)')
   elif usuhellow in usu1:
       passhellow1 = input('Digite sua senha: ')
       if passhellow1 not in pass1:
           while passhellow1 not in pass1:
               print('Senha incorreta')
               passhellow1 = input('Digite novamente sua senha: ')
           pass
       if passhellow1 in pass1:
           while True:
               conn = sqlite3.connect('tabela.db')
               cursor = conn.cursor()
               print(80 * '=')
               hello = 'Bem vindo ao gerenciador de expediente'
               print(hello.center(80, ' '))
               print('Digite:\n1 Cadastrar\n2 Atualizar dados\n3 Deletar\n4 Listar funcionários\n5 Gerar folha de pagamento\n6 Listar folhas de pagamento\n9 Sair')
               opc = input('=> ')
               if opc == '1':
                   nome = input("Insira o nome: ")
                   print(nome)
                   print("Tem certeza ?")
                   aysn = input("s/n ?: ")
                   if aysn == "n" or aysn == "N":
                       while aysn == "n" or aysn == "N":
                           nome = input("Insira o nome: ")
                           print(nome)
                           print("Tem certeza ?")
                           aysn = input("s/n ?: ")
                   elif aysn == "s" or aysn == "S":
                       pass
                   usu = input('Insira seu nome de usuário: ')
                   print(usu)
                   print("Tem certeza ?")
                   aysu = input("s/n ?: ")
                   if aysu == "n" or aysu == "N":
                       while aysu == "n" or aysu == "N":
                           usu = input("Insira seu nome de usuário: ")
                           print(usu)
                           print("Tem certeza ?")
                           aysu = input("s/n ?: ")
                   elif aysu == "s" or aysu == "S":
                       pass
                   passw = input('Insira sua senha: ')
                   print(passw)
                   print("Tem certeza ?")
                   aysps = input("s/n ?: ")
                   if aysps == "n" or aysps == "N":
                       while aysps == "n" or aysps == "N":
                           passw = input("Insira sua senha: ")
                           print(passw)
                           print("Tem certeza ?")
                           aysps = input("s/n ?: ")
                   elif aysps == "s" or aysps == "S":
                       pass
                   b = list(input("Data de nascimento(DD/MM/YYYY): "))
                   if len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
                       while len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
                           print("Por favor, verifique a data de nascimento")
                           b = input("Data de nascimento(DD/MM/YYYY): ")
                   data = b
                   m1 = int(data[3] + data[4])
                   d1 = int(data[0] + data[1])
                   a1 = int(data[6] + data[7] + data[8] + data[9])
                   d = datav(m1, d1, a1)
                   if d:
                       pass
                   else:
                       while not d:
                           print("Data inválida")
                           b = list(input("Data de nascimento(DD/MM/YYYY): "))
                           if len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
                               while len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
                                   print("Por favor, verifique a data de nascimento")
                                   b = input("Data de nascimento(DD/MM/YYYY): ")
                           data = b
                           m1 = int(data[3] + data[4])
                           d1 = int(data[0] + data[1])
                           a1 = int(data[6] + data[7] + data[8] + data[9])
                           d = datav(m1, d1, a1)
                   br = (
                       str(data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6] + data[7] + data[8] + data[9]))
                   print(br)
                   print("Tem certeza ?")
                   aysb = input("s/n?: ")
                   if aysb == "n" or aysb == "N":
                       while aysb == "n" or aysb == "N":
                           b = list(input("Data de nascimento(DD/MM/YYYY): "))
                           if len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
                               while len(b) != 10 or b[2] != "/" or b[5] != "/" or b[6] == b[7] == b[8] == b[9]:
                                   print("Por favor, verifique a data de nascimento")
                                   b = input("Data de nascimento(DD/MM/YYYY):  ")
                           data = b
                           d1 = int(data[0] + data[1])
                           m1 = int(data[3] + data[4])
                           a1 = int(data[6] + data[7] + data[8] + data[9])
                           d = datav(m1, d1, a1)
                           if d:
                               pass
                           else:
                               while not d:
                                   print("Data inválida")
                                   b = list(input("Data de nascimento(DD/MM/YYYY): "))
                                   if len(b) != 10 or b[2] != "/" or b[5] != "/":
                                       while len(b) != 10 or b[2] != "/" or b[5] != "/":
                                           print("Por favor, verifique a data de nascimento")
                                           b = input("Data de nascimento(DD/MM/YYYY): ")
                                   data = b
                                   d1 = int(data[0] + data[1])
                                   m1 = int(data[3] + data[4])
                                   a1 = int(data[6] + data[7] + data[8] + data[9])
                                   d = datav(m1, d1, a1)
                           br = (str(
                               data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6] + data[7] + data[8] + data[
                                   9]))
                           print(br)
                           print("Tem certeza ?")
                           aysb = input("s/n?: ")
                   elif aysb == "s" or aysb == "S":
                       pass
                   cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                   if len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == cpf[2] == cpf[
                       4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                       while len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == cpf[
                           2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                           print("Por favor, verifique o CPF")
                           cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                   else:
                       pass
                   a = int(cpf[0])
                   b = int(cpf[1])
                   c = int(cpf[2])
                   d = int(cpf[4])
                   e = int(cpf[5])
                   f = int(cpf[6])
                   g = int(cpf[8])
                   h = int(cpf[9])
                   i = int(cpf[10])
                   j = int(cpf[12])
                   k = int(cpf[13])
                   veri = cpfv(a, b, c, d, e, f, g, h, i, j, k)
                   if not veri:
                       print("CPF inválido")
                       while not veri:
                           cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                           if len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == cpf[
                               2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                               while len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == \
                                       cpf[2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                                   print("Por favor, verifique o CPF")
                                   cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                           else:
                               pass
                           a = int(cpf[0])
                           b = int(cpf[1])
                           c = int(cpf[2])
                           d = int(cpf[4])
                           e = int(cpf[5])
                           f = int(cpf[6])
                           g = int(cpf[8])
                           h = int(cpf[9])
                           i = int(cpf[10])
                           j = int(cpf[12])
                           k = int(cpf[13])
                           veri = cpfv(a, b, c, d, e, f, g, h, i, j, k)
                           pass
                   cp = (str(
                       cpf[0] + cpf[1] + cpf[2] + cpf[3] + cpf[4] + cpf[5] + cpf[6] + cpf[7] + cpf[8] + cpf[9] + cpf[10] + cpf[
                           11] + cpf[12] + cpf[13]))
                   print(cp)
                   print("Tem certeza ?")
                   aysc = input("s/n ?: ")
                   if aysc == "n" or aysc == "N":
                       while aysc == "n" or aysc == "N":
                           cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                           if len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == cpf[
                               2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                               while len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == \
                                       cpf[2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                                   print("Por favor, verifique o CPF")
                                   cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                           else:
                               pass
                           a = int(cpf[0])
                           b = int(cpf[1])
                           c = int(cpf[2])
                           d = int(cpf[4])
                           e = int(cpf[5])
                           f = int(cpf[6])
                           g = int(cpf[8])
                           h = int(cpf[9])
                           i = int(cpf[10])
                           j = int(cpf[12])
                           k = int(cpf[13])
                           veri = cpfv(a, b, c, d, e, f, g, h, i, j, k)
                           if not veri:
                               print("CPF inválido")
                               while veri != True:
                                   cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                                   if len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == cpf[1] == \
                                           cpf[2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                                       while len(cpf) != 14 or cpf[3] != "." or cpf[7] != "." or cpf[11] != "-" or cpf[0] == \
                                               cpf[1] == cpf[2] == cpf[4] == cpf[5] == cpf[6] == cpf[8] == cpf[9] == cpf[10]:
                                           print("Por favor, verifique o CPF")
                                           cpf = list(input("CPF(XXX.XXX.XXX-XX): "))
                                   else:
                                       pass
                                   a = int(cpf[0])
                                   b = int(cpf[1])
                                   c = int(cpf[2])
                                   d = int(cpf[4])
                                   e = int(cpf[5])
                                   f = int(cpf[6])
                                   g = int(cpf[8])
                                   h = int(cpf[9])
                                   i = int(cpf[10])
                                   j = int(cpf[12])
                                   k = int(cpf[13])
                                   veri = cpfv(a, b, c, d, e, f, g, h, i, j, k)
                                   pass
                           cp = (str(
                               cpf[0] + cpf[1] + cpf[2] + cpf[3] + cpf[4] + cpf[5] + cpf[6] + cpf[7] + cpf[8] + cpf[9] + cpf[
                                   10] + cpf[11] + cpf[12] + cpf[13]))
                           print(cp)
                           print("Tem certeza ?")
                           aysc = input("s/n?: ")
                   elif aysc == "s" or aysc == "S":
                       pass
                   email = (input('e-mail: '))
                   emailv=[]
                   conn = sqlite3.connect('tabela.db')
                   cursor = conn.cursor()
                   cursor.execute("SELECT email FROM cadastros;")
                   for l in cursor.fetchall():
                       emailv.append(l[0])
                   if email in emailv:
                       while email in emailv:
                           print('Usuário já cadastrado')
                           email=input('Digite outro e-mail: ')
                   if '@' in email:
                       print(email)
                       print('Tem certeza ?')
                       aysem = input('s/n?: ')
                       if aysem == 's' or aysem == 'S':
                           pass
                       elif aysem == 'n' or aysem == 'N':
                           while aysem == 's' or aysem == 'S':
                               email = (input('e-mail: '))
                               print(email)
                               print('Tem certeza ?')
                               aysem = input('s/n?: ')
                   elif '@' not in email:
                       while '@' not in email:
                           print('e-mail inválido, porfavor digite novamente')
                           email = (input('=> '))
                           print(email)
                           print('Tem certeza ?')
                           aysem = input('s/n?: ')
                           if aysem == 's' or aysem == 'S':
                               pass
                           elif aysem == 'n' or aysem == 'N':
                               while aysem == 's' or aysem == 'S':
                                   email = (input('e-mail: '))
                                   print(email)
                                   print('Tem certeza ?')
                                   aysem = input('s/n?: ')
                   p_fone = input('Fone(XX)XXXX-XXXX: ')
                   if len(p_fone) == 14:
                       if p_fone[4] == '9':
                           pass
                       elif p_fone[4] != '9':
                           while p_fone[4] != '9':
                               print('Telefone inválido')
                               p_fone = input('Fone(XX)XXXX-XXXX: ')
                       elif len(p_fone) < 13:
                           while len(p_fone) < 13:
                               print('Por favor, verifique seu telefone')
                               p_fone = input('Fone(XX)XXXX-XXXX: ')
                   p_rg = input('RG: ')
                   print(p_rg)
                   print('Tem certeza ?')
                   aysrg = input('s/n?: ')
                   if aysrg == 'n' or aysrg == 'N':
                       p_rg = input('RG: ')
                       print(p_rg)
                       print('Tem certeza ?')
                       aysrg = input('s/n?: ')
                   else:
                       pass
                   print('Turno (início "xx:xx/xx:xx" fim), no formato de 24 horas')
                   turno = input('=> ')
                   if '/' not in turno or ':' not in turno or len(turno)!=11:
                       while '/' not in turno or ':' not in turno or len(turno)!=11:
                           print('Turno inválido')
                           turno = input('Digite o turno novamente(início "xx:xx/xx:xx" fim): ')
                   print(turno)
                   print('Tem certeza ?')
                   aystr = input('s/n?: ')
                   if aystr == 'n' or aystr == 'N':
                       while aystr == 'n' or aystr == 'N':
                           print('Turno (início "xx:xx/xx:xx" fim), no formato de 24 horas')
                           turno = (input('=> '))
                           if '/' not in turno or ':' not in turno or len(turno)!=11:
                               while '/' not in turno or ':' not in turno or len(turno)!=11:
                                   print('Turno inválido')
                                   turno = input('Digite o turno novamente(início "xx:xx/xx:xx" fim): ')
                   elif aystr == 's' or aystr == 'S':
                       pass
                   salario = float(input('Salário: R$ '))
                   print(salario)
                   print('Tem certeza ?')
                   ayssl = input('s/n?: ')
                   if ayssl == 'n' or ayssl == 'N':
                       while ayssl == 'n' or ayssl == 'N':
                           salario = float(input('Salário: R$ '))
                   elif ayssl == 's' or ayssl == 'S':
                       pass
                   dic = {}
                   a12 = list(time.localtime())
                   calendario = ['Ano', 'Mês', 'Dia', 'Hora', 'Minuto', 'Segundo']
                   for i in range(6):
                       dic[calendario[i]] = a12[i]
                       i -= 1
                   dataadm = '{0}/{1}/{2}'.format(dic['Dia'], dic['Mês'], dic['Ano'])
                   cursor.execute("""
                   INSERT INTO cadastros (nome, usuario, senha, data_de_nascimento, cpf, fone, rg, turno, email, salario, data_de_admissao)
                   VALUES (?,?,?,?,?,?,?,?,?,?,?)
                   """, (nome, usu, passw, br, cp, p_fone, p_rg, turno, email, salario, dataadm))
                   conn.commit()
                   print('Dados inseridos com sucesso.')
                   conn.close()
               elif opc == '42':
                   import turtle
                   import math
                   import random
                   wn = turtle.Screen()
                   wn.bgcolor('black')
                   Albert = turtle.Turtle()
                   Albert.speed(0)
                   Albert.color('white')
                   rotate=int(360)
                   def drawCircles(t,size):
                       for i in range(10):
                           t.circle(size)
                           size=size-4
                   def drawSpecial(t,size,repeat):
                     for i in range (repeat):
                       drawCircles(t,size)
                       t.right(360/repeat)
                   drawSpecial(Albert,100,10)
                   Steve = turtle.Turtle()
                   Steve.speed(0)
                   Steve.color('yellow')
                   rotate=int(90)
                   def drawCircles(t,size):
                       for i in range(4):
                           t.circle(size)
                           size=size-10
                   def drawSpecial(t,size,repeat):
                       for i in range (repeat):
                           drawCircles(t,size)
                           t.right(360/repeat)
                   drawSpecial(Steve,100,10)
                   Barry = turtle.Turtle()
                   Barry.speed(0)
                   Barry.color('blue')
                   rotate=int(80)
                   def drawCircles(t,size):
                       for i in range(4):
                           t.circle(size)
                           size=size-5
                   def drawSpecial(t,size,repeat):
                       for i in range (repeat):
                           drawCircles(t,size)
                           t.right(360/repeat)
                   drawSpecial(Barry,100,10)
                   Terry = turtle.Turtle()
                   Terry.speed(0)
                   Terry.color('orange')
                   rotate=int(90)
                   def drawCircles(t,size):
                       for i in range(4):
                           t.circle(size)
                           size=size-19
                   def drawSpecial(t,size,repeat):
                       for i in range (repeat):
                           drawCircles(t,size)
                           t.right(360/repeat)
                   drawSpecial(Terry,100,10)
                   Will = turtle.Turtle()
                   Will.speed(0)
                   Will.color('pink')
                   rotate=int(90)
                   def drawCircles(t,size):
                       for i in range(4):
                           t.circle(size)
                           size=size-20
                   def drawSpecial(t,size,repeat):
                       for i in range (repeat):
                           drawCircles(t,size)
                           t.right(360/repeat)
                   drawSpecial(Will,100,10)
               elif opc == '2':
                   cursor.execute("""
                   SELECT * FROM cadastros;
                   """)
                   ids = []
                   for linha in cursor.fetchall():
                       print('Funcionário: {0} ---- ID: {1}'.format(linha[1], linha[0]))
                       ids.append(linha[0])
                   id_cliente = int(input('Digite o id do funcionário: '))
                   if id_cliente in ids:
                       pass
                   else:
                       while id_cliente not in ids:
                           id_cliente = int(input('Digite o id do funcionário: '))
                   novo_usuario = input('Digite o novo nome de usuário: ')
                   novo_fone = input('Digite o novo nº de telefone (XX)XXXX-XXXX: ')
                   nova_senha = input('Digite a nova senha: ')
                   cursor.execute(
                   UPDATE cadastros
                   SET usuario = ?, senha = ?, fone = ?
                   WHERE id = ?
                   , (novo_usuario, nova_senha, novo_fone, id_cliente))
                   conn.commit()
                   print('Dados atualizados com sucesso.')
                   conn.close()
               elif opc == '3':
                   cursor.execute("""
                   SELECT * FROM cadastros;
                   """)
                   ids = []
                   for linha in cursor.fetchall():
                       print('Funcionário: {0} ---- ID: {1}'.format(linha[1], linha[0]))
                       ids.append(linha[0])
                   id_cliente = int(input('Digite o id do funcionário: '))
                   if id_cliente in ids:
                       pass
                   else:
                       while id_cliente not in ids:
                           id_cliente = int(input('Digite o id do funcionário: '))
                   cursor.execute("""
                   DELETE FROM cadastros
                   WHERE id = ?
                   """, (id_cliente,))
                   conn.commit()
                   print('Registro excluido com sucesso.')
                   conn.close()
               elif opc == '4':
                   while True:
                       conn = sqlite3.connect('tabela.db')
                       cursor = conn.cursor()
                       print('Digite o primeiro nome como foi cadastrado(no mínimo 4 letras) ou 9 para sair')
                       pesq = input('=> ')
                       if pesq == '9':
                           break
                       if len(pesq) < 4:
                           while len(pesq) < 4:
                               print('No mínimo 4 letras')
                               pesq = input('=> ')
                       cursor.execute('SELECT * FROM cadastros WHERE nome LIKE "{}%"'.format(pesq))
                       for lista in cursor.fetchall():
                           listagem = '\nFuncionário: {}\nUsuário: {}\nTelefone: {}\ne-mail: {}\nCPF: {}\nRG: {}\nData de nascimento: {}\nData de admissão: {}\nSalário: {}\n\n'.format(
                           lista[1], lista[2], lista[6], lista[7], lista[5], lista[9], lista[4], lista[11], lista[10])
                           print(listagem.center(80,' '))
                       conn.close()
               elif opc == '5':
                   print('Ainda não implementado')
               elif opc == '6':
                   print('Ainda não implementado')
               elif opc == '9':
                   print(':)')
                   break

</syntaxhighlight>

Escopo

  • Objetivo da aplicação
    • Desenvolver um software que tenha a capacidade de ler dados decorrentes dos funcionários de uma empresa que apresenta três turnos de serviço (matutino, vespertino e noturno), bem como realizar o cadastro dos mesmos com informações pessoais necessárias para que seja admitido como funcionário (identidade, CPF, data de nascimento, carteira de motorista, carteira de trabalho, etc.). O armazenamento de dados dos funcionários será necessário para que seja calculado o salário final de cada um ao final de cada mês, baseando-se nas horas in itineres (horas extras) e as horas normais de serviço (de acordo com a Lei nº 10.243, de 19 de Junho de 2001), isto é, pelos registros dos horários de entrada e saída bem como dias de domingo e feriados.



Entradas

  • O que o sistemas receberá de dados?
    • Ex: quais dados serão digitados via teclado
Identidade, CPF, data de nascimento, carteira de motorista, carteira de trabalho, email, nome de funcionário, senha para login dos funcionários da empresa.


Saídas

  • O que será gerado de resultado impresso?
    • Ex: quais dados serão publicados na tela ou no papel

Data e horário de entrada e saída de cada um dos funcionários e o salário final de cada um deles.

Armazenamento

  • O que será gravado em arquivo
    • Indentidade, CPF, data de nascimento, email, senha, carteira de motorista, carteira de trabalho e horas trabalhadas de acordo com os horários de entrada e saída bem como os dias trabalhados para cada um dos funcionários da empresa.


Cálculos

  • O que será processado?
    • Calcular o salário líquido final de acordo com o número de horas trabalhadas por dia.



Desenvolvedores

  • Asaph Souza Diniz
  • Camila Vieira Verardo
  • João Vitor Pereira Leite
  • Leticia de Almeira Takata
  • Pedro Henrique Machado Rodrigues