Código


<syntaxhighlight lang="python3"> Arquivo = "lista_contatos.txt" # Nome do arquivo

def ler_arquivo(): # Função que le o arquivo de texto

   try:                         # Tratamento de erro
       arq = open(Arquivo,"r+") # Abre o arquivo para leitura
       print( '\n'+arq.read() ) # Quebra linha e mostra o conteudo
       arq.close()              # Fecha o arquivo
   except IOError:              # Tratamento de erro
       print('\nArquivo não encontrado!')

def escrever_linhas(texto): # Função que le e escreve no arquivo

   try:                           # Tratamento de erro
       arq = open(Arquivo,"a+")   # Abre o arquivo para gravação no final do arquivo
       arq.writelines('\n'+texto) # Escreve no arquivo o parametro 'texto'
       arq.close()                # Fecha o arquivo
       print('\nLinha gravada com sucesso')
   except IOError:                # Tratamento de erro
       print('\nErro ao abrir o arquivo!') # Mostra na tela uma mensagem de erro

def pesquisar_contato(nome):

   try:
       arq = open(Arquivo, "r+")
       dicionario = {'nome':, 'telefone':, 'email':}
       achei = False
       # lógica ler arquivo e comparar nome
       for cont, s in enumerate(arq.readlines()):
           
           dicionario['nome'], dicionario['telefone'],dicionario['email'] = s.split(' - ')
           if dicionario['nome'] == nome:
               print(cont)
               print('Nome: %s'% dicionario['nome'])
               print('Telefone: %s'% dicionario['telefone'])
               print('Email: %s'% dicionario['email'])
               achei = True
               
       if not achei:
           print('Não existe %s' % (nome))


       # se achou imprime, se não mostra uma mensagem de nao encontrado
       arq.close
       
   except IOError:
       print('\nContato não encontrado')


def excluir_contatos():

   try:
       arq =open('lista_contatos.txt','r+')
       valores = arq.readlines()
       l = []
       splited =[]
       nome = input('Entre com um nome:')
       for x in valores:
           splited=x.split(' - ')
           if splited[0]==nome:
              pass
           else:
               l.append(splited)
       
       arq.close()
       novo_cadastro(l)
   except:
       print('erro')

def novo_cadastro(l):

   arq = open(Arquivo,'w')
   for x in l:
        #print("Nome:%s | Telefone:%s | Email:%s"%(x[0],x[1],x[2]))
        arq.write("%s - %s - %s" %(x[0],x[1],x[2]))
   arq.close()

while(True):

   print('\n        Opcões:')
   print(' ')
   print('1 - Cadastrar contato')
   print('2 - Listar dados')
   print('3 - Pesquisar contato')
   print('4 - Excluir contato')
   print('9 - Sair')
   print(' ')
   Op = int(input('Digite a opção desejada:')) # Entrada da opcao pelo teclado
   if Op == 1:                                     # Se a opcao for 1
       nome = input('\nDigite o nome do contato:')      # Entrada do nome pelo teclado
       fone = input('Digite o número do telefone:')# Entrada do telefone pelo teclado
       email = input('Digite o email:')            # Entrada do telefone pelo teclado
       contato = (nome+' - '+fone+' - '+email)     # Recebe o nome + o telefone
       escrever_linhas(str(contato))               # Chama a função que grava em arquivo
   elif Op == 2:                                   # Se a opcao for 2
       ler_arquivo()                               # Chama a função que le o arquivo
   elif Op == 9:                                   # Se a opcao for 0
       break                                       # Quebra o laço infinito
   elif Op == 3:
       nome = input("Digite o nome: ")
       pesquisar_contato(nome)
   elif Op == 4:
       #nome = input ("Digite o nome: ")
       excluir_contatos()

</syntaxhighlight>

Escopo

  • Objetivo da aplicação
  • Escopo: Programa visa esclarecer e organizar um controle de estoque de banco de sangue, onde ele organiza qual tipo sanguíneo o paciente possui e visualiza pro profissional que estiver o atendendo qual tipo sanguíneo ele poderá receber transfusão, pois esse programa deve ser usado em locais onde necessita de uma resposta rápida de como esta o estoque, pois caso não tenha as bolsas de sangue necessária outras medidas deverão ser tomadas.O tipo sanguíneo de uma pessoa define muitas coisas além da doação de sangue e quando a pessoa for receber sangue de alguém também é muito importante.



Entradas

  • O programa primeiramente quando se abrir perguntara que profissional está o abrindo para direcionar para cada função e limitação de função dentro do programa, quanto a medico ou técnico pois o medico pode visualizar as bolsas disponíveis e ver qual o paciente precisa, já o técnico mostra as bolsas disponíveis e perguntar se quer alterar os dados mostra as quantidades e permite a alteração

Saídas

    • As saídas serão as respostas que ele virá a retornar como as compatibilidades de transfusão sanguínea ligadas a quantidade disponível no estoque, pois se estiver tudo certo automaticamente a equipe que estiver gerenciando já reservara a quantidade necessária para o paciente fazer a transfusão.



Armazenamento

  • O programa possui arquivos que guardam a quantidade de bolsas disponíveis e a sua tipagem e também arquivo com lista de pacientes e tipo sanguíneo que estão na fila de espera.



Cálculos

  • Os cálculos que são feitos são das probabilidades de transfusão que é feita cruzando as compatibilidades do tipo do sangue do paciente com as que possui armazenadas no estoque.



Desenvolvedores

Rener Mateus

Vanessa Martins

Warlley K.

Tayane Fontes

Joice Farinha