Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

141
UNIP - UNIVERSIDADE PAULISTA
INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA - ICET
ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
BRUNO VINICIUS LIRA DA ROCHA 
DEIVID LUCAS HIDALGO 
ELIEZER DEFILICIBUS 
MARCOS NISHIZAWA 
RENAN AUGUSTO DE OLIVEIRA 
EMPRESA FUSION SYSTEM
PROJETO SOFTWARE CONTROLE DE PIZZARIA
 SOROCABA – SP
 2019
BRUNO VINICIUS LIRA DA ROCHA RA: D968AI5
DEIVID LUCAS HIDALGO RA: D93JFI5
ELIEZER DEFILICIBUS RA: N426110
MARCOS NISHIZAWA RA: F060HD0
RENAN AUGUSTO DE OLIVEIRA RA: F018EA8
EMPRESA FUSION SYSTEM
PROJETO SOFTWARE CONTROLE DE PIZZARIA
Trabalho de Conclusão de Semestre em análise e desenvolvimento de sistemas apresentado à Universidade Paulista – UNIP.
 Orientador: Todo os professores
SOROCABA – SP
2019
BRUNO VINICIUS LIRA DA ROCHA RA: D968AI5
DEIVID LUCAS HIDALGO RA: D93JFI5
ELIEZER DEFILICIBUS RA: N426110
MARCOS NISHIZAWA RA: F060HD0
RENAN AUGUSTO DE OLIVEIRA RA: F018EA8
EMPRESA FUSION SYSTEM
PROJETO SOFTWARE CONTROLE DE PIZZARIA
Trabalho de Conclusão de Semestre em análise e desenvolvimento de sistemas apresentado à Universidade Paulista – UNIP.
 Orientador: Todos os professores
Aprovado em:
BANCA EXAMINADORA
________________________/__/____
Prof. Richardson Luz
Universidade Paulista – UNIP
_________________________/__/____
Prof. Robinson Luz
Universidade Paulista – UNIP
_________________________/__/____
Prof. Ricardo Martins 
Universidade Paulista – UNIP
_________________________/__/____
Prof. Paulo Henrique Rodrigues 
Universidade Paulista – UNIP
RESUMO
Atualmente muitos dos proprietários de pequenas e médias empresas, sentiram a necessidade de migrar o controle de seu negócio para era digital. O controle manual de uma empresa é viável até certo ponto, mas quando surge a necessidade de expandir o negócio para gerar mais lucros e em contra partida obter um controle eficaz, a solução mais eficiente e optar por um software de controle empresarial. A maioria dos proprietários em questão acabam não optando por essa opção, por conta dos gastos com a infraestrutura e implementação de softwares caros. Para estes proprietários existe a opção de adquirir um sistema eficaz, porém de baixo custo em relação aos grandes sistemas de gerenciamento empresariais. O proprietário da empresa Pizza Fast demonstrou interesse em adquirir um sistema de gerenciamento para o seu negócio, requisitando da empresa Fusion System um projeto que se encaixe em sua infraestrutura e mão de obra disponível, para a empresa em questão a Fusion System após análise e levantamento de requisitos de forma detalhada, desenvolveu um sistema que atende os requisitos exigidos pela Pizza Fast , o projeto utiliza como base a linguagem C++ em modo console, proporcionando a conexão em rede das três unidades da empresa, gerando relatórios diários e mensais para controle financeiro e possibilita também o controle de estoque com a utilização dos relatórios disponíveis.
Palavras-chaves: Proprietários, Pequenas, Empresas, Sistema, desenvolver
ABSTRACT
Today, many owners of small and medium-sized businesses have felt the need to migrate control of their business into the digital age. The manual control of a company is feasible to some extent, but when the need arises to expand the business to generate more profits and in return get an effective control, the most efficient solution is to opt for an enterprise control software. Most of the owners end up not opting for this, because of the expenses with the infrastructure and implementation of expensive software. For these owners there is the option of acquiring an effective system, but at a low cost compared to large enterprise management systems. The owner of the company Pizza Fast showed interest in acquiring a management system for his business, requesting from the company Fusion System a project that fits its infrastructure and available labor, for the company in question the Fusion System, after analysis and detailed requirements survey, developed a system that meets the requirements required by Pizza Fast, the project uses as a basis the C++ language in console mode, providing the network connection of the three units of the company, generating daily and monthly reports for financial control and also enables stock control with the use of available reports.
Keywords: Owners, Small, Companies, System, Develop
Sumário
1 INTRODUÇÃO	13
1.1 Objetivo	14
1.2 Justificativa	14
2 Empresa Fusion System	15
2.1 História da Empresa	15
2.2 Objetivo	16
2.3 Missão	16
2.4 Visão	16
2.5 Valores	16
2.6 Nossos produtos	17
2.6.1 Sistemas de gerenciamento empresarial	17
2.6.2 Business Process Management (BPM)	17
2.6.3 Enterprise Resource Planning (ERP)	18
2.6.4 Customer Relationship Management (CRM)	19
3 Pizza Fast 	22
3.1 Cardápio com os sabores das pizzas	24
4 A Origem do C++	28
4.1 Em nosso Software usamos	28
4.2 Soluções de negócios	31
4.2.1 Suporte	31
5. Especificação Do Sistema	33
5.1 Modelo Espiral De Boehm	33
5.1.1 O espiral é dividido em quatro quadrantes	34
5.2 Analise de risco	35
5.3 Planejamento	35
5.4 Identificação	35
5.5 Análise Qualitativa	36
5.6 Análise Quantitativa	36
5.7 Planejamento de respostas aos riscos	37
5.8 Monitoramento e controle de risco	38
5.9 Neste capitulo descreve como o projeto foi montado	39
5.9.1 Primeira Etapa	39
5.10 Requisitos	40
5.10.1 Levantamento de Requisitos	40
5.10.2 Requisitos especificados pelo proprietário da Pizzaria	41
5.10.3 Validação dos Requisitos	42
6 O funcionamento do software	44
6.1 Primeira tela de login	44
6.1.2 Segunda tela de login	45
6.1.3 Terceira tela de login	46
6.1.4 Quarta tela de login	47
6.1.5 Usuário não cadastrado	48
5.1.6 Função login	48
6.2 Segunda Etapa	50
7 Função principal	52
7.1 Primeira função	53
7.1.1 Interação funcional	53
7.1.2 O início do cadastro	54
7.1.3 Endereço do cliente	55
7.1.4 Telefone do cliente	58
7.1.5 Cep do cliente	60
7.1.6 O código do cliente	61
7.1.7 Fluxograma 2	62
7.2 Terceira Etapa	66
7.3 Segunda função	67
7.3.1 Pedido e cliente	67
7.3.2 Identificação do cliente	69
7.3.3 Cardápio de pizzas	71
7.3.4 Interação funcional 2	71
7.3.5 Realizando o pedido	73
7.3.6 – Cardápio de bebidas	76
7.3.7 – Interação funcional 3	77
7.3.8 – Realizando o pedido 2	78
7.3.9 Finalizando o pedido	80
7.4 Fluxograma de vendas	84
7.5 Arquivo de vendas	87
7.6 Visualizar cardápios	87
7.7 Primeiro cardápio	88
7.8 Segundo cardápio	89
7.9 Fluxograma da função três	90
7.10 Função para cadastro de funcionários	92
8 Interação funcional 4	93
8.1 Primeiro campo de preenchimento	94
8.2 Segundo campo de preenchimento	95
8.3 Unidade de trabalho	96
8.4 Data de admissão	97
8.5 Verificação de dados	98
8.6 Fluxograma da função cadastro de funcionários	99
8.7 Funcionários cadastrados	102
8.8 Busca por pizzaria	102
8.9 Cadastro de funcionários em arquivo	103
9 Consulta de estoque	104
9.1 Realizando o login	104
9.2 Senha de acesso	105
9.3 Código de acesso	107
10 VISUALIZANDO produtos no estoque	109
10.1 Visualizando produtos no estoque 2	110
10.2 Inserindo produtos no estoque	111
10.3 Produção das pizzas	113
10.4 Bebidas no estoque	116
10.5 Fluxograma da função estoque	118
10.6 Controle de estoque	120
10.7 Controle de vendas	120
11 Redes de Computadores	126
11.1 Tipos de Redes mais conhecidos	126
11.1.1 Local Area Network (LAN)	126
11.1.2 Metropolitan Area Network (MAN)	126
11.1.3 Wide Area Network (WAN)	126
11.2 Uso das Redes de Computadores	127
11.2.1 Aplicações Comerciais	127
11.2.2 Aplicações Domésticas	127
11.2.3 Usuários Móveis	127
12 Hardware de Redes de Computadores	129
12.1 Switches	129
12.2 Repetidores	129
12.3 Placas / Adaptadores de redes	129
12.4 Modem	129
12.5 Gateway	130
13 Meios de Transmissão	131
13.1 Cabeamento de Redes	131
13.2 Cabo de Par Trançado	132
14 Topologia de Rede	133
14.1 Topologia em Barramento	133
14.2 Topologia em Estrela	133
14.3 Topologiaem Anel	134
15 Rede em Nuvem (Cloud Computing)	135
15.1 Principais Características da “Nuvem”	135
16 Redes	137
16.1 Topologia da Rede	137
16.2 Composição da Rede	137
16.3 componentes utilizados para estrutura da rede do Cliente	138
16.3.1 Provedor Internet.	138
16.3.2 Switch.	139
16.3.3 Terminais.	139
16.3.4 Suporte periféricos.	139
16.3.5 Computador utilizado.	139
16.3.6 Cabeamento de rede utilizado	140
17 Infraestrutura da Fusion System para o projeto	141
17.1 Servidores	141
17.2 Estimativas de Custos	141
18 Conclusões Finais	143
19 Referencia bibliográficas	144
1 INTRODUÇÃO
Este projeto tem como objetivo principal criação de um sistema de gerenciamento empresarial para a empresa Pizza Fast , que trabalha de forma tradicional ou seja todo o controle acontece manualmente, de acordo com relatos do proprietário o negócio cresceu e este controle não está suprindo suas necessidades, sendo assim a introdução de um sistema de gerenciamento empresarial é extremamente necessário para que o negócio continue a se desenvolver, mas o proprietário não tem condições financeiras para adquirir e manter um sistema de alto nível. Para entender e desenvolver um sistema que atenda às necessidades e exigências da empresa, foi feito um levantamento de requisitos minucioso, detalhando o que ele necessita e de que forma ele espera que isso ocorra e também foi necessário conhecer o estabelecimento para que o projeto criado seja compatível com a estrutura disponibilizada pelo proprietário. 
De acordo com os requisitos apresentados a empresa Fusion System escolheu um projeto que se encaixa neste contexto, o projeto baseia-se no controle e conexão da matriz e filiais da empresa em questão, possibilitando para o proprietário o acompanhamento financeiro através da utilização dos relatórios disponíveis diariamente e mensalmente, realiza o controle de estoque utilizando o sistema de compra de produtos com base na análise das vendas semanais, tendo em estoque a quantidade necessária para trabalhar durante 3 dias e também conta com uma margem de segurança que é atualizada conforme o aumento das vendas, para não ocorrer desperdícios, padronizar os produtos finais e também auxiliar a forma de compra dos produtos, foi criado um check-list para todas as pizzas disponíveis para a venda, dentro deste check-list é detalhado quanto de cada produto é necessário para a produção de uma pizza de cada sabor. Este sistema é desenvolvido utilizando como base a linguagem C++ em modo console, tem como objetivo atuar no controle de pequenos negócios. Possibilitando para o proprietário o crescimento exponencial do seu negócio, com base no controle e gerenciamento digital, de forma relativamente barata e simples, porém eficaz.
1.1 Objetivo
Temos como objetivo nesse trabalho o estudo da engenharia de software e seus processos para criação do sistema para pizzarias, o sistema desenvolvido terá a função de login, cardápio, cadastro de usuário, estoque, custo, tornando o ambiente de trabalho mais ágil, facilitando o controle do cliente com o seu negócio. O resultado desse trabalho terá benefícios como por exemplo: controle de estoque, facilitando o cadastro de futuros cliente, controle de perda se está gastando mais e tendo pouco resultado, o nosso sistema irá deixa o cliente mais próximo do seu negócio.
1.2 Justificativa
Na área da tecnologia para desenvolver um sistema aplicaremos engenharia de software, é uma área em crescimento que contém todas as ferramentas que atualmente são consideradas as inovações da tecnologia, sendo assim a melhor escolha para o desenvolvimento do projeto aplicado na Pizza. O projeto tem como objetivo principal de melhorar a forma de trabalho do cliente , visando ter aproveitamento completos de algumas ferramentas da engenharia de software, o projeto tem sua estrutura baseando na integração de sistemas dentro das pizzarias, todos os setores estarão interligados e realizando troca de dados simultaneamente, fornecendo informações em tempo real sobre todos os processos e equipamentos dentro das Pizzarias. Este trabalho está sendo desenvolvido pra quem deseja adquirir conhecimento do sistema aplicado na pizzaria, saber como funciona um projeto de implementação dentro do conceito de engenharia de software, com a conclusão do projeto desenvolvido com base nos conceitos descrito por Roger Spressman (2011) no livro Engenharia de Software, para ter uma estrutura mais solida sobre o assunto e desenvolvimento do sistema 
2 Empresa Fusion System
Razão Social – Fusion Comércio Ltda
Nome Fantasia – Fusion System
CNPJ – 4423457/0003 – 37
Inscrição Estadual – 15169454-32
Cidade – Sorocaba
Endereço – Rua Souza pereira, N° 410.
CEP – 18010-320
Estado – São Paulo
Ramo de atuação – Área da tecnologia, desenvolvimento de softwares específicos e sistemas de gerenciamento empresariais.
Contato – (15) 99840-3534 / (15) 3032-8083
2.1 História da Empresa
A empresa Fusion System, foi fundada em 2017, por cinco jovens recém-formados em análise e desenvolvimento de sistemas, com dois anos de existência, foram vendidos alguns projetos que marcaram a história dessa empresa. Todos os proprietários e criadores da empresa residem na cidade de Sorocaba localizada no estado de São Paulo, como todos residem na mesma cidade isso facilitou a escolha do local de criação da sede da empresa, outro ponto crucial para a escolha do local criação da sede, foi o de Sorocaba apesar de ser uma cidade do interior, está sempre em alta no crescimento econômico e industrial, após perceberem que está região estava com um número grande de empresas com necessidade de desenvolvimento tecnológico, pois havia um vazio grande no suprimento desses serviços, então foi realizada uma análise consistente, para verificar se a demanda por trabalhos da área permaneceria por mais alguns anos, com base em dados estatístico, foi constatado que a demanda por serviços tecnológicos de qualidade, cresceria exponencialmente na região por causa do aumento no número de pequenas e médias empresas que precisam realizar a integração de sistema de gerenciamento digital para continuarem crescendo.
2.2 Objetivo
Desenvolvida por jovens universitários, a empresa Fusion System, foi criada com o intuito de suprir a demanda da região por serviços tecnológicos de qualidade, aprimorar o próprio desenvolvimento profissional e também em longo prazo, através do desenvolvimento de programas com o objetivo de tornar-se referência no ramo de desenvolvimento de softwares de gerenciamento empresarial. Como os donos da empresa eram na época recém-formados, a dificuldade para arrumar o primeiro emprego na área, sem experiência, foi igual para todos, mas como todos adquiriram conhecimento mais que necessário para abrir e gerenciar uma empresa, a ideia se desenvolveu e hoje é uma empresa que cresce diariamente adquirindo novos clientes constantemente e com espaço e capacidade para se tornar uma empresa referência no mercado. 
2.3 Missão
A missão da Fusion System é oferecer para os seus clientes sempre o melhor produto disponível no mercado e o melhor atendimento, para que isso aconteça cada produto é produzido com muita excelência, visando sempre à satisfação do cliente e oferecendo manutenção preventiva e atualização periódica de acordo com o contrato, para que produto sempre esteja no seu potencial máximo.
2.4 Visão
A Fusion System, desde o momento de sua criação, teve a disposição um amplo espaço de crescimento, graças a enorme quantidade trabalhos disponíveis. Para criar uma estrutura sólida, apenas receber e desenvolver diversos trabalhos não seriam o suficiente, então a sua visão se tornou ser a melhor empresa desenvolvedora de softwares do estado, para sempre ser referência nessa área.
2.5 Valores
Excelência nos projetos desenvolvidos, garantindo a satisfação do cliente. Oferecer auxilio imediato a todos os clientes, com responsabilidade e eficiência, produzindo sempre um produto de qualidade projetado específico para aquele problema, com a satisfação que o cliente merece.
2.6 Nossosprodutos 
2.6.1 Sistemas de gerenciamento empresarial 
É um software que permite gerenciar diferentes tarefas de gestão do seu negócio. Ele é uma plataforma inteligente que automatiza vários processos operacionais e conecta as áreas da empresa. Também pode ser implantado a partir da recolha de dados da empresa, para melhorar o relacionamento com o cliente. Assim, os colaboradores se dedicam mais às tarefas estratégicas e contribuem para o alcance dos objetivos estabelecidos. 
O sistema também centraliza as informações de um ou mais setores. Essa medida fornece uma visão mais ampla, que ajuda a tomar decisões precisas para o negócio. Por isso, é comum que esse software traga benefícios que vão além dos aspectos financeiros. A Fusion System oferece três modelos de Sistemas de gerenciamento empresarial a seus clientes, sendo eles:
2.6.2 Business Process Management (BPM)
Seu objetivo é sistematizar processos organizacionais pela coleta e organização de informações, reúne gestão de negócios e tecnologia da informação com foco nos resultados das organizações por meio da melhoria dos processos de negócio. As ferramentas denominadas sistemas de gestão de processos do negócio ou BPM monitoram o andamento dos processos de uma forma rápida. Dessa forma, os gestores podem analisar e alterar processos baseados em dados reais e não apenas por intuição. O maior benefício do BPM é o aprimoramento contínuo. A prática do BPM estabelece que haja necessidade em conhecer o problema do usuário, assim criar processos que serão executados dentro de uma empresa, medi-los e finalmente gerenciá-los e então realizar melhorias e evoluir. BPMs é um conjunto de softwares que visam atender o ciclo completo de Gestão de Processos, composto por: modelagem, atualização, implantação, monitoramento de determinados processos. Por outro lado, a solução costuma ser burocrática por impor diferentes regras para a execução das atividades. Entre as empresas que escolhem em adquirir os produtos da Fusion, com relação a sistemas de gerenciamento empresarial, o número de compras feitas pelas empresas foi de 20% das vendas com preço de R$1,200. 00, sendo um produto caro e burocrático fez com que os números de vendas caíssem 10% no segundo ano. 
2.6.3 Enterprise Resource Planning (ERP)
Um sistema integrado de gestão proporcionando a integração completa de todos os processos da empresa, sendo o sistema mais conhecido no setor financeiro devido a suas funcionalidades e facilidades. Seu foco são os recursos gerenciados, que asseguram a melhoria do controle fiscal, financeiro e contábil do negócio. Muitas empresas estão optando pelos pacotes ERP devido a vários motivos, tais como: frustrações com sistemas incompatíveis, departamentos de tecnologia de informação desabilitados a prover integrações entre estes sistemas e outros que influenciam diretamente na obtenção de maior competitividade, após a entrega do equipamento é feito uma pesquisa de satisfação do cliente e o resultado contabilizado, nos indicadores da empresa.
De modo geral, o gestor consegue centralizar os dados de movimentação financeira e calcular os tributos de cada operação de entrada e saída. Os principais benefícios desta implantação na empresa seriam:
- Redução do tempo para administrar o estoque e o financeiro.
- Permitir o foco a outros setores da organização.
- Diminuir a burocracia para emitir notas fiscais.
- Eliminar os erros por controle e inserção de dados manual para ter mais precisão.
- Integrar os dados para simplificar o acesso.
- Gerar relatório.
A utilização de sistemas ERP aperfeiçoa o fluxo de informações e facilita o acesso aos dados operacionais, favorecendo a adoção de estruturas organizacionais mais enxutas e flexíveis. Além disso, as informações tornam-se mais consistentes, possibilitando a tomada de decisão com base em dados que refletem a realidade da empresa. Quando ocorre a comunicação entre os sistemas da empresa, os benefícios disponíveis aumentam exponencialmente, gerando uma melhora na tomada de decisões por parte da área gerencial da empresa. O ERP também é muito burocrático, gerando diversos relatórios gerenciais, através desses relatórios é possível realizar a rastreabilidade de tudo dentro da empresa, O ERP é o sistema gerencial mais utilizados pelos nossos clientes, por sua facilidade na implementação, utilizando as informações que já estão no sistema da empresa, na área de sistemas de gerenciamento empresarial representa ele 40% das vendas, com um valor inicial de R$ 540,00. E os pedidos foram crescendo, com isso o número em vendas também aumentou 10%, assim se tornou o produto mais requisitado pelas empresas. 
2.6.4 Customer Relationship Management (CRM)
O foco, aqui, são os dados de clientes. O objetivo é reunir o máximo de informações para criar estratégias específicas para atração e retenção de usuários. Assim, o CRM armazena itens como dados pessoais (nome, endereço, telefone etc.), atividades do cliente e contatos feitos com a empresa (como ligações telefônicas, visitas ao site, e-mails e outras interações). Conhecendo melhor nossos clientes, sabendo quais são suas preferências de compras e os melhores canais para atingi-los fazendo assim que a nossa empresa consiga oferecer produtos e serviços bem direcionados às necessidades específicas de cada cliente. Temos como dever de manter o cliente na empresa, e de fideliza ló, ter acesso à informação para assim realizar um atendimento personalizado. 
Os principais benefícios dos sistemas CRM, segundo Brown (2001), são aqueles provenientes da redução do custo dos contatos com clientes e da obtenção de um rendimento maior a partir do crescimento das vendas e possibilidade de obtenção de margens adicionais. O CRM é muito utilizado para empresas que buscam sempre a melhor forma de tratar o seu cliente, na Fusion System, ele representa 40% das vendas na área de sistemas de gerenciamento empresarial, com um valor de R$250,00 no primeiro ano, vale lembrar, um ponto interessante é a implantação do CRM com o intuito de gerar informação para o ERP, gerando assim um aproveitamento muito maior das funções do ERP, criando assim estratégias muito eficientes e conceituadas para agradar o cliente, por ser de fácil implantação e custo barato cresceu 30% em números de vendas no segundo ano.
- CRM operacional, que inclui automação de marketing, vendas e serviços de campo;
- CRM colaborativo, interação com cliente em serviços de Call Center, portais de vendas de serviços na Web, e-mail e face-a-face;
- CRM analítico, que absorve características de avaliação vindas dos sistemas BI, para criação de relatórios e indicação de desempenho dos clientes.
 Na Fusion System 90% dos clientes que fazem a implantação do sistema ERP, e também adquirem o CRM para ter um aproveitamento total dos sistemas de gerenciamento empresarial.
Figura 1 sistemas 
Fonte- Autoria própria
Figura 2 clientes 
Fonte- Autoria Própria
3 Pizza Fast 
Pizza Fast Inaugurada em abril de 2010, pela família Fornazzari, no centro da cidade onde reside, iniciou-se oferecendo uma variedade de sabores de pizzas, refrigerantes em geral, tendo como vizinhança algumas residências e prédios comerciais. Com a seguinte missão, visão e valores. 
MISSÃO: Conquistar a satisfação do nosso cliente, pela excelência no atendimento, agilidade na entrega e melhoria continua em todo serviço prestado. 
RAZÃO: Fazer com que nosso produto seja referência, pelo sabor e qualidade de nossos ingredientes e atendimento. 
VALORES: - Atendimento com simplicidade;
- Ser comprometido com a higiene e manuseio dos alimentos;
- Equipe comprometida, todos com o mesmo objetivo;
- Ter parceria com fornecedores e clientes;
- Atender as expectativas dos clientes.
A equipe de trabalho da Pizza Fast é formada por dois pizzaiolo, um atendente e dois motoboy, as atividades exercidas são a produção das pizzas o delivery e a retirada no balcão oferecendo assim melhores preços com ótima qualidade em seus produtos.
Instalada em um prédio com aproximadamente 68 m², de área aberta, com2 fornos a lenha para assar as pizzas e mais próximo a entrada o balcão de atendimento com o telefone. 
Visando atender um número maior de clientes foi inaugurado em maio de 2014 a segunda unidade da Pizza Fast em um bairro próximo ao centro em um prédio com a mesma estrutura da primeira unidade, com uma vizinhança residencial, contando com a equipe de trabalho formada por dois pizzaiolo, um atendente e dois motoboy.
Onde os controles de entrada de matéria prima e a saída das pizzas são controladas por livro movimento de caixa, onde demanda mais tempo para o encerramento diário das vendas e o controle de estoque das unidades. 
E com a inauguração em 2019 da terceira unidade da Pizza Fast , ficara inviável todo esse controle manual para o responsável, visando um maior controle e com pouco caixa para investimento contratou a empresa Fusion System para a implantação de um sistema integrando as 3 unidades.
A Fusion System fez os seguintes levantamentos para a implantação do sistema: A estrutura da pizzaria funciona da seguinte forma: Dias trabalhados de terça a domingo com a entrada dos funcionários as 18:00 horas, acendimento dos fornos as 18:15 horas e inicio do atendimento ao público as 18:30, as entregas iniciadas a partir das 18:30 horas e o encerramento de terça a sexta as 23:30 horas e aos sábados e domingos encerra as 00:30 hora. 
Forma do atendimento, por ligação ou diretamente no balcão o atendente anota o pedido em uma comanda com o tamanho da pizza, sabor e nome do cliente, se for para entrega também contém o endereço, cola no vidro próximo aos pizzaiolos em uma sequência de entrada dos pedidos, onde os pizzaiolos fazem a montagem da pizza e leva para assar, depois de assada embala em suas caixas anotando o nome do cliente em cada caixa e depois fixa a comanda na tampa da pizza superior, entrega ao atendente, se o cliente aguarda chama-se para a entrega, o atendente pega a comanda após o recebimento do valor e anota no livro movimento de caixa, se a entrega vai pelo motoboy, assim que fica pronta vai para a mochila para seguir com a entrega, e volta com o motoboy a comanda com o valor recebido que será lançado no livro movimento de caixa. Após o encerramento do dia o responsável vai em cada unidade para fazer os fechamentos e faz a conferencia dos valores com as anotações feita nos livros. 
A Fusion System analisou a rotina diária da primeira unidade onde ficará o servidor no escritório do senhor Fornazzari uma sala de 2 x 2 m², todas as unidades seguem a mesma rotina de trabalho iniciando as 18:00 horas entram os dois pizzaiolos e a atendente, um pizzaiolo acende o forno pra ir aquecendo e monta uma quantidade de embalagem de pizza que vai atender até um determinado período, depois conforme necessidade vai repondo entre cinco e dez embalagens, e o outro cuida da revisão do estoque para apontar o que precisa repor de matéria prima para 3 dias de trabalho, a atendente confere o troco para a abertura do expediente, e os dois motoboys chegam as 18:30 horas que é a hora que começa as entregas. 
Caso tenha venda esporádica e haja necessidade de matéria prima em alguma delas, é feito contato telefônico com as outras para verificar qual tem em estoque o produto disponível para fornecer, sendo feito uma anotação de saída no livro movimento de caixa, e enviado pelo motoboy onde ele entrega a matéria prima e a atendente lança uma entrada no livro movimento de caixa da unidade recebedora.
Para o fechamento o Sr.Fornazzari encerra a unidade 1, fazendo a conferencia dos valores recebidos com as anotações feita no livro e confere o apontamento do estoque feito pelo pizzaiolo no início do expediente, autorizando ou não a reposição de matéria prima, esse fechamento leva em torno de 40 minutos onde ele segue para a unidade 2 faz as mesmas conferencias e segue para a unidade 3 onde as unidades 2 e 3 já estão fechadas e os funcionários já foram dispensados, fica somente ele fazendo as conferencias e deixa as divergências anotada para os funcionários no próximo dia relatar o que aconteceu ou corrigir anotações errada. 
A Pizza Fast trabalha com três tamanhos de massa base de pizza: pequena 25 cm com 160 g de massa, 30 g de molho, média 30 cm com 260 g de massa, 40 g de molho e grande de 35 cm com 360 g de massa, 60 g de molho. 
3.1 Cardápio com os sabores das pizzas
Da casa: 
P - Massa base, 110 g queijo mozzarella, 80 g presunto, 80 g cebola, 40 g catupiry, 1 ovo, 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 170 g queijo mozzarella, 120 g presunto, 120 g cebola, 60 g catupiry, 1 ovo, 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 200 g queijo mozzarella, 150 g presunto, 150 g cebola, 80 g catupiry, 1 ovo, 25 g de azeitona preta e orégano. R$ 25,00
Marguerita: 
P - Massa base,120 g queijo mozzarella, 70 g de tomate em rodelas de 14 g cada, 25 g de azeitona preta, 5 folhas de manjericão, 2 g parmesão e orégano. R$ 10,00
M - Massa base, 190 g queijo mozzarella, 70 g de tomate em rodelas de 14 g cada, 25 g de azeitona preta, 5 folhas de manjericão, 2 g parmesão e orégano. R$ 15,00
G - Massa base, 250 g queijo mozzarella, 70 g de tomate em rodelas de 14 g cada, 25 g de azeitona preta, 5 folhas de manjericão, 2 g parmesão e orégano. R$ 25,00
Baiana: 
P - Massa base, 110 g queijo mozzarella, 80 g calabresa apimentada, 80 g cebola, 1 ovo e 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 170 g queijo mozzarella, 120 g calabresa apimentada, 120 g cebola, 1 ovo e 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 200 g queijo mozzarella, 150 g calabresa apimentada, 150 g cebola, 1 ovo e 25 g de azeitona preta e orégano. R$ 25,00
Bauru: 
P - Massa base, 110 g queijo mozzarella, 80 g presunto, 70 g de tomate em rodelas de 14 g cada, 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 170 g queijo mozzarella, 120 g presunto, 70 g de tomate em rodelas de 14 g cada, 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 200 g queijo mozzarella, 150 g presunto, 70 g de tomate em rodelas de 14 g cada, 25 g de azeitona preta e orégano. R$ 25,00
Calabresa: 
P - Massa base,120 g calabresa, 80 g queijo mozzarella, 70 g de cebola e 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 190 g calabresa, 120 g queijo mozzarella, 120 g de cebola e 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 250 g calabresa, 150 g queijo mozzarella, 150 g de cebola e 25 g de azeitona preta e orégano. R$ 25,00
Frango com Catupiry: 
P - Massa base, 240 g frango, 80 g queijo mozzarella, 15 g de catupiry e 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 280 g frango, 80 g queijo mozzarella, 20 g de catupiry e 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 300 g frango, 80 g queijo mozzarella, 30 g de catupiry e 25 g de azeitona preta e orégano. R$ 25,00
Mozzarella: 
P - Massa base,120 g queijo mozzarella, 70 g de tomate em rodelas de 14 g cada e 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 190 g queijo mozzarella, 70 g de tomate em rodelas de 14 g cada e 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 250 g queijo mozzarella, 70 g de tomate em rodelas de 14 g cada e 25 g de azeitona preta e orégano. R$ 25,00
Brócolis: 
P - Massa base, 110 g queijo mozzarella, 80 g brócolis, 15 g de catupiry, 15 g de bacon, 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 170 g queijo mozzarella, 120 g brócolis, 20 g de catupiry, 20 g de bacon, 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 200 g queijo mozzarella, 150 g brócolis, 30 g de catupiry, 30 g de bacon, 25 g de azeitona preta e orégano. R$ 25,00
Lombo: 
P - Massa base, 110 g queijo mozzarella, 80 g lombo, 15 g de catupiry, 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 170 g queijo mozzarella, 120 g lombo, 20 g de catupiry, 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 200 g queijo mozzarella, 150 g lombo, 30 g de catupiry, 25 g de azeitona preta e orégano. R$ 25,00
Escarola: 
P - Massa base, 110 g queijo mozzarella, 240 g escarolarefogada no alho, 15 g de bacon, e 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 170 g queijo mozzarella, 280 g escarola refogada no alho, 20 g de bacon, e 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 200 g queijo mozzarella, 300 g escarola refogada no alho, 30 g de bacon, e 25 g de azeitona preta e orégano. R$ 25,00
Quatro Queijos: 
P - Massa base,120 g queijo mozzarella, 70 g de catupiry, 15 g de parmesão, 10 g de provolone, 70 g de tomate em rodelas de 14 g cada e 25 g de azeitona preta e orégano. R$ 10,00
M - Massa base, 190 g queijo mozzarella, 120 g de catupiry, 20 g de parmesão, 15 g de gorgonzola, 70 g de tomate em rodelas de 14 g cada e 25 g de azeitona preta e orégano. R$ 15,00
 G - Massa base, 250 g queijo mozzarella, 150 g de catupiry, 30 g de parmesão, 20 g de gorgonzola, 70 g de tomate em rodelas de 14 g cada e 25 g de azeitona preta e orégano. R$ 25,00
Portuguesa: 
P - Massa base, 110 g queijo mozzarella, 80 g presunto, 80 g cebola, 40 g palmito, 1 ovo e 25 g de a azeitona preta e orégano. R$ 10,00
M - Massa base, 170 g queijo mozzarella, 120 g presunto, 120 g cebola, 60 g palmito, 1 ovo e 25 g de azeitona preta e orégano. R$ 15,00
G - Massa base, 200 g queijo mozzarella, 150 g presunto, 150 g cebola, 80 g palmito, 1 ovo e 25 g de azeitona preta e orégano. R$ 25,00
Bebidas: Garrafas e latas. 
Garrafa: Coca cola 2 litros, Fanta 2 litros, Guaraná 2 litros
Lata: Coca cola 350 ml, Fanta 350 ml, Guaraná 350 ml.
4 A Origem do C++
A linguagem C++ veio depois do C que nasceu em 1972 nos laboratórios da AT&T criada por Dennis Ritchie que depois usou nos sistemas UNIIX.
A AT&T tinha um compilador C K&R C (K&R são as primeiras letras dos nomes de Brian Kernighan e Dennis Ritchie eles escreveram o primeiro livro em linguagem C ) , o UNIX foi escrito em C e quem comprava ele recebia um compilador C gratuito e foi se tornando mais popular e algumas empresas começaram a colocar seus próprios compiladores em C com melhorias quem vinham de outros sistemas que não eram UNIX gerando incompatibilidade em 1987 apareceu o American National Standards Institute (ANSI) quem vinha com muito aperfeiçoamentos do K&R C mais conhecido como Classic C naquela época o C++ foi a evolução do ANSI C.
“Os computadores entendem uma linguagem geralmente chamada de linguagem de computação ou linguagem de máquina. É possível, mas extremamente difícil para os seres humanos falarem linguagem de máquina. Entretanto, computadores e humanos deram um jeito de se entender usando linguagens intermediárias como C++. Os humanos podem falar C++ (mais ou menos), e C++ pode ser convertido em linguagem de máquina para que o computador entenda.” Trecho do livro, C++ para leigos. (DAVIS, Stephen R. 2011) 
4.1 Em nosso Software usamos
Variáveis simples: é um local na memória que armazena dados e elas devem ter um tipo esse tipo tem um nome e um tamanho exemplos de variáveis e tamanho:
tipo tamanho significado
char 8 bits caractere 
int 16 bits inteiro
float 32 bits ponto flutuante de precisão simples
double 64 bits ponto flutuante de precisão duplo
<iostream>, representa a entra e saída em um programa ele deve ser sempre escolhido na biblioteca quando o programa a ser criado enviar e receber dados.
Using Namespace std; name space onde indicamos as bibliotecas que vão ser trabalhada std é a sigla de standard
Int main (), int inteiro, main principal, () indica que main é um grupo de construção de programa, main sempre será executado por primeiro mesmo que não seja a primeira função declarada pois é a função que serve como início de entrada e saída, int significa que main vai sempre devolver um valor inteiro.
Operadores tem de vários tipos: matemáticos, bit a bit, lógicos, diversos e de atribuição etc.
- Operadores de relação
== igual
>= maior ou igual
<= menor ou igual
! = diferente
>maior 
<menor
Operadores lógicos
 l l ou
&& e
! negação
Operadores de precedência
* / % multiplicativos
+ - aditivos
Ponteiros
Variável que faz um armazenamento do endereço de memória de outra variável pode ser do tipo int, string, float.
Void fn () {
Int k;
Int *ptr;
ptr=&k
*ptr=20;
}
Vetores, são variáveis que guardam de maneira idêntica, valores iguais na memória.
Estruturas
Diferente de um vetor as estruturas podem receber vários tipos diferentes de valores são várias variáveis dentro de uma variável.
Estruct hora {
Int Horários;
Int Minutos;
Int Segundos; 
}
Biblioteca string.h, manuseia função do tipo string eu representa o código ASCll, funções tipo string.
Strlen: ela recebe um ponteiro que mostra uma string e retorna quantidade de caracteres tem essa string.
Strecpy: acrescenta um valor exato a uma string.
Strcmp: compara strings do tipo char em ordem alfabética.
Cstdlib: tem modelos de função variada converter texto em número ou vice-versa, stdlib "standard library" biblioteca padrão 
Conio.h: manusear caracteres na tela.
Clrscr: limpar a tela.
Getch: lê um digito ou letra, mas não o mostra na tela.
Delline: apaga a linha e, sobe as linhas abaixo para cima.
Texcolor: troca a cor do texto.
Textbackground: troca a cor do fundo.
Biblioteca ctype.h: manipula caracteres individuais diferenciando letras maiúscula e minúscula, números, ponto vírgula dois pontos.
Biblioteca fstream: a letra F na frente de stream significa file “arquivo” e dá suporte a biblioteca iostream: com variáveis ifstream entrada, ofstream saída, função “open “abre o file, função “is open” averígua se o file foi aberto.
Variáveis globais é usada dentro do programa todo e pode ser acessado em qualquer ponto e ocupa memória até que o programa seja fechado.
Variáveis locais declarada dentro da função e só pode ser executada ali no local e só usa memoria quando executada.
Char: representa caracteres. Um caractere equivale um byte na memória.
Funções, são blocos de códigos que quando executados podem fazer uma ou diversas operações ou apenas leitura, exemplos de alguns tipos de função, soma, subtração, adição e multiplicação.
System (pause): esse comando segura a janela na tela do monitor para que se possa ver, sem ele no executável o programa executa aparece e some da tela.
For: comando de repetição, o comando for é completo na sua estrutura porque dá para declarar uma variável, estabelecer condições e adicionar ou subtrair valores em uma variável.
While, Do-while 
Comando while: sempre é executado se a condição é verdadeira.
Do-while: sempre será executado ao menos uma vez.
4.2 Soluções de negócios 
Fusion ERP (Enterprise Resource Planning) é um software simples, fácil, seguro e intuitivo, com acesso total pela WEB com rapidez e flexibilidade de gerenciar a empresa onde estiverem, através de um Desktop ou Notebook conectado à internet.
Sistema indicado para pequenas e médias empresas, organizando os controles para sua empresa crescer com qualidade, utilizam-se deste sistema o ramo de Fast-Food como pizzarias entre outros e podendo ser adaptado para outros tipos de empresas. 
4.2.1 Suporte 
Temos um suporte técnico inspirado na prática de SLA – SERVICE LEVEL AGREEMENT e uma equipe preparada para resolver com agilidade e segurança as dúvidas ou erros do sistema. 
SLA – SERVICE LEVEL AGREEMENT ou Acordo de Nível de Serviço (ANS), em português — é fundamental para qualquer contrato de prestação de serviços na TI. Refere-se à especificação, em termos mensuráveis e claros, de todos os serviços que o contratante pode esperar do fornecedor na negociação. É importante ressaltar que o SLA é um documento exigido em qualquer relação contratual de TI. Ele está descrito na  ABNT NBR ISO-IEC 20000-1  e deve ser revisto periodicamente para que tenha maior efetividade.(GOMES, Pedro César Tebaldi .2015)
Horário De Atendimento:
Das 09:00 h as 18:00 h de Segunda a Sexta Feira. Final de semana e período noturno suporte por telefone móvel. 
Telefones:
15 – 4004-3030 - 15
15 – 999-90-3030 / 999-90-3035 (Final de semana e períodonoturno)
5 ESPECIFICAÇÃO Do Sistema 
Neste capitulo descreve os métodos utilizados para a modelagem do Sistema de Gerenciamento Pizzaria.
5.1 Modelo Espiral De Boehm
O método utilizado neste projeto foi o modelo espiral, por poder acomodar diversos processos específicos. Significa que podemos encaixar nele as principais características de outros modelos. O modelo espiral usa como principal base análise de risco, em outras palavras “algo que pode dar errado”. Começa com uma definição do conceito e termina com uma interação direta com o cliente.
Um framework de processo de software dirigido a riscos, o modelo espiral foi proposto por Boehm (1988). O processo de software é representado como uma espiral, e não como uma sequência de atividades com alguns retornos de uma para outra. (SOMMERVILLE 2011).
A espiral representa o curso do projeto, onde, a cada volta, um novo produto é construído (exemplo: documento de requisitos, modelo de projeto, implementação etc.). Cada volta na espiral representa uma etapa no processo de desenvolvimento.
Não há etapas fixas como especificação ou projeto (o conteúdo de uma volta na espiral é escolhido dependendo do produto requerido pela etapa). Ou seja, de acordo com o que estiver produzindo pode pular algumas etapas. Lembrando que os riscos são avaliados explicitamente e resolvidos ao longo do processo.
Figura 3 modelos espiral
Fonte: https://www.gabaritou.com.br/Content/UploadedFiles/Questao/questao-24491-trt---13%C2%AA-regi%C3%A3o-(pb)-2014-fcc-cargo-20245-especialidade-20473-img_01.png
5.1.1 O espiral é dividido em quatro quadrantes
· Planejamento: determinação dos objetivos, alternativas e restrições, os objetivos específicos para a etapa são identificados e alternativas para realizar os objetivos e restrições são encontradas;
· Análise de risco: Análise das alternativas e identificação ou resolução de riscos, os riscos principais são identificados, analisados e buscam-se meios para deduzir esses riscos;
· Engenharia: desenvolvimento e validação da versão corrente do produto, um modelo apropriado para o desenvolvimento é escolhido, o qual pode ser qualquer um dos modelos de ciclo de vida;
· Avaliação do cliente: planejamento, o projeto é revisto e o próximo ciclo da espiral é planejado. 
5.2 Analise de risco
De acordo com (Pressman 2000) risco pode ser considerado um evento ou condição incerta que, se acontecer, tem um efeito positivo ou negativo nos objetivos de um projeto. A partir desse conceito, podemos pensar no risco como uma probabilidade de que alguma circunstância adversa realmente venha a ocorrer. Os riscos podem ameaçar o projeto, o software que está sendo desenvolvido ou a organização. Esse gerenciamento é realizado através de seis processos.
5.3 Planejamento
O planejamento que iremos aplicar do início até a conclusão no desenvolvimento do projeto, objetivo é planeja cada etapa do projeto, usando cronogramas aplicado no modelo espiral, dando qualidade, fácil acesso para alterações futuras, por exemplo: atualizações do sistema, o cronograma ira atua no auxílio de requisitos, implementação, escolha melhor, custo, ferramentas, dando suporte para o cliente.
Consiste em definir de que forma os riscos serão gerenciados, o que inclui a escolha da metodologia e das ferramentas a serem utilizadas. Esses itens devem ser documentados em um plano de gerenciamento de riscos, garantindo que o controle seja proporcional aos riscos do projeto. Caso haja mudanças no escopo durante o ciclo de vida do projeto, será necessário revisar o plano de gerenciamento de riscos, adequando-o à nova versão do escopo. (JUSTO, Andreia Silva. 2018)
 5.4 Identificação
No caso da identificação dos riscos foram priorizados a detecção de prováveis riscos, com o auxílio de ferramentas que tem o intuito de auxiliar a identificação e supostamente a listagem de todos os riscos. Utilizamos várias ferramentas como o Brainstorming, entrevistas, Delfhi, Checklist, entre outras que também podem ser utilizadas.
No checklist em específico trata-se de uma ferramenta de contribuição, uma vez que precise que os riscos já tenham sido identificados anteriormente em outros processos. O checklist serve para verificar a aplicação – ou não – das medidas recomendadas em processo de análise de risco anteriores. Para essa verificação, as medidas anotadas de processos anteriores são listadas e assinaladas (em um quadrado ao lado de cada uma), divididas nas três opções: “Sim”, “Não” ou “Não Aplicável.
O processo de identificar os riscos fornece as ferramentas e meios para que sejam identificados os riscos relacionados ao projeto. Quaisquer riscos ignorados durante esse processo podem ser mais difíceis de serem solucionados mais tarde. Neste processo, participam o time do projeto, especialistas nos assuntos abordados pelo mesmo, os stakeholders e outros gerentes de projeto (Kwak et Stoddardb, 2004, Barros, 2004).
5.5 Análise Qualitativa
Depois de termos identificado os riscos do projeto, iremos realizar a análise qualitativa dos riscos. Este é o processo de priorização dos riscos para análise ou ação adicional através da avaliação e combinação de sua probabilidade de ocorrência e impacto. Neste processo, faremos uma análise subjetiva com o propósito de priorizar riscos a partir da probabilidade de impacto medida durante a análise dos riscos e, também, determinar o que precisa ser analisado quantitativamente ou não antes de ser construído o plano de resposta aos riscos.
5.6 Análise Quantitativa
	
RISCOS
	 PROBABILIDADE
	 IMPACTO
	A estimativa de tamanho pode ser significativamente baixa
	 60%
	 2
	Número de usuários maior do que o planejado
	 30%
	 3
	O prazo de entrega será apertado
	 50% 
	 2
	O cliente mudará os requisitos
	 80%
	 2
Fonte: Tabela baseada no livro Pressman 7 p 653
Este é o processo de analisar numericamente os efeitos dos riscos nos objetivos gerais do projeto. Iremos considerar, por meio de análises, a exposição que o projeto tem aos riscos identificados. Para tais análises são utilizadas, em geral, simulações de cenários como a técnica de Monte Carlo. Este processo pode ser realizado com a entrada dos riscos registrados e priorizados pela análise qualitativa. Vale lembrar que os riscos a serem analisados aqui serão aqueles que podem trazer maior prejuízo ou impacto significativo ao projeto.
Valores de impacto:
1 – Catastrófico
2 – Crítico
3 – Média
4 – Negligenciável
 
5.7 Planejamento de respostas aos riscos 
Trata-se do processo de desenvolver opções e determinar ações para aumentar as oportunidades e reduzir as ameaças aos objetivos do projeto. O principal objetivo deste processo é a abordagem dos riscos por prioridades incluindo recursos e atividades, no orçamento, no cronograma e no gerenciamento do projeto, conforme necessário. As entradas, ferramentas, técnicas e saídas desse processo. As três principais estratégias usadas no planejamento de respostas a riscos são: prevenir, transferir e mitigar. Prevenir envolve efetuar uma mudança no gerenciamento do projeto, para que um risco adverso não venha a ocorrer. Transferir está relacionado a deixar que terceiros tenham a responsabilidade pelo risco. Mitigar está relacionado a reduzir a probabilidade ou o impacto de um risco até um limite aceitável. 
 “O processo de planejar as respostas aos riscos visa definir o que será feito a respeito de cada risco principal que foi identificado e classificado nos processos anteriores. No planejamento das respostas aos riscos temos que encontrar formas de reduzir a ameaça ou eliminá-la por completo”. Se, ao invés de ameaças, estivermos tratando de oportunidades, o planejamento das respostas aos riscos deverá tentar tornar as oportunidades mais prováveis e aumentar o seu impacto. (AUGUSTINE, 1982).
5.8 Monitoramento e controle de risco
Neste processo o monitoramento deve ser constante e a avaliação das ocorrências e ações para o tratamentodos riscos deve fazer parte da agenda dos gerentes de projetos, a análise do custo/benéfico em mitigar ou protelar uma ação de correção de um risco deve ser diretamente ligada ao tamanho do impacto e custo causado no projeto e o custo para realizar as tarefas apropriadas a reparar o dano causado. É feito uma comparação do que foi planejado e do que foi realizado, em vez de comparar cada uma delas, o importante nesse processo é comparar todas as áreas do processo exemplo, se o custo está batendo com o que foi imaginado, o cronograma (tempo) está andando conforme foi imaginado, escopo está sendo atendido, as comunicações estão acontecendo conforme o planejado, e se apareceram novos riscos.
Os riscos não permanecem constantes durante a execução de um projeto. Alguns desaparecem, outros novos surgem, e outros sofrem alterações de probabilidade e impacto, mudando, portanto, de prioridade. O relatório de acompanhamento do projeto do software contém também uma tabela atualizada de monitoração dos riscos. A tabela de estimativa dos riscos deve ser repetida no relatório de acompanhamento do projeto do software, atualizada para refletir as modificações ocorridas. Além disso, esse relatório deve informar sobre os riscos concretizados até a data. A comparação entre riscos previstos e realizados ajuda a melhorar os processos de estimativa dos riscos contém também uma tabela atualizada de monitoração dos riscos. (DE PÁDUA. 2001. p, 438).
 
5.9 Neste capitulo descreve como o projeto foi montado 
5.9.1 Primeira Etapa 
Nestas etapas do projeto foram realizadas os levantamentos de requisitos necessários para o desenvolvimento do projeto, reuniões (scrum) semanais onde cada membro da equipe relatava o que conseguiram desenvolver e as dificuldades que estavam tendo, massas de testes do sistema e a validação do cliente foram realizadas em todas etapas do processo, com isso foi possível concluir cada etapa do projeto, e planejar a próxima etapa. A tabela abaixo indica os riscos encontrados em cada etapa, a probabilidade de dar certo e o impacto que causaria no projeto se algo der errado.
	 RISCOS
	 PROBABILIDADE
	 IMPACTO
	A estimativa de tamanho pode ser significativamente baixa
	 60%
	 2
	Número de usuários maior do que o planejado
	 30%
	 3
	O prazo de entrega será apertado
	 50% 
	 2
	O cliente mudará os requisitos
	 80%
	 2
	Financiamento será perdido
	 40%
	 1
	Pessoal sem experiência
	 30% 
	 2
	Tecnologia não atingirá as expectativas
	 30%
	 1
	Equipe desfalcada
	 20%
	 2
	Protótipo estará do agrado do cliente
	 50%
	 2
Fonte: Tabela baseada no livro Pressman 7 p 653
Valores de impacto:
1 – Catastrófico
2 – Crítico
3 – Média
4 – Negligenciável
5.10 Requisitos
O programa desenvolvido pela empresa Fusion System, atua no controle gerencial da rede de pizzarias, chamada Pizza Fast, que atualmente conta com três unidades. O software foi desenvolvido para atender os requisitos exigidos pelo dono da rede de pizzarias.
Para o desenvolvimento do sistema foi realizado visita e entrevista a empresa, para poder identificar o que o cliente ira requisitar que o software ofereça, o que deve de ser executado, o que deve estar presente no software, e o levantamento de requisitos funcionais (RF) e não funcionais (RNF). 
Os requisitos de um sistema são as descrições do que o sistema deve fazer, os serviços oferecem e as restrições a seu funcionamento. Esses requisitos refletem as necessidades dos clientes para um sistema que serve a uma finalidade determinada, como controlar um dispositivo, colocar um pedido ou encontrar informações. O processo de descobrir, analisar, documentar e verificar esses serviços e restrições é chamado engenharia de requisitos (RE, do inglês requirements engineering) (SOMMERVILLE 2011 p 57).
5.10.1 Levantamento de Requisitos
Entrevista realizada na Pizzaria Fast (Sr. Fornazzari)
a) Fusion System: Ramo de atividade da Pizzaria Fast? 
Fornazzari: A Pizza Rush está relacionada no ramo alimentício, venda de pizza, bebidas (refrigerantes, 2 litros e latas 350 ml). 
b) Fusion System: Problemas enfrentados devido à falta de um Sistema de Gerenciamento. 
Fornazzari: A Rede de pizzarias necessita de um software para gerenciamento e controle, por causa de seu crescimento exponencial nos últimos meses. O gerenciamento da rede de pizzarias, anteriormente era realizado de forma manual, até certo ponto esse tipo de controle era suficiente, porém quando o negócio está em uma fase de crescimento, com o número de clientes aumentando e trabalhando com grandes quantidades de produtos é necessário que esse controle seja realizado com a utilização de um software especifico, para que todas as atividades rotineiras de uma empresa possam ser gerenciadas de forma abrangente, controlando assim os principais pontos que tornam a empresa lucrativa.
c) Fusion System: Qual o resultado esperado com o Sistema de Gerenciamento? 
Fornazzari: Com o Sistema de Gerenciamento espera-se um controle confiável pra cadastro de cliente, funcionário, produtos, venda, contas a pagar e receber. 
. 
5.10.2 Requisitos especificados pelo proprietário da Pizzaria 
[RF01] Tela de login, contendo um login especifico para vendas, onde o caixa ou funcionário designando executa a tarefa de efetuar o pedido do cliente, tela de login gerencial, onde o gerente ou responsável administrativo tem acesso aos relatórios diários e também pode controlar o estoque através das funções do software.
[RF02] Cadastro de bebidas, todas as bebidas disponíveis para a venda, estão cadastradas no programa.
[RF03] Sabores de pizzas, todas pizzas disponíveis para a venda estão cadastradas no programa.
[RF04] Cadastro de funcionários, todos funcionários das três unidades, que atualmente estão trabalhando, foram cadastrados no programa.
[RF05] Cadastro de clientes, para realizar um pedido na pizzaria é necessário que o cliente esteja cadastrado no sistema.
[RF06] Pedidos, com o cliente já cadastrado é necessário realizar o pedido, o usuário realiza o pedido selecionando o cliente cadastrado posteriormente, após isso o usuário e direcionado sequencialmente para a tela de bebidas, tela de pizzas, tela de observações e por fim tela de pagamento.
[RF07] Sugestões e observações, quando o usuário está realizado o pedido do cliente, é possível adicionar qualquer tipo de observações sobre o pedido no geral e também adicionar comentários sobre os pedidos anteriores.
[RF08] Controle de estoque, este controle é realizado com o cadastro de todos os produtos existentes na pizzaria, cadastro da ficha técnica de cada pizza, com a realização de cada venda a quantidade proporcional a venda é abatida do estoque
[RF09] Dentro do software vários relatórios são criados, para auxiliar o controle de estoque foi criado um arquivo externo que contém todos os produtos do cardápio e as fichas técnicas de cada pizza, um arquivo que representa o estoque da pizzaria, contendo as quantidades padrões que precisam ter dentro do estoque para um período de três dias, um arquivo para as vendas, que contém o cadastro do cliente que realizou o pedido e também o seu pedido detalhadamente e por último o arquivo de atualização de estoque, conforme um pedido é finalizado o programa atualiza a quantidade de produtos no estoque.
[RNF05] O acesso ao sistema não pode demorar mais de 10 segundos.
[RNF02] um funcionário não irá poder acessar a área de administrador sem uma senha.
[RNF03] um relatório de supervisão deverá ser fornecido toda sexta-feira.
Obs: Senhor Fornazzari, requisitou para a empresa Fusion System o desenvolvimento de um software acessível com relação a custo e que seja compatível com a infraestrutura disponibilizada. 
5.10.3 Validação dos Requisitos
 A) Os requisitos para elaboração do sistema estão completos? 
(X) Sim ( ) Não
B) Existealgum requisito conflitante? 
( ) Sim (X) Não 
C) Falta de clareza nos requisitos? 
( ) Sim ( X) Não
 
D) O sistema possui as funções para suprir as necessidades dos usuários?
	(X) Sim ( ) Não
E) Foram incluídas todas as funções requisitadas pelo cliente?
	(X) Sim ( ) Não
F) Os requisitos são reais? 
(X) Sim ( ) Não
6 O funcionamento do software 
O programa funciona através de diversas telas, cada uma dessas telas executa uma função especifica. Estas funções ocorrem sequencialmente, fazendo com que o programa tenha um fluxo de execução definido, facilitando assim o manuseio do mesmo.
6.1 Primeira tela de login 
A primeira tela de login conta com um campo de preenchimento obrigatório, este campo é onde o usuário irá inserir o nome de usuário cadastrado dentro do software.
Figura 4 – Primeira tela de login
Fonte: Autoria própria
No campo “DIGITE O NOME DO USUARIO” é onde o usuário irá inserir o nome cadastrado no sistema.
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
6.1.2 Segunda tela de login 
A Segunda tela de login conta com dois campos de preenchimento obrigatório, sendo que o primeiro foi preenchido com o login, o segundo campo é onde o usuário irá inserir a senha de acesso cadastrada dentro do software.
Figura 5 – Segunda tela de login
Fonte – Autoria própria
No campo “DIGITE A SENHA DE ACESSO”, usuário insere a senha cadastrada dentro do sistema.
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
6.1.3 Terceira tela de login 
A Terceira tela de login conta com três campos de preenchimento obrigatório, sendo que o primeiro foi preenchido com o login, o segundo campo foi preenchido com a senha de acesso, o terceiro campo é onde o usuário insere o código de acesso (nível de acesso definido pelo código) cadastrado dentro do software.
Figura 6 – Terceira tela de login
Fonte – Autoria própria
No campo “DIGITE O CODIGO DE ACESSO”, o usuário insere o código de acesso cadastrado no sistema, este código serve para definir, qual o nível de acesso que o usuário tem. 
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
 Após o nome ter sido inserido, o software requisita ao usuário a senha de acesso definida dentro do software, inserindo a senha o terceiro campo obrigatório aparece, neste campo é onde o usuário digita o código de acesso, que também já está definido dentro do software.
6.1.4 Quarta tela de login 
Para que o usuário tenha a acesso a todas as funções disponíveis para o seu login, é necessário que os três campos sejam preenchidos corretamente. 
Quando o usuário insere os três os campos obrigatórios, o software o direciona para a tela de confirmação de login, mostrando em tela se o usuário realizou o preenchimento corretamente.
Figura 7 - Quarta tela de login
Fonte – Autoria própria
Conforme demostrado na figura 4, o usuário realizou o preenchimento de todos os campos obrigatórios corretamente, o que resulta no redirecionamento do mesmo para o menu principal, que contém todas as funções que o seu nível de acesso (Definido no código de acesso) disponibiliza.
6.1.5 Usuário não cadastrado 
Quando o usuário não insere corretamente um ou mais campo obrigatórios, automaticamente quando a tentativa de login é efetuada, o mesmo é direcionado para a tela de login invalido, como demostrado na figura abaixo.
Figura 8 – Login invalido
Fonte – Autoria própria
Quando ocorre a tentativa com dados que não correspondem aos dados cadastrados no sistema, o usuário precisa realizar o preenchimento de todos os campos novamente, o software não indica em qual campo está o erro de login, visando um nível de segurança mais elevado, garantindo assim que somente usuários com permissão de acesso realizem o login no sistema.
6.1.6 Função login
De acordo com o que foi descrito anteriormente, a tela de login contem campos obrigatórios de preenchimento, que aparecem sucessivamente, conforme o usuário realiza o preenchimento, a função login segue um fluxo sequencial, com o objetivo de direcionar o usuário para a tela que contém as funções correspondentes ao seu nível de acesso.
6.1.7 Fluxograma 1
A função login é expressada pelo fluxograma a seguir, contendo o fluxo sequencial completo da função, os campos que irão ser preenchidos pelo usuário e também o redirecionamento caso os dados de login sejam inseridos de forma incorreta, ocasionando na reinicialização da função.
Figura 9 – Fluxograma de login
Fonte: Autoria própria
7 Função principal
A tela principal do software contém todas as funções possíveis para serem executadas pelo usuário. Após o usuário executar o login corretamente é direcionado primeiramente para a tela de confirmação, demonstrando que o login foi efetuado com sucesso, conforme demostrado na figura 4, após esta tela o usuário é direcionado para tela principal.
Figura 10 – Tela principal
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, porém, a seleção da função resultou em invalida.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo só aceita caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.1 Primeira função 
A primeira função é chamada de “CADASTRAR CLIENTES”, conforme o próprio nome diz, a função realiza o cadastro dos clientes, para o usuário ter acesso à esta tela é necessário que ele digite o número correspondente a função.
 Nesta etapa do projeto foram realizadas reuniões diárias (via web) e semanais para discutir a segunda etapa do projeto, um simples cadastro de cliente atenderia os requisitos exigidos pelo proprietário, mas não o diferenciaria do mercado. Pensando nisso foi realizado um cadastro detalhado como: Nome, Sobrenome, Rua, Bairro, Número, Complemento, Cep, Código de Cliente e Telefone onde o cliente poderá usufruir de um atendimento personalizado. Foram realizados massa de teste e com a validação do cliente planejar a próxima etapa.
	 RISCOS
	 PROBABILIDADE
	 IMPACTO
	A estimativa de tamanho pode ser significativamente baixa
	 60%
	 2
	Número de usuários maior do que o planejado
	 30%
	 3
	O prazo de entrega será apertado
	 50% 
	 2
	O cliente mudará os requisitos
	 70%
	 2
	Financiamento será perdido
	 40%
	 1
	Pessoal sem experiência
	 30% 
	 2
	Tecnologia não atingirá as expectativas
	 30%
	 1
	Equipe desfalcada
	 20%
	 2
	Protótipo estará do agrado do cliente
	 60%
	 2
	Digitação inválida
	 50%
	2
Fonte: Tabela baseada no livro Pressman 7 p 653
Valores de impacto:
1 – Catastrófico
2 – Crítico
3 – Média
4 – Negligenciável
7.1.1 Interação funcional
Após o usuário selecionar a função de cadastro de clientes, ele é direcionado para a primeira tela de interação, nesta tela é necessário informar a quantidade de clientes que irão ser cadastrados, este parâmetro foi adicionado ao corpo do programa com intuito de simplificar a interação do usuário com o software, caso ocorra de o funcionário precisar realizarvários cadastros sequenciais (Fatores externos normalmente ocasionam a existência de cadastros sequenciais, por exemplo alto fluxo de vendas), esta função facilitara a realização dos cadastros, evitando o redirecionamento do usuário para a tela principal após a conclusão do primeiro cadastro, todos os campos precisam ser preenchidos (Não pode existir campos vazios dentro do cadastro de um cliente), para que o próximo cadastro seja realizado.
Figura 11 – Cadastrar clientes
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, porém, quando o número não está dentro dos padrões especificados, resulta em quantidade invalida.
· Número zero.
Resultado: Aceito, mas a seleção de quantidade foi finalizada, pois o usuário indicou que não deseja cadastra um cliente.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo só aceita caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.1.2 O início do cadastro
Quando o usuário insere um número maior que zero, ele é direcionado para a tela onde o cadastro de funcionário é iniciado, conforme demonstrado na figura 9. O primeiro campo é responsável por armazenar o nome do cliente que está sendo cadastrado no momento, como trata-se de um campo de identificação, este campo não pode ficar vazio, para evitar situações conflitantes é necessário também que o segundo ou terceiro nome estejam presentes no cadastrado. Após o usuário preencher o campo corretamente, o próximo campo do cadastro é exibido.
Figura 12 – Primeiro campo
 Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
Caracteres inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.1.3 Endereço do cliente
Conforme demonstrado na figura 10, o usuário realizou o preenchimento do campo corretamente, antes da abertura do segundo campo, é emitida uma mensagem de confirmação, para demonstrar que o cadastro está fluindo corretamente. Dentro do segundo campo da função cadastro, é requisitado ao usuário que digite os dados do cliente para cadastramento do endereço corretamente. Dentro deste campo é requisitado para o usuário o nome da rua, o campo deve ser preenchido com espaços entre o primeiro e o segundo nome (Caso não tenha mais de um nome, não é necessário a utilização do espaço), com proposito de facilitar a leitura do endereço cadastrado e garantir a exatidão na entrega do pedido requisitado.
Figura 13 – Segundo campo
Fonte – Autoria própria
Após o usuário realizar o preenchimento correto do campo correspondente ao cadastro da rua, o campo para o cadastro do bairro é exibido. O cadastro do bairro precisa ser preenchido de forma clara e consistente, O primeiro e o segundo nome devem ser separados por um espaço (Caso exista um segundo nome) para que não ocorrer nenhuma falha no momento da entrega do pedido.
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
Caracteres inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Figura 14 – Terceiro campo
Fonte – Autoria própria
Após o campo correspondente ao bairro ter sido preenchido corretamente é exibido para o usuário o campo correspondente ao cadastro do número da residência em questão e também do complemento do endereço (Caso exista um complemento, normalmente existe quando a residência cadastrada é um apartamento), as informações inseridas precisam ser separadas com a utilização do espaço, visando evitar a criação de um cadastro complexo e inconsistente. 
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Figura 15 – Quarto campo
Fonte – Autoria própria
Dentro da função para o cadastro de clientes, conforme as informações inseridas acima, o conjunto de campos de preenchimento obrigatórios que corresponde ao endereço do cliente é composto por, nome dá rua, nome do bairro, o número da residência e o complemento (Se houver complemento), Todos os dados requisitados são de extrema importância para a criação de um cadastro valido.
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.1.4 Telefone do cliente
Quando o cadastro do endereço é finalizado de forma correta, o usuário recebe uma mensagem dizendo que o todos os campos foram preenchidos corretamente. Disponibilizando para o usuário o campo para o cadastro do telefone do cliente, este campo deve ser preenchido sem espaços e somente com números, para evitar qualquer erro de digitação. O cadastro do telefone do cliente é crucial, pois possibilita para a empresa a realização de um atendimento personalizado. 
Na próxima compra do cliente é possível localizar seu último pedido e outras informações essenciais para um atendimento personalizado, o usuário tem a possibilidade de chamar o cliente pelo nome do cadastro, mostrando para o cliente que ele é importante para a empresa, também é possível antes do cliente realizar o pedido o usuário oferecer o último pedido feito pelo cliente em questão, o cliente passa a sentir confiança no atendimento, pois a empresa registrou todos os dados deste cliente de forma consistente e também utilizou todos os recursos provenientes deste cadastro.
Figura 16 – Quinto campo
Fonte – Autoria Própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.1.5 Cep do cliente
Assim que o campo para cadastro do telefone do cliente é preenchido corretamente, o usuário tem acesso ao campo para o cadastro do cep. O cep a ser cadastrado deve ser correspondente ao endereço do cliente, deve ser preenchido sem espaços e somente com números. 
No caso do cadastro de clientes o campo do cep serve como uma medida de segurança, casoocorra algum erro com o endereço cadastrado, por exemplo falta de informações na hora de realizar o cadastro, o cep pode servir como uma segunda ferramenta de buscar, para localizar o endereço em questão.
Figura 17 – Cep do cliente
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.1.6 O código do cliente
O último campo mostrado para o usuário, armazena o código de cada cliente, neste campo não é necessário que o usuário digite nenhum tipo de informação.
O software disponibiliza para cada cliente cadastrado um código, que serve como método de identificação e serve também como ferramenta de busca, para localizar o cadastro do cliente (Localização por nome de usuário pode ser considerada inviável, existe a possibilidade de ter diversos clientes cadastrados com o nome igual), automaticamente quando todos os campos anteriores forem preenchidos corretamente, o programa verifica qual o código pra o cliente em questão e o adiciona a este campo.
Figura 18 – Cadastro finalizado
Fonte – Autoria própria
A última tela da função para cadastrar os clientes, disponibiliza a visualização de todos os campos preenchidos pelo o usuário. Neste momento ocorre última verificação visual realizada pelo usuário, antes de o cadastro ser armazenado no sistema, caso tenha alguma informação errada, selecionando a segunda opção o cadastro será excluído e o usuário realizara um novo cadastro.
Figura 19 – O cliente cadastrado
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.1.7 Fluxograma 2
O Fluxograma que representa a atividade executada na função para o cadastro de clientes, o fluxograma foi divido em duas partes para representa-la de forma precisa. A primeira parte tem seu ponto de início dentro da função que corresponde ao cadastro do cliente, o fim da primeira parte do fluxograma é localizado no ponto em que o endereço do cliente está sendo valido. A segunda parte do fluxograma, tem seu ponto de início após a validação do endereço, contendo todos os parâmetros para o cadastro do cliente, o final da segunda parte do fluxograma representa o final da função.
Figura 20 – Fluxograma do cadastro de clientes primeira parte
Fonte – Autoria própria
Figura 21 – Fluxograma do cadastro de clientes segunda parte
Fonte – Autoria próprio
7.2 Terceira Etapa
Em scrum com a equipe, esta etapa foi discutida a realização do pedido, cardápio e pagamento onde não só teria que calcular o troco como ter opção de débito ou crédito do cartão. Um dos pontos críticos desta etapa foi a digitação errada do usuário, pois as chances de um usuário inexperiente ou até mesmo experiente digitar um caractere errado é grande. A equipe decidiu adotar números (código), facilitando a realização de pedidos, a visualização do cardápio e com isso minimizar os erros de digitação. Foram realizada massa de teste e com a validação do cliente planejar a próxima etapa.
	 RISCOS
	 PROBABILIDADE
	 IMPACTO
	A estimativa de tamanho pode ser significativamente baixa
	 60%
	 2
	Número de usuários maior do que o planejado
	 30%
	 3
	O prazo de entrega será apertado
	 50% 
	 2
	O cliente mudará os requisitos
	 70%
	 2
	Financiamento será perdido
	 40%
	 1
	Pessoal sem experiência
	 30% 
	 2
	Tecnologia não atingirá as expectativas
	 30%
	 1
	Equipe desfalcada
	 20%
	 2
	Protótipo estará do agrado do cliente
	 60%
	 2
	Digitação inválida
	 50%
	2
Fonte: Tabela baseada no livro Pressman 7 p 653
Valores de impacto:
1 – Catastrófico
2 – Crítico
3 – Média
4 – Negligenciável
7.3 Segunda função
A segunda função é nomeada como “REALIZAR UM PEDIDO”, sendo responsável por cadastrar o pedido do cliente, para que o usuário realize o pedido do cliente é necessário que o mesmo esteja cadastrado no sistema, com o intuito de criar uma conexão dentro do sistema entre o pedido realizado e o cliente que o pediu.
7.3.1 Pedido e cliente
Dentro da segunda função do programa, a primeira tela a ser exibida para o usuário é a parte do programa que realiza está conexão de cliente com o pedido. Após o usuário realizar o cadastro do cliente corretamente é possível que ele prossiga para o cadastro do pedido, nesta tela o usuário informa o software se o cliente já está com o cadastro no sistema.
Figura 22 – Primeira tela de pedidos
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Quando o usuário informa que o cliente ainda não está cadastrado no sistema, ocorre o redirecionamento do usuário para a tela principal, indicando que primeiramente é necessário realizar o cadastro do cliente, para posteriormente realizar o pedido.
Figura 23 – Segunda tela de pedidos
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos caracteres, qualquer caractere digitado direciona o usuário para a próxima tela
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos caracteres, qualquer caractere digitado direciona o usuário para a próxima tela
Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.3.2 Identificação do cliente
Com o cadastro do cliente realizado corretamente é necessário que a opção que correspondente a cliente cadastrado seja selecionada, quando a opção é selecionada, o programa requisita o código (Gerado automaticamente pelo software, dentro da função para o cadastro de clientes) do cliente em questão, quando o código é digitado corretamente, todos os dados do cliente são exibidos em tela, para que ocorra a conferência de conexão entre pedido e cliente.
Figura 24 – Código do cliente
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de busca, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Caso o usuário digite um código inexistente no sistema, a tela de código invalido e exibida, acusando que não existe cliente cadastrado com o código digitado. O usuário pode optar entredigitar um novo código e realizar a varredura dentro do sistema novamente ou pode retornar para a tela principal e escolher a função desejada.
Figura 25 – Código invalido
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.3.3 Cardápio de pizzas
Após a validação dos dados do cliente cadastrado, o usuário é direcionado para tela onde está disponível o cardápio de pizzas, todas as pizzas que são vendidas pelo estabelecimento estão disponíveis nesta tela. Para facilitar a comprar e também para auxiliar na identificação correta do produto que irá ser comprado, o cardápio é dividido em bloco de informações, cada bloco representa uma pizza, o primeiro campo corresponde ao nome da pizza, o segundo campo corresponde aos ingredientes de sua composição e o terceiro campo é preenchido pelo código de compra. O código é utilizado para realizar a compra, cada pizza tem o seu respectivo código, está medida foi adotada visando a diminuição de erros, no momento de realizar o pedido, quando a identificação não é numérica os riscos de selecionar um produto não solicitado é consideravelmente grande, por este motivo o método de identificação numérico foi adotado como padrão de identificação. 
Figura 26 – Primeiro cardápio
Fonte – Autoria própria
7.3.4 Interação funcional 2
Dentro da função, com o cardápio sendo exibido é requisitado ao usuário, que digite a quantidade de pizzas que serão inseridas no pedido, método utilizado para tornar o programa mais dinâmico, evitando que o usuário faça um retorno desnecessário para a tela principal antes de inserir uma nova pizza no pedido.
Neste momento que o usuário indica quantas pizzas serão compradas, o software aceita o parâmetro sendo zero, pois existe a possibilidade de uma compra só de bebidas ou um pedido só contendo pizzas (Numero de bebidas definido como zero), quando o usuário insere um número maior que zero é necessário preencher as especificações da pizza a ser comprada.
Neste campo fica disponível para o usuário apenas a utilização de caracteres numéricos, visando diminuir os erros provenientes de digitações invalidas, caso ocorra a inserção de um valor acima da capacidade de venda no momento em questão (Relacionado com a quantidade de produtos no estoque, venda acima da quantidade máxima de pizzas possíveis para a venda), o programa repete esta função até que o valor digitado esteja dentro da quantidade máxima de vendas de pizzas por dia.
Figura 27 – Seleção de quantidade
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de definição de quantidade, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a área de quantidade até que o caractere correto seja valido.
· Número zero.
Resultado: Aceito, mas o pedido de pizzas ficou definido como vazio, o número zero indica que nenhum produto será inserido. 
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.3.5 Realizando o pedido
Quando a quantidade de pizzas a serem compradas é maior que zero, o usuário precisa definir as especificações do produto a ser comprado. A primeira especificação requisitada é a do tamanho da pizza, atualmente a empresa disponibiliza três tipos de tamanho de pizzas, sendo eles pequeno, médio e grande. O preço do produto é definido com base no tamanho e no produto escolhido, a escolha do tamanho é definida por interação numérica, sendo número um para pequeno, número dois para médio e número três para grande.
Figura 28 – Seleção de tamanho
Fonte – Autoria própria
 
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Neste campo fica disponível para o usuário apenas a utilização de caracteres numéricos, visando diminuir os erros provenientes de digitações invalidas, caso ocorra a inserção de um valor não identificado como tamanho, o programa repete esta função até que o valor digitado esteja definido como um dos tamanhos disponíveis para a compra.
Figura 29 – Seleção de tamanho invalida
Fonte – Autoria própria
Com o tamanho selecionado corretamente o software direciona o usuário para a tela de seleção da pizza a ser comprada. Conforme explicado acima, cada pizza cadastrada no sistema recebeu um código de identificação, para realizar a compra do produto é necessário que o usuário digite o número correspondente ao produto desejado. A segunda tela que exibe as pizzas disponíveis para a compra, é composta pelo nome de todas as pizzas cadastradas e pelo código de compra. Dentro desse campo, os únicos caracteres que o software disponibiliza para o usuário digitar, são os numéricos, seguido o conceito das funções anteriores, o método utilizado tem como objetivo a diminuição de erros por digitações invalidas.
Figura 30 – Selecionando o produto
Fonte – Autoria própria
 
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Número zero.
Resultado: Não aceito, pois, o zero não está definido como uma das pizzas. 
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Conforme exibido na figura acima, o produto selecionado foi o correspondente ao código 11 ou seja a pizza de quatro queijos. Após o produto ser selecionado uma nova tela é exibida contendo as informações sobre o produto comprado, contendo o sabor da pizza e o valor da compra, esta tela tem como função possibilitar para o usuário a realização de uma conferência primaria, nesta tela o usuário identificar o produto selecionado e o preço. Caso o pedido seja composto por mais de uma unidade de pizza, o software retornara para a tela de seleção de tamanho e seguira seu fluxo de execução até a tela de conferencia, este processo ocorra enquanto o número de pizzas restantes para serem inseridas no pedido não for igual a zero.
Figura 31 – Conferência primária
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos caracteres, qualquer caractere digitado direciona o usuário para a próxima tela
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos caracteres, qualquer caractere digitado direciona o usuário para a próxima tela
Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.3.6 – Cardápio de bebidas
Seguindo o fluxo de execução do programa, após o usuário selecionartodas as pizzas desejadas para o pedido em questão o cardápio de bebidas é exibido. Este cardápio é composto por todas as bebidas cadastradas no sistema, nesta tela o usuário visualiza todas as informações referentes as bebidas, sendo elas nome, tipo, quantidade em mililitro, sabor, preço e o código para compra. 
7.3.7 – Interação funcional 3
A compra das bebidas segue os mesmos parâmetros definidos para a compra de uma pizza dentro do software, primeiramente o usuário precisa digitar a quantidade de bebidas que deseja incluir no pedido, método utilizado para evitar que o cliente precise iniciar o pedido novamente para inserir mais de uma bebida, como a compra de uma bebida ocorre da mesma forma que a compra da pizza, neste campo o usuário pode trabalhar apenas com caracteres numéricos para diminuir a quantidade de erros por digitações erradas.
Figura 32 – Definindo a quantidade de bebidas no pedido
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de definição de quantidade, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a área de quantidade até que o caractere correto seja valido.
· Número zero.
Resultado: Aceito, mas o pedido de pizzas ficou definido como vazio, o número zero indica que nenhum produto será inserido. 
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.3.8 – Realizando o pedido 2
Com a quantidade de bebidas selecionada corretamente, o programa direciona o usuário para área de compra de bebidas. Nesta tela as mesmas especificações com relação as bebidas estão disponíveis para a visualização, para realizar a seleção que deseja incluir no pedido é necessário que o código correspondente a bebida seja digitado corretamente, caso o usuário digite o número zero (Indicando que não será adicionada nenhuma bebida ao pedido), o programa verifica se o pedido contém algum outro produto, porque não é possível realizar um pedido vazio.
Figura 33 – Selecionando a bebida
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Número zero.
Resultado: Não aceito, pois, o zero não está definido como uma das bebidas. 
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Após o usuário selecionar a bebida desejada (Utilizando o código de compra correspondente), é exibida a tela de conferência secundaria, o usuário verifica se o produto adicionado ao pedido é o produto que foi requisitado e também é possível visualizar o preço do produto e suas especificações técnicas.
Figura 34 – Conferência secundaria
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos caracteres, qualquer caractere digitado direciona o usuário para a próxima tela
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos caracteres, qualquer caractere digitado direciona o usuário para a próxima tela
Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.3.9 Finalizando o pedido
 
	Neste ponto de execução do programa todas as informações e produtos necessários para a realização dos pedidos já foram adicionados ao mesmo. Dentro deste software um pedido é composto por um cliente previamente cadastrado de forma correta, o produto principal que é definido como a pizza a ser comprada e o produto secundário (O cliente pode optar por adquirir somente um dos produtos) que é definido como a bebida a ser escolhida.
	A próxima tela a ser exibida para o usuário, é a tela de conferência final, nesta tela todas as informações do pedido estão descritas sequencialmente, o primeiro conjunto de dados apresentados, é o cadastro do cliente que contém todas as suas informações, o segundo conjunto de dados, é correspondente a pizza inserida no pedido (Caso o pedido tenha mais de uma pizza, ele exibira todas as pizzas inclusas no pedido), todas as informações do produto estão presentes na tela, por último é o conjunto de dados, sobre a bebida inserida no pedido (Caso o pedido tenha mais de uma bebida, ele exibira todas as bebidas inclusas no pedido). Dentro desta função do programa, é necessário que o usuário confira corretamente todos os campos exibidos, caso um dos produtos inseridos não corresponda corretamente a solicitação do cliente, o usuário deve selecionar a opção de pedido invalido, quando isto ocorre o usuário e direcionado para o início do pedido, sendo necessário que todos os produtos sejam inseridos novamente, o programa realiza este ciclo até que o usuário confirme que o pedido está correto.
Figura 35 – Conferência final
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Quando todos os campos forem preenchidos corretamente, basta o usuário selecionar a opção sim, conforme demonstrado na figura acima. Após a opção sim ser selecionada, indicando que o pedido está correto, o usuário é direcionado para a tela de pagamento.
 
Figura 36 – Tela de pagamento
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Dentro da função pagamento, duas opções são disponibilizadas para o usuário, sendo, opção um realizar o pagamento com cartão, dentro desta opção o software entende que o pagamento não será em dinheiro e não solicita a quantia a ser paga, a opção dois é utilizada para pagamentos em dinheiro, o software realiza o cálculo do preço de todos os produtos inseridos no pedido, é disponibiliza para a visualização do usuário o valor total a ser pago, abaixo do valor total é exibido onde o usuário precisa digitar o valor que o cliente entregara para efetuar o pagamento, caso o valor digitado seja menor que o valor da compra, é emitido uma mensagem na tela, dizendo que o valor digitado não é suficiente para realizar o pagamento, quando o valor digitado é superior ao valor da compra, o software realiza o cálculo do valor a ser devolvido para o cliente e quando o valor digitado é igual ao valor da compra o pedido é finalizado.
Figura 37 – Pagamento em dinheiro
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de cálculo de pagamento, qualquer caractere inserido que sejamenor do que está definido no sistema como valor a ser cobrado, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Número zero.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de cálculo de pagamento, qualquer caractere inserido que seja menor do que está definido no sistema como valor a ser cobrado, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.4 Fluxograma de vendas
O fluxograma desenvolvido para a função que realiza o pedido do cliente, abrange o pedido como um todo, desde a primeira interação do usuário com a função pedidos, o fluxograma segue o fluxo de execução do software, começando pelo primeiro produto a ser inserido no pedido, ou seja, a pizza, seguindo o fluxo de execução do programa o próximo produto a ser inserido no pedido, é a bebida, após os produtos serem inseridos, o fluxograma passa para a etapa de conferência do pedido, seguindo a sequência de execução passa para a função de pagamento, demonstrando assim a execução sequencial da função de pedidos.
 	A função pedido é composta de diversas etapas, como dito anteriormente, para que o fluxograma possa descreve-la por completa sem perder a qualidade, o mesmo foi dividido em duas partes, a primeira parte é exibida na figura 31, esta primeira parte abrange a função pedido, até o momento em que o primeiro produto é selecionado ou seja, a pizza.
Figura 38 – Fluxograma da função pedido parte 1
Fonte – Autoria própria
A segunda parte do fluxograma da função pedido, tem seu ponto de início, após a escolha da pizza, como demonstrado na figura 31, e o seu final é correspondente ao final da execução da função de pedido.
Figura 39 – Fluxograma da função pedido, segunda parte.
Fonte – Autoria Própria
7.5 Arquivo de vendas
Visando ter um controle mais eficaz sobre os produtos vendidos e também sobre os clientes que efetuam um pedido na empresa, foi criado um arquivo especifico para o armazenamento destas informações. Quando o usuário realizar o cadastro do cliente de forma correta, todos os dados são armazenados no arquivo, além de conter os dados do cliente o arquivo é preenchido também com os dados relacionados com o pedido do cliente em questão, especificando quais produtos o cliente adquiriu e o preço total de determinado pedido.
Figura 40 – Pedido armazenado em arquivo
Fonte – Autoria Própria
7.6 Visualizar cardápios
 
Conforme demostrado na tela principal, a função de número três, tem como objetivo exibir para o usuário todos os produtos disponíveis para a compra do cliente, evitando que o usuário precisa entra na função pedido todas as vezes que precisar visualizar os produtos disponíveis para a venda, resultando na melhora do sistema, pois não ocorre sobrecarga e uso desnecessários de funções, graças a divisão tarefas criada.
7.7 Primeiro cardápio
Quando o usuário interage com o sistema, requisitando a inicialização da função de número três (Visualização de cardápios), é exibido como tela inicial o cardápio de pizzas disponíveis para a compra. Está tela é composta por nome do produto, ingredientes do produto final e código para a compra.
Figura 41 – Cardápio de pizzas
Fonte – Autoria Própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.8 Segundo cardápio
Dentro da função para a visualização de cardápios, após o usuário visualizar o cardápio das pizzas, ele pode escolher entre retornar para a função principal ou visualizar o cardápio das bebidas. Quando o usuário requisita a visualização do cardápio de bebidas, é exibido em tela todas as bebidas disponíveis para a venda, dentro desta tela cada bebida contém informações importantes, para realizar uma venda ou até mesmo conhecer melhor os produtos disponíveis, sendo elas, nome do produto, tipo, quantidade de produto por embalagem, sabor, preço e código para a compra.
Figura 42 – Cardápio de bebidas
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
7.9 Fluxograma da função três
 O fluxograma da função 3, tem seu ponto de início localizado no momento em que o usuário requisita a visualização dos cardápios, de acordo com o fluxo de execução do programa a primeira tela a ser exibida é a do cardápio de pizzas, após a visualização o usuário pode optar em visualizar o cardápio de bebidas ou retornar para função principal, caso o usuário requisite a visualização, é exibido para o mesmo, o cardápio de bebidas, contendo todas as informações descritas anteriormente.
Figura 43 – Fluxograma para a visualização de cardápios
Fonte – Autoria própria
7.10 Quarta Etapa
Nesta etapa foi definido a realização do cadastro de funcionário, onde seria necessário o usuário cadastrar e visualizar o nome, a data de admissão, os cargos propostos de cada funcionário, das três unidades. Foram realizadas massas de teste e com a validação do cliente foi planejado a próxima etapa.
	 RISCOS
	 PROBABILIDADE
	 IMPACTO
	A estimativa de tamanho pode ser significativamente baixa
	 60%
	 2
	Número de usuários maior do que o planejado
	 30%
	 3
	O prazo de entrega será apertado
	 50% 
	 2
	O cliente mudará os requisitos
	 40%
	 2
	Financiamento será perdido
	 40%
	 1
	Tecnologia não atingirá as expectativas
	 30%
	 1
	Equipe desfalcada
	 10%
	 2
	Protótipo estará do agrado do cliente
	 70%
	 2
	Digitação inválida
	 50%
	2
Fonte: Tabela baseada no livro Pressman 7 p 653
Valores de impacto:
1 – Catastrófico
2 – Crítico
3 – Média
4 – Negligenciável
7.11 Função para cadastro de funcionários 
	Seguindo o fluxo de execução do programa, a quarta função definida na tela principal é a função “CADASTRO DE FUNCIONARIOS”, dentro desta função, o usuário tem a opção de realizar o cadastramento de novos funcionários na empresa, para o usuário acessar esta função, é necessário que o mesmo digite o código correspondente a ela.
8 Interação funcional 4 
Quando o usuário seleciona está função, primeiramente é exibido para ele a tela de interação, dentro desta tela o usuário seleciona quantos funcionários deseja cadastrar, parâmetro adicionado à função, visando evitar o retorno até a função principal, caso seja necessário realizar o cadastro dois ou mais funcionários. Dentro deste campo é disponibilizado para o usuário, somente a utilização de caracteres numéricos, visando evitar erros provenientes de digitações invalidas.
Figura 44 – Quantidade de funcionários a serem cadastrados
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceitasomente os caracteres numéricos, mas como é um campo de definição de quantidade, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a área de quantidade até que o caractere correto seja valido.
· Número zero.
Resultado: Aceito, mas a adição de quantidade de produto ficou definido como vazio, o número zero indica que nenhum cliente será cadastrado. 
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
8.1 Primeiro campo de preenchimento
Quando o usuário digita corretamente a quantidade de funcionários a serem cadastrados, é disponibilizado em tela o primeiro campo de preenchimento obrigatório, neste primeiro campo é necessário que o usuário cadastre o nome do funcionário. Para o preenchimento correto, é necessário o cadastro do primeiro e do segundo nome, separados por um espaço.
Figura 45 – Nome do funcionário
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
Caracteres inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos os caracteres, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
8.2 Segundo campo de preenchimento
Com o nome cadastrado corretamente, é possível seguir para o próximo campo de preenchimento, o segundo campo é onde o usuário escolhe a função do funcionário a ser cadastrado, para evitar o cadastro de funções invalidas, dentro deste campo as funções disponíveis para o cadastro já estão definidas, sendo a primeira função definida como pizzaiolo, a segunda como caixa e a terceira como auxiliar. Para selecionar uma das funções, o usuário precisa digitar o código correspondente a ela, visando diminuir a quantidade de erros e a instabilidade do sistema, neste campo é disponibilizado para o usuário somente a utilização de caracteres numéricos.
Figura 46 – Função do funcionário
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
8.3 Unidade de trabalho
 
Seguindo o fluxo de execução da função, o próximo passo a ser realizado é a escolha da unidade de trabalho, a empresa Pizzaria Fast, atualmente conta com uma matriz e duas filiais. Para realizar o cadastro corretamente é necessário especificar em qual unidade o funcionário cumprira sua jornada de trabalho, para selecionar a unidade de trabalho, o usuário precisa escolher entre as três unidades exibidas em tela, digitando o código correspondente a unidade desejada, visando diminuir a quantidade de erros e a instabilidade do sistema, neste campo é disponibilizado para o usuário somente a utilização de caracteres numéricos.
Figura 47 - Selecionando a pizzaria
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
8.4 Data de admissão
Visando ter um controle de informações mais consistente, para cada funcionário cadastrado é necessário informar a data de admissão do mesmo. O cadastramento da data de admissão é separado em três parte, a primeira corresponde ao dia de admissão, a segunda ao mês e o terceiro ao ano, visando diminuir a quantidade de erros e a instabilidade do sistema, neste campo é disponibilizado para o usuário somente a utilização de caracteres numéricos.
Figura 48 – Cadastrando a data
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente caracteres numéricos, mas como é um campo de cadastro, será necessário efetuar a correção no momento da conferência, somente se houver necessidade.
Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
8.5 Verificação de dados
Após o usuário realizar o cadastro da data de admissão, o programa exibe uma tela para confirmação de dados, a tela contém todos os dados digitados pelo usuário, para o cadastro do funcionário, os dados são exibidos na ordem de execução do programa. A verificação de dados é necessária, para evitar o armazenamento de informações inconsistentes. Após verificar os dados do cadastro, o usuário precisa informar se os dados estão corretos, caso estejam, os dados são armazenados no software, o cadastro é finalizado e o usuário direcionado para a função principal, caso não estejam cadastrados corretamente, o usuário é direcionado para o início da função cadastro de funcionários, para inserir todos os dados novamente.
Figura 49 – Verificando dados cadastrados
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
8.6 Fluxograma da função cadastro de funcionários
O fluxograma desta função, tem seu ponto de início no momento em que o usuário digite uma quantidade de funcionários valida, para dar início ao cadastro, a coleta de informações segue o fluxo descrito acima, após todos os campos os campo terem sidos preenchidos, os dados são exibidos, o usuário precisa confirmar se o cadastro está correto, o fim do fluxograma é condizente com o fim da função em questão, dados corretos o programa armazena o cadastro e direciona o usuário para função principal, dados incorretos, o usuário insere os dados novamente, até que os dados sejam cadastrados corretamente.
Figura 50 – Fluxograma para o cadastro de funcionário
Fonte: Autoria própria 
8.7 Funcionários cadastrados
A quinta função disponibilizada no software, chamada “VISUALIZAR FUNCIONÁRIOS CADASTRADOS”, tem como objetivo exibir os funcionários cadastrados no sistema, mostrando primeiramente os funcionários cadastrados recentemente e logo após os funcionários cadastrados na pizzaria selecionada. Para o usuário acessar esta função é necessário digitar o código correspondente a função em questão.
8.8 Busca por pizzaria
Para realizar a consulta de funcionários cadastrados, é necessário que o usuário digite a pizzaria em que o funcionário trabalha. Será exibido em tela, primeiramente os funcionários cadastrados recentemente, e logo em seguida todos os funcionários desta mesma pizzaria.Figura 51 – Funcionários da pizzaria 1
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Após o usuário visualizar todos os funcionários cadastrados na pizzaria selecionada, ele pode optar por consultar outra pizzaria ou retornar para a função principal.
8.9 Cadastro de funcionários em arquivo
Todos os funcionários que atualmente trabalham em alguma das três unidades, estão cadastrados no sistema. Visando ter um método de consulta secundário e também para possibilitar a criação de relatórios com informações dos funcionários foi criado um arquivo externo, que contém todas as informações dos funcionários. Os funcionários novos cadastrados pelo usuário também estão disponíveis no arquivo.
Figura 52 – Arquivo de funcionários
Fonte – Autoria própria
9 Consulta de estoque
Em relatos feitos pelo Sr. Fornazzari ocorria muito desperdício de matéria prima. Pensando nisso a equipe se preocupou em desenvolver um controle de estoque do que entra e sai de matéria prima reduzindo assim os desperdícios. Ponto importante nesta etapa foi que muitas informações do estoque não seriam relevantes para um funcionário de vendas por exemplo. Foram realizadas massas de teste e com a validação do cliente foi planejado a próxima etapa.
	 RISCOS
	 PROBABILIDADE
	 IMPACTO
	A estimativa de tamanho pode ser significativamente baixa
	 60%
	 2
	Número de usuários maior do que o planejado
	 30%
	 3
	O prazo de entrega será apertado
	 50% 
	 2
	O cliente mudará os requisitos
	 70%
	 2
	Financiamento será perdido
	 40%
	 1
	Tecnologia não atingirá as expectativas
	 40%
	 1
	Equipe desfalcada
	 20%
	 2
	Protótipo estará do agrado do cliente
	 80%
	 2
	Digitação inválida
	 50%
	2
Fonte: Tabela baseada no livro Pressman 7 p 653
Valores de impacto:
1 – Catastrófico
2 – Crítico
3 – Média
4 – Negligenciável
A função “CONSULTAR O ESTOQUE E ADICIONAR PRODUTOS”, foi criada com o objetivo de aumentar exponencialmente o controle das matérias primas utilizadas pela empresa. Todos os produtos estão cadastrados no software, com quantidades padrões, definidas pelo responsável da empresa (As quantidades são suficientes para os dias trabalhados, definidos pelo responsável). Após o usuário inserir o código correspondente a função, é exibido em tela as opções disponíveis para o usuário, sendo elas inserir produtos no estoque e exibir produtos do estoque. Visando diminuir a quantidade de erros provenientes de digitações erradas, esta função aceita somente caracteres numéricos.
Esta função conta com um login secundário, por lidar com consultas e atividades relacionadas ao estoque, somente o gerente responsável deve ter acesso. Visando a maior segurança e garantia da integridade de informações, é necessário que o login secundário seja preenchido corretamente para ter acesso a está função.
9.1 Realizando o login 
A primeira tela de login conta com um campo de preenchimento obrigatório, este campo é onde o usuário irá inserir o nome de usuário cadastrado dentro do software. Dentro deste campo é disponibilizado para o usuário, a utilização de todos os caracteres, pois trata-se de um login, que pode conter dados diversos.
Figura 53 – Realizando o login
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
 
No campo “DIGITE O NOME DO USUARIO” é onde o usuário irá inserir o nome cadastrado no sistema, neste campo não é necessário que o usuário digite caracteres numéricos, nem espaços em branco, caso contrário o login não será realizado.
9.2 Senha de acesso
 
A Segunda tela de login conta com dois campos de preenchimento obrigatório, sendo que o primeiro foi preenchido com o login, o segundo campo é onde o usuário irá inserir a senha de acesso cadastrada dentro do software. Dentro deste campo é disponibilizado para o usuário, a utilização de todos os caracteres, pois trata-se de um login, que pode conter dados diversos.
Figura 54 – Segunda tela de login
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
No campo “DIGITE A SENHA DE ACESSO” é onde o usuário irá inserir a senha cadastrada no sistema, neste campo não é necessário que o usuário digite letras, caracteres especiais e nem espaços em branco, caso contrário o login não será realizado. 
9.3 Código de acesso
A Terceira tela de login conta com três campos de preenchimento obrigatório, sendo que o primeiro foi preenchido com o login, o segundo campo foi preenchido com a senha de acesso, o terceiro campo é onde o usuário insere o código de acesso (nível de acesso definido pelo código) cadastrado dentro do software. Dentro deste campo é disponibilizado para o usuário, a utilização de todos os caracteres, pois trata-se de um login, que pode conter dados diversos.
Figura 55 – Código de acesso
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, porém o login resultou em invalido.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
No campo “DIGITE O CODIGO DE ACESSO”, o usuário insere o código de acesso cadastrado no sistema, este código serve para definir, qual o nível de acesso que o usuário tem. 
Figura 56 – Opções do estoque
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
10 VISUALIZANDO produtos no estoque
Quando o usuário seleciona a primeira opção, ele especifica que deseja somente visualizar os produtos que estão dentro do estoque. Com a primeira opção selecionada, é exibido para o usuário os produtos que fazem parte da produção das pizzas, cada produto que é exibido, contém um conjunto especifico de informações, este conjunto é composto por nome do produto, data de validade e quantidade do produto em estoque.
Figura 57 – Produtos para a produção das pizzas
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
10.1 Visualizando produtos no estoque 2
Dando sequência ao fluxo de execução da função, após o usuário visualizar em tela os produtos relacionados a produção das pizzas, novamente é exibido em tela duas opções para o usuário, sendo a primeira visualizar o estoque de bebidas e a segunda para retornar ao menu principal. Quando o usuário seleciona a opção correspondente a visualização das bebidas que estão em estoque, a tela de produtos do estoque é exibida novamente, mas somente contendo as bebidas cadastradas, as bebidas também possuem um conjunto de informações especificas, que são exibidas dentro deste quadrante da função, o conjunto é composto por nome do produto, data de validade e quantidade em estoque.
Figura 58 – Estoque de bebidas
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
 10.2 Inserindo produtos no estoque
Para realizar a inserção de produtos no estoque, é necessário, que o usuário selecione a opção correspondente no início da função. Quando a opção é selecionada, o usuário precisa informar qual a quantidade de produtos que deseja inserir (Parâmetro adicionado à função visando evitar retornos desnecessários), realizando assim a inserção de mais de um produto. A quantidade será validada, para verificar se o valor está dentro do valor mínimo e máximo definido no sistema. Caso o valor seja aceito o usuário precisa selecionar qual o produto será armazenado no estoque. Para facilitar a seleção dos produtos, este quadrante da função foi divido em duas partes (Devido à grande quantidade de produtos armazenados no estoque, a visualização de todos os produtos de uma só vez não é uma opção viável), sendo a primeira parte composta por todos os produtos relacionados à produção das pizzas e a segunda sendo composta pelas bebidas cadastradas no sistemas. os produtos são identificados por códigos, cada produto tem seu código especifico para seleção.
Figura 59 – Seleção de produtos
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
10.3 Produção das pizzas
Quando o usuário seleciona a opção um, correspondente à os produtos para a produção das pizzas, a tela que contém todos os produtos deste quadrante é exibida, cada produto é composto por duas informações essências, sendo a primeira o nome do produto e a segunda o seu código, como dito anteriormente o usuário seleciona o produto desejado através da utilização do código do produto. Neste ponto da função está disponível para o usuário somente a utilização de caracteres numéricos, visando a diminuição de erros provenientes de digitações invalidas.
Figura 60 – Código para a seleção do produto
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de escolha, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a seleção até que o caractere correto seja digitado.
· Número zero.
Resultado: Não aceito, pois, o zero não está definido como um dos produtos. 
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Conforme exibido na figura acima, o produto selecionado é o “PALMITO”, após o usuário selecionar o produto desejado, a tela informativa é exibida, passando para o usuário os valores que estão classificados como máximo e mínimo para a inserção de produtos. Para que a quantidade a ser inserida seja aceita, é necessário que o valor digitado esteja dentro dos valores estipulados pelo sistema. A próxima tela a ser exibida, informa para o usuário a quantidade do produto armazenado em estoque e requisita do usuário o valor que ele deseja inserir, dentro deste quadrante da função é disponibilizado para o usuário somente a utilização de caracteres numéricos, visando a diminuição de erros provenientes de digitações invalidas.
Figura 61 – Inserindo produtos
Fonte – autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de definição de quantidade, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a área de quantidade até que o caractere correto seja valido.
· Número zero.
Resultado: Aceito, mas a adição de quantidade de produto ficou definido como vazio, o número zero indica que nenhum produto será inserido. 
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
Conforme dito anteriormente o programa está configurado para aceitar somente valores entre o mínimo e máximo exibido para o usuário, quando o usuário digita um valor invalido, uma mensagem de erro é exibida e programa requisita a inserção de um valor valido, caso o valor digitado seja confirmado e validado, o usuário visualizara em tela a quantidade de produto atualizada, contendo o valor digitado pelo mesmo.
Figura 62 – Valor aceito
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos caracteres, qualquer caractere digitado direciona o usuário para a próxima tela
· Caracteres inseridos aleatoriamente.
Resultado: Aceito, este campo aceita todos caracteres, qualquer caractere digitado direciona o usuário para a próxima tela
Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
10.4 Bebidas no estoque 
Para o usuário ter acesso a parte de inserção de bebidas no estoque, é necessário que a opção correspondente seja selecionada no início da função, após digitar a quantidade de produtos que deseja inserir. O processo de inserção de bebidas segue os mesmos princípios explicados anteriormente para as matérias primas relacionadas com a produção das pizzas.
Quando o usuário está dentro do quadrante responsável por fazer essa inserção, é necessário que o usuário selecione o produto que deseja inserir no estoque, a seleção ocorre através do código do produto, o usuário precisa digitar o código correto. Com o código digitado corretamente, o usuário visualiza a quantidade mínima e máxima definida pelo sistema para este produto, fica disponível também a quantidade deste produto atualmente em estoque. Para inserir o produto corretamente é necessário que a quantidade digitada esteja dentro dos padrões pré-definidos pelo sistema, a verificação de dados é executada, quando os dados digitados correspondem às especificações, é exibido parao usuário a quantidade que havia em estoque antes da inserção e também a quantidade após a inserção.
Figura 63– Inserindo bebidas
Fonte – Autoria própria
Testes realizados neste campo:
· Caracteres numéricos inseridos aleatoriamente.
Resultado: Aceito, este campo aceita somente os caracteres numéricos, mas como é um campo de definição de quantidade, qualquer caractere inserido que seja diferente do que está definido no sistema, não é valido, retornando para a área de quantidade até que o caractere correto seja valido.
· Número zero.
Resultado: Aceito, mas a adição de quantidade de produto ficou definido como vazio, o número zero indica que nenhum produto será inserido. 
· Caracteres inseridos aleatoriamente.
Resultado: Não aceito, este campo aceita somente os caracteres numéricos.
· Espaço em branco.
Resultado: Não aceito, pois o programa espera que o usuário digite algo.
10.5 Fluxograma da função estoque
Dentro desta função é possível tanto inserir produtos no estoque, quanto realizar a consulta de estoque. O fluxograma representa está função desde o seu ponto de início, que está localizado no momento que o usuário seleciona a quantidade de produtos que deseja inserir no estoque, representando assim todos os parâmetros existentes dentro desta função.
Figura 64 – Fluxograma do estoque
Fonte – Autoria própria
10.6 Controle de estoque 
Nesta etapa foi definido a realização do controle de estoque e de vendas. Ponto crítico, o sistema teria que efetuar a venda e ao mesmo dar baixa do produto no estoque. Foram realizadas massas de teste e com a validação do cliente foi planejado a próxima etapa.
	 RISCOS
	 PROBABILIDADE
	 IMPACTO
	A estimativa de tamanho pode ser significativamente baixa
	 60%
	 2
	Número de usuários maior do que o planejado
	 30%
	 3
	O prazo de entrega será apertado
	 50% 
	 2
	O cliente mudará os requisitos
	 20%
	 2
	Financiamento será perdido
	 40%
	 1
	Tecnologia não atingirá as expectativas
	 40%
	 1
	Protótipo estará do agrado do cliente
	 80%
	 2
	Digitação inválida
	 50%
	2
Fonte: Tabela baseada no livro Pressman 7 p 653
Valores de impacto:
1 – Catastrófico
2 – Crítico
3 – Média
4 – Negligenciável
Para realizar o controle de estoque da pizzaria fast, foi desenvolvido uma função especifica para está tarefa. Está função trabalha com os produtos armazenados em estoque, quando o programa é iniciado, a função recebe a quantidade de todos os produtos em estoque, criando assim uma representação do estoque dentro da função.
O controle ocorre através de vendas realizadas na pizzaria, produtos inseridos, perdas e baixas por motivos diversos, com a utilização de arquivos específicos, que são atualizados quando ocorre qualquer tipo de alteração na quantidade de produtos armazenados.
10.7 Controle de vendas 
Para realizar este controle foi necessário criar uma ficha técnica de cada pizza disponível para a venda, especificando a quantidade de cada produto em uma determinada pizza. Quando uma pizza é vendida o programa precisa saber a quantidade e quais produtos foram utilizados na produção da mesma (Ficha técnica), essas informações estão inseridas dentro da função. 
Figura 65 – Ficha técnica das pizzas
Fonte – Autoria própria
Caso uma pizza “DACASA”, seja vendida, o programa precisa saber a quantidade e quais produtos são para produzi-la, quando a pizza é selecionada o programa verifica o estoque, caso tenha os produtos necessários em estoque a venda é realizada. A verificação ocorre com base nos dados que estão armazenados no arquivo do estoque.
Figura 66 – Arquivo do estoque 1
Figura – Autoria própria
Após a verificação dos produtos em estoque, o usuário é direcionado para a tela de pagamentos, quando o pagamento é finalizado, confirmando que a venda aconteceu, o programa realiza o cálculo para atualizar o estoque, é subtraído do estoque armazenado no programa, a quantidade de todos os produtos utilizados na pizza em questão. Com a venda realizada, a atualização de estoque fica disponível dentro da função “CONSULTAR ESTOQUE E ADICIONAR PRODUTOS” e dentro do arquivo especifico para atualização de estoque. Na figura abaixo, é possível visualizar que a quantidade de produtos referente a pizza vendida, nesse caso a pizza “DACASA”, foi abatida da quantidade armazenada em estoque.
Figura 67 – Arquivo para atualização de estoque
Fonte – Autoria própria
 No caso das bebidas armazenadas em estoque, o controle ocorre da mesma maneira. Dentro da função estão armazenadas as informações referentes ao estoque de bebidas, o estoque de bebidas armazena a quantidade padrão definida pelo responsável.
Figura 68 – Arquivo do estoque 2
Fonte – Autoria própria
Para realizar o controle de estoque, foi criado um segundo arquivo que recebe a atualização de quantidade de produtos armazenados, quando ocorre uma venda, o usuário precisa selecionar a bebida (Caso queira bebida no pedido), através da utilização do código do produto, se o produto estiver disponível em estoque, o usuário pode prosseguir com o pedido. Quando o pedido é finalizado com o pagamento confirmado, a função direciona o pedido das bebidas para esse arquivo, o produto presente no pedido é subtraído da quantidade total em estoque, criando assim um controle de entrada e saída de produtos na empresa.
Figura 69 – Estoque de bebidas atualizado
Fonte – Autoria própria
Conforme demonstrado na figura acima, ocorreu a baixa de duas unidades de “COCA-COLA”, essa baixa ocorreu quando o pedido do cliente foi finalizado. A atualização de estoque em arquivo proporciona para o responsável um relatório, contendo todos os dados do estoque que são atualizados conforme ocorrem vendas.
11 Redes de Computadores
Uma rede de computadores é um grupo de sistemas de computadores e outros dispositivos de hardware de computação que estão ligados entre si através de canais de comunicação para facilitar a comunicação e o compartilhamento de recursos entre uma ampla gama de usuários.
Os recursos são, por exemplo, a conexão com a internet, dividida entre todas as máquinas conectadas a uma determinada rede.
Ela possibilita o compartilhamento de dados, equipamentos e a comunicação entre os usuários.
As redes de computadores podem existir em diferentes tipos, não apenas em um.
11.1 Tipos de Redes mais conhecidos
 11.1.1 Local Area Network (LAN)
Esse é o formato com o qual estamos mais habituados. A LAN (Local Area Network) é uma rede local, ou seja, de curta distância.
Ela conecta dispositivos próximos, reunidos em um mesmo ambiente, por exemplo, o escritório de uma pequena empresa ou uma residência.
11.1.2 Metropolitan Area Network (MAN)
Ela pode ser utilizada para estabelecer uma conexão entre escritórios que estão em um mesmo município ou cidades vizinhas, cobrindo algumas dezenas de quilômetros.
11.1.3 Wide Area Network (WAN)
A WAN (Wide Area Network) é uma rede de longa distância. Sua cobertura é bastante superior à das redes LAN e MAN. Com ela é possível conectar equipamentos em diferentes localidades, de países até continentes.
11.2 Uso das Redes de Computadores 
 11.2.1 Aplicações Comerciais
Segundo Tanenbaum (2003), em termos um pouco mais genéricos, a questão aqui é o compartilhamento de recursos, e o objetivo é tornar todos os programas, equipamentos e especialmente dados ao alcance de todas as pessoas na rede, independentemente da localização física do recurso e do usuário. Um exemplo óbvio e bastante disseminado é um grupo de funcionários de um escritório que compartilham uma impressora comum. Nenhum dos indivíduos realmente necessita de uma impressora privativa, e uma impressora de grande capacidade conectada em rede muitas vezes é mais econômica, mais rápida e de mais fácil manutenção que um grande conjunto de impressoras individuais.
11.2.2 Aplicações Domésticas
Deacordo com Tanenbaum (2003), alguns dos usos mais populares da Internet para usuários domésticos são:
- Acesso a informações remotas.
- Comunicação entre pessoas.
- Entretenimento interativo.
- Comércio eletrônico.
O acesso a informações remotas tem várias formas. Ele pode significar navegar na World Wide Web para obter informações ou apenas por diversão. As informações disponíveis incluem artes, negócios, culinária, governo, saúde, história, passatempos, recreação, ciência, esportes, viagens e muitos outros.
11.2.3 Usuários Móveis 
Para Tanenbaum (2003), as redes sem fios têm muitas utilidades. Um uso comum é o escritório portátil. Quando viajam, muitas vezes as pessoas querem usar seu equipamento eletrônico portátil para enviar e receber ligações telefônicas, fax e correio eletrônico, navegar pela Web, acessar arquivos remotos e se conectar a máquinas distantes. Além do mais, elas querem fazer isso enquanto se encontram em qualquer lugar do planeta. Por exemplo, nas conferências de informática de hoje, os organizadores muitas vezes configuram uma rede sem fio na área de conferência. Qualquer pessoa com um notebook e um modem sem fio pode simplesmente ligar o computador e se conectar à Internet, como se o computador estivesse ligado a uma rede de fiação. De modo semelhante, algumas universidades instalam redes sem fios no campus, para que os alunos possam se sentar debaixo das árvores e consultar o catálogo de fichas da biblioteca ou ler seu correio eletrônico.
12 Hardware de Redes de Computadores
Hardware de rede, ou dispositivos de rede, referem-se aos equipamentos
que facilitam e dão suporte ao uso de uma rede de computadores, ou seja,
são os meios físicos necessários para a comunicação entre os componentes participantes de uma rede.
O hardware de rede varia bastante de acordo com o tipo de rede.
12.1 Switches
 Um Switch é um aparelho multiportas, que interliga os computadores em uma rede, utilizando cabos de rede de cada computador se ligam a ele, que direciona os dados enviados de um computador especificamente para outro. A sua função é possibilitar a conexão de computadores em redes, realizando a conexão entre várias máquinas numa LAN (Local Area Network).
12.2 Repetidores
 Os repetidores são dispositivos de hardware utilizados para a conexão de uma rede local. Eles recebem e amplificam o sinal de um segmento de rede e repetem esse mesmo sinal no outro segmento.
12.3 Placas / Adaptadores de redes
 
A placa de rede é o hardware que permite aos computadores conectarem entre si através da rede. A sua função é controlar todo o envio e recepção de dados através da rede. As placas de rede também são as responsáveis por tornar possível que um computador acesse a internet.
12.4 Modem
 Ele é um dispositivo eletrônico que modula um sinal uma onda analógica. Suas funções essenciais são de modular um sinal com informação analógica para um sinal com informação digital e para desmodular um sinal semelhante, a fim de decodificar a informação digital proveniente de um sinal de informação analógica.
12.5 Gateway
 Gateway, em geral é um computador que fica entre duas redes. O Gateway é destinado a interligar redes, separar domínios de colisão, ou mesmo traduzir protocolos. São equipamentos com duas (ou mais) placas de rede, ou um dispositivo dedicado, cujo objetivo é permitir a comunicação entre duas redes com arquiteturas diferente.
13 Meios de Transmissão
Um meio de transmissão são sistemas de transmissão que utilizam meios para o envio das informações, estes meios podem ser de dois tipos: meios físicos, por exemplo, cabo coaxial e fibra óptica.
Meios não-físicos, o espaço livre. Pode-se conceituar meio de transmissão como todo suporte que transporta as informações entre os terminais telefónicos, desde a origem (central telefónica na origem da chamada) até o destino (central telefónica no destino da chamada) e vice-versa.
Por sinais, para que se possa realizar uma comunicação, é necessário a utilização de sinais. O sinal é um fenómeno físico ao qual se associa a informação. Por exemplo, no caso da telefonia, a fala humana transformada em corrente elétrica que transporta a voz pelo telefone são sinais. Atualmente, os sinais mais comuns são os sinais elétricos e luminosos.
Os sinais eléctricos tipicamente usam como meios de transmissão os cabos metálicos tradicionais, condutores de corrente elétrica. Os sinais luminosos usam como meios de transmissão os cabos ópticos (fibras ópticas monomodo e multimodo).
Os sistemas de telecomunicações podem ser divididos em:
Sinais analógicos: são aqueles que conservam a forma dos sinais desde a fonte ao destino.
Sinais digitais: são aqueles em que a forma do sinal transmitido é diferente do sinal original. Neste sistema, as formas dos sinais são convertidas para um sistema binário antes de serem transmitidos. 
13.1 Cabeamento de Redes
 Cabeamento é a conexão efetuada entre as redes de computadores dentre outras. O primeiro tipo de cabeamento que surgiu foi o cabo coaxial. Há poucos anos, esse tipo de cabeamento era o mais avançado. Com o passar do tempo, por volta dos anos 1990, o cabo coaxial foi ficando para trás com o surgimento dos cabos de par trançado. Esse tipo de cabo veio a ser tornar muito usado devido a sua flexibilidade e também pela necessidade de se ter um meio físico com uma taxa de transmissão mais elevada e com maior velocidade.
13.2 Cabo de Par Trançado
 O cabeamento por par trançado (Twisted pair) é um tipo de cabo que possui pares de fios entrelaçados um ao redor do outro para cancelar as interferências entre si.
Neste caso, a qualidade da linha de transmissão que utiliza o par de fios depende, basicamente, da qualidade dos condutores empregados, bitola dos fios (quanto maior a bitola, menor a resistência por quilometro), técnicas usadas para a transmissão dos dados através da linha e proteção dos componentes da linha para evitar a indução nos condutores.
A indução ocorre devido a alguma interferência eléctrica externa ocasionada por contatos, harmónicos, osciladores, motores ou geradores eléctricos, mau contato ou contato acidental com outras linhas de transmissão que não estejam isoladas corretamente ou até mesmo tempestades eléctricas ou proximidades com linhas de alta tensão.
14 Topologia de Rede
Topologia de Rede descreve como é o layout de uma rede de computadores através da qual há o trafego de informações, e também como os dispositivos estão conectados a ela.
Há várias formas nas quais se pode organizar a interligação entre cada uma das estações da rede. Topologias podem ser descritas fisicamente e logicamente. A topologia física é o verdadeiro layout da rede, enquanto que a lógica descreve o fluxo dos dados através da rede.
14.1 Topologia em Barramento
É uma topologia de rede em que todos os computadores são ligados em um mesmo barramento físico de dados. A transmissão de dados é assíncrona, ou seja, somente um computador pode enviar informações por vez.
Figura 70 – Topologia barramento 
Fonte: https://4.bp.blogspot.com/-joV5A63GRnk/W-QlIRyDqvI/AAAAAAAAEAw/WrYNCuJ2nuE6tsQDVsVICfgmkHoA-NqXACLcBGAs/s1600/barramento.png
14.2 Topologia em Estrela
 Na topologia em estrela é colocado um dispositivo central (Hub ou Switch) no qual são conectadas várias estações através de cabos individuais. A informação é enviada ao dispositivo central e transmitida para as restantes estações ligadas na rede.
Figura 71 – Topologia estrela 
Fonte: https://3.bp.blogspot.com/-CJodo74jXUA/W-QlR8UR4MI/AAAAAAAAEA4/ZKWyo0M0rUcRbRx2oh8mm0JMg69_DICJQCLcBGAs/s1600/estrela.png
14.3 Topologia em Anel
 A topologia em anel consiste em ligações ponto a ponto, pares de dispositivos que, no seu conjunto, formam um ciclo fechado. As informações são transmitidas passando os dados por cada estação até chegar ao seu destino. Dessa forma, o sinal circula entre os dispositivos, que servem como transmissores do sinal para cada estação. Nessa tipologia, a falha em um único computador pode afetar toda a rede.
Figura 72- topologiaAnel
 
Fonte: https://2.bp.blogspot.com/-lu6HsOPEXdo/W-QlMXdyeGI/AAAAAAAAEA0/Z-1vuGGFnKoxAYaDg8aZAeHdRgDQj4mKgCLcBGAs/s1600/anel.png
15 Rede em Nuvem (Cloud Computing)
De uma forma simples, computação em nuvem (cloud computing) é uma tecnologia que permite acesso remoto a softwares, armazenamento de arquivos e processamento de dados por meio da internet, sendo assim uma alternativa à execução em um computador pessoal ou servidor local. 
A computação na nuvem oferece aos indivíduos e às empresas a capacidade de um pool de recursos de computação com boa manutenção, seguro, de fácil acesso e sob demanda.
A cloud computing utiliza uma camada de rede para conectar desde os dispositivos de ponto periférico dos usuários, como computadores, smartphones e acessórios portáteis, a recursos centralizados no data center. Antes da computação em nuvem, a execução confiável de software pelas empresas que forneciam serviços apenas era possível se elas pudessem também pagar a conta da manutenção da infraestrutura dos servidores necessários. Além disso, o software tradicional exigia normalmente uma equipe completa de profissionais de TI, interna ou terceirizada, para lidar com o inevitável desfile de erros, desafios de serviços e upgrades. O conceito de computação na nuvem está livre de todos esses problemas e requisitos ultrapassados.
A computação na nuvem tem a capacidade de colocar todos no mesmo nível. Não importa se você tem dezenas ou milhares de usuários na plataforma, a computação na nuvem democratiza o aplicativo de software corporativo. Com flexibilidade para aumentar ou reduzir o compartilhamento de um cliente no pool rapidamente, algumas vezes de modo automático, o usuário final normalmente não precisa estar ciente do que acontece na nuvem. O usuário precisa apenas fazer login e trabalhar na tarefa.
15.1 Principais Características da “Nuvem”
Sob demanda: Não é preciso consultar alguém ou ter um profissional de TI envolvido no provisionamento do servidor ou do armazenamento na rede. Você tem a capacidade de computação necessária quando precisa.
Multiplataforma: Basta ter uma conexão à Internet para acessar o serviço em seu laptop, tablet, smartphone ou computador desktop.
Recursos em pool: Segue o modelo de multilocatários, o que significa que há vários usuários do software.
Serviço medido: A utilização de recursos é monitorada, controlada e relatada antecipadamente. Isso torna a capacidade de computação essencialmente a mesma em relação a um serviço de utilitários pago.
16 Redes 
O objetivo desta rede é conectar terminais a um servidor remoto na nuvem visando o estabelecimento de um programa de controle administrativo e financeiro de uma rede de pizzarias.
16.1 Topologia da Rede
A topologia da rede será do tipo estrela, onde os terminais se conectam a um servidor, mas não se comunicam entre si, essa topologia foi adotada visando a segurança dos dados e centralização das informações.
16.2 Composição da Rede
Essa rede será composta por um servidor na nuvem onde será instalado o programa principal com perfis de acesso para filiais e administradores. Para conectar a esse servidor será utilizado serviço de provedor de internet via cabo de 50Mbps.
O aparelho responsável pela conexão com a internet será o modem da própria operadora, para a distribuição da rede nas filiais será usado o switch da Cisco Sf110-24-na - Oem. Lembrando que a escolha e inserção desse equipamento prevendo uma futura ampliação da rede nas filiais
Os terminais nas filiais serão do tipo thin client Dell Wise, a escolha foi baseada em que não será necessário muita capacidade de armazenamento e processamento já que o programa será acessado pelo navegador, portanto pode ser utilizado um S.O. baseado em Linux modificado para exibir somente o navegador na tela de acesso ao programa no servidor em nuvem.
O terminal administrativo será um notebook padrão com Windows 10, pacote Office 2016 e navegador para fazer o acesso ao programa na nuvem.
Tipo de endereçamento.
Para facilitar e agilizar a instalação será usado o endereçamento do tipo DHCP com restrição por endereço MAC dos terminais. 
Tipo de conexão roteador-terminal.
Será usada conexão via cabo de rede.
17.1 Servidores
Iremos utilizar o servidor do sistema em nuvem e também da aplicação, contratando os serviços da google cloud, pois facilita a configuração.
Ele disponibiliza uma capacidade econômica e redimensionável enquanto
gerencia tarefas venda e administração do software de uma pizzaria, e é um serviço pago pelo seu uso, a escolha por esse tipo de serviço foi levado em consideração a viabilidade e facilidade para implementarmos a aplicação, do que se comprar servidores físicos, e locais para a implantação dele.
O serviço contratado tem 100GB de armazenamento, Transferência mensal ilimitada, domínio único e subdomínios ilimitados, contas de e-mail e FTP ilimitadas, garantia de Uptime 99,99% ano, servidor brasileiro TIER3.
17 Infraestrutura da Fusion System para o projeto 
Recursos necessários para o desenvolvimento do projeto
Servidor Nuvem – Google Cloud.
Figura 73- Google Cloud 
 Fonte:https://www.google.com/search?q=google+cloud&source=lnms&tbm=isch&sa=X&ved=2ahUKEwj8u9L-jormAhXpIrkGHS-rClMQ_AUoAnoECA0QBA&biw=1366&bih=625
17.1 Provedor Internet.
Figura 75-Provedor 
	Vivo Cabo – 50Mbps (Principal)
 
 Fonte: http://www.promo.vivofibra.com.br/oferta50mega/afl_sp/
17.2 Switch 
 
3 Switch 24 Portas CISCO SF110-24-NA – 10-100Mbps Portas:24 x10/100 24 x 10Base-T/100Base-TX – RJ-45 
 
17.3 Terminais 
 
3 TC Wyse Dell 5010 Processador AMD G-Series T48E de 1,4 GHz Memória Flash de 4GB de RAM DDR3 HD SSD 120 GB 
 
 17.4 Suporte periféricos 
 
1 Porta Display Port 1 Porta DVI-I 
149 
 
4 Portas USB 2.0 externas (2 frontais, 2 posteriores) 1 Entrada Fone de ouvido 1 Fonte de alimentação Conectividade serial e paralela suportada por adaptadores USB 2.0 Rede Gigabit Ethernet 10/100/1000 Wireless integrado 802.11 a/b/g/n (Acompanha adaptador wifi instalado) 
 
 
 17. 5 Computadores 
17.5.1 3 Computadores ponto de venda.
· Processadores dual core 1.5GHz ou superior. 
· 2Gb de memória ou superior.
· Navegador de internet Google Chrome.
· Placa de rede 10/100/100 ou redes sem fio.
· Windows 7 ou superior. 
· Conexão internet.
· Porta USB. (Universal Serial Bus) 
· Notebook Dell Inspiron 3481-m10s Processador: 7ª Geração Intel® Core™ i3-7020U (3MB Cache, 2.30 GHz)
· Sistema Operacional: Windows 10 Home Single Language 64 bit – em Português (Brasil)
· Memória RAM: 4GB, DDR4, 2133MHz
· Disco rígido (HD): 1TB 5400 RPM 2.5" SATA. 
· Placa de vídeo: Intel® HD Graphics 620
· Tela: LED HD (1366 x 768) de 14 polegadas com antirreflexo
· Teclado: em português (Brasil), ABNT 2, de tamanho normal resistente a derramamento de líquidos.
· Não possui leitor e gravador de CD/DVD | Áudio: Waves MaxxAudio Pro | Webcam integrada: Em HD (720p) com microfone | Conectividade: Dell Wireless 802.11ac + Bluetooth 4.1, Dual Band 2.4&5 GHz, 1x1 + Placa de Rede RJ45 10/100 | Chipset: Integrado ao processador | Bateria integrada de 3 Células ions de lítio (42 Whr) | 100 - 240 Volts AC (Bivolt).
· 2 portas USB 3.1 de 1ª Ger., 1 porta USB 2.0, 1 porta HDMI 1.4b, 1 porta de rede RJ-45 10/100Mbps | Leitor de cartão de mídia: 1 Leitor de cartão SD (SD, SDHC, SDXC) Valor: R$2.400,00 
 
 17.6 Cabeamento
 Cabo de rede Furukawa Cat5. 
 
 
17.7 Estimativas de Custos 
 
· Três computadores = R$ 1.700,00 reais cada Depreciação 1 ano = R$ 5.100.00 /12 (meses) Custo mensal = R$ 425,00 /30 (dias). Custo diário = R$ 14,17 
· Um notebook Dell Inspiron 3481-m10s = R$ 2.400.00 Depreciação 1 ano = R$ 2.400,00 /12 (meses) Custo mensal = R$ 200,00 /30 (dias). Custo diário = R$ 6,67 
· Três switch = R$ 418,00 reais cada Depreciação 1 ano = R$ 1.254,00 /12 (meses) Custo mensal = R$ 104,50 /30 (dias). Custo diário = R$ 3,48 
· Três TC Wyse Dell 5010 = R$ 590,00 reais cada Depreciação 1 ano = R$ 1.770,00 /12 (meses) Custo mensal = R$ 147,50 /30 (dias) Custo diário= R$ 4,92 
· Suporte periféricos = R$ 620,00 reais Depreciação 1 ano = R$ 620 /12 (meses) Custo mensal = R$ 51,67 /30 (dias). Custo diário = R$ 1,72 
 
· Cabo de rede Furukawa Cat5 = R$ 540,00 reais Depreciação 1 ano = R$ 540,00 /12 (meses) Custo mensal = R$ 45,00 / 30 (dias). Custo diário = R$ 1,50 
· Equipe do projeto = R$ 14.500,00 /5 (meses) Custo mensal = R$ 2.900,00 /30 (dias) Custo diário = R$ 96,67 
· Custo total = 26.184,00
18 Conclusões Finais
Com base nas necessidades do cliente a maior dificuldade que ocorrem nos setores são os erros por falta de algum sistema, resultado em desgastes e a credibilidade do cliente com relação à empresa.
Neste projeto os conceitos da engenharia de software foram utilizados em todo o desenvolvimento do projeto, sendo eles de extrema importância para que os processos sejam totalmente funcionais de forma que possa facilitar e acelerar as tarefas rotineiras e por medida de implantação do sistema pra evitar erros de pedidos e obter o controle de dados e informação sobre estoque, perda, fornecedor com isso possibilitando uma rápida tomada de decisões nas soluções de problemas.
Sendo assim, seu custo comparado com as melhorias que se terão e viável, pois, visto os benefícios que irão receber desse sistema. Os gastos que terá com o sistema serão compensados pelas tais melhorias: qualidade no produto final, diminuição de perdas de ingredientes, economia de recursos e controle de estoque, evitando futuras falhas na produção.
19 Referencia bibliográficas 
Opservices. O que é SLA: Entenda o significado de Service Level Agreement, 2015. Disponível em: <https://www.opservices.com.br/o-que-e-sla/> . Acesso em 20 de out. de 2019. 
Gabaritou. Modelo Espiral do Processo de Software de Boehm, 1988. Disponível em: <https://www.gabaritou.com.br/Content/UploadedFiles/Questao/questao-24491-trt---13%C2%AA-regi%C3%A3o-(pb)-2014-fcc-cargo-20245-especialidade-20473-img_01.png > . Acesso em: 11 de out. de 2019. 
Euax Consulting. Gerenciamento de Riscos em Projetos: Aprenda a lidar com as incertezas na gestão de iniciativas, 2018. Disponível em: <https://www.euax.com.br/2018/02/importancia-do-gerenciamento-de-riscos/>. Acesso em: 15 de out. de 2019. 
Macedo, Henrique Basso; Salgado, Eduardo Gomes. Gerenciamento de Risco Aplicado ao Desenvolvimento de Software. Sistema & Gestão. Alfenas, MG, Brasil – Instituto de Ciências Exatas. Disponível em: <http://www.revistasg.uff.br/index.php/sg/article/download/519/311> . Acesso em: 07 de out. de 2019. 
Profissionais TI. PTI. Analise Qualitativa e Quantitativa dos Riscos, 2015. Disponível em: <https://www.profissionaisti.com.br/2015/06/vamos-planejar-17-analise-qualitativa-e-quantitativa-dos-riscos/ > . Acesso em 03 de out. de 2019. 
PMKB. Gestão de Projetos: Plano de Resposta a Riscos, 2014. Disponível em: <https://pmkb.com.br/artigos/gestao-de-projetos-plano-de-resposta-a-riscos/>. Acesso em: 12 de out. de 2019. 
Disciplina de Redes de Comunicação. Meios de Transmissão, 2019. Disponível em: < http://alldiesjoaoalmeida.weebly.com/meios-de-transmissatildeo.html>. Acesso em: 20 de out. de 2019. 
Blogspot. Topologia de Barramento, 2018. Disponível em: <https://4.bp.blogspot.com/-joV5A63GRnk/W-QlIRyDqvI/AAAAAAAAEAw/WrYNCuJ2nuE6tsQDVsVICfgmkHoA-NqXACLcBGAs/s1600/barramento.png> . Acesso em: 01 de nov. de 2019. 
Blogspot. Topologia em Estrela, 2018. Disponível em: <https://3.bp.blogspot.com/-CJodo74jXUA/W-QlR8UR4MI/AAAAAAAAEA4/ZKWyo0M0rUcRbRx2oh8mm0JMg69_DICJQCLcBGAs/s1600/estrela.png> . Acesso em 01 de nov. de 2019. 
Blogspot. Topologia em Anel, 2018. Disponível em : <https://2.bp.blogspot.com/-lu6HsOPEXdo/W-QlMXdyeGI/AAAAAAAAEA0/Z-1vuGGFnKoxAYaDg8aZAeHdRgDQj4mKgCLcBGAs/s1600/anel.png> . Acesso em 01 de nov. de 2019. 
SalesForce. O que é computação na nuvem? 2018. Disponível em: <https://www.salesforce.com/br/cloud-computing/> . Acesso em 10 de out. de 2019.
Blogcontazul. Metodologia Scrum, 2019. Disponível em: <https://blog.contaazul.com/metodologia-scrum>. Acesso em 27 de setem. de 2019.
 ANEXOS
UNIP - UNIVERSIDADE PAULISTA
INSTITUTO DE CIÊNCIAS EXATAS E TECNOLOGIA - ICET
ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
BRUNO VINICIUS LIRA DA ROCHA RA: D968AI5
DEIVID LUCAS HIDALGO RA: D93JFI5
ELIEZER DEFILICIBUS RA: N426110
MARCOS NISHIZAWA RA: F060HD0
RENAN AUGUSTO DE OLIVEIRA RA: F018EA8
EMPRESA FUSION SYSTEM
MANUAL DE UTILIZAÇÃO DO PROGRAMA PIZZA CONTROL
SOROCABA – SP 
2019/2
2
2
BRUNO VINICIUS LIRA DA ROCHA RA: D968AI5
DEIVID LUCAS HIDALGO RA: D93JFI5
ELIEZER DEFILICIBUS RA: N426110
MARCOS NISHIZAWA RA: F060HD0
RENAN AUGUSTO DE OLIVEIRA RA: F018EA8
EMPRESA FUSION SYSTEM
MANUAL DE UTILIZAÇÃO DO PROGRAMA PIZZA CONTROL
Trabalho de Conclusão de semestre em análise e desenvolvimento de sistemas apresentado à Universidade Paulista – UNIP.
Orientador: todos os professores.
SOROCABA – SP
2019/2
BRUNO VINICIUS LIRA DA ROCHA RA: D968AI5
DEIVID LUCAS HIDALGO RA: D93JFI5
ELIEZER DEFILICIBUS RA: N426110
MARCOS NISHIZAWA RA: F060HD0
RENAN AUGUSTO DE OLIVEIRA RA: F018EA8
EMPRESA FUSION SYSTEM
MANUAL DE UTILIZAÇÃO DO PROGRAMA PIZZA CONTROL
Trabalho de Conclusão de semestre em análise e desenvolvimento de sistemas apresentado à Universidade Paulista – UNIP.
Aprovado em:
BANCA EXAMINADORA
________________________/__/____
Prof. Richardson Luz
Universidade Paulista – UNIP
_________________________/__/____
Prof. Robinson Luz
Universidade Paulista – UNIP
_________________________/__/____
Prof. Ricardo Martins
Universidade Paulista – UNIP
_________________________/__/____
Prof. Paulo Henrique Rodrigues
Universidade Paulista – UNIP
SUMÁRIO
1 INTRODUÇÃO	10
1.1	Objetivos	11
2 MANUAL DO USUÁRIO	12
2.1 Instalação do software	12
2.2 Arquivos do programa	13
2.3 Iniciando o software	18
3 REALIZANDO O LOGIN	20
3.1 Senha de acesso	21
3.2 Código de acesso	21
3.3 Validação do login	23
3.4 Função principal	24
4 PRIMEIRA FUNÇÃO	26
4.1 Seleção de quantidade	26
4.2 Primeiro campo	27
4.3 Segundo campo	28
4.4 Terceiro campo	31
4.5 Quarto campo	32
4.6 Ultimo campo	33
4.7 Conferência de cadastro	34
5 REALIZAR PEDIDO	36
5.1 Pedido e cliente	36
5.2 Selecionando a quantidade	40
5.3 Selecionando o produto	42
5.4 Definindo a quantidade de bebidas	45
5.5 Selecionando o segundo produto	46
5.6 Finalizando o pedido	48
6 VISUALIZAR CARDÁPIOS	52
6.1 Primeiro cardápio	52
6.2 Segundo cardápio	53
7 CADASTRO DE FUNCIONÁRIOS	55
7.1 Quantidade de funcionários a serem cadastrados	55
7.2 – Primeiro campo de preenchimento	56
7.3 Segundo campo de preenchimento	56
7.4 Unidade de trabalho	57
7.5 Data de admissão	58
7.6 Verificação de dados	59
8 FUNCIONÁRIOS CADASTRADOS	61
8.1 Busca por pizzaria	61
8.2 Cadastro de funcionários em arquivo	62
9 CONSULTA DE ESTOQUE	63
9.1 Realizando o login	63
9.2 Senha de acesso	64
9.3 Código de acesso	65
9.4 Validação do login	67
9.5 Opções da função	68
9.6 Visualizando produtos no estoque	69
9.7 Visualizando produtos no estoque 2	70
9.8 Inserindo produtos no estoque	71
9.9 Produção das pizzas	72
9.9.1 Bebidas no estoque	75
LISTA DE FIGURA
Figura 01	12
Figura 02	13
Figura 03	14
Figura 04	15
Figura 05	16
Figura 06	17
Figura 07	18
Figura 08	19
Figura 09	20
Figura 10	21
Figura 11	22
Figura 12	23
Figura 13	24
Figura 14	25
Figura 15	26
Figura 16	28
Figura 17	29
Figura 18	30
Figura 19	31
Figura 20	32
Figura 21	33
Figura 22	34
Figura 23	35
Figura 24	37
Figura 25	38
Figura 26	39
Figura 27	39
Figura 28	40
Figura 29	41
Figura 30	42
Figura 31	43
Figura 32	44
Figura 33	45
Figura 34	46
Figura 35	47
Figura 36	47
Figura 37	49
Figura 38	50
Figura 39	51
Figura 40	53
Figura 41	54
Figura 42	55
Figura 43	56
Figura 44	57
Figura 45	58
Figura 46	59
Figura 47	60
Figura 48	61
Figura 49	62
Figura 50	64
Figura 51	65 
Figura 52	66
Figura 53	67
Figura 54	68
Figura 55	69
Figura 56	70
Figura 57	71
Figura 58	72
Figura 59	73
Figura 60	74
Figura 61	75
Figura 62 	76
1 INTRODUÇÃO
O programa desenvolvido pela empresa Fusion System, atua no controle gerencial da rede de pizzarias,chamada Pizza Fast, que atualmente conta com três unidades. O software foi desenvolvido para atender os requisitos exigidos pelo dono da rede de pizzarias.
A Rede de pizzarias necessita de um software para gerenciamento e controle de seu negócio, por causa de seu crescimento exponencial nos últimos meses. O gerenciamento da rede de pizzarias, anteriormente era realizado de forma manual, até certo ponto esse tipo de controle é suficiente, porém quando o negócio está em uma fase de crescimento, com o número de clientes aumentando e trabalhando com grandes quantidades de produtos é necessário que esse controle seja realizado com a utilização de um software especifico, para que todas as atividades rotineiras de uma empresa possam gerenciadas de forma abrangente, controlando assim os principais pontos que tornam a empresa lucrativa.
Este documento tem como objetivos principais, capacitar o usuário, para poder trabalhar com todas as funções disponíveis no programa, detalhar para o usuário como lidar com as principais áreas de interação, como evitar erros que prejudiquem a funcionalidade do sistema e também facilitar o entendimento do usuário, com relação a forma de trabalho que o sistema utiliza. Dessa forma o programa cumprira seu objetivo corretamente e o usuário conseguira extrair do programa o seu potencial máximo. 
Este manual é indicado para o operador de caixa que trabalha diretamente com as vendas, e também para o gerente responsável, com a utilização correta do software a atividade gerencial da loja torna-se cada vez mais eficiente e benéfica.
1.1 Objetivos
Este documento tem como objetivo facilitar o entendimento do usuário sobre o programa que será introduzido na sua rotina de trabalho. Contendo especiações de como trabalhar em cada área do programa. Após a leitura do material que será apresentado, o usuário será capaz de entender a rotina de execução do programa, extrair o potencial máximo de cada função introduzida no software e saberá como o operar o programa visando a diminuição de erros provenientes de interações indevidas.
2 MANUAL DO USUÁRIO
2.1 Instalação do software
O primeiro passo para que o programa seja executado, é realizar a instalação corretamente, todos os passos necessários para realizar a instalação estão disponíveis no manual de instalação do programa.
Para continuar é necessário que o programa tenha sido instalado corretamente (Seguindo os passos descritos no manual de instalação), para que o usuário consiga compreender todos os passos que serão descritos abaixo.
Após o software ter sido instalado, ficará disponível para o usuário, uma pasta onde o programa foi instalado, dentro desta pasta exista o executável do programa (Ícone para execução do programa) e também os arquivos principais que são essenciais para o funcionamento do programa
Figura 1 – Pasta do programa
Fonte – Autoria própria
2.2 Arquivos do programa
Como descrito anteriormente, após a instalação do software ser realizada corretamente, é criado uma pasta, que contem todos os principais arquivos para a execução do programa, na figura acima o ícone executável está destacado em cor amarela, os outros documentos de texto, são os relatórios e arquivos de saídas do programa.
· Arquivo estoque – Este arquivo contem todas as informações com relação ao estoque, sendo elas, os nomes dos produtos armazenados e cadastrados no sistema, data de validade e quantidade armazenada em estoque.
Figura 2 – Arquivo estoque
Fonte – Autoria própria
· Arquivo estoque 1 – Este arquivo armazena as atualizações de estoque (Após uma venda ser realizada ou o usuário dar entrada de produtos no estoque), somente para os produtos utilizados na produção das pizzas.
Figura 3 – Arquivo de atualização 1
Fonte – Autoria própria
· Arquivo estoque 2 – Este arquivo também armazena somente as atualizações de estoque, porém trabalha somente com a parte de bebidas.
Figura 4 - Arquivo de atualização 2
Fonte – Autoria própria
· Arquivo funcionários – Este arquivo contém os dados de todos os funcionários que atualmente estão trabalhando na empresa, o arquivo somente é atualizado caso um novo funcionário seja adicionado ou quando é necessário excluir um funcionário antigo.
Figura 5 – Arquivo de funcionários
Fonte – Autoria própria
· Arquivo ficha técnica – Este arquivo armazena o cardápio, sendo uma segunda opção de consulta, armazena também as fichas técnicas de cada pizza
Figura 6 – Cardápio e ficha técnica
Fonte – Autoria própria
· Arquivo venda – Este arquivo armazena todas as informações relacionadas as vendas efetuadas pela empresa, sendo composto pelos dados do cliente que realizou a compra e o pedido completo.
Figura 7 – Compra realizada
Fonte – Autoria própria
2.3 Iniciando o software 
Após o programa estar instalado, com todos os arquivos armazenados corretamente, o próximo passo é realizar a inicialização do programa. A inicialização é efetuada através do ícone executável armazenado na pasta principal do programa.
 
Figura 8 – Ícone executável
Fonte - Autoria própria
Para iniciar o programa com a utilização do ícone executável, basta realizar um duplo clique no ícone destacado em amarelo.
3 REALIZANDO O LOGIN 
A primeira tela de login conta com um campo de preenchimento obrigatório, este campo é onde o usuário irá inserir o nome de usuário cadastrado dentro do software. Dentro deste campo é disponibilizado para o usuário, a utilização de todos os caracteres, pois trata-se de um login, que pode conter dados diversos.
Figura 9 – Realizando o login
Fonte – Autoria própria
No campo “DIGITE O NOME DO USUARIO” é onde o usuário irá inserir o nome cadastrado no sistema. O nome de usuário cadastrado para esse campo é “operadorvendas”, para que o login ocorra corretamente é necessário que o nome digitado seja inserido exatamente como descrito acima ( O nome de usuário pode ser alterado, basta entrar em contato com a empresa responsável), neste campo não é necessário que o usuário digite caracteres numéricos, nem espaços em branco, caso contrário o login não será realizado. Para validar o login digitado basta apertar a tecla enter do teclado.
3.1 Senha de acesso
 
A Segunda tela de login conta com dois campos de preenchimento obrigatório, sendo que o primeiro foi preenchido com o login, o segundo campo é onde o usuário irá inserir a senha de acesso cadastrada dentro do software.
Figura 10 – Segunda tela de login
Fonte – Autoria própria
No campo “DIGITE A SENHA DE ACESSO” é onde o usuário irá inserir a senha cadastrada no sistema. A senha cadastrada para esse campo é “123”, para que o login ocorra corretamente é necessário que a senha seja inserida exatamente como descrito acima (A senha pode ser alterada, basta entrar em contato com a empresa responsável), neste campo não é necessário que o usuário digite letras, caracteres especiais e nem espaços em branco, caso contrário o login não será realizado. Para validar a senha digitada basta apertar a teclada enter do teclado.
3.2 Código de acesso
A Terceira tela de login conta com três campos de preenchimento obrigatório, sendo que o primeiro foi preenchido com o login, o segundo campo foi preenchido com a senha de acesso, o terceiro campo é onde o usuário insere o código de acesso (nível de acesso definido pelo código) cadastrado dentro do software.
Figura 11 – Código de acesso
Fonte – Autoria própria
No campo “DIGITE O CODIGO DE ACESSO”, o usuário insere o código de acesso cadastrado no sistema, este código serve para definir, qual o nível de acesso que o usuário tem. 
 Após o nome ter sido inserido, o software requisita ao usuário a senha de acesso definida dentro do software, inserindo a senha o terceiro campo obrigatório aparece, neste campo é onde o usuário digita o código de acesso, que também já está definido dentro do software. O código cadastrado para esse campo é “1”, para que o login ocorra corretamente é necessário que o código seja inserido exatamente como descrito acima, poisesse código corresponde ao nível de acesso do login de vendas, caso seja digitado outro caractere o login não será validado, neste campo não é necessário que o usuário digite letras, caracteres especiais, nem espaços em branco, caso contrário o login não será realizado. Para validar o código digitado basta apertar a tecla enter do teclado.
3.3 Validação do login 
Para que o usuário tenha a acesso a todas as funções disponíveis para o seu login, é necessário que os três campos sejam preenchidos corretamente. 
Quando o usuário insere os três os campos obrigatórios, o software o direciona para a tela de confirmação de login, mostrando em tela se o usuário realizou o preenchimento corretamente.
Figura 12 – Usuário cadastrado
Fonte – Autoria própria
Conforme demostrado na figura acima, o usuário realizou o preenchimento de todos os campos obrigatórios corretamente, o que resulta no redirecionamento do mesmo para o menu principal, que contém todas as funções que o seu nível de acesso (definido no código de acesso) disponibiliza.
Quando o usuário não insere corretamente um ou mais campo obrigatórios, automaticamente quando a tentativa de login é efetuada, o mesmo é direcionado para a tela de login invalido, como demostrado na figura abaixo.
Figura 13 – Login invalido
Fonte – Autoria própria
Quando ocorre a tentativa com dados que não correspondem aos dados cadastrados no sistema, o usuário precisa realizar o preenchimento de todos os campos novamente, o software não indica em qual campo está o erro de login, visando um nível de segurança mais elevado, garantindo assim que somente usuários com permissão de acesso realizem o login no sistema. Para o usuário realizar o login novamente, basta apertar a tecla enter do teclado.
3.4 Função principal
A tela principal do software contém todas as funções possíveis para serem executadas pelo usuário. Após o usuário executar o login corretamente é direcionado primeiramente para a tela de confirmação, demonstrando que o login foi efetuado com sucesso, conforme demostrado na figura 12, após esta tela o usuário é direcionado para tela principal.
Figura 14 – Tela principal
Fonte – Autoria própria
A tela da função principal é onde o usuário visualiza todas operações que o sistema pode realizar, a tela é composta por seis funções, cada uma delas executa uma ação especifica, o nome da função indica qual o principio da ação que será executada pela função. Dentro desta tela está disponível para o usuário somente a utilização de caracteres numéricos, sendo que somente os caracteres numéricos de um a seis serão validados (Existem seis funções, a primeira iniciando com o número um de identificação e a ultima com o número seis), para selecionar uma das funções disponíveis basta digitar o número correspondente e pressionar o enter. 
4 PRIMEIRA FUNÇÃO 
A primeira função é chamada de “CADASTRAR CLIENTES”, conforme o próprio nome diz, a função realiza o cadastro dos clientes, para o usuário ter acesso à esta tela é necessário que ele digite o número correspondente a função.
4.1 Seleção de quantidade
Após o usuário selecionar a função de cadastro de clientes, ele é direcionado para a primeira tela de interação, nesta tela é necessário informar a quantidade de clientes que irão ser cadastrados, este parâmetro foi adicionado ao corpo do programa com intuito de simplificar a interação do usuário com o software, caso ocorra de o funcionário precisar realizar vários cadastros sequenciais (Fatores externos normalmente ocasionam a existência de cadastros sequenciais, por exemplo alto fluxo de vendas), esta função facilitara a realização dos cadastros, evitando o redirecionamento do usuário para a tela principal após a conclusão do primeiro cadastro, todos os campos precisam ser preenchidos (Não pode existir campos vazios dentro do cadastro de um cliente), para que o próximo cadastro seja realizado.
Figura 15 – Selecionando a quantidade
Fonte – Autoria própria
Dentro da área para a seleção de quantidade que serão cadastrados, está disponível para o usuário somente a utilização de caracteres numéricos, visando evitar erros provenientes de digitações invalidas, para que a função aceite o caractere digitado, ele precisa estar dentro do padrão definido no programa, com o parâmetro mínimo definido como “1”, pois não deve existir um cadastro igual a zero ou negativo, para o parâmetro máximo foi utilizado o número “10”, pois a introdução um número maior que este é prejudicial para o sistema. Após ser digitado um caractere valido, basta o usuário apertar a tecla enter do teclado para realizar a validação.
	 
4.2 Primeiro campo
Quando o usuário insere um número maior que zero, ele é direcionado para a tela onde o cadastro de funcionário é iniciado, conforme demonstrado na figura 16. O primeiro campo é responsável por armazenar o nome do cliente que está sendo cadastrado no momento, como trata-se de um campo de identificação, este campo não pode ficar vazio, para evitar situações conflitantes é necessário também que o segundo ou terceiro nome estejam presentes no cadastrado. Neste campo é recomendado que o usuário utilize somente letras, pois trata-se do cadastro de um nome, como dito anteriormente recomenda-se que o campo para o cadastro do nome seja preenchido com nome e sobrenome, primeiramente o usuário digita o nome, conforme informado pelo o cliente, digita um espaço em branco (Separar o nome do sobrenome) e digita o sobrenome do cliente. Com o campo preenchido o usuário precisar pressionar a tecla enter do teclado, para prosseguir com o cadastro.
Figura 16 – Primeiro campo de cadastro
Fonte – Autoria própria
Conforme demonstrado na figura 17, o usuário realizou o preenchimento do campo corretamente, antes da abertura do segundo campo, é emitida uma mensagem de confirmação, para demonstrar que o cadastro está fluindo corretamente. 
4.3 Segundo campo
Dentro do segundo campo da função cadastro, é requisitado ao usuário que digite os dados do cliente para cadastramento do endereço corretamente. Dentro deste campo é requisitado para o usuário o nome da rua, o campo deve ser preenchido com espaços entre o primeiro e o segundo nome (Caso não tenha mais de um nome, não é necessário a utilização do espaço), com proposito de facilitar a leitura do endereço cadastrado e garantir a exatidão na entrega do pedido requisitado. Nesse campo é necessário que o usuário digite o nome exatamente como descrito pelo cliente (Nome de rua pode conter números), para este campo está disponível a utilização de caracteres numéricos e letras. Com o campo preenchido o usuário precisar pressionar a tecla enter do teclado, para prosseguir com o cadastro.
Figura 17 – Segundo campo de cadastro
Fonte – Autoria própria
Após o usuário realizar o preenchimento correto do campo correspondente ao cadastro da rua, antes da abertura do terceiro campo, é emitida uma mensagem de confirmação, para demonstrar que o cadastro está fluindo corretamente. 
Logo abaixo da mensagem de confirmação o campo para o cadastro do bairro é exibido. O cadastro do bairro precisa ser preenchido de forma clara e consistente, O primeiro e o segundo nome devem ser separados por um espaço (Caso exista um segundo nome) para que não ocorrer nenhuma falha no momento da entrega do pedido. Nesse campo é necessário que o usuário digite o nome exatamente como descrito pelo cliente (Nome do bairro pode conter números), para este campo está disponível a utilização de caracteres numéricos e letras. Com o campo preenchido o usuário precisar pressionar a tecla enter do teclado, para prosseguir com o cadastro.
Figura 18 – Terceiro campo de cadastro
Fonte – Autoria própria
Após o campo correspondente ao bairro ter sido preenchido corretamente, antes da abertura do quarto campo, é emitida uma mensagem de confirmação, para demonstrar que o cadastro está fluindo corretamente. O campo correspondente ao cadastro do número da residência em questão e também do complemento do endereço (Caso exista um complemento, normalmenteexiste quando a residência cadastrada é um apartamento), é exibido para o usuário, as informações inseridas precisam ser separadas com a utilização do espaço, visando evitar a criação de um cadastro complexo e inconsistente. Para este campo está disponível a utilização de caracteres numéricos e letras. Com o campo preenchido o usuário precisar pressionar a tecla enter do teclado, para prosseguir com o cadastro.
Figura 19 – Quarto campo de cadastro
Fonte – Autoria própria
Dentro da função para o cadastro de clientes, conforme as informações inseridas acima, o conjunto de campos de preenchimento obrigatórios que corresponde ao endereço do cliente é composto por, nome dá rua, nome do bairro, o número da residência e o complemento (Se houver complemento), Todos os dados requisitados são de extrema importância para a criação de um cadastro valido.
4.4 Terceiro campo
Quando o cadastro do endereço é finalizado de forma correta, o usuário recebe uma mensagem dizendo que o todos os campos foram preenchidos corretamente. Disponibilizando para o usuário o campo para o cadastro do telefone do cliente, este campo deve ser preenchido sem espaços e somente com números, para evitar qualquer erro de digitação. O cadastro do telefone do cliente é crucial, pois possibilita para a empresa a realização de um atendimento personalizado. Para este campo está disponível somente a utilização de caracteres numéricos. Com o campo preenchido o usuário precisar pressionar a tecla enter do teclado, para prosseguir com o cadastro.
Figura 20 – Telefone do cliente
Fonte – Autoria Própria
Assim que o campo para cadastro do telefone do cliente é preenchido corretamente, antes da abertura do próximo campo, é emitida uma mensagem de confirmação, para demonstrar que o cadastro está fluindo corretamente. 
4.5 Quarto campo
Logo abaixo da mensagem de confirmação o usuário tem acesso ao campo para o cadastro do cep. O cep a ser cadastrado deve ser correspondente ao endereço do cliente, deve ser preenchido sem espaços e somente com números. No caso do cadastro de clientes o campo do cep serve como uma medida de segurança, caso ocorra algum erro com o endereço cadastrado, por exemplo falta de informações na hora de realizar o cadastro, o cep pode servir como uma segunda ferramenta de buscar, para localizar o endereço em questão. 
Para este campo está disponível somente a utilização de caracteres numéricos. Com o campo preenchido o usuário precisar pressionar a tecla enter do teclado, para prosseguir com o cadastro.
Figura 21 – Cep do cliente
Fonte – Autoria Própria
Assim que o campo para cadastro do Cep do cliente é preenchido corretamente, é emitida uma mensagem de confirmação, para demonstrar que o cadastro está fluindo corretamente. 
4.6 Ultimo campo
O último campo mostrado para o usuário, armazena o código de cada cliente, neste campo não é necessário que o usuário digite nenhum tipo de informação.
O software disponibiliza para cada cliente cadastrado um código, que serve como método de identificação e serve também como ferramenta de busca, para localizar o cadastro do cliente (Localização por nome de usuário pode ser considerada inviável, existe a possibilidade de ter diversos clientes cadastrados com o nome igual), automaticamente quando todos os campos anteriores forem preenchidos corretamente, o programa verifica qual o código pra o cliente em questão e o adiciona a este campo.
Neste campo o usuário não insere nenhum dado, o código é gerado automaticamente. Com o campo preenchido o usuário precisar pressionar a tecla enter do teclado, para finalizar o cadastro.
Figura 22 – Cadastro finalizado
Fonte – Autoria própria
A última tela da função para cadastrar os clientes, disponibiliza a visualização de todos os campos preenchidos pelo o usuário. Neste momento ocorre última verificação visual realizada pelo usuário, antes de o cadastro ser armazenado no sistema.
4.7 Conferência de cadastro
Neste campo o usuário realiza a conferência do cadastro, caso o cadastro tenha sido preenchido de forma incorreta, o usuário precisa selecionar a opção correspondente a não, digitando o número “2”, assim o cadastro será excluído e o usuário será direcionado para área de cadastro novamente. Quando o cadastro estiver correto, o usuário precisar digitar o número “1”, que corresponde ao cadastro correto, desta forma o cadastro será finalizado e armazenado corretamente.
Figura 23 – O cliente cadastrado
Fonte – Autoria própria
5 REALIZAR PEDIDO
A segunda função é nomeada como “REALIZAR UM PEDIDO”, sendo responsável por cadastrar o pedido do cliente, para que o usuário realize o pedido do cliente é necessário que o mesmo esteja cadastrado no sistema, com o intuito de criar uma conexão dentro do sistema entre o pedido realizado e o cliente que o pediu.
5.1 Pedido e cliente
Dentro da segunda função do programa, a primeira tela a ser exibida para o usuário é a parte do programa que realiza está conexão de cliente com o pedido. Após o usuário realizar o cadastro do cliente corretamente é possível que ele prossiga para o cadastro do pedido, nesta tela o usuário informa o software se o cliente já está com o cadastro no sistema.
Para este campo está disponível somente a utilização de caracteres numéricos. Quando o cliente já estiver cadastrado no sistema, o usuário digita o número “1”, caso o cadastro ainda não tenha sido realizado, o usuário digita o numero “2”.
Com o campo preenchido o usuário precisar pressionar a tecla enter do teclado, para prosseguir com o cadastro.
Figura 24 – Primeira tela de pedidos
Fonte – Autoria própria
Quando o usuário informa que o cliente ainda não está cadastrado no sistema, ocorre o redirecionamento do usuário para a tela principal, indicando que primeiramente é necessário realizar o cadastro do cliente, para posteriormente realizar o pedido.
Figura 25 – Segunda tela de pedidos
Fonte – Autoria própria
Para que o redirecionamento ocorra, basta o usuário pressionar a tecla enter do teclado.
Com o cadastro do cliente realizado corretamente é necessário que a opção que correspondente a cliente cadastrado seja selecionada, quando a opção é selecionada, o programa requisita o código (Gerado automaticamente pelo software, dentro da função para o cadastro de clientes) do cliente em questão, quando o código é digitado corretamente, todos os dados do cliente são exibidos em tela, para que ocorra a conferência de conexão entre pedido e cliente.
Para este campo está disponível somente a utilização de caracteres numéricos. Com o campo preenchido o usuário precisar pressionar a tecla enter do teclado, para prosseguir com a realização do pedido.
Figura 26 – Código do cliente
Fonte – Autoria própria
Caso o usuário digite um código inexistente no sistema, a tela de código invalido e exibida, acusando que não existe cliente cadastrado com o código digitado. O usuário pode optar entre digitar um novo código, selecionando a opção de número “1”, realizando a varredura dentro do sistema novamente ou pode retornar para a tela principal, digitando a opção de número “2”, para escolher a função desejada.
Figura 27 – Código invalido
Fonte – Autoria própria
Para que o redirecionamento ocorra, basta o usuário pressionar a tecla enter do teclado.
5.2 Selecionando a quantidade
Após a validação dos dados do cliente cadastrado, o usuário é direcionado para tela onde está disponível o cardápio de pizzas, todas as pizzas que são vendidas pelo estabelecimento estão disponíveis nesta tela. Para facilitar a comprar e também para auxiliar na identificação correta do produto que irá ser comprado, o cardápio é dividido em bloco de informações, cada bloco representa uma pizza, o primeiro campo corresponde ao nome da pizza, o segundo campo corresponde aos ingredientes de sua composição e o terceiro campo é preenchido pelo código de compra. O código é utilizado para realizar a compra, cada pizza tem o seu respectivo código, está medidafoi adotada visando a diminuição de erros, no momento de realizar o pedido, quando a identificação não é numérica os riscos de selecionar um produto não solicitado é consideravelmente grande, por este motivo o método de identificação numérico foi adotado como padrão de identificação. 
Figura 28 – Primeiro cardápio
Fonte – Autoria própria
Dentro da função, com o cardápio sendo exibido é requisitado ao usuário, que digite a quantidade de pizzas que serão inseridas no pedido, método utilizado para tornar o programa mais dinâmico, evitando que o usuário faça um retorno desnecessário para a tela principal antes de inserir uma nova pizza no pedido.
Neste momento que o usuário indica quantas pizzas serão compradas, o software aceita o parâmetro sendo zero, pois existe a possibilidade de uma compra só de bebidas ou um pedido só contendo pizzas (Numero de bebidas definido como zero), quando o usuário insere um número maior que zero é necessário preencher as especificações da pizza a ser comprada.
Neste campo fica disponível para o usuário apenas a utilização de caracteres numéricos, visando diminuir os erros provenientes de digitações invalidas, caso ocorra a inserção de um valor acima da capacidade de venda no momento em questão (Relacionado com a quantidade de produtos no estoque, venda acima da quantidade máxima de pizzas possíveis para a venda), o programa repete esta função até que o valor digitado esteja dentro da quantidade máxima de vendas de pizzas por dia. Após digitar o valor deseja, basta pressionar a tecla enter do teclado, prosseguindo para a validação de dados.
Figura 29 – Seleção de quantidade
Fonte – Autoria própria
5.3 Selecionando o produto
Quando a quantidade de pizzas a serem compradas é maior que zero, o usuário precisa definir as especificações do produto a ser comprado. A primeira especificação requisitada é a do tamanho da pizza, atualmente a empresa disponibiliza três tipos de tamanho de pizzas, sendo eles pequeno, médio e grande. O preço do produto é definido com base no tamanho e no produto escolhido, a escolha do tamanho é definida por interação numérica, sendo número “1” para pequeno, número “2” para médio e número “3” para grande.
Neste campo fica disponível para o usuário apenas a utilização de caracteres numéricos, visando diminuir os erros provenientes de digitações invalidas, é necessário selecionar o tamanho desejado e pressionar a tecla enter do teclado, para prosseguir com o pedido.
Figura 30 – Seleção de tamanho
Fonte – Autoria própria
Neste campo fica disponível para o usuário apenas a utilização de caracteres numéricos, visando diminuir os erros provenientes de digitações invalidas, caso ocorra a inserção de um valor não identificado como tamanho, o programa repete esta função até que o valor digitado esteja definido como um dos tamanhos disponíveis para a compra.
Figura 31 – Seleção de tamanho invalida
Fonte – Autoria própria
 
Para que o usuário digite novamente o tamanho desejado, basta pressionar a tecla enter do teclado após a visualização da mensagem.
Com o tamanho selecionado corretamente o software direciona o usuário para a tela de seleção da pizza a ser comprada. Conforme explicado acima, cada pizza cadastrada no sistema recebeu um código de identificação, para realizar a compra do produto é necessário que o usuário digite o número correspondente ao produto desejado. A segunda tela que exibe as pizzas disponíveis para a compra, é composta pelo nome de todas as pizzas cadastradas e pelo código de compra.
 Dentro desse campo, os únicos caracteres que o software disponibiliza para o usuário digitar, são os numéricos, seguido o conceito das funções anteriores, o método utilizado tem como objetivo a diminuição de erros por digitações invalidas. Os códigos variam de um até o número 12, caso seja inserido um valor diferente dos parâmetros especificados, o usuário será redirecionado para a especificação de tamanho novamente, para a inserção correta dos dois parâmetros.
Figura 32 – Selecionando o produto
Fonte – Autoria própria
Conforme exibido na figura acima, o produto selecionado foi o correspondente ao código 11 ou seja a pizza de quatro queijos. Após o produto ser selecionado, basta o usuário pressionar a tecla enter do teclado para ser direcionado a uma nova tela, está tela contém as informações sobre o produto comprado, contendo o sabor da pizza e o valor da compra, esta tela tem como função possibilitar para o usuário a realização de uma conferência primaria, nesta tela o usuário identificar o produto selecionado e o preço. Caso o pedido seja composto por mais de uma unidade de pizza, o software retornara para a tela de seleção de tamanho e seguira seu fluxo de execução até a tela de conferência, este processo ocorra enquanto o número de pizzas restantes para serem inseridas no pedido não for igual a zero.
Figura 33 – Conferência primária
Fonte – Autoria própria
Após a visualização do produto selecionado, basta o usuário pressionar a tecla enter do teclado para seguir com o pedido.
5.4 Definindo a quantidade de bebidas
Seguindo o fluxo de execução do programa, após o usuário selecionar todas as pizzas desejadas para o pedido em questão o cardápio de bebidas é exibido. Este cardápio é composto por todas as bebidas cadastradas no sistema, nesta tela o usuário visualiza todas as informações referentes as bebidas, sendo elas nome, tipo, quantidade em mililitro, sabor, preço e o código para compra. 
A compra das bebidas segue os mesmos parâmetros definidos para a compra de uma pizza dentro do software, primeiramente o usuário precisa digitar a quantidade de bebidas que deseja incluir no pedido, método utilizado para evitar que o cliente precise iniciar o pedido novamente para inserir mais de uma bebida, como a compra de uma bebida ocorre da mesma forma que a compra da pizza, neste campo o usuário pode trabalhar apenas com caracteres numéricos para diminuir a quantidade de erros por digitações erradas.
Figura 34 – Definindo a quantidade de bebidas no pedido
Fonte – Autoria própria
 
Após digitar a quantidade de bebidas, basta pressionar a tecla enter do teclado para o programa realizar a validação da quantidade.
5.5 Selecionando o segundo produto
Com a quantidade de bebidas selecionada corretamente, o programa direciona o usuário para área de compra de bebidas. Nesta tela as mesmas especificações com relação as bebidas estão disponíveis para a visualização, para realizar a seleção que deseja incluir no pedido é necessário que o código correspondente a bebida seja digitado corretamente, caso o usuário digite o número zero (Indicando que não será adicionada nenhuma bebida ao pedido), o programa verifica se o pedido contém algum outro produto, porque não é possível realizar um pedido vazio.
Dentro desse campo, os únicos caracteres que o software disponibiliza para o usuário digitar, são os numéricos, seguido o conceito das funções anteriores, o método utilizado tem como objetivo a diminuição de erros por digitações invalidas. Os códigos variam de 1 até o número 10, caso seja inserido um valor diferente dos parâmetros especificados, o usuário será redirecionado para a especificação do produto novamente, para a inserção correta deste parâmetro.
Figura 35 – Selecionando a bebida
Fonte – Autoria própria
Após o usuário selecionar a bebida desejada (Utilizando o código de compra correspondente), pressionando a tecla enter do teclado é exibida a tela de conferência secundaria, o usuário verifica se o produto adicionado ao pedido é o produto que foi requisitado e também é possível visualizar o preço do produto e suas especificações técnicas.
Figura 36 – Conferência secundaria
Fonte – Autoria própria
Após visualizar o produto e o preço, pressionando a tecla enter do teclado, caso ainda tenha algum produto a ser adicionado ao pedido o usuário é direcionado para a seleção de produto, se não é direcionado para a área de finalização de pedido.
5.6 Finalizando o pedido
 
	Neste ponto de execução do programatodas as informações e produtos necessários para a realização dos pedidos já foram adicionados ao mesmo. Dentro deste software um pedido é composto por um cliente previamente cadastrado de forma correta, o produto principal que é definido como a pizza a ser comprada e o produto secundário (O cliente pode optar por adquirir somente um dos produtos) que é definido como a bebida a ser escolhida.
	A próxima tela a ser exibida para o usuário, é a tela de conferência final, nesta tela todas as informações do pedido estão descritas sequencialmente, o primeiro conjunto de dados apresentados, é o cadastro do cliente que contém todas as suas informações, o segundo conjunto de dados, é correspondente a pizza inserida no pedido (Caso o pedido tenha mais de uma pizza, ele exibira todas as pizzas inclusas no pedido), todas as informações do produto estão presentes na tela, por último é o conjunto de dados, sobre a bebida inserida no pedido (Caso o pedido tenha mais de uma bebida, ele exibira todas as bebidas inclusas no pedido). Dentro desta função do programa, é necessário que o usuário confira corretamente todos os campos exibidos, caso um dos produtos inseridos não corresponda corretamente a solicitação do cliente, o usuário deve selecionar a opção de pedido invalido, quando isto ocorre o usuário e direcionado para o início do pedido, sendo necessário que todos os produtos sejam inseridos novamente, o programa realiza este ciclo até que o usuário confirme que o pedido está correto.
Dentro desse campo, os únicos caracteres que o software disponibiliza para o usuário digitar, são os numéricos, seguido o conceito das funções anteriores, o método utilizado tem como objetivo a diminuição de erros por digitações invalidas.
Figura 37 – Conferência final
Fonte – Autoria própria
Quando todos os campos forem preenchidos corretamente, basta o usuário selecionar a opção sim, conforme demonstrado na figura acima. Após a opção sim ser selecionada, indicando que o pedido está correto, o usuário é direcionado para a tela de pagamento. Caso a opção não seja selecionada, o usuário iniciara o pedido novamente.
 
Dentro desse campo, os únicos caracteres que o software disponibiliza para o usuário digitar, são os numéricos, seguido o conceito das funções anteriores, o método utilizado tem como objetivo a diminuição de erros por digitações invalidas. Após selecionar a opção deseja, sendo “1” para pagamento com cartão e “2” para pagamento em dinheiro, pressionando o enter do teclado, o direcionamento para a próxima tela é executado.
Figura 38 – Tela de pagamento
Fonte – Autoria própria
Dentro da função pagamento, duas opções são disponibilizadas para o usuário, sendo, opção um realizar o pagamento com cartão, dentro desta opção o software entende que o pagamento não será em dinheiro e não solicita a quantia a ser paga, a opção dois é utilizada para pagamentos em dinheiro, o software realiza o cálculo do preço de todos os produtos inseridos no pedido, é disponibiliza para a visualização do usuário o valor total a ser pago, abaixo do valor total é exibido onde o usuário precisa digitar o valor que o cliente entregara para efetuar o pagamento, caso o valor digitado seja menor que o valor da compra, é emitido uma mensagem na tela, dizendo que o valor digitado não é suficiente para realizar o pagamento, quando o valor digitado é superior ao valor da compra, o software realiza o cálculo do valor a ser devolvido para o cliente e quando o valor digitado é igual ao valor da compra o pedido é finalizado.
Dentro desse campo, os únicos caracteres que o software disponibiliza para o usuário digitar, são os numéricos, seguido o conceito das funções anteriores, o método utilizado tem como objetivo a diminuição de erros por digitações invalidas. Após digitar o valor desejado, pressionando o enter do teclado, o direcionamento para a próxima tela é executado.
Figura 39 – Pagamento em dinheiro
Fonte – Autoria própria
 
Quando o valor inserido for o suficiente para pagar a compra efetuada, o pedido é finalizado, todos os dados do pedido ficam disponíveis no arquivo venda. Nesse ponto de execução do programa o pedido está concluído, o usuário será direcionado para a tela principal.
6 VISUALIZAR CARDÁPIOS 
Conforme demostrado na tela principal, a função de número três, tem como objetivo exibir para o usuário todos os produtos disponíveis para a compra do cliente, evitando que o usuário precisa entra na função pedido todas as vezes que precisar visualizar os produtos disponíveis para a venda, resultando na melhora do sistema, pois não ocorre sobrecarga e uso desnecessários de funções, graças a divisão tarefas criada.
6.1 Primeiro cardápio 
 Quando o usuário interage com o sistema, requisitando a inicialização da função de número três (Visualização de cardápios), é exibido como tela inicial o cardápio de pizzas disponíveis para a compra. Está tela é composta por nome do produto, ingredientes do produto final e código para a compra.
Dentro desse campo, os únicos caracteres que o software disponibiliza para o usuário digitar, são os numéricos, seguido o conceito das funções anteriores, o método utilizado tem como objetivo a diminuição de erros por digitações invalidas. Duas opções estão disponíveis para o usuário, a opção de número “1”, corresponde a visualização do cardápio de bebidas, a opção de número “2”, corresponde ao retorno para a tela principal.
Figura 40 – Cardápio de pizzas
Fonte – Autoria Própria
Após a seleção da opção, pressionando o enter do teclado, o direcionamento para a próxima tela é executado.
6.2 Segundo cardápio
Dentro da função para a visualização de cardápios, após o usuário visualizar o cardápio das pizzas, ele pode escolher entre retornar para a função principal ou visualizar o cardápio das bebidas. Quando o usuário requisita a visualização do cardápio de bebidas, é exibido em tela todas as bebidas disponíveis para a venda, dentro desta tela cada bebida contém informações importantes, para realizar uma venda ou até mesmo conhecer melhor os produtos disponíveis, sendo elas, nome do produto, tipo, quantidade de produto por embalagem, sabor, preço e código para a compra.
Dentro desse campo, os únicos caracteres que o software disponibiliza para o usuário digitar, são os numéricos, seguido o conceito das funções anteriores, o método utilizado tem como objetivo a diminuição de erros por digitações invalidas. Duas opções estão disponíveis para o usuário, a opção de número “1”, corresponde a realização do pedido de um cliente, a opção de número “2”, corresponde ao retorno para a tela principal.
Figura 41 – Cardápio de bebidas
Fonte – Autoria própria
Após a seleção da opção desejada, o usuário é redirecionado para a tela principal, o redirecionamento ocorre após o usuário pressionar a tecla enter do teclado.
7 CADASTRO DE FUNCIONÁRIOS 
	Seguindo o fluxo de execução do programa, a quarta função definida na tela principal é a função “CADASTRO DE FUNCIONARIOS”, dentro desta função, o usuário tem a opção de realizar o cadastramento de novos funcionários na empresa, para o usuário acessar esta função, é necessário que o mesmo digite o código correspondente a ela.
7.1 Quantidade de funcionários a serem cadastrados
Quando o usuário seleciona está função, primeiramente é exibido para ele a tela de interação, dentro desta tela o usuário seleciona quantos funcionários deseja cadastrar, parâmetro adicionado à função, visando evitar o retorno até a função principal, caso seja necessário realizar o cadastro dois ou mais funcionários. 
Dentro deste campo é disponibilizado para o usuário, somente a utilização de caracteres numéricos, visando evitar erros provenientes de digitações invalidas. O valor mínimo que deve ser inserido está classificado como “1”, o máximo está classificado como “10”, assim não ocorra nenhum problema de execução no programa.
Figura 42 – Quantidade de funcionários a serem cadastrados
Fonte – Autoria própria
Após a quantidade ser inserida, basta pressionar a tecla enterdo teclado para que o direcionamento ocorra.
7.2 – Primeiro campo de preenchimento
Quando o usuário digita corretamente a quantidade de funcionários a serem cadastrados, é disponibilizado em tela o primeiro campo de preenchimento obrigatório, neste primeiro campo é necessário que o usuário cadastre o nome do funcionário. Para o preenchimento correto, é necessário o cadastro do primeiro e do segundo nome, separados por um espaço.
Dentro deste campo é disponibilizado para o usuário, a utilização de todos os caracteres.
Figura 43 – Nome do funcionário
Fonte – Autoria própria
Após o cadastro do nome do funcionário, pressionando a tecla enter do teclado, a abertura do próximo campo é executada. 
7.3 Segundo campo de preenchimento
Com o nome cadastrado corretamente, é possível seguir para o próximo campo de preenchimento, o segundo campo é onde o usuário escolhe a função do funcionário a ser cadastrado, para evitar o cadastro de funções invalidas, dentro deste campo as funções disponíveis para o cadastro já estão definidas, sendo a primeira função definida como “1” para pizzaiolo, a segunda como “2” para caixa e a terceira como “3” para auxiliar. Para selecionar uma das funções, o usuário precisa digitar o código correspondente a ela, visando diminuir a quantidade de erros e a instabilidade do sistema, neste campo é disponibilizado para o usuário somente a utilização de caracteres numéricos.
Figura 44 – Função do funcionário
Fonte – Autoria própria
Após o cadastro da função do funcionário, pressionando a tecla enter do teclado, a abertura do próximo campo é executada. 
7.4 Unidade de trabalho 
Seguindo o fluxo de execução da função, o próximo passo a ser realizado é a escolha da unidade de trabalho, a empresa Pizzaria Fast, atualmente conta com uma matriz e duas filiais. Para realizar o cadastro corretamente é necessário especificar em qual unidade o funcionário cumprira sua jornada de trabalho, para selecionar a unidade de trabalho, o usuário precisa escolher entre as três unidades exibidas em tela, digitando o código correspondente a unidade desejada, sendo “1” para a primeira pizzaria, “2” para a segunda e “3” para a terceira pizzaria, visando diminuir a quantidade de erros e a instabilidade do sistema, neste campo é disponibilizado para o usuário somente a utilização de caracteres numéricos.
Figura 45 – Selecionando a pizzaria
Fonte – Autoria própria
Após selecionar a pizzaria desejada, é necessário que a tecla enter do teclado seja pressionada, para exibir o próximo campo.
7.5 Data de admissão
Visando ter um controle de informações mais consistente, para cada funcionário cadastrado é necessário informar a data de admissão do mesmo. O cadastramento da data de admissão é separado em três parte, a primeira corresponde ao dia de admissão, a segunda ao mês e o terceiro ao ano, visando diminuir a quantidade de erros e a instabilidade do sistema, neste campo é disponibilizado para o usuário somente a utilização de caracteres numéricos.
Figura 46 – Cadastrando a data
Fonte – Autoria própria
Com a data de admissão preenchida corretamente, é exibida uma mensagem informando que todos os campos foram preenchidos, é necessário pressionar a tecla enter do teclado pra passar para a etapa de verificação de cadastro.
7.6 Verificação de dados
Após o usuário realizar o cadastro da data de admissão, o programa exibe uma tela para confirmação de dados, a tela contém todos os dados digitados pelo usuário, para o cadastro do funcionário, os dados são exibidos na ordem de execução do programa. A verificação de dados é necessária, para evitar o armazenamento de informações inconsistentes. Após verificar os dados do cadastro, o usuário precisa informar se os dados estão corretos, caso estejam, os dados são armazenados no software, o cadastro é finalizado e o usuário direcionado para a função principal, caso não estejam cadastrados corretamente, o usuário é direcionado para o início da função cadastro de funcionários, para inserir todos os dados novamente.
Dentro deste campo é disponibilizado para o usuário, somente a utilização de caracteres numéricos, visando evitar erros provenientes de digitações invalidas. Para selecionar a opção de cadastro correto, o usuário precisa digitar o número “1”, quando ocorre algum erro do cadastro do funcionário, a opção dois precisa ser selecionada, digitando o número “2”.
Figura 47 – Verificando dados cadastrados
Fonte – Autoria própria
Com a opção desejada selecionada, é necessário pressionar a tecla enter do teclado para finalizar o cadastro ou inicia-lo novamente se for o caso.
8 FUNCIONÁRIOS CADASTRADOS
A quinta função disponibilizada no software, chamada “VISUALIZAR FUNCIONÁRIOS CADASTRADOS”, tem como objetivo exibir os funcionários cadastrados no sistema, mostrando primeiramente os funcionários cadastrados recentemente e logo após os funcionários cadastrados na pizzaria selecionada. Para o usuário acessar esta função é necessário digitar o código correspondente a função em questão.
8.1 Busca por pizzaria
Para realizar a consulta de funcionários cadastrados, é necessário que o usuário digite a pizzaria em que o funcionário trabalha. Será exibido em tela, primeiramente os funcionários cadastrados recentemente, e logo em seguida todos os funcionários desta mesma pizzaria.
Dentro deste campo é disponibilizado para o usuário, somente a utilização de caracteres numéricos, visando evitar erros provenientes de digitações invalidas.
Figura 48 – Funcionários da pizzaria 1
Fonte – Autoria própria
Após o usuário digitar a pizzaria desejada, é necessário pressionar a tecla enter do teclado para que os funcionários cadastrados sejam exibidos.
Após o usuário visualizar todos os funcionários cadastrados na pizzaria selecionada, ele pode optar por consultar outra pizzaria digitando o número “1” ou retornar para a função principal digitando o número “2”.
8.2 Cadastro de funcionários em arquivo
Todos os funcionários que atualmente trabalham em alguma das três unidades, estão cadastrados no sistema. Visando ter um método de consulta secundário e também para possibilitar a criação de relatórios com informações dos funcionários foi criado um arquivo externo, que contém todas as informações dos funcionários. Os funcionários novos cadastrados pelo usuário também estão disponíveis no arquivo.
Figura 49 – Arquivo de funcionários
Fonte – Autoria própria
9 CONSULTA DE ESTOQUE
A função “CONSULTAR O ESTOQUE E ADICIONAR PRODUTOS”, foi criada com o objetivo de aumentar exponencialmente o controle das matérias primas utilizadas pela empresa. Todos os produtos estão cadastrados no software, com quantidades padrões, definidas pelo responsável da empresa (As quantidades são suficientes para os dias trabalhados, definidos pelo responsável). Após o usuário inserir o código correspondente a função, é exibido em tela as opções disponíveis para o usuário, sendo elas inserir produtos no estoque e exibir produtos do estoque. Visando diminuir a quantidade de erros provenientes de digitações erradas, esta função aceita somente caracteres numéricos.
Esta função conta com um login secundário, por lidar com consultas e atividades relacionadas ao estoque, somente o gerente responsável deve ter acesso. Visando a maior segurança e garantia da integridade de informações, é necessário que o login secundário seja preenchido corretamente para ter acesso a está função.
9.1 Realizando o login 
A primeira tela de login conta com um campo de preenchimento obrigatório, este campo é onde o usuário irá inserir o nome de usuário cadastrado dentro do software. Dentro deste campo é disponibilizado para o usuário, a utilização de todos os caracteres, pois trata-se de um login, que pode conter dados diversos.
Figura 50 – Realizando o login
Fonte – Autoria própria
No campo “DIGITE O NOME DO USUARIO” é onde o usuário irá inserir o nome cadastrado no sistema. O nome de usuário cadastrado para esse campo é “gerenteestoque”, para que o login ocorra corretamente é necessário que o nome digitadoseja inserido exatamente como descrito acima ( O nome de usuário pode ser alterado, basta entrar em contato com a empresa responsável), neste campo não é necessário que o usuário digite caracteres numéricos, nem espaços em branco, caso contrário o login não será realizado. Para validar o login digitado basta apertar a tecla enter do teclado.
9.2 Senha de acesso 
A Segunda tela de login conta com dois campos de preenchimento obrigatório, sendo que o primeiro foi preenchido com o login, o segundo campo é onde o usuário irá inserir a senha de acesso cadastrada dentro do software. Dentro deste campo é disponibilizado para o usuário, a utilização de todos os caracteres, pois trata-se de um login, que pode conter dados diversos.
Figura 51 – Segunda tela de login
Fonte – Autoria própria
No campo “DIGITE A SENHA DE ACESSO” é onde o usuário irá inserir a senha cadastrada no sistema. A senha cadastrada para esse campo é “123”, para que o login ocorra corretamente é necessário que a senha seja inserida exatamente como descrito acima (A senha pode ser alterada, basta entrar em contato com a empresa responsável), neste campo não é necessário que o usuário digite letras, caracteres especiais e nem espaços em branco, caso contrário o login não será realizado. Para validar a senha digitada basta apertar a teclada enter do teclado.
9.3 Código de acesso
A Terceira tela de login conta com três campos de preenchimento obrigatório, sendo que o primeiro foi preenchido com o login, o segundo campo foi preenchido com a senha de acesso, o terceiro campo é onde o usuário insere o código de acesso (nível de acesso definido pelo código) cadastrado dentro do software. Dentro deste campo é disponibilizado para o usuário, a utilização de todos os caracteres, pois trata-se de um login, que pode conter dados diversos.
Figura 52 – Código de acesso
Fonte – Autoria própria
No campo “DIGITE O CODIGO DE ACESSO”, o usuário insere o código de acesso cadastrado no sistema, este código serve para definir, qual o nível de acesso que o usuário tem. 
 Após o nome ter sido inserido, o software requisita ao usuário a senha de acesso definida dentro do software, inserindo a senha o terceiro campo obrigatório aparece, neste campo é onde o usuário digita o código de acesso, que também já está definido dentro do software. O código cadastrado para esse campo é “2”, para que o login ocorra corretamente é necessário que o código seja inserido exatamente como descrito acima, pois esse código corresponde ao nível de acesso gerencial para controle de estoque, caso seja digitado outro caractere o login não será validado, neste campo não é necessário que o usuário digite letras, caracteres especiais, nem espaços em branco, caso contrário o login não será realizado. Para validar o código digitado basta apertar a tecla enter do teclado.
9.4 Validação do login 
Para que o usuário tenha a acesso a todas as funções disponíveis para o seu login, é necessário que os três campos sejam preenchidos corretamente. 
Quando o usuário insere os três os campos obrigatórios, o software o direciona para a tela de confirmação de login, mostrando em tela se o usuário realizou o preenchimento corretamente.
Figura 53 – Usuário cadastrado
Fonte – Autoria própria
Conforme demostrado na figura acima, o usuário realizou o preenchimento de todos os campos obrigatórios corretamente, o que resulta no redirecionamento do mesmo para o menu principal, que contém todas as funções que o seu nível de acesso (definido no código de acesso) disponibiliza.
Quando o usuário não insere corretamente um ou mais campo obrigatórios, automaticamente quando a tentativa de login é efetuada, o mesmo é direcionado para a tela de login invalido, como demostrado na figura abaixo.
Figura 54 – Login invalido
Fonte – Autoria própria
Quando ocorre a tentativa com dados que não correspondem aos dados cadastrados no sistema, o usuário precisa realizar o preenchimento de todos os campos novamente, o software não indica em qual campo está o erro de login, visando um nível de segurança mais elevado, garantindo assim que somente usuários com permissão de acesso realizem o login no sistema. Para o usuário realizar o login novamente, basta apertar a tecla enter do teclado.
9.5 Opções da função
Com o login realizado corretamente, duas opções estão disponíveis dentro desta função, o usuário pode acessa-las digitando o número correspondente, a primeira opção corresponde a visualização de produtos em estoque, sendo selecionada com a utilização do número “1”, a segunda opção corresponde a função de inserir produtos no estoque, sendo selecionada com a utilização do número “2”.
Dentro deste campo é disponibilizado para o usuário, somente a utilização de caracteres numéricos, visando evitar erros provenientes de digitações invalidas.
Figura 55 – Opções do estoque
Fonte – Autoria própria
9.6 Visualizando produtos no estoque	
Quando o usuário seleciona a primeira opção, ele especifica que deseja somente visualizar os produtos que estão dentro do estoque. Com a primeira opção selecionada, é exibido para o usuário os produtos que fazem parte da produção das pizzas, cada produto que é exibido, contém um conjunto especifico de informações, este conjunto é composto por nome do produto, data de validade e quantidade do produto em estoque.
Figura 56 – Produtos para a produção das pizzas
Fonte – Autoria própria
9.7 Visualizando produtos no estoque 2
Dando sequência ao fluxo de execução da função, após o usuário visualizar em tela os produtos relacionados a produção das pizzas, novamente é exibido em tela duas opções para o usuário, sendo a primeira visualizar o estoque de bebidas, para acessa-la basta digitar o número “1” e a segunda para retornar ao menu principal, para acessa-la basta digitar o número “2”. Quando o usuário seleciona a opção correspondente a visualização das bebidas que estão em estoque, a tela de produtos do estoque é exibida novamente, mas somente contendo as bebidas cadastradas, as bebidas também possuem um conjunto de informações especificas, que são exibidas dentro deste quadrante da função, o conjunto é composto por nome do produto, data de validade e quantidade em estoque.
Figura 57 – Estoque de bebidas
Fonte – Autoria própria
 9.8 Inserindo produtos no estoque
Para realizar a inserção de produtos no estoque, é necessário, que o usuário selecione a opção correspondente no início da função. Quando a opção é selecionada, o usuário precisa informar qual a quantidade de produtos que deseja inserir (Parâmetro adicionado à função visando evitar retornos desnecessários), realizando assim a inserção de mais de um produto. A quantidade será validada, para verificar se o valor está dentro do valor mínimo e máximo definido no sistema. Caso o valor seja aceito o usuário precisa selecionar qual o produto será armazenado no estoque. Para facilitar a seleção dos produtos, este quadrante da função foi divido em duas partes (Devido à grande quantidade de produtos armazenados no estoque, a visualização de todos os produtos de uma só vez não é uma opção viável), sendo a primeira parte composta por todos os produtos relacionados à produção das pizzas, para acessa-la é necessário que o número “1” seja digitado e a segunda sendo composta pelas bebidas cadastradas no sistemas, para acessa-la é necessário que o número “2” seja digitado. Os produtos são identificados por códigos, cada produto tem seu código especifico para seleção.
Figura 58 – Seleção de produtos
Fonte – Autoria própria
9.9 Produção das pizzas
Quando o usuário seleciona a opção um, correspondente à os produtos para a produção das pizzas, a tela que contém todos os produtos deste quadrante é exibida, cada produto é composto por duas informações essências, sendo a primeira o nome do produto e a segunda o seu código, como dito anteriormente o usuário seleciona o produto desejado através da utilização do código do produto. Neste ponto da função está disponível para o usuário somente a utilização de caracteres numéricos, visandoa diminuição de erros provenientes de digitações invalidas. Para selecionar o produto desejado, o usuário precisa digitar o código correspondente, os códigos variam de “1” até “25”.
Figura 59 – Código para a seleção do produto
Fonte – Autoria própria
Conforme exibido na figura acima, o produto selecionado é o “PALMITO”, após o usuário selecionar o produto desejado, a tela informativa é exibida, passando para o usuário os valores que estão classificados como máximo e mínimo para a inserção de produtos. Para que a quantidade a ser inserida seja aceita, é necessário que o valor digitado esteja dentro dos valores estipulados pelo sistema. A próxima tela a ser exibida, informa para o usuário a quantidade do produto armazenado em estoque e requisita do usuário o valor que ele deseja inserir, dentro deste quadrante da função é disponibilizado para o usuário somente a utilização de caracteres numéricos, visando a diminuição de erros provenientes de digitações invalidas.
Figura 60 – Inserindo produtos
Fonte – autoria própria
Conforme dito anteriormente o programa está configurado para aceitar somente valores entre o mínimo e máximo exibido para o usuário, quando o usuário digita um valor invalido, uma mensagem de erro é exibida e programa requisita a inserção de um valor valido, caso o valor digitado seja confirmado e validado, o usuário visualizara em tela a quantidade de produto atualizada, contendo o valor digitado pelo mesmo.
Após a visualização do valor adicionado, é necessário que a tecla enter do teclado seja pressionada, para que o direcionamento para o próximo quadrante ocorra. 
Figura 61 – Valor aceito
Fonte – Autoria própria
9.9.1 Bebidas no estoque 
Para o usuário ter acesso a parte de inserção de bebidas no estoque, é necessário que a opção correspondente seja selecionada no início da função, após digitar a quantidade de produtos que deseja inserir. O processo de inserção de bebidas segue os mesmos princípios explicados anteriormente para as matérias primas relacionadas com a produção das pizzas.
Quando o usuário está dentro do quadrante responsável por fazer essa inserção, é necessário que o usuário selecione o produto que deseja inserir no estoque, a seleção ocorre através do código do produto, o usuário precisa digitar o código correto. Com o código digitado corretamente, o usuário visualiza a quantidade mínima e máxima definida pelo sistema para este produto, fica disponível também a quantidade deste produto atualmente em estoque. Para inserir o produto corretamente é necessário que a quantidade digitada esteja dentro dos padrões pré-definidos pelo sistema, a verificação de dados é executada, quando os dados digitados correspondem às especificações, é exibido para o usuário a quantidade que havia em estoque antes da inserção e também a quantidade após a inserção.
Figura 62 – Inserindo bebidas
Fonte – Autoria própria
Após a visualização do valor adicionado, é necessário que a tecla enter do teclado seja pressionada, para que a inserção de produtos seja finalizada. Com a finalização desta função o usuário é direcionado para a tela principal.
Guia de Instalação do Programa Pizzaria
Objetivo:
Mostrar o passo-a-passo para instalação do programa Pizzaria.
Atenção!!! Caso tenha dúvidas em relação ao procedimento de instalação do programa, sua utilização chame o pessoal do departamento de T.I.
Procedimentos:
1- Dê um duplo clique no arquivo pizzaria.sfx.exe.
 
Figura 1 Arquivo Pizzaria 
 Fonte Autoria Própria
Figura 2 – Clique em aceita
Fonte: Autoria própria
3)Nesse campo você pode escolher em qual pasta será instalado o programa clicando em Procurar... ou digitando o endereço na barra. 
4)Por padrão o programa Pizzaria é instalado em c:/Aquivos de Programa (x86) /pizzaria. 
5)Após escolher, clique em Extrair.
Figura 3 - Passos para extrair arquivo
1
3
2
Fonte: Autoria Própria
4 Pronto! O programa Pizzaria foi instalado e foi criado um atalho em sua Área de Trabalho. Basta um duplo-clique para começar usar o programa.
 Figura 4 - prontos mais atalho no desktop
Fonte: Autoria Própria
 5 Imagem da tela inicial do Programa Pizzaria.
Figura 5 - tela inicial do sistema 
Fonte: Autoria própria 
ANEXO CODIGO FONTE 
#include <iostream>
#include <string.h>
#include <cstdlib>
#include <conio.h>//para utilizar o getch()
#include <ctype.h>//para utilizar o isdigit()
#include <fstream>
#define MAX_CLIENTES 50
using namespace std;
struct cliente // struct para armazenar os clientes
{
	string Nome;
	string Endereco;
	string Telefone;
	string Cep;
	int codigo;
	int ver;
}cliente1[MAX_CLIENTES], clientecomp, cliente2[50]; // variavel do tipo clientes, com para parametro de armazenamento definido pela constante
struct Pizzas { // struct para criação das pizzas
	string nome;
	string tamanho;
	string ingredientes;
	string preco;
	int compra;
	// argumentos para facilitar o armazenamento e tambem para trabalhar com os dados da struct
	void insere(string stnome, string sttamanho, string stingredientes, string stpreco, int stcompra) {
		nome = stnome;
		tamanho = sttamanho;
		ingredientes = stingredientes;
		preco = stpreco;
		compra = stcompra;
	}
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void mostra1() {
		cout << "NOME...............: " << nome << "\n\n";
		cout << "INGREDIENTES.......: " << ingredientes << "\n\n";
		cout << "TAMANHO............: " << tamanho << "\n\n";
		cout << "PRECOS.............: " << preco << "\n\n";
	}
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void mostra2() {
		cout << "NOME...............: " << nome << "\n\n";
		cout << "INGREDIENTES.......: " << ingredientes << "\n\n";
		cout << "CODIGO PARA COMPRA.: " << compra << "\n\n";
	}
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void mostra3() {
		cout << "NOME...............: " << nome << "\n\n";
		cout << "TAMANHO............: " << tamanho << "\n\n";
		cout << "PRECOS.............: " << preco << "\n\n";
	}
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void mostra4() {
		cout << "NOME...............: " << nome << "\n\n";
		cout << "CODIGO PARA COMPRA.: " << compra << "\n\n";
	}
};
struct Bebidas {
	string tipo;
	string nome1;
	string ml;
	string sabor1;
	string preco1;
	int compra1;
	int precocomp;
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void insere2(string sttipo, string stnome1, string stml, string stsabor1, string stpreco1, int stcompra1, int stprecocomp) {
		tipo = sttipo;
		nome1 = stnome1;
		ml = stml;
		sabor1 = stsabor1;
		preco1 = stpreco1;
		compra1 = stcompra1;
		precocomp = stprecocomp;
	}
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void mostrabebidas() {
		cout << "NOME...............: " << nome1 << "\n\n";
		cout << "TIPO...............: " << tipo << "\n\n";
		cout << "ML.................: " << ml << "\n\n";
		cout << "SABOR..............: " << sabor1 << "\n\n";
		cout << "PRECOS.............: " << preco1 << "\n\n";
		cout << "CODIGO PARA COMPRA.: " << compra1 << "\n\n";
	}
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void mostrabebidas1() {
		cout << "NOME...............: " << nome1 << "\n\n";
		cout << "ML.................: " << ml << "\n\n";
		cout << "SABOR..............: " << sabor1 << "\n\n";
		cout << "PRECOS.............: " << preco1 << "\n\n";
	}
};
// variaveis do novo tipo criado por struct
Bebidas CocaCola, Fanta, Fanta1, Kuat, CocaCola1, CocaCola2, Skol, Brahma, Heineken, Imperio;
// variaveis do novo tipo criado por struct
Bebidas bebc[10];
// variaveis do novo tipo criado por struct
Pizzas Dacasa, Marguerita, Baiana,Bauru, Calabresa, Frangocatupiry, Mussarela, Brocolis, Lombo, Escarola, Quatroqueijos, Portuguesa;
struct Login {
	char username[20];
	char Passoword[10];
	int Codigol;
};
Login login, login1;// Variavael do tipo login
 // STRUCT PARA TRABALHO COM FUNCIONARIOS
struct funcionario {
	string nome;
	string funcao;
	string data;
	int pizzaria;
	void insfun(string stnome1, string stfuncao, string stdata, int stpizzaria) {
		nome = stnome1;
		funcao = stfuncao;
		data = stdata;
		pizzaria = stpizzaria;
	}
};
// VARIAVEIS DO TIPO FUNCIONARIO
funcionario funcionarios[10];
funcionario PEDRO, JOAO, MARIA, LEONARDO;
funcionario PAULO, LUCAS, JOANA, CARLOS;
funcionario MATHEUS, ROGERIO, MARTA, DAVI;
// STRUCT PARA CONTROLE DE ESTOQUE
struct estoque {
	string nome3;
	string validade;
	float quantidade;
	int codigoins;
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void insere3(string stnome, float stquantidade, string stvalidade, int stcodigoins) {
		nome3 = stnome;
		validade = stvalidade;
		quantidade = stquantidade;
		codigoins = stcodigoins;
	}
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void mostraest() {
		cout << "............................................................................";
		cout << "\nNOME :" << nome3 << "\n";
		cout << "\nVALIDADE :" << validade << "\n";
		cout << "\nQUANTIDADE :" << quantidade << "\n";
		cout << "............................................................................\n\n";
	}
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void mostraest1() {
		cout << "............................................................................";
		cout << "\nNOME :" << nome3 << "\n";
		cout << "\nCODIGO DO PRODUTO :" << codigoins;
		cout << "............................................................................\n\n";
	}
};
// STRUCT PARA CONTROLE DE ESTOQUE // ABATENDO A QUANTIDADE CORRETA CONFORME A VENDA
struct custos {
	string produtofinal;
	string precosprodutos;
	string fichatecnica;
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void ins(string stprodutofinal, string stprecoprodutos, string stfichatecnica) {
		produtofinal = stprodutofinal;
		precosprodutos = stprecoprodutos;
		fichatecnica = stfichatecnica;
	}
	// argumentos para facilitar o armazenamento e tambem tambem para trabalhar com os dados da struct
	void mos() {
		cout << "Ingredientes da massa : " << produtofinal << "\n\n";
		cout << "Preco dos ingredientes : " << precosprodutos << "\n\n";
	}
};
custos Massa, MassaM, MassaP, MassaG, dacasa, dacasaP, dacasaG, marguerita, margueritaP, margueritaG, baiana, baianaP, baianaG, bauru, bauruP, bauruG, calabresa, calabresaP, calabresaG;
custos frangocatupiry, frangocatupiryP, frangocatupiryG, mussarela, mussarelaP, mussarelaG, brocolis, brocolisP, brocolisG, lombo, lomboP, lomboG;
custos escarola, escarolaP, escarolaG, quatroqueijos, quatroqueijosP, quatroqueijosG, portuguesa, portuguesaP, portuguesaG;
estoque MOLHODETOMATE, MUSSARELA, PRESUNTO, OVOS, TOMATE, CEBOLA, CATUPIRY, AZEITONAS, PARMESAO, MANJERICAO, CALABRESA, FRANGO, BROCOLIS, BACON, LOMBO, ALHOFRITO, ESCAROLA, PROVOLONE, PALMITO;
estoque COCACOLA, FANTA, FANTA1, KUAT, COCACOLA1, COCACOLA2, SKOL, BRAHMA, HEINEKEN, IMPERIO;
estoque MASSA, FARINHA, ACUCAR, FERMENTO, SAL, OLEO, MANTEIGA;
// STRUCT PARA OBSERVAÇÕES E PEDIDOS MEIO A MEIO
struct pedido {
	string Obs;
	string Adicionais;
};
// VARIAVEIS GLOBAIS
int pizza1;
int pizzac;
int bebidasc;
int tamanho1 = 0;
int tamanho12 = 0;
int numero1 = 0;
int numero = 0;
float numero2 = 0;
int comprab = 0;
int mostrapedido[12];
int mostrapedido2[10];
int j;
// PROTOTIPAÇÃO DAS FUNÇÕES UTILIZADAS
void comprar(int venda, Pizzas teste[], Pizzas pz[]);
void comprar2(int venda1, Bebidas bebc[10], Bebidas be[]);
void cadastrar(int qtd, cliente cl[]);
void mostrar(int qtd, cliente cl[]);
void aceitarnum();
void aceitarnum1();
void grava();
int clientes(int qtd, cliente cl[]);
int insereEstoque(int qtd2, estoque Estoque[40], estoque est[]);
int mostrafun();
int cadastrafun(int qtd1, funcionario fn[]);
int moscli();
#define LIMPA_BUFFER cin.ignore(INT_MAX, '\n')
// FUNÇÃO PRINCIPAL
int main() {
	int qtd = 0;
	// ACEITAR CARACTERES ESPECIAIS
	setlocale(LC_ALL, "Portuguese");
	// STRUCT PIZZAS 
	Dacasa.insere("A MODA DA CASA", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, PRESUNTO, OVOS, CEBOLA, CATUPIRY, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00 ", 1);
	Marguerita.insere("MARGUERITA", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, RODELAS DE TOMATE, PARMESAO, MANJERICAO, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00 ", 2);
	Baiana.insere("BAIANA", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, CALABRESA MOIDA LEVEMENTE APIMENTADA, OVOS COZIDOS PICADOS, CEBOLA, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00 ", 3);
	Bauru.insere("BAURU", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, PRESUNTO, RODELAS DE TOMATE,OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00 ", 4);
	Calabresa.insere("CALABRESA", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, CALABRESA FATIADA, CEBOLA, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00 ", 5);
	Frangocatupiry.insere("FRANGO COM CATUPIRY", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, PEITO DE FRANGO DESFIADO LEVEMENTE TEMPERADO, CATUPIRY, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00 ", 6);
	Mussarela.insere("MUSSARELA", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA,OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00", 7);
	Brocolis.insere("BROCOLIS", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, BROCOLIS, BACON, CATUPIRY, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00", 8);
	Lombo.insere("LOMBO", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, LOMBO, CATUPIRY, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00", 9);
	Escarola.insere("ESCAROLA", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, ESCAROLA REFOGADA, ALHO, BACON, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00", 10);
	Quatroqueijos.insere("QUATRO QUEIJOS", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, PROVOLONE, PARMESAO, CATUPIRY, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00", 11);
	Portuguesa.insere("PORTUGUESA", "PEQUENO - MEDIO - GRANDE",
		"MOLHO DE TOMATE FRESCO, MUSSARELA, PRESUNTO , CEBOLA, OVOS, PALMITO, OREGANO E AZEITONAS PRETAS",
		"PEQUENO R$ : 10,00, MEDIO R$ : 15,00, GRANDE R$ : 25,00", 12);
	// VETOR PIZZZAS
	Pizzas teste[12] = { Dacasa, Marguerita, Baiana, Bauru, Calabresa, Frangocatupiry, Mussarela, Brocolis, Lombo, Escarola, Quatroqueijos, Portuguesa };
	// STRUCT CUSTOS
	Massa.ins("PARA 5KG DE MASSA\n", "\nFARINHA ANACONDA 5KG = R$ 11,00\n OVOS 30 UNIDADES = R$ 12,00\n SAL 1KG = R$ 3,00\nACUCAR 1KG = R$ 4,00\n OLEO DE SOJA = R$ 4,00\n MANTEIGA 5KG = R$ 150,00\n FERMENTO FRESCO 500gr = R$ 5,00\n",
		" 5kg de farinha\n 5 ovos\n 50 grs de sal\n 30gr de acucar\n 120ml de oleo\n 200gr de manteiga\n 50gr de fermento fresco\n");
	MassaP.fichatecnica = ("300 gr de massa\n");
	MassaM.fichatecnica = ("400 gr de massa\n");
	MassaG.fichatecnica = ("500 gr de massa\n");
	dacasa.ins("PIZZA DACASA\n", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\n PRESUNTO 1KG = R$ 15,00\nOVOS 30 UNIDADES = R$ 12,00\n CEBOLA 1KG = R$ 5,00\nCATUPIRY 1KG = R$ 10,00\nAZEITONASPRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr de presunto\n 2 unidades de ovos\n50gr de cebola\n100gr de catupiry\n50gr de azeitonas");
	dacasaP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr de presunto\n 1 unidades de ovos\n25gr de cebola\n50gr de catupiry\n25gr de azeitonas");
	dacasaG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr de presunto\n 4 unidades de ovos\n100gr de cebola\n200gr de catupiry\n100gr de azeitonas");
	marguerita.ins("PIZZA MARGUERITA\n", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nTOMATE 1KG = R$ = 5,00\nPARMESÃO 1KG = R$ = 20,00\nMANJERIÇÃO 100gr = R$ 1,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr tomate rodela\n50gr de parmesão\n10gr manjericão\n50gr de azeitonas");
	margueritaP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr tomate rodela\n25gr de parmesão\n5gr manjericão\n25gr de azeitonas");
	margueritaG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr tomate rodela\n100gr de parmesão\n20gr manjericão\n100gr de azeitonas");
	baiana.ins("PIZZA BAIANA\n", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nCALABRESA 1KG = R$ = 10,00\n OVOS 30 UNIDADES = R$ 12,00\nCEBOLA 1KG = R$ 5,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr de calabresa\n 2 unidades de ovos\n50gr de cebola\n50gr de azeitonas");
	baianaP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr de calabresa\n 1 unidades de ovos\n25gr de cebola\n25gr de azeitonas");
	baianaG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr de calabresa\n 4 unidades de ovos\n100gr de cebola\n100gr de azeitonas");
	bauru.ins("PIZZA BAURU\n", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nPRESUNTO 1KG = R$ 15,00\nTOMATE 1KG = R$ = 5,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr de presunto\n100gr tomate rodela\n50gr de azeitonas");
	bauruP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr de presunto\n50gr tomate rodela\n25gr de azeitonas");
	bauruG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr de presunto\n200gr tomate rodela\n100gr de azeitonas");
	calabresa.ins("PIZZA CALABRESA\n", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nCALABRESA 1KG = R$ = 10,00\nCEBOLA 1KG = R$ 5,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr de calabresa\n50gr de cebola\n50gr de azeitonas");
	calabresaP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr de calabresa\n25gr de cebola\n25gr de azeitonas");
	calabresaG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr de calabresa\n100gr de cebola\n100gr de azeitonas");
	frangocatupiry.ins("PIZZA FRANGO COM CATUPIRY\n", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nPEITO DE FRANGO 1KG = R$ 10,00\nCATUPIRY 1KG = R$ 10,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr de peito de frango\n100gr de catupiry\n50gr de azeitonas");
	frangocatupiryP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr de peito de frango\n50gr de catupiry\n25gr de azeitonas");
	frangocatupiryG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr de peito de frango\n200gr de catupiry\n100gr de azeitonas");
	mussarela.ins("PIZZA MUSSARELA\n", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n200gr de mussarela\n50gr de azeitonas");
	mussarelaP.fichatecnica = ("\n50gr de molho de tomate\n100gr de mussarela\n25gr de azeitonas");
	mussarelaG.fichatecnica = ("\n200gr de molho de tomate\n400gr de mussarela\n100gr de azeitonas");
	brocolis.ins("PIZZA DE BROCOLIS\n", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nBROCOLIS 1KG = R$ 10,00\nBACON 1KG = R$ 20,00\nCATUPIRY 1KG = R$ 10,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr de brocolis\n100gr de bacon\n100gr de catupiry\n50gr de azeitonas");
	brocolisP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr de brocolis\n50gr de bacon\n50gr de catupiry\n25gr de azeitonas");
	brocolisG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr de brocolis\n200gr de bacon\n200gr de catupiry\n100gr de azeitonas");
	lombo.ins("PIZZA DE LOMBO", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nLOMBO 1KG = R$ 10,00\nCATUPIRY 1KG = R$ 10,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr de lombo\n100gr de catupiry\n50gr de azeitonas");
	lomboP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr de lombo\n50gr de catupiry\n25gr de azeitonas");
	lomboG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr de lombo\n200gr de catupiry\n100gr de azeitonas");
	escarola.ins("PIZZA DE ESCAROLA", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nESCAROLA 1KG = R$ 5,00\nALHO FRITO 1KG = R$ 10,00\nBACON 1KG = R$ 20,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr de escarola\n50gr de alho frito\n100gr de bacon\n50gr de azeitonas");
	escarolaP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr de escarola\n25gr de alho frito\n50gr de bacon\n25gr de azeitonas");
	escarolaG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr de escarola\n100gr de alho frito\n200gr de bacon\n100gr de azeitonas");
	quatroqueijos.ins("PIZZA DE QUATRO QUEIJOS", "MOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00\nPROVOLONE 1KG = R$ 30,00\nPARMESÃO 1KG = R$ = 20,00\n\nCATUPIRY 1KG = R$ 10,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n50gr de provolone\n50gr de parmesão\n100gr de catupiry\n50gr de azeitonas");
	quatroqueijosP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n25gr de provolone\n25gr de parmesão\n50gr de catupiry\n25gr de azeitonas");
	quatroqueijosG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n100gr de provolone\n100gr de parmesão\n200gr de catupiry\n100gr de azeitonas");
	portuguesa.ins("PIZZA PORTUGUESA", "\nMOLHO DE TOMATE 1KG = R$ 10,00\n MUSSARELA 1KG = R$ 20,00n PRESUNTO 1KG = R$ 15,00\nOVOS 30 UNIDADES = R$ 12,00\n CEBOLA 1KG = R$ 5,00\nPALMITO 1KG = R$ 20,00\nAZEITONAS PRETAS 1KG = R$ 20,00\n",
		"\n100gr de molho de tomate\n100gr de mussarela\n100gr de presunto\n 2 unidades de ovos\n50gr de cebola\n100gr de palmito\n50gr de azeitonas");
	portuguesaP.fichatecnica = ("\n50gr de molho de tomate\n50gr de mussarela\n50gr de presunto\n 1 unidades de ovos\n25gr de cebola\n50gr de palmito\n25gr de azeitonas");
	portuguesaG.fichatecnica = ("\n200gr de molho de tomate\n200gr de mussarela\n200gr de presunto\n 4 unidades de ovos\n100gr de cebola\n200gr de palmito\n25gr de azeitonas");
	// struct estoque recebendo valores
	FARINHA.insere3("FARINHA\n", 4000, "30 DIAS\n", 1);
	ACUCAR.insere3("AÇUCAR\n", 4000, "30 DIAS\n", 2);
	FERMENTO.insere3("FERMENTO\n", 1000, "30 DIAS\n", 3);
	SAL.insere3("SAL\n", 1000, "30 DIAS\n", 4);
	OLEO.insere3("ÓLEO", 4000, "30 DIAS\n", 5);
	MANTEIGA.insere3("MANTEIGA\n", 1000, "30 DIAS\n", 6);
	// struct estoque recebendo valores
	MASSA.insere3("MASSA PRONTA\n", 0, "1 DIA\n", 0);
	MOLHODETOMATE.insere3("MOLHO DE TOMATE\n", 4000, "3 DIAS\n", 7);
	MUSSARELA.insere3("MUSSARELA\n", 6000, "3 DIAS\n", 8);
	PRESUNTO.insere3("PRESUNTO\n", 4000, "3 DIAS\n", 9);
	OVOS.insere3("OVOS\n", 100, "7 DIAS\n", 10);
	TOMATE.insere3("TOMATE\n", 4000, "3 DIAS\n", 11);
	CEBOLA.insere3("CEBOLA\n", 4000, "3 DIAS\n", 12);
	CATUPIRY.insere3("CATUPIRY\n", 4000, "3 DIAS\n", 13);
	AZEITONAS.insere3("AZEITONAS\n", 1000, "3 DIAS\n", 14);
	PARMESAO.insere3("PARMESÃO\n", 4000, "3 DIAS\n",15);
	MANJERICAO.insere3("MANJERICÃO\n", 3000, "3 DIAS\n", 16);
	CALABRESA.insere3("CALABRESA\n", 4000, "3 DIAS\n", 17);
	FRANGO.insere3("PEITO DE FRANGO\n", 4000, "3 DIAS\n", 18);
	BROCOLIS.insere3("BROCOLIS\n", 4000, "3 DIAS\n", 19);
	BACON.insere3("BACON\n", 4000, "3 DIAS\n", 20);
	LOMBO.insere3("LOMBO\n", 4000, "3 DIAS\n", 21);
	ALHOFRITO.insere3("ALHO FRITO\n", 4000, "7 DIAS\n", 22);
	ESCAROLA.insere3("ESCAROLA\n", 4000, "3 DIAS\n", 23);
	PROVOLONE.insere3("PROVOLONE\n", 4000, "3 DIAS\n", 24);
	PALMITO.insere3("PALMITO\n", 4000, "3 DIAS\n", 25);
	// struct estoque recebendo valores
	COCACOLA.insere3("COCA-COLA\n", 100, "30 DIAS\n", 26);
	FANTA.insere3("FANTA LARANJA\n", 50, "30 DIAS\n", 27);
	FANTA1.insere3("FATA UVA \n", 50, "30 DIAS\n", 28);
	KUAT.insere3("KUAT GUARANA\n", 50, "30 DIAS\n", 29);
	COCACOLA1.insere3("COCA-COLA ZERO\n", 50, "30 DIAS\n", 30);
	COCACOLA2.insere3("COCA-COLA 2 LITROS\n", 100, "30 DIAS\n", 31);
	SKOL.insere3("CERVEJA SKOL\n", 50, "30 DIAS\n", 32);
	BRAHMA.insere3("CERVEJA BRAHMA\n", 50, "30 DIAS\n", 33);
	HEINEKEN.insere3("CERVEJA HEINEKEN\n", 50, "30 DIAS\n", 34);
	IMPERIO.insere3("CERVEJA IMPERIO\n", 50, "30 DIAS\n", 35);
	//criando vetor de estoque com todos os produtos
	estoque Estoque[40] = { MOLHODETOMATE, MUSSARELA, PRESUNTO, OVOS,TOMATE,CEBOLA,CATUPIRY,AZEITONAS,PARMESAO,MANJERICAO,CALABRESA,FRANGO,BROCOLIS,BACON,LOMBO,ALHOFRITO,ESCAROLA,PROVOLONE, PALMITO,
COCACOLA, FANTA, FANTA1, KUAT, COCACOLA1,COCACOLA2, SKOL, BRAHMA, HEINEKEN, IMPERIO,MASSA,FARINHA,ACUCAR,FERMENTO,SAL,OLEO,MANTEIGA };
	// struct bebidas recebendo valores	
	CocaCola.insere2("REFRIGERANTE", "COCA COLA", "350 ML", "COLA", "R$ - 5,00 REAIS", 1, 5);
	Fanta.insere2("REFRIGERANTE", "FANTA", "350 ML", "LARANJA", "R$ - 5,00 REAIS", 2, 5);
	Fanta1.insere2("REFRIGERANTE", "FANTA", "350 ML", "UVA", "R$ - 5,00 REAIS", 3, 5);
	Kuat.insere2("REFRIGERANTE", "KUAT", "350 ML", "GUARANA", "R$ - 5,00 REAIS", 4, 5);
	CocaCola1.insere2("REFRIGERANTE", "COCA COLA ZERO", "350 ML", "COLA", "R$ - 5,00 REAIS", 5, 5);
	CocaCola2.insere2("REFRIGERANTE", "COCA COLA", "2 LITROS", "COLA", "R$ - 10,00 REAIS", 6, 10);
	Skol.insere2("CERVEJA", "SKOL", "350 ML", "PILSEN", "R$ - 5,00 REAIS", 7, 5);
	Brahma.insere2("CERVEJA", "BRAHMA", "350 ML", "PILSEN", "R$ - 5,00 REAIS", 8, 5);
	Heineken.insere2("CERVEJA", "HEINEKEN", "350 ML", "PURO MALTE", "R$ - 5,00 REAIS", 9, 5);
	Imperio.insere2("CERVEJA", "IMPERIO", "350 ML", "PURO MALTE", "R$ - 5,00 REAIS", 10, 5);
	Bebidas bebc[10] = { CocaCola, Fanta, Fanta1, Kuat, CocaCola1,CocaCola2, Skol, Brahma, Heineken, Imperio };
	// adicionando a produção diaria da massa e abatendo as quantidades dos produtos do estoque
	MASSA.quantidade = MASSA.quantidade + 10000;
	if (MASSA.quantidade == 10000) {
		FARINHA.quantidade = FARINHA.quantidade - 10000;
		ACUCAR.quantidade = ACUCAR.quantidade - 60;
		OVOS.quantidade = OVOS.quantidade - 10;
		SAL.quantidade = SAL.quantidade - 100;
		OLEO.quantidade = OLEO.quantidade - 240;
		MANTEIGA.quantidade = MANTEIGA.quantidade - 400;
		FERMENTO.quantidade = FERMENTO.quantidade - 100;
	}
	//struct funcionario recebendo dados
	PEDRO.insfun("PEDRO HENRIQUE", "PIZZAIOLO", "03/06/2018", 1);
	JOAO.insfun("JOÃO DA SILVA", "PIZZAIOLO", "04/12/2017", 1);
	MARIA.insfun("MARIA DO CARMO", "CAIXA", "07/08/2017", 1);
	LEONARDO.insfun("LEONARDO HENRIQUE", "AUXILIAR", "09/03/2019", 1);
	PAULO.insfun("PAULO MARTINS", "PIZZAIOLO", "09/03/2019", 2);
	LUCAS.insfun("LUCAS SOUZA", "PIZZAIOLO", "12/05/2017", 2);
	JOANA.insfun("JOANA APARECIDA", "CAIXA", "08/08/2019", 2);
	CARLOS.insfun("CARLOS EDUARDO", "AUXILIAR", "02/12/2018", 2);
	MATHEUS.insfun("MATHEUS NASCIMENTO", "PIZZAIOLO", "15/08/2017", 3);
	ROGERIO.insfun("ROGERIO CASTRO", "PIZZAIOLO", "12/06/2018", 3);
	MARTA.insfun("MARTA DE SOUZA", "CAIXA", "09/08/2018", 3);
	DAVI.insfun("DAVI GOMES", "AUXILIAR", "07/05/2018", 3);
	// LENDO CLIENTES CADASTRADOS PARA O PROGRAMA INICIAR COM OS CLIENTES JÁ CADASTRADOS
	fstream clientetes;
	clientetes.open("clientes.txt", fstream::in | fstream::app); // abrindo o arquivo
	if (clientetes.is_open()) { // teste de arquivo aberto
		string linha;
		int numlinha = 1;
		while (getline(clientetes, linha)) {//Rotina de leitura
			if (numlinha % 6 == 1) {
				cliente2[j].Nome = linha;
				cliente1[j].Nome = cliente2[j].Nome;
			}
			// LEITURA DE CADA LINHA
			else if (numlinha % 6 == 2) {
				cliente2[j].Endereco = linha;
				cliente1[j].Endereco = cliente2[j].Endereco;
			}
			// LEITURA DE CADA LINHA
			else if (numlinha % 6 == 3) {
				cliente2[j].Telefone = linha;
				cliente1[j].Telefone = cliente2[j].Telefone;
			}
			// LEITURA DE CADA LINHA
			else if (numlinha % 6 == 4) {
				cliente2[j].Cep = linha;
				cliente1[j].Cep = cliente2[j].Cep;
			}
			// LEITURA DE CADA LINHA
			else if (numlinha % 6 == 5) {
				int n;
				n = atoi(linha.c_str());
				cliente2[j].codigo = n;
				cliente1[j].codigo = cliente2[j].codigo;
				j++;
			}
			numlinha++;
		}
	}
	clientetes.close();
	// LEITURA DE DADOS DO ARQUIVO PARA ATUALIZAÇÃO DE ESTOQUE, MESMO QUANDO O PROGRAMA É REINICIADO
	/*
		fstream Estoque3; // definido como fstream para trabalhar tanto com escrita como leitrura dentro do arquivo txt
		Estoque3.open("estoque3.txt",fstream::in| fstream::app); // abrindo o arquivo
			if(Estoque3.is_open()){ // teste de arquivo aberto
			string linha1;
				int numlinha1=1;
			while(getline(Estoque3,linha1)){//Rotina de leitura
			if(numlinha1%2== 1){
				MOLHODETOMATE.quantidade = atof(linha1.c_str());
			}
				numlinha1++;
					if(numlinha1%2== 1){
				MUSSARELA.quantidade = atof(linha1.c_str());
			}
				PRESUNTO,
				OVOS,
				TOMATE,
				CEBOLA,
				CATUPIRY,
				AZEITONAS,
				PARMESAO,
				MANJERICAO,
				CALABRESA,
				FRANGO,
				BROCOLIS,
				BACON,
				LOMBO,
				ALHOFRITO
				ESCAROLA,
				PROVOLONE,
				 PALMITO;
			cliente2[j].Nome = linha;
		cout << cliente2[j].Nome << "\n";
			cliente1[j].Nome=cliente2[j].Nome;
	}
	else if(numlinha%6 == 2){
		cliente2[j].Endereco = linha;
	cout << cliente2[j].Endereco<<"\n";
		cliente1[j].Endereco=cliente2[j].Endereco;
	}
	else if(numlinha%6 == 3){
		cliente2[j].Telefone = linha;
		cout << cliente2[j].Telefone<<"\n";
	cliente1[j].Telefone=cliente2[j].Telefone;
	}
	else if(numlinha%6 == 4){
			cliente2[j].Cep = linha;
			cout << cliente2[j].Cep<<"\n";
	cliente1[j].Cep=cliente2[j].Cep;
			}
	else if(numlinha%6 == 5){
	int n;
	 n= atoi(linha.c_str());
		cliente2[j].codigo=n;
		cout << cliente2[j].codigo<<"\n";
	cliente1[j].codigo=cliente2[j].codigo;
				j++;
	}
	numlinha++;
	}
		}else{
		cout <<"Nao foi possivel abir o arquivo"<<endl;
		}
		Estoque3.close();
			cout << MOLHODETOMATE.quantidade <<"\n";
				cout << MUSSARELA.quantidade <<"\n";
				*/
				// função para gravar dados pre-definidos no arquivo desiguinado
	grava();
	// variveis para login de vendas
	int codAdm = 1;
	char loginAdm[] = "operadorvendas";
	char PassaAdm[] = "123";
	char senha[10];
	// LOGIN GERENCIAL
	int codAdm1 = 2;
	char loginAdm1[] = "gerenteestoque";
	char PassaAdm1[] = "123";
	char senha1[10];
	// PROGRAMA INICIADO APÓS A INSERÇÃO DE DADOS
	// PRIMEIRA TELA DO PROGRAMA
	cout << "\n" << endl;
	cout << "\t\t\t\t ____________________________________________________ " << endl;
	cout << "\t\t\t\t| |" << endl;
	cout << "\t\t\t\t|====================================================|" << endl;
	cout << "\t\t\t\t| |" << endl;
	cout << "\t\t\t\t| PROGRAMA INICIADO COM SUCESSO |" << endl;
	cout << "\t\t\t\t| |" << endl;
	cout << "\t\t\t\t|====================================================|" << endl;
	cout << "\t\t\t\t|____________________________________________________|" << endl;
	// CAMPO ONDE O USUÁRIO DIGITA O NOME DE USUÁRIO
	cout << "\t\t\t\t ____________________________________________________ " << endl;
	cout << "\t\t\t\t||" << endl;
	cout << "\t\t\t\t| INSIRA O LOGIN PARA CONTINUAR |" << endl;
	cout << "\t\t\t\t|____________________________________________________|" << endl;
	cout << "\t\t\t\t| |" << endl;
	cout << "\t\t\t\t|DIGITE O NOME DO USUARIO : ";
	cin >> login.username;
	cout << "\t\t\t\t|____________________________________________________|" << endl;
	// SENHA DO USUÁRIO
	cout << "\t\t\t\t ____________________________________________________ " << endl;
	cout << "\t\t\t\t| |" << endl;
	cout << "\t\t\t\t|DIGITE A SENHA DE ACESSO : ";
	// MASCARA DE SENHA
	int i;
	fflush(stdin);
	for (i = 0; i < 3; i++) {
		senha[i] = getch();
		putchar('*');
		login.Passoword[i] = senha[i];
	}
	getch();
	// LOGIN PARA NIVEL DE ACESSO
	cout << "\n\t\t\t\t|____________________________________________________|" << endl;
	cout << "\t\t\t\t ____________________________________________________ " << endl;
	cout << "\t\t\t\t| |" << endl;
	cout << " \t\t\t\t|DIGITE A CODIGO DE ACESSO : ";
	cin >> login.Codigol;
	cout << "\t\t\t\t|____________________________________________________|" << endl;
	cout << "\n\n \t\t\t\t"; system("pause");
	// LOGIN INVALIDO
	while (!(strcmp(login.username, loginAdm) == 0) || (!strcmp(login.Passoword, PassaAdm) == 0) || !(codAdm == login.Codigol)) {
		system("cls");
		cout << "\n\n\n";
		cout << "\t\t\t\t _____________________________________________________" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\n\n\t\t\t\t|=====================================================|" << endl;
		cout << "\t\t\t\t| **** USUÁRIO INVALIDO **** |" << endl;
		cout << "\t\t\t\t| -> PRESSIONE ENTER PARA RETORNAR AO LOGIN NOVAMENTE |" << endl;
		cout << "\t\t\t\t|_____________________________________________________|";
		getch();
		cin.clear();
		cin.ignore(INT_MAX, '\n');
		system("cls");
		return main();
	}
	// LOGIN VALIDO
	while ((strcmp(login.username, loginAdm) == 0) && (strcmp(login.Passoword, PassaAdm) == 0) && (codAdm == login.Codigol)) {
		cout << endl;
		system("cls");
		cout << "\n\n\n";
		cout << "\t\t\t\t _____________________________________________________" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|=====================================================|" << endl;
		cout << "\t\t\t\t| **** USUÁRIO CADASTRADO NO SISTEMA!! **** |" << endl;
		cout << "\t\t\t\t| -> PRESSIONE ENTER PARA ABRIR O MENU! |" << endl;
		cout << "\t\t\t\t|_____________________________________________________|" << endl;
		getch();
		system("cls");
		do {
			// TELA PRINCIPAL QUE CONTÉM TODAS AS FUNÇÕES 
			cout << "\n" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| PIZZARIA FAST |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| ESCOLHA A OPCAO DESEJADA |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [1] PARA - CADASTRAR CLIENTES |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [2] PARA - REALIZAR UM PEDIDO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [3] PARA - VISUALIZAR OS CARDAPIOS |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [4] PARA - ÁREA GERENCIAL |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| SELECIONE A OPÇÃO DESEJADA |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			aceitarnum();
			// SELECIONANDO OPÇÃO
		} while (numero < 1 || numero > 4);
		// CADASTRO DE CLIENTES
		while (numero == 1) {
			do {
				system("cls");
				cout << "\n\n\n\n";
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t| MENU PARA CADASTRO DE CLIENTES |" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| QUANTOS CLIENTES VÃO SER CADASTRADOS |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				aceitarnum();
				qtd = numero;
				// OPÇÃO INVALIDA						
				if (qtd == 0) {
					cout << "\n\n\n\n";
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| DIGITE UMA OPÇÃO VALIDA |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| MINIMO 1 E MAXIMO 2 CLIENTES POR VEZ |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
				}
				// MINIMO E MAXIMO PARA O CADASTRO
			} while (qtd < 1 || qtd > 2);
			system("cls");
			cliente* cl = new cliente[qtd];
			cadastrar(qtd, cl);
			mostrar(qtd, cl);
			getch();
			system("cls");
			numero = 0;
		}
		// SEGUNDA FUNÇÃO
		while (numero == 2) {
			int client = 0;
			// SAIR DO LOOP SOMENTE COM OPÇÃO VALIDA
			do {
				system("cls");
				int condicao = 0;
				cout << "\n\n\n\n";
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t| MENU DE PEDIDOS|" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| O CLIENTE JA ESTA CADASTRADO ? |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| DIGITE [1] - PARA SIM |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| DIGITE [2] - PARA NÃO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				aceitarnum();
				client = numero;
			} while (client < 1 || client > 2);
			// CLIENTE NÃO CADASTRADO
			if (client == 2) {
				cout << "\n\n\n\n";
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| REALIZE O CADASTRO NO SISTEMA |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				system("pause");
				system("cls");
				return main();
			}
			else {
				cliente* cl = new cliente[qtd];
				clientes(qtd, cl);
				// VARIFICAÇÃO DE CODIGO VALIDA
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| PRESSIONE ENTER PARA CONTINUAR |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				getch();
			}
			// INICIO DO PEDIDO, CLIENTE VINCULADO AO PEDIDO	
			system("cls");
			cout << "\n\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| MENU DE PEDIDOS |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CARDAPIO DA PIZZARIA FAST |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CARDAPIO DE PIZZAS |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| PRESSIONE ENTER PARA VISUALIZAR |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			getch();
			system("cls");
			// CARDAPIO DE PIZZAS
			int venda;
			int venda1;
			Dacasa.mostra2();
			cout << "\n";
			Marguerita.mostra2();
			cout << "\n";
			Baiana.mostra2();
			cout << "\n";
			Bauru.mostra2();
			cout << "\n";
			Calabresa.mostra2();
			cout << "\n";
			Frangocatupiry.mostra2();
			cout << "\n";
			Mussarela.mostra2();
			cout << "\n";
			Brocolis.mostra2();
			cout << "\n";
			Lombo.mostra2();
			cout << "\n";
			Escarola.mostra2();
			cout << "\n";
			Quatroqueijos.mostra2();
			cout << "\n";
			Portuguesa.mostra2();
			cout << "\n";
			int verif = 0;
			// SAIR DO LOOP SOMENTE QUANDO A QUANTIDADE FOR VALIDA
			do {
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| QUANTAS PIZZAS DESEJA PEDIR HOJE ? |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				aceitarnum();
				venda = numero;
				numero = 0;
				system("cls");
				// ULTRAPASSOU O VALOR MAXIMO
				if (venda > 20) {
					cout << "\n\n\n\n";
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t| MENU DE PEDIDOS |" << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| ESTA QUANTIDADE NÃO ESTA INDISPONIVEL PARA A VENDA |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					system("pause");
					system("cls");
				}
			} while (venda == 21 || venda > 21);
			// VENDA SOMENTE COM BEBIDAS
			if (venda == 0) {
				do {
					system("cls");
					cout << "\n\n\n\n";
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t| MENU DE PEDIDOS |" << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| O PEDIDO SERÁ COMPOSTO SOMENTE POR BEBIDAS ? |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| DIGITE [1] - PARA SIM |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| DIGITE [2] - PARA NÃO |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					aceitarnum();
					verif = numero;
					numero = 0;
					// VENDA VAZIA, NÃO PODE SER REALIZADA
					if (verif == 2) {
						system("cls");
						cout << "\n\n\n\n";
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| |" << endl;
						cout << "\t\t\t\t|============================================================|" << endl;
						cout << "\t\t\t\t| MENU DE PEDIDOS |" << endl;
						cout << "\t\t\t\t| |" << endl;
						cout<< "\t\t\t\t|============================================================|" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| FORMA INVALIDA DE PEDIDO |" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						return main();
					}
					else if (verif == 1);
				} while (!(verif == 1 || verif == 2));
			}
			else {
			}
			// FUNÇÃO PARA A COMPRA DAS PIZZAS, COM QUATIDADE DIFINIDA COMO PARAMETRO
			Pizzas* pz = new Pizzas[venda];
			cin.clear();
			cin.ignore(INT_MAX, '\n');
			system("cls");
			comprar(venda, teste, pz);
			// PEDIDO DE BEBIDAS
			cout << "\n\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| MENU DE PEDIDOS |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CARDAPIO DE BEBIDAS |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| PRESSIONE ENTER PARA VISUALIZAR |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			getch();
			// CARDAPIO DE BEBIDAS			
			system("cls");
			CocaCola.mostrabebidas();
			cout << "\n";
			Fanta.mostrabebidas();
			cout << "\n";
			Fanta1.mostrabebidas();
			cout << "\n";
			Kuat.mostrabebidas();
			cout << "\n";
			CocaCola1.mostrabebidas();
			cout << "\n";
			CocaCola2.mostrabebidas();
			cout << "\n";
			Skol.mostrabebidas();
			cout << "\n";
			Brahma.mostrabebidas();
			cout << "\n";
			Heineken.mostrabebidas();
			cout << "\n";
			Imperio.mostrabebidas();
			cout << "\n";
			// QUANTIDADE DE BEBIDAS A SEREM INSERIDAS NO PEDIDO
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| QUANTAS BEBIDAS DESEJA PEDIR HOJE ? |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			aceitarnum();
			venda1 = numero;
			numero = 0;
			system("cls");
			// PEDIDO SEM BEBIDAS E SEM PIZZAS
			if (venda == 0 && venda1 == 0) {
				system("cls");
				cout << "\n\n\n\n";
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t| MENU DE PEDIDOS |" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| FORMA INVALIDA DE PEDIDO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| PRESSIONE ENTER PARA REALIZAR UM NOVO PEDIDO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				getch();
				system("cls");
				return main();
			}
			// FUNÇÃO PARA A COMPRA DAS BEBIDAS
			Bebidas* be = new Bebidas[venda1];
			comprar2(venda1, bebc, be);
			// TODOS OS DADOS DO PEDIDO SÃO EXIBIDOS NESTE PONTO, CLIENTE PRODUTOS E O TOTAL DE COMPRA
			// É NECESSARIO REALIZAR A VERIFICAÇÃO DE PEDIDO
			int cliente;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| MENU DE PEDIDOS |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| A COMPRA FOI EFETUADA POR |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| 	 " << endl;
			cout << "\t\t\t\t| NOME: " << clientecomp.Nome << endl;
			cout << "\t\t\t\t| ENDERECO: " << clientecomp.Endereco << endl;
			cout << "\t\t\t\t| TELEFONE: " << clientecomp.Telefone << endl;
			cout << "\t\t\t\t| CEP: " << clientecomp.Cep << endl;
			cout << "\t\t\t\t| CODIGO: " << clientecomp.codigo << endl;
			cout << "\t\t\t\t|____________________________________________________________" << endl;
			for (int i = 0; i < venda; i++) {
				int j = 0;
				j = mostrapedido[i];
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| PIZZA COMPRADA NO PEDIDO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				teste[j].mostra3();
			}
			for (int i = 0; i < venda1; i++) {
				int k = 0;
				k = mostrapedido2[i];
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| BEBIDA COMPRADA NO PEDIDO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				bebc[k].mostrabebidas();
			}
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| VALOR TOTAL E : " << tamanho12 << " REAIS" << endl;
			cout << "\t\t\t\t|____________________________________________________________" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [1] - PARA SIM |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [2] - PARA NÃO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			aceitarnum();
			cliente = numero;
			numero = 0;
			// SE O PEDIDO ESTIVER CORRETO, O MENU DE PAGAMENTO É EXIBIDO
			if (cliente == 1) {
				cout << "\t\t\t\t ____________________________________________________________" << endl;
				cout << "\t\t\t\t| PROSSIGA PARA O MENU DE PAGAMENTO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				// O PEDIDO NÃO ESTÁ CORRETO
			}
			else {
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| INICIE NOVAMENTE O PEDIDO DO CLIENTE |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				system("pause");
				system("cls");
				return main();
			}
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| MENU DE PAGAMENTOS |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| VALOR TOTAL DA COMPRA É : " << tamanho12 << " REAIS " << endl;
			cout << "\t\t\t\t|____________________________________________________________" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| PRESSIONE ENTER PARA CONTINUAR |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			getch();
			// VARIAVEIS PARA O PAGAMENTO
			int tamanho13 = 0;
			tamanho13 = tamanho12;
			bool pagOk = false;
			int pag;
			int pag1 = 0;
			// LOOP DO PAGAMENTO
			while (!pagOk)
			{
				tamanho12 = tamanho12 - tamanho12 + tamanho13;
				system("cls");
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t| MENU DE PAGAMENTOS |" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| DIGITE A FORMA DE PAGAMENTO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| DIGITE [1] - PARA CARTAO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| DIGITE [2] - PARA DINHEIRO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				aceitarnum();
				pag = numero;
				numero = 0;
				pagOk = pag == 1 || pag == 2;
			}
			// PAGAMENTO COM CARTÃO, SIMULA A UTILIZAÇÃO DE UMA MAQUINA DE CARTÕES FORA DO PROGRAMA
			if (pag == 1) {
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t| MENU DE PAGAMENTOS |" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| REALIZE O PAGAMENTO UTILIZANDO A MAQUINA DE CARTÕES |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\n\n";
				system("pause");
				system("cls");
				return main();
				// PAGAMENTO EM DINHEIRO
			}
			else if (pag == 2) {
				do {
					system("cls");
					int pag12 = 0;
					pag1 = pag1 - pag1 + pag12;//zerar variavel
					tamanho12 = tamanho12 - tamanho12 + tamanho13;//zerar variavel
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t| MENU DE PAGAMENTOS |" << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| DIGITE O VALOR DE PAGAMENTO |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					aceitarnum();
					pag1 = numero;
					numero = 0;
					tamanho12 = pag1 - tamanho12;
					// VALOR INSERIDO MAIOR DO QUE O VALOR DA COMPRA
					if (tamanho12 > 0) {
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| O VALOR DO SEU TROCO E : " << tamanho12 << " REAIS" << endl;
						cout << "\t\t\t\t|____________________________________________________________ " << endl;
						// VALOR INSERIDO MENOR DO QUE O VALOR DA COMPRA 
					}if (tamanho12 < 0) {
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| VALOR INSUFICIENTE PARA A PAGAR A COMPRA |" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| POR FAVOR, DIGITE OUTRO VALOR |" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						system("pause");
					}
				} while (tamanho12 < 0);
			}
			// PAGAMENTO EXATAMENTE IGUAL AO VALOR DA COMPRA 
			if (tamanho12 == 0);
			{
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| PAGAMENTO REALIZADO COM SUCESSO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| VOLTE SEMRE !!!!! |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\n\n\n";
				system("pause");
			}
		}
		// TERCEIRA FUNÇÃO DO PROGRAMA
		while (numero == 3) {
			// EXIBIR CARDAPIOS
			system("cls");
			cout << "\n\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " <<endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| CARDAPIO DA PIZZARIA FAST |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CARDAPIO DE PIZZAS |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| PRESSIONE ENTER PARA VISUALIZAR |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			getch();
			system("cls");
			// CARDAPIO DE PIZZAS
			Dacasa.mostra2();
			cout << "\n";
			Marguerita.mostra2();
			cout << "\n";
			Baiana.mostra2();
			cout << "\n";
			Bauru.mostra2();
			cout << "\n";
			Calabresa.mostra2();
			cout << "\n";
			Frangocatupiry.mostra2();
			cout << "\n";
			Mussarela.mostra2();
			cout << "\n";
			Brocolis.mostra2();
			cout << "\n";
			Lombo.mostra2();
			cout << "\n";
			Escarola.mostra2();
			cout << "\n";
			Quatroqueijos.mostra2();
			cout << "\n";
			Portuguesa.mostra2();
			cout << "\n";
			system("pause");
			system("cls");
			// MENU DE ESCOLHA
			cout << "\n\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| CARDAPIO DA PIZZARIA FAST |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [1] - PARA VER O CARDAPIO DE BEBIDAS |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [2] - PARA RETORNAR AO MENU DE PEDIDOS |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			int cardap = 0;
			aceitarnum();
			cardap = numero;
			// VISUALIZAR CARDAPIO DAS BEBIDAS
			if (cardap == 1) {
				system("cls");
				cout << "\n\n\n\n";
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t| CARDAPIO DA PIZZARIA FAST |" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| CARDAPIO DE BEBIDAS |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| PRESSIONE ENTER PARA VISUALIZAR |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				getch();
				system("cls");
				// CARDAPIO DAS BEBIDAS
				CocaCola.mostrabebidas();
				cout << "\n";
				Fanta.mostrabebidas();
				cout << "\n";
				Fanta1.mostrabebidas();
				cout << "\n";
				Kuat.mostrabebidas();
				cout << "\n";
				CocaCola1.mostrabebidas();
				cout << "\n";
				CocaCola2.mostrabebidas();
				cout << "\n";
				Skol.mostrabebidas();
				cout << "\n";
				Brahma.mostrabebidas();
				cout << "\n";
				Heineken.mostrabebidas();
				cout << "\n";
				Imperio.mostrabebidas();
				cout << "\n";
				system("pause");
				system("cls");
			}
			else {
				system("cls");
				return main();
			}
			// RETORNO AO LOGIN PRINCIPAL
			int irpedido = 0;
			// LOOP PARA OPÇÃO CORRETA
			do {
				system("cls");
				cout << "\n\n\n\n";
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t| CARDAPIO DA PIZZARIA FAST |" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| GOSTARIA DE REALIZAR SEU PEDIDO AGORA |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| DIGITE [1] - PARA SIM |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| DIGITE [2] - PARA NÃO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				aceitarnum();
				irpedido = numero;
				if (irpedido == 2) {
					system("cls");
					return main();
				}
				else {
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| PRESSIONE ENTER PARA CONTINUAR |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					getch();
				}
			} while (irpedido < 1 || irpedido > 2);
		}
		// AREA GERENCIAL
		while (numero == 4) {
			do {
				// LOGIN GERENCIAL
				system("cls");
				cout << "\n" << endl;
				cout << "\t\t\t\t ____________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|====================================================|" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t| FUNÇÃO COM ACESSO RESTRITO |" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|====================================================|" << endl;
				cout << "\t\t\t\t|____________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________ " << endl;
				cout << "\t\t\t\t||" << endl;
				cout << "\t\t\t\t| INSIRA O LOGIN PARA CONTINUAR |" << endl;
				cout << "\t\t\t\t|____________________________________________________|" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|DIGITE O NOME DO USUARIO : ";
				cin >> login1.username;
				cout << "\t\t\t\t|____________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|DIGITE A SENHA DE ACESSO : ";
				int i;
				fflush(stdin);
				for (i = 0; i < 3; i++) {
					senha1[i] = getch();
					putchar('*');
					login1.Passoword[i] = senha[i];
				}
				getch();
				cout << "\n\t\t\t\t|____________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << " \t\t\t\t|DIGITE A CODIGO DE ACESSO : ";
				cin >> login1.Codigol;
				cout << "\t\t\t\t|____________________________________________________|" << endl;
				cout << "\n\n \t\t\t\t"; system("pause");
				if (!(strcmp(login1.username, loginAdm1) == 0) || (!strcmp(login1.Passoword, PassaAdm1) == 0) || !(codAdm1 == login1.Codigol)) {
					system("cls");
					cout << "\n\n\n";
					cout << "\t\t\t\t _____________________________________________________" << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|=====================================================|" << endl;
					cout << "\t\t\t\t| **** USUÁRIO INVALIDO **** |" << endl;
					cout << "\t\t\t\t| -> PRESSIONE ENTER PARA RETORNAR AO LOGIN NOVAMENTE |" << endl;
					cout << "\t\t\t\t|_____________________________________________________|";
					getch();
					cin.clear();
					cin.ignore(INT_MAX, '\n');
					system("cls");
				}
				else {
				}
			} while (!(strcmp(login1.username, loginAdm1) == 0) || (!strcmp(login1.Passoword, PassaAdm1) == 0) || !(codAdm1 == login1.Codigol));
			while ((strcmp(login1.username, loginAdm1) == 0) && (strcmp(login1.Passoword, PassaAdm1) == 0) && (codAdm1 == login1.Codigol)) {
				cout << endl;
				system("cls");
				cout << "\n\n\n";
				cout << "\t\t\t\t _____________________________________________________" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|=====================================================|" << endl;
				cout << "\t\t\t\t| **** USUÁRIO CADASTRADO NO SISTEMA!! **** |" << endl;
				cout << "\t\t\t\t| -> PRESSIONE ENTER PARA ABRIR O MENU! |" << endl;
				cout << "\t\t\t\t|_____________________________________________________|" << endl;
				getch();
				system("cls");
				// FUNÇÕES DISPONIBILIZADAS APOS O LOGIN GERENCIAL
				do {
					system("cls");
					cout << "\n\n\n\n";
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t| ÁREA GERENCIAL |" << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t| ESCOLHA A OPCAO DESEJADA |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| DIGITE [5] PARA - CADASTRAR FUNCIONARIOS |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| DIGITE [6] PARA - VISUALIZAR FUNCIONARIOS CADASTRADOS |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| DIGITE [7] PARA - CONSULTAR O ESTOQUE E ADICIONAR PRODUTOS |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| DIGITE [8] PARA - LISTAR CLIENTES CADASTRADOS |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					aceitarnum();
					system("cls");
				} while (numero < 5 || numero > 8);
				while (numero == 5) {
					// CADASTRO DE FUNCIONARIOS
					int qtd1;
					cout << "\n\n\n\n";
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t| MENU PARA CADASTRO DE FUNCIONARIOS |" << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| QUANTOS FUNCIONARIOS VÃO SER CADASTRADOS : |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					aceitarnum();
					qtd1 = numero;
					if (qtd1 == 0) {
						cout << "\n\nDIGITE UMA OPÇÃO VALIDA\n";
						system("pause");
						system("cls");
						return main();
					}
					funcionario* fn = new funcionario[qtd1];
					cadastrafun(qtd1, fn);
				}
				while (numero == 6) {
					// VISUALIZAR FUNCIONARIOS CADASTRADOS
					cout << "\n\n\n\n";
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t| MENU PARA VISUALIZAR FUNCIONARIOS CADASTRADOS |" << endl;
					cout << "\t\t\t\t| |" << endl;
					cout << "\t\t\t\t|============================================================|" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| PRESSIONE ENTER PARA VISUALIZAR OS FUNCIONARIOS |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					getch();
					system("cls");
					mostrafun();
				}
				// FUNÇÃO DE CONTROLE DE ESTOQUE
				while (numero == 7) {
					int escolhaest =0;
					int escolhaest1 = 0;
					//LOOP PARA OPÇÃO CORRETA
					do {
						system("cls");
						int produto;
						int estoquebeb = 0;
						// MENU ESTOQUE
						cout << "\n\n\n\n";
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| |" << endl;
						cout << "\t\t\t\t|============================================================|" << endl;
						cout << "\t\t\t\t| MENU DO ESTOQUE |" << endl;
						cout << "\t\t\t\t| |" << endl;
						cout << "\t\t\t\t|============================================================|" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| DIGITE [1] - PARA VISUALIZAR OS PRODUTOS DO ESTOQUE |" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| DIGITE [2]- PARA ADICIONAR PRODUTOS AO ESTOQUE |" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						aceitarnum();
						produto = numero;
						numero = 0;
						system("cls");
						// VISUALIZAÇÃO DE ESTOQUE
						while (produto == 1) {
							cout << "\n\n\n\n";
							cout << "\t\t\t\t ____________________________________________________________ " << endl;
							cout << "\t\t\t\t| |" << endl;
							cout << "\t\t\t\t|============================================================|" << endl;
							cout << "\t\t\t\t| MENU DO ESTOQUE |" << endl;
							cout << "\t\t\t\t| |" << endl;
							cout << "\t\t\t\t|============================================================|" << endl;
							cout << "\t\t\t\t|____________________________________________________________|" << endl;
							cout << "\t\t\t\t ____________________________________________________________ " << endl;
							cout << "\t\t\t\t| QUANTIDADE DE PRODUTOS NO ESTOQUE |" << endl;
							cout << "\t\t\t\t|____________________________________________________________|" << endl;
							cout << "\t\t\t\t ____________________________________________________________ " << endl;
							cout << "\t\t\t\t| PRODUTOS PARA A PRODUÇÃO DAS PIZZAS |" << endl;
							cout << "\t\t\t\t|____________________________________________________________|" << endl;
							cout << "\t\t\t\t| PRESSIONE ENTER PARA VISUALIZAR |" << endl;
							cout << "\t\t\t\t|____________________________________________________________|" << endl;
							getch();
							// PRODUTOS PARA A PRODUÇÃO DAS PIZZAS
							system("cls");
							MASSA.mostraest();
							FARINHA.mostraest(),
								ACUCAR.mostraest(), FERMENTO.mostraest(), SAL.mostraest(), OLEO.mostraest(), MANTEIGA.mostraest();
							MOLHODETOMATE.mostraest(), PRESUNTO.mostraest(), OVOS.mostraest(), TOMATE.mostraest(), CEBOLA.mostraest(), CATUPIRY.mostraest(), AZEITONAS.mostraest();
							PARMESAO.mostraest(), MANJERICAO.mostraest(), CALABRESA.mostraest(), FRANGO.mostraest(), BROCOLIS.mostraest(), BACON.mostraest(), LOMBO.mostraest();
							ALHOFRITO.mostraest(), ESCAROLA.mostraest(), PROVOLONE.mostraest(), PALMITO.mostraest();
							cout << "\n\n";
							system("pause");
							system("cls");
							cout << "\n\n\n\n";
							cout << "\t\t\t\t ____________________________________________________________ " << endl;
							cout << "\t\t\t\t| |" << endl;
							cout << "\t\t\t\t|============================================================|" << endl;
							cout << "\t\t\t\t| MENU DO ESTOQUE |" << endl;
							cout << "\t\t\t\t| |" << endl;
							cout << "\t\t\t\t|============================================================|" << endl;
							cout << "\t\t\t\t|____________________________________________________________|" << endl;
							cout << "\t\t\t\t ____________________________________________________________ " << endl;
							cout << "\t\t\t\t| DIGITE [1] - PARA VISUALIZAR O ESTOQUE DE BEBIDAS |" << endl;
							cout << "\t\t\t\t|____________________________________________________________|" << endl;
							cout << "\t\t\t\t| DIGITE [2] - PARA RETORNAR AO MENU PRINCIPAL |" << endl;
							cout << "\t\t\t\t|____________________________________________________________|" << endl;
							aceitarnum();
							estoquebeb = numero;
							numero = 0;
							// ESTOQUE DE BEBIDAS
							if (estoquebeb == 1) {
								system("cls");
								cout << "\nBEBIDAS ARMAZENADAS NO ESTOQUE";
								COCACOLA.mostraest(), FANTA.mostraest(), FANTA1.mostraest(), KUAT.mostraest(), COCACOLA1.mostraest(), COCACOLA2.mostraest(), SKOL.mostraest();
								BRAHMA.mostraest(), HEINEKEN.mostraest(), IMPERIO.mostraest();
								cout << "\n\n";
								system("pause");
								system("cls");
								break;
							}
							else {
								system("cls");
								return main();
							}
						}
						// ADICIONAR PRODUTOS EM ESTOQUE
						while (produto == 2) {
							int qtd2 = 0;
							do {
								system("cls");
								cout << "\n\n\n\n";
								cout << "\t\t\t\t ____________________________________________________________ " << endl;
								cout << "\t\t\t\t| |" << endl;
								cout << "\t\t\t\t|============================================================|" << endl;
								cout << "\t\t\t\t| MENU DO ESTOQUE |" << endl;
								cout << "\t\t\t\t| |" << endl;
								cout << "\t\t\t\t|============================================================|" << endl;
								cout << "\t\t\t\t|____________________________________________________________|" << endl;
								cout << "\t\t\t\t ____________________________________________________________ " << endl;
								cout << "\t\t\t\t| DIGITE QUANTOS PRODUTOS DESEJA INSERIR NO ESTOQUE |" << endl;
								cout << "\t\t\t\t|____________________________________________________________|" << endl;
								aceitarnum();
								qtd2 = numero;
								numero = 0;
							} while (qtd2 < 1 || qtd2 > 10);
							estoque* est = new estoque[qtd2];
							system("cls");
							insereEstoque(qtd2, Estoque, est);
							system("cls");
							/*
								cout <<"\n\n\n\n";
								cout << "\t\t\t\t ____________________________________________________________ " << endl;
								cout << "\t\t\t\t| |" << endl;
								cout << "\t\t\t\t|============================================================|" << endl;
								cout << "\t\t\t\t| MENU DO ESTOQUE |" << endl;
								cout << "\t\t\t\t| |" << endl;
								cout << "\t\t\t\t|============================================================|" << endl;
								cout << "\t\t\t\t|____________________________________________________________|" << endl;
								cout << "\t\t\t\t ____________________________________________________________ " << endl;
								cout << "\t\t\t\t| DIGITE [1] - PARA RETORNAR AO INICIO DO MENU DO ESTOQUE |" << endl;
								cout << "\t\t\t\t|____________________________________________________________|" << endl;
								cout << "\t\t\t\t ____________________________________________________________" << endl;
								cout << "\t\t\t\t| DIGITE [2] - PARA VOLTAR AO MENU PRINCIPAL |" << endl;
								cout << "\t\t\t\t|____________________________________________________________|" << endl;
								aceitarnum();
								escolhaest=numero;
								numero=0;
								*/
						}
						// RETORNO
						system("pause");
						system("cls");
						cout << "\n\n\n\n";
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| |" << endl;
						cout << "\t\t\t\t|============================================================|" << endl;
						cout << "\t\t\t\t| MENU DO ESTOQUE |" << endl;
						cout << "\t\t\t\t| |" << endl;
						cout << "\t\t\t\t|============================================================|" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| DIGITE [1] - PARA RETORNAR AO INICIO DO MENU DO ESTOQUE |" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						cout << "\t\t\t\t ____________________________________________________________ " << endl;
						cout << "\t\t\t\t| DIGITE [2] - PARA VOLTAR AO MENU PRINCIPAL |" << endl;
						cout << "\t\t\t\t|____________________________________________________________|" << endl;
						aceitarnum();
						escolhaest1 = numero;
						numero = 0;
					} while (escolhaest == 1 || escolhaest1 == 1);
					cout << "\t\t\t\t ____________________________________________________________ " << endl;
					cout << "\t\t\t\t| PRESSIONE ENTER PARA RETORNAR AO INICIO |" << endl;
					cout << "\t\t\t\t|____________________________________________________________|" << endl;
					getch();
					system("cls");
				}
				while (numero == 8) {
					moscli();
					system("pause");
				}
			}
		}
	}
	return 0;
}
int insereEstoque(int qtd2, estoque Estoque[40], estoque est[]) {
	int escol;
	system("cls");
	cout << "\n\n\n\n";
	cout << "\t\t\t\t ____________________________________________________________ " << endl;
	cout << "\t\t\t\t| |" << endl;
	cout << "\t\t\t\t|============================================================|" << endl;
	cout << "\t\t\t\t| MENU DO ESTOQUE |" << endl;
	cout << "\t\t\t\t| |" << endl;
	cout << "\t\t\t\t|============================================================|" << endl;
	cout << "\t\t\t\t|____________________________________________________________|" << endl;
	cout << "\t\t\t\t ____________________________________________________________ " << endl;
	cout << "\t\t\t\t| ESCOLHA QUAL PRODUTO DESEJA INSERIR NO ESTOQUE |" << endl;
	cout << "\t\t\t\t|____________________________________________________________|" << endl;
	cout << "\t\t\t\t _______________________________________________________________" << endl;
	cout << "\t\t\t\t| DIGITE [1] - PARA INSERIR PRODUTOS PARA A PRODUÇÃO DAS PIZZAS |" << endl;
	cout << "\t\t\t\t|_______________________________________________________________|" << endl;
	cout << "\t\t\t\t| DIGITE [2] - PARRA INSERIR BEBIDAS |" << endl;
	cout << "\t\t\t\t|_______________________________________________________________|" << endl;
	cout << "\n\n\n\n";
	aceitarnum();
	escol = numero;
	numero = 0;
	while (escol == 1) {
		float verifica = 0;
		for (int i = 0; i < qtd2; i++) {
			int escolprod;
			system("cls");
			FARINHA.mostraest1(),
				ACUCAR.mostraest1(), FERMENTO.mostraest1(), SAL.mostraest1(), OLEO.mostraest1(), MANTEIGA.mostraest1();
			MOLHODETOMATE.mostraest1(), PRESUNTO.mostraest1(), OVOS.mostraest1(), TOMATE.mostraest1(), CEBOLA.mostraest1(), CATUPIRY.mostraest1(), AZEITONAS.mostraest1();
			PARMESAO.mostraest1(), MANJERICAO.mostraest1(), CALABRESA.mostraest1(), FRANGO.mostraest1(), BROCOLIS.mostraest1(), BACON.mostraest1(), LOMBO.mostraest1();
			ALHOFRITO.mostraest1(), ESCAROLA.mostraest1(), PROVOLONE.mostraest1(), PALMITO.mostraest1();
			cout << "\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE O NUMERO DO PRODUTO ESCOLHIDO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			aceitarnum();
			escolprod = numero;
			numero = 0;
			switch (escolprod) {
			case 1:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					FARINHA.mostraest1();
					system("pause");
					cout << "\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 10000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << FARINHA.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 10000) {
						cout << "\nVALOR INVALIDO";
						system("cls");
						system("pause");
					}
					else {
						FARINHA.quantidade = FARINHA.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR" << FARINHA.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 10000);
				verifica = 0;
				break;
			case 2:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					ACUCAR.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << ACUCAR.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						ACUCAR.quantidade = ACUCAR.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << ACUCAR.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 3:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					FERMENTO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << FERMENTO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						FERMENTO.quantidade = FERMENTO.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << FERMENTO.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 4:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					SAL.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << SAL.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						SAL.quantidade = SAL.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << SAL.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 5:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					OLEO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 ML\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 ML\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << OLEO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						OLEO.quantidade = OLEO.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << OLEO.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 6:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					MANTEIGA.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << MANTEIGA.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						MANTEIGA.quantidade = MANTEIGA.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << MANTEIGA.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 7:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					MOLHODETOMATE.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << MOLHODETOMATE.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << MOLHODETOMATE.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 8:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					MUSSARELA.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << MUSSARELA.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						MUSSARELA.quantidade = MUSSARELA.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << MUSSARELA.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 9:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					PRESUNTO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << PRESUNTO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						PRESUNTO.quantidade = PRESUNTO.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << PRESUNTO.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 10:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					OVOS.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 100 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << OVOS.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 100 || verifica > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						OVOS.quantidade = OVOS.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << OVOS.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 11:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					TOMATE.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << TOMATE.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						TOMATE.quantidade = TOMATE.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << TOMATE.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 12:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					CEBOLA.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << CEBOLA.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						CEBOLA.quantidade = CEBOLA.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << CEBOLA.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 13:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					CATUPIRY.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << CATUPIRY.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						CATUPIRY.quantidade = CATUPIRY.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << CATUPIRY.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 14:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					AZEITONAS.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << AZEITONAS.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						AZEITONAS.quantidade = AZEITONAS.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << AZEITONAS.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 15:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					PARMESAO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << PARMESAO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						PARMESAO.quantidade = PARMESAO.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << PARMESAO.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 16:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					MANJERICAO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << MANJERICAO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						MANJERICAO.quantidade = MANJERICAO.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << MANJERICAO.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 17:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					CALABRESA.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << CALABRESA.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						CALABRESA.quantidade = CALABRESA.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << CALABRESA.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 18:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					FRANGO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << FRANGO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						FRANGO.quantidade = FRANGO.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << FRANGO.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 19:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					BROCOLIS.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << BROCOLIS.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						BROCOLIS.quantidade = BROCOLIS.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << BROCOLIS.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 20:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					BACON.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << BACON.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						BACON.quantidade = BACON.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << BACON.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 21:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					LOMBO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << LOMBO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						LOMBO.quantidade = LOMBO.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR: " << LOMBO.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 22:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					ALHOFRITO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << ALHOFRITO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						ALHOFRITO.quantidade = ALHOFRITO.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << ALHOFRITO.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 23:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					ESCAROLA.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << ESCAROLA.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						ESCAROLA.quantidade = ESCAROLA.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << ESCAROLA.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 24:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					PROVOLONE.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << PROVOLONE.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						PROVOLONE.quantidade = PROVOLONE.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << PROVOLONE.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			case 25:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					PALMITO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 1000 GRAMAS\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 4000 GRAMAS\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << PALMITO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM GRAMAS D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica = numero2;
					numero2 = 0;
					if (verifica < 1000 || verifica > 4000) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						PALMITO.quantidade = PALMITO.quantidade + verifica;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << PALMITO.quantidade << "\n";
					system("pause");
				} while (verifica < 1000 || verifica > 4000);
				verifica = 0;
				break;
			default:
				cout << "OPÇÃO INVALIDA";
				system("cls");
				insereEstoque(qtd2, Estoque, est);
			}
			fstream Estoque1; // definido como fstream para trabalhar tanto com escrita como leitrura dentro do arquivo txt
			Estoque1.open("estoque1.txt", fstream::in | fstream::out); // abrindo o arquivo
			if (Estoque1.is_open()) { // teste de arquivo aberto
		/*	while(getline(arquivo,linha)){//Rotina de leitura
				cout << linha <<endl;//impressao na tela
				*/
			}
			else {
				cout << "Nao foi possivel abir o arquivo" << endl;
			}
			Estoque1 << "\n\n\n.................................ATUALIZAÇÃO DO ESTOQUE.............................................\n\n\n";
			Estoque1 << "NOME : " << MASSA.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << MASSA.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << MASSA.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "\n\n\n..............................................PRODUTOS PARA O PREPARO DAS PIZZAS.............................................\n\n\n";
			Estoque1 << "NOME : " << MOLHODETOMATE.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << MOLHODETOMATE.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << MOLHODETOMATE.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << MUSSARELA.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << MUSSARELA.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << MUSSARELA.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << PRESUNTO.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << PRESUNTO.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << PRESUNTO.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << OVOS.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << OVOS.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << OVOS.quantidade << " UNIDADES" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << TOMATE.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << TOMATE.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << TOMATE.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << CEBOLA.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << CEBOLA.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << CEBOLA.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << CATUPIRY.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << CATUPIRY.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << CATUPIRY.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << AZEITONAS.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << AZEITONAS.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << AZEITONAS.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << PARMESAO.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << PARMESAO.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << PARMESAO.quantidade << " GRAMAS" << "\n\n";Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << MANJERICAO.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << MANJERICAO.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << MANJERICAO.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << CALABRESA.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << CALABRESA.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << CALABRESA.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << FRANGO.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << FRANGO.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << FRANGO.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << BROCOLIS.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << BROCOLIS.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << BROCOLIS.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << BACON.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << BACON.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << BACON.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << LOMBO.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << LOMBO.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << LOMBO.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << ALHOFRITO.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << ALHOFRITO.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << ALHOFRITO.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << ESCAROLA.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << ESCAROLA.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << ESCAROLA.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << PROVOLONE.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << PROVOLONE.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << PROVOLONE.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1 << "NOME : " << PALMITO.nome3 << "\n\n";
			Estoque1 << "DATA DE VALIDADE : " << PALMITO.validade << "\n\n";
			Estoque1 << "QUANTIDADE EM ESTOQUE : " << PALMITO.quantidade << " GRAMAS" << "\n\n";
			Estoque1 << "........................................................................................................\n\n";
			Estoque1.close();
		}
		int menu1;
		system("cls");
		cout << "\n\n\n\n";
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t| MENU DO ESTOQUE |" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [1] - PARA INSERIR OUTROS PRODUTOS |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [2] - PARA VOLTAR AO MENU PRINCIPAL |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		aceitarnum();
		menu1 = numero;
		numero = 0;
		if (menu1 == 1) {
			system("cls");
			insereEstoque(qtd2, Estoque, est);
		}
		else {
			system("cls");
			return main();
		}
	}
	while (escol == 2) {
		float verifica1 = 0;
		for (int i = 0; i < qtd2; i++) {
			int escolprod1;
			system("cls");
			cout << "\nBEBIDAS ARMAZENADAS NO ESTOQUE";
			COCACOLA.mostraest1(), FANTA.mostraest1(), FANTA1.mostraest1(), KUAT.mostraest1(), COCACOLA1.mostraest1(), COCACOLA2.mostraest1(), SKOL.mostraest1();
			BRAHMA.mostraest1(), HEINEKEN.mostraest1(), IMPERIO.mostraest1();
			cout << "\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE O NUMERO DO PRODUTO ESCOLHIDO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			aceitarnum();
			escolprod1 = numero;
			numero = 0;
			switch (escolprod1) {
			case 26:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					COCACOLA.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << COCACOLA.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						COCACOLA.quantidade = COCACOLA.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << COCACOLA.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
				break;
			case 27:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					FANTA.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << FANTA.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						FANTA.quantidade = FANTA.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << FANTA.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
				break;
			case 28:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					FANTA1.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << FANTA1.quantidade;cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						FANTA1.quantidade = FANTA1.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << FANTA1.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
			case 29:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					KUAT.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << KUAT.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						KUAT.quantidade = KUAT.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << KUAT.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
				break;
			case 30:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					COCACOLA1.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << COCACOLA1.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						COCACOLA1.quantidade = COCACOLA1.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << COCACOLA1.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
				break;
			case 31:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					COCACOLA2.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << COCACOLA2.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						COCACOLA2.quantidade = COCACOLA2.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << COCACOLA2.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
				break;
			case 32:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					SKOL.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << SKOL.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						SKOL.quantidade = SKOL.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << SKOL.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
			case 33:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					BRAHMA.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << BRAHMA.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						BRAHMA.quantidade = BRAHMA.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << BRAHMA.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
				break;
			case 34:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					HEINEKEN.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << HEINEKEN.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						HEINEKEN.quantidade = HEINEKEN.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << HEINEKEN.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
				break;
			case 35:
				do {
					system("cls");
					cout << "\nPRODUTO SELECIONADO\n";
					IMPERIO.mostraest1(),
						system("pause");
					system("cls");
					cout << "\n\nVALOR MINIMO A SER INSERIDO = 10 UNIDADES\n ";
					cout << "\nVALOR MAXIMO A SER INSERIDO = 200 UNIDADES\n\n";
					system("pause");
					system("cls");
					cout << "\nQUANTIDADE ANTES DE INSERIR : " << IMPERIO.quantidade;
					cout << "\nDIGITE A QUANTIDADE EM UNIDADES D0 PRODUTO A ENTRAR NO ESTOQUE\n";
					aceitarnum1();
					verifica1 = numero2;
					numero2 = 0;
					if (verifica1 < 10 || verifica1 > 200) {
						cout << "\nVALOR INVALIDO";
						system("pause");
						system("cls");
					}
					else {
						IMPERIO.quantidade = IMPERIO.quantidade + verifica1;
					}
					cout << "\nQUANTIDADE DEPOIS DE INSERIR : " << IMPERIO.quantidade << "\n";
					system("pause");
				} while (verifica1 < 10 || verifica1 > 200);
				verifica1 = 0;
				break;
			default:
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| OPÇÃO INVALIDA |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| PRESSIONE ENTER PARA REINICIAR A FUNÇÃO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				getch();
				system("cls");
				insereEstoque(qtd2, Estoque, est);
			}
			fstream Estoque2; // definido como fstream para trabalhar tanto com escrita como leitrura dentro do arquivo txt
			Estoque2.open("estoque2.txt", fstream::in | fstream::out); // abrindo o arquivo
			if (Estoque2.is_open()) { // teste de arquivo aberto
		/*	while(getline(arquivo,linha)){//Rotina de leitura
				cout << linha <<endl;//impressao natela
				*/
			}
			else {
				cout << "Nao foi possivel abir o arquivo" << endl;
			}
			Estoque2 << "\n\n\n.................................ATUALIZAÇÃO DO ESTOQUE.............................................\n\n\n";
			Estoque2 << "\n\n\n..............................................BEBIDAS ARMAZENADAS NO ESTOQUE.............................................\n\n\n";
			Estoque2 << "NOME : " << COCACOLA.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << COCACOLA.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << COCACOLA.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2 << "NOME : " << FANTA.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << FANTA.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << FANTA.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2 << "NOME : " << FANTA1.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << FANTA1.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << FANTA1.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2 << "NOME : " << KUAT.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << KUAT.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << KUAT.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2 << "NOME : " << COCACOLA1.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << COCACOLA1.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << COCACOLA1.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2 << "NOME : " << COCACOLA2.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << COCACOLA2.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << COCACOLA2.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2 << "NOME : " << SKOL.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << SKOL.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << SKOL.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2 << "NOME : " << BRAHMA.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << BRAHMA.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << BRAHMA.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2 << "NOME : " << HEINEKEN.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << HEINEKEN.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << HEINEKEN.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2 << "NOME : " << IMPERIO.nome3 << "\n\n";
			Estoque2 << "DATA DE VALIDADE : " << IMPERIO.validade << "\n\n";
			Estoque2 << "QUANTIDADE EM ESTOQUE : " << IMPERIO.quantidade << " UNIDADES" << "\n\n";
			Estoque2 << "........................................................................................................\n\n";
			Estoque2.close();
		}
		int menu2;
		system("cls");
		cout << "\n\n\n\n";
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t| MENU DO ESTOQUE |" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [1] - PARA INSERIR OUTROS PRODUTOS |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [2] - PARA VOLTAR AO MENU PRINCIPAL |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		aceitarnum();
		menu2 = numero;
		numero = 0;
		if (menu2 == 1) {
			system("cls");
			insereEstoque(qtd2, Estoque, est);
		}
		else {
			system("cls");
			return main();
		}
	}
}
int cadastrafun(int qtd1, funcionario fn[]) {
	system("cls");
	cin.clear();
	cin.ignore(INT_MAX, '\n');
	for (int i = 0; i < qtd1; i++) {
		cout << "\n\n\n\n";
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t| MENU PARA O CADASTRO DE FUNCIONÁRIOS |" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| CADASTRE OS FUNCIONÁRIOS |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| CADASTRE O NOME : |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t															 " << endl;
		getline(cin, fn[i].nome);
		funcionarios[i].nome = fn[i].nome;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| CAMPO PREENCHIDO COM SUCESSO |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		system("cls");
		int decisao = 0;
		int decisao1 = 0;
		cout << "\n\n\n\n";
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t| MENU PARA O CADASTRO DE FUNCIONÁRIOS |" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| CADASTRE A FUNÇÃO DO FUNCIONÁRIO |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout<< "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [1] - PARA PIZZAIOLO |" << endl;
		cout << "\t\t\t\t| DIGITE [2] - PARA CAIXA |" << endl;
		cout << "\t\t\t\t| DIGITE [3] - PARA AUXILIAR |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t															 " << endl;
		aceitarnum();
		decisao = numero;
		numero = 0;
		switch (decisao) {
		case 1:
			fn[i].funcao = ("PIZZAIOLO");
			funcionarios[i].funcao = fn[i].funcao;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CAMPO PREENCHIDO COM SUCESSO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			break;
		case 2:
			fn[i].funcao = ("CAIXA");
			funcionarios[i].funcao = fn[i].funcao;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CAMPO PREENCHIDO COM SUCESSO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			break;
		case 3:
			fn[i].funcao = ("AUXILIAR");
			funcionarios[i].funcao = fn[i].funcao;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CAMPO PREENCHIDO COM SUCESSO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			break;
		default:
			system("cls");
			cout << "\n\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| MENU PARA O CADASTRO DE FUNCIONÁRIOS |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| OPÇÃO INVALIDA |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DESEJA TENTAR NOVAMENTE ? |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [1] PARA SIM |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [2] PARA NÃO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t															 " << endl;
			aceitarnum();
			decisao1 = numero;
			numero = 0;
			if (decisao1 == 1) {
				system("cls");
				cadastrafun(qtd1, fn);
			}
			else {
				system("cls");
			}return main();
			break;
		}
		system("cls");
		int decisao2 = 0;
		int decisao3 = 0;
		cout << "\n\n\n\n";
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t| MENU PARA O CADASTRO DE FUNCIONÁRIOS |" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| CADASTRE A UNUDADE QUE O FUNCIONÁRIO TRABALHARA |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [1] - PARA PIZZARIA 1 |" << endl;
		cout << "\t\t\t\t| DIGITE [2] - PARA PIZZARIA 2 |" << endl;
		cout << "\t\t\t\t| DIGITE [3] - PARA PIZZARIA 3 |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t																" << endl;
		aceitarnum();
		decisao2 = numero;
		numero = 0;
		switch (decisao2) {
		case 1:
			fn[i].pizzaria = decisao2;
			funcionarios[i].pizzaria = fn[i].pizzaria;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CAMPO PREENCHIDO COM SUCESSO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			break;
		case 2:
			fn[i].pizzaria = decisao2;
			funcionarios[i].pizzaria = fn[i].pizzaria;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CAMPO PREENCHIDO COM SUCESSO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			break;
		case 3:
			fn[i].pizzaria = decisao2;
			funcionarios[i].pizzaria = fn[i].pizzaria;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| CAMPO PREENCHIDO COM SUCESSO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			break;
		default:
			system("cls");
			system("cls");
			cout << "\n\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| MENU PARA O CADASTRO DE FUNCIONÁRIOS |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| OPÇÃO INVALIDA |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DESEJA TENTAR NOVAMENTE ? |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [1] PARA SIM |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________" << endl;
			cout << "\t\t\t\t| DIGITE [2] PARA NÃO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t															 " << endl;
			aceitarnum();
			decisao1 = numero;
			numero = 0;
			if (decisao3 == 1) {
				system("cls");
				cadastrafun(qtd1, fn);
			}
			else {
				system("cls");
			}return main();
			break;
		}
		string data;
		system("cls");
		system("cls");
		cout << "\n\n\n\n";
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t| MENU PARA O CADASTRO DE FUNCIONÁRIOS |" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| CADASTRE A DATA DE ADMISSÃO |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE O DIA DE ADIMISSÃO : |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t															 " << endl;
		cin >> fn[i].data;
		data = "/";
		funcionarios[i].data = fn[i].data + data;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE O MÊS DE ADIMISSÃO : |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t															 " << endl;
		cin >> fn[i].data;
		funcionarios[i].data = funcionarios[i].data + fn[i].data + data;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE O ANO DE ADIMISSÃO : |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t															 " << endl;
		cin >> fn[i].data;
		funcionarios[i].data = funcionarios[i].data + fn[i].data;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| CAMPO PREENCHIDO COM SUCESSO |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| CADASTRO CONCLUIDO |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		system("pause");
		system("cls");
		cout << "\n\n\n\n";
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t| MENU PARA O CADASTRO DE FUNCIONÁRIOS |" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| CADASTRO ESTÁ CORRETO ? |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| O FUNCIONARIO CADASTRADO É : " << endl;
		cout << "\t\t\t\t| NOME : " << funcionarios[i].nome << endl;
		cout << "\t\t\t\t| FUNÇÃO : " << funcionarios[i].funcao << endl;
		cout << "\t\t\t\t| DATA DE ADMISSÃO: " << funcionarios[i].data << endl;
		cout << "\t\t\t\t| PIZZARIA : " << funcionarios[i].pizzaria << endl;
		cout << "\t\t\t\t|____________________________________________________________ " << endl;
		int funcionario;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [1] - PARA SIM |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [2] - PARA NÃO |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t															 " << endl;
		aceitarnum();
		funcionario = numero;
		numero = 0;
		if (funcionario == 2) {
			funcionarios[i].nome = ("");
			funcionarios[i].funcao = ("");
			funcionarios[i].data = ("");
			funcionarios[i].pizzaria = 0;
			return cadastrafun(qtd1, fn);
			system("cls");
		}
		else {
		}
		fstream fun; // definido como fstream para trabalhar tanto com escrita como leitrura dentro do arquivo txt
		fun.open("funcionarios.txt", fstream::in | fstream::app); // abrindo o arquivo
		if (fun.is_open()) { // teste de arquivo aberto
			/*	while(getline(arquivo,linha)){//Rotina de leitura
			cout << linha <<endl;//impressao na tela
			*/
		}
		else {
			cout << "Nao foi possivel abir o arquivo" << endl;
		}
		fun << "\n\n\n.................................NOVOS FUNCIONARIOS CADASTRADOS.............................................\n\n\n";
		fun << "\n\n\n..............................................................................................................\n";
		fun << "\nNOME : " << funcionarios[i].nome;
		fun << "\nFUNÇÃO : " << funcionarios[i].funcao;
		fun << "\nDATA DE ADMISSÃO : " << funcionarios[i].data;
		fun << "\nPIZZARIA EM QUE TRABALHA : " << funcionarios[i].pizzaria;
		fun << "\n\n\n..............................................................................................................\n";
		fun.close();
	}
}
int mostrafun() {
	int escolha = 0;
	do {
		system("cls");
		cout << "\n\n\n\n";
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t| MENU PARA EXIBIR FUNCIONÁRIOS CADASTRADOS |" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE O CODIGO DA PIZZARIA EM QUE FUNCIONARIO TRABALHA |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t															 " << endl;
		int codfun;
		aceitarnum();
		codfun = numero;
		numero = 0;
		for (int i = 0; i < 3; i++) {
			if (codfun == funcionarios[i].pizzaria) {
				system("cls");
				cout << "\t\t\t\t ____________________________________________________________" << endl;
				cout << "\t\t\t\t| O FUNCIONARIO CADASTRADO É : " << endl;
				cout << "\t\t\t\t| NOME : " << funcionarios[i].nome << endl;
				cout << "\t\t\t\t| FUNÇÃO : " << funcionarios[i].funcao << endl;
				cout << "\t\t\t\t| DATA DE ADMISSÃO: " << funcionarios[i].data << endl;
				cout << "\t\t\t\t| PIZZARIA : " << funcionarios[i].pizzaria << endl;
				cout << "\t\t\t\t|____________________________________________________________ " << endl;
			}
		}
		int decisao1;
		switch (codfun) {
		case 1:
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << PEDRO.nome << "\n";
			cout << "FUNÇÃO : " << PEDRO.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << PEDRO.data << "\n";
			cout << "PIZZARIA : " << PEDRO.pizzaria << "\n";
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << JOAO.nome << "\n";
			cout << "FUNÇÃO : " << JOAO.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << JOAO.data << "\n";
			cout << "PIZZARIA : " << JOAO.pizzaria << "\n";
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << MARIA.nome << "\n";
			cout << "FUNÇÃO : " << MARIA.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << MARIA.data << "\n";
			cout << "PIZZARIA : " << MARIA.pizzaria << "\n";
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << LEONARDO.nome << "\n";
			cout << "FUNÇÃO : " << LEONARDO.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << LEONARDO.data << "\n";
			cout << "PIZZARIA : " << LEONARDO.pizzaria << "\n";
			break;
		case 2:
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << PAULO.nome << "\n";
			cout << "FUNÇÃO : " << PAULO.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << PAULO.data << "\n";
			cout << "PIZZARIA : " << PAULO.pizzaria << "\n";
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << LUCAS.nome << "\n";
			cout << "FUNÇÃO : " << LUCAS.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << LUCAS.data << "\n";
			cout << "PIZZARIA : " << LUCAS.pizzaria << "\n";
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << JOANA.nome << "\n";
			cout << "FUNÇÃO : " << JOANA.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << JOANA.data << "\n";
			cout << "PIZZARIA : " << JOANA.pizzaria << "\n";
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << CARLOS.nome << "\n";
			cout << "FUNÇÃO : " << CARLOS.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << CARLOS.data << "\n";
			cout << "PIZZARIA : " << CARLOS.pizzaria << "\n";
			break;
		case 3:
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << MATHEUS.nome << "\n";
			cout << "FUNÇÃO : " << MATHEUS.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << MATHEUS.data << "\n";
			cout << "PIZZARIA : " << MATHEUS.pizzaria << "\n";
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << ROGERIO.nome << "\n";
			cout << "FUNÇÃO : " << ROGERIO.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << ROGERIO.data << "\n";
			cout << "PIZZARIA : " << ROGERIO.pizzaria << "\n";
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << MARTA.nome << "\n";
			cout << "FUNÇÃO : " << MARTA.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << MARTA.data << "\n";
			cout << "PIZZARIA : " << MARTA.pizzaria << "\n";
			cout << "\n O FUNCIONARIO CADASTRADO É : \n";
			cout << "NOME : " << DAVI.nome << "\n";
			cout << "FUNÇÃO : " << DAVI.funcao << "\n";
			cout << "DATA DE ADMISSÃO: " << DAVI.data << "\n";
			cout << "PIZZARIA : " << DAVI.pizzaria << "\n";
			break;
		default:
			system("cls");
			cout << "\n\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| MENU PARA O CADASTRO DE FUNCIONÁRIOS |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| PIZZARIA INVALIDA |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DESEJA TENTAR NOVAMENTE ? |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [1] PARA SIM |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [2] PARA NÃO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t														 	" << endl;
			aceitarnum();
			decisao1 = numero;
			numero = 0;
			system("cls");
			if (decisao1 == 1) {
				system("cls");
				mostrafun();
			}
			else {
				system("cls");
				return main();
			}
			break;
		}			system("pause");
		system("cls");
		cout << "\n\n\n\n";
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t| MENU PARA O CADASTRO DE FUNCIONÁRIOS |" << endl;
		cout << "\t\t\t\t| |" << endl;
		cout << "\t\t\t\t|============================================================|" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DESEJA VER OS FUNCIONARIOS DE OUTRA PIZZARIA ? |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [1] PARA SIM |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE [2] PARA NÃO |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t															 " << endl;
		aceitarnum();
		escolha = numero;
		numero = 0;
	} while (escolha != 2);
	system("cls");
	system("pause");
	return main();
}
void estoqueins() {
	MOLHODETOMATE, MUSSARELA, PRESUNTO, OVOS, TOMATE, CEBOLA, CATUPIRY, AZEITONAS, PARMESAO, MANJERICAO, CALABRESA, FRANGO, BROCOLIS, BACON, LOMBO, ALHOFRITO, ESCAROLA, PROVOLONE, PALMITO;
	COCACOLA, FANTA, FANTA1, KUAT, COCACOLA1, COCACOLA2, SKOL, BRAHMA, HEINEKEN, IMPERIO;
	MASSA, FARINHA, ACUCAR,FERMENTO, SAL, OLEO, MANTEIGA;
}
void comprar(int venda, Pizzas teste[], Pizzas pz[]) {
	for (int i = 0; i < venda; i++) {
		do {
			system("cls");
			cout << "\n\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t| MENU DE PEDIDOS |" << endl;
			cout << "\t\t\t\t| |" << endl;
			cout << "\t\t\t\t|============================================================|" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| ESCOLHA O TAMANHO DA SUA PIZZA |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [1]-PARA PIZZA PEQUENA |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [2]-PARA PIZZA MEDIA |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| DIGITE [3]-PARA PIZZA GRANDE |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			cout << "\t\t\t\t																" << endl;
			aceitarnum();
			tamanho1 = numero;
			numero = 0;
			if (tamanho1 < 1 || tamanho1 > 3) {
				system("cls");
				cout << "\n\n\n\n";
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t| MENU DE PEDIDOS |" << endl;
				cout << "\t\t\t\t| |" << endl;
				cout << "\t\t\t\t|============================================================|" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| O NUMERO DIGITADO NÃO ESTA DEFINIDO COMO TAMANHO DE PIZZA |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				cout << "\t\t\t\t ____________________________________________________________ " << endl;
				cout << "\t\t\t\t| PRESSSIONE ENTER PARA REINICIAR O PROCESSO |" << endl;
				cout << "\t\t\t\t|____________________________________________________________|" << endl;
				getch();
			}
		} while (tamanho1 < 1 || tamanho1 > 3);
		system("cls");
		int molho, mussarela, presunto, ovos, tomate, cebola, catupiry, azeitonas, parmesao,
			manjericao, calabresa, frango, brocolis, bacon, lombo, alho, escarola, provolone, palmito;
		int massap = 300, massam = 400, massag = 500;
		switch (tamanho1) {
		case 1:
			tamanho1 = 10;
			molho = 50, mussarela = 50, presunto = 50, ovos = 1, tomate = 50, cebola = 25, catupiry = 50, azeitonas = 25, parmesao = 25,
				manjericao = 5, calabresa = 50, frango = 50, brocolis = 50, bacon = 50, lombo = 50, alho = 25, escarola = 50, provolone = 50, palmito = 50;
			MASSA.quantidade = MASSA.quantidade - massap;
			break;
		case 2:
			tamanho1 = 15;
			molho = 100, mussarela = 100, presunto = 100, ovos = 2, tomate = 100, cebola = 50, catupiry = 100, azeitonas = 50, parmesao = 50,
				manjericao = 10, calabresa = 100, frango = 100, brocolis = 100, bacon = 100, lombo = 100, alho = 50, escarola = 100, provolone = 100, palmito = 100;
			MASSA.quantidade = MASSA.quantidade - massam;
			break;
		case 3:
			tamanho1 = 25;
			molho = 200, mussarela = 200, presunto = 200, ovos = 4, tomate = 200, cebola = 100, catupiry = 200, azeitonas = 100, parmesao = 100,
				manjericao = 20, calabresa = 200, frango = 200, brocolis = 200, bacon = 200, lombo = 200, alho = 100, escarola = 200, provolone = 200, palmito = 200;
			MASSA.quantidade = MASSA.quantidade - massag;
			break;
		default:
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| TAMANHO INVALIDO |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
		}
		cout << "\n";
		Dacasa.mostra4();
		Marguerita.mostra4();
		Baiana.mostra4();
		Bauru.mostra4();
		Calabresa.mostra4();
		Frangocatupiry.mostra4();
		Mussarela.mostra4();
		Brocolis.mostra4();
		Lombo.mostra4();
		Escarola.mostra4();
		Quatroqueijos.mostra4();
		Portuguesa.mostra4();
		pizzac = 0;
		cout << "\t\t\t\t ____________________________________________________________ " << endl;
		cout << "\t\t\t\t| DIGITE O NUMERO DA SUA PIZZA |" << endl;
		cout << "\t\t\t\t|____________________________________________________________|" << endl;
		cout << "\t\t\t\t																" << endl;
		aceitarnum();
		pizzac = numero;
		system("cls");
		numero = 0;
		switch (pizzac) {
		case 1:
			cout << "\nPIZZA COMPRADA\n";
			Dacasa.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			PRESUNTO.quantidade = PRESUNTO.quantidade - presunto;
			OVOS.quantidade = OVOS.quantidade - ovos;
			CEBOLA.quantidade = CEBOLA.quantidade - cebola;
			CATUPIRY.quantidade = CATUPIRY.quantidade - catupiry;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 2:
			cout << "\nPIZZA COMPRADA\n";
			Marguerita.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			TOMATE.quantidade = TOMATE.quantidade - tomate;
			PARMESAO.quantidade = PARMESAO.quantidade - parmesao;
			MANJERICAO.quantidade = MANJERICAO.quantidade - manjericao;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 3:
			cout << "\nPIZZA COMPRADA\n";
			Baiana.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			CALABRESA.quantidade = CALABRESA.quantidade - calabresa;
			OVOS.quantidade = OVOS.quantidade - ovos;
			CEBOLA.quantidade = CEBOLA.quantidade - cebola;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 4:
			cout << "\nPIZZA COMPRADA\n";
			Bauru.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			PRESUNTO.quantidade = PRESUNTO.quantidade - presunto;
			TOMATE.quantidade = TOMATE.quantidade - tomate;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 5:
			cout << "\nPIZZA COMPRADA\n";
			Calabresa.mostra1();cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			CALABRESA.quantidade = CALABRESA.quantidade - calabresa;
			CEBOLA.quantidade = CEBOLA.quantidade - cebola;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 6:
			cout << "\nPIZZA COMPRADA\n";
			Frangocatupiry.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			FRANGO.quantidade = FRANGO.quantidade - frango;
			CATUPIRY.quantidade = CATUPIRY.quantidade - catupiry;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 7:
			cout << "\nPIZZA COMPRADA\n";
			Mussarela.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela * 2;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 8:
			cout << "\nPIZZA COMPRADA\n";
			Brocolis.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			BROCOLIS.quantidade = BROCOLIS.quantidade - brocolis;
			BACON.quantidade = BACON.quantidade - bacon;
			CATUPIRY.quantidade = CATUPIRY.quantidade - catupiry;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 9:
			cout << "\nPIZZA COMPRADA\n";
			Lombo.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			LOMBO.quantidade = LOMBO.quantidade - lombo;
			CATUPIRY.quantidade = CATUPIRY.quantidade - catupiry;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 10:
			cout << "\nPIZZA COMPRADA\n";
			Escarola.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			ESCAROLA.quantidade = ESCAROLA.quantidade - escarola;
			BACON.quantidade = BACON.quantidade - bacon;
			ALHOFRITO.quantidade = ALHOFRITO.quantidade - alho;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 11:
			cout << "\nPIZZA COMPRADA\n";
			Quatroqueijos.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			PROVOLONE.quantidade = PROVOLONE.quantidade - provolone;
			PARMESAO.quantidade = PARMESAO.quantidade - parmesao;
			CATUPIRY.quantidade = CATUPIRY.quantidade - catupiry;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		case 12:
			cout << "\nPIZZA COMPRADA\n";
			Portuguesa.mostra1();
			cout << "\n";
			cout << "\nO preco desta pizza e : " << tamanho1 << " REAIS" << "\n";
			system("pause");
			system("cls");
			MOLHODETOMATE.quantidade = MOLHODETOMATE.quantidade - molho;
			MUSSARELA.quantidade = MUSSARELA.quantidade - mussarela;
			PRESUNTO.quantidade = PRESUNTO.quantidade - presunto;
			OVOS.quantidade = OVOS.quantidade - ovos;
			CEBOLA.quantidade = CEBOLA.quantidade - cebola;
			PALMITO.quantidade = PALMITO.quantidade - palmito;
			AZEITONAS.quantidade = AZEITONAS.quantidade - azeitonas;
			break;
		default:
			cout << "\n\n\n\n";
			cout << "\t\t\t\t ____________________________________________________________ " << endl;
			cout << "\t\t\t\t| OPÇÃO INVALIDA |" << endl;
			cout << "\t\t\t\t|____________________________________________________________|" << endl;
			getch();
			system("cls");
			comprar(venda, teste, pz);
			break;
		}
		mostrapedido[i] = pizzac - 1;
		fstream Estoque1; // definido como fstream para trabalhar tanto com escrita como leitrura dentro do arquivo txt
		Estoque1.open("estoque1.txt", fstream::in | fstream::out); // abrindo o arquivo
		if (Estoque1.is_open()) { // teste de arquivo aberto
	/*	while(getline(arquivo,linha)){//Rotina de leitura
			cout << linha <<endl;//impressao na tela
			*/
		}
		else {
			cout << "Nao foi possivel abir o arquivo" << endl;
		}
		Estoque1 << "\n\n\n.................................ATUALIZAÇÃO DO ESTOQUE.............................................\n\n\n";
		Estoque1 << "NOME : " << MASSA.nome3 << "\n\n";
		Estoque1 << "DATA DE VALIDADE : " << MASSA.validade << "\n\n";
		Estoque1 << "QUANTIDADE EM ESTOQUE : " << MASSA.quantidade << " GRAMAS" << "\n\n";
		Estoque1 << "........................................................................................................\n\n";
		Estoque1 << "\n\n\n..............................................PRODUTOS PARA O PREPARO DAS PIZZAS.............................................\n\n\n";
		Estoque1 << "NOME : " << MOLHODETOMATE.nome3 << "\n\n";
		Estoque1 << "DATA DE VALIDADE : " << MOLHODETOMATE.validade << "\n\n";
		Estoque1 << "QUANTIDADE EM ESTOQUE : " << MOLHODETOMATE.quantidade << " GRAMAS" << "\n\n";
		Estoque1 << "........................................................................................................\n\n";
		Estoque1 << "NOME : " << MUSSARELA.nome3 << "\n\n";
		Estoque1 << "DATA DE VALIDADE : " << MUSSARELA.validade << "\n\n";
		Estoque1 << "QUANTIDADE EM ESTOQUE : " << MUSSARELA.quantidade << " GRAMAS" << "\n\n";
		Estoque1 << "........................................................................................................\n\n";
		Estoque1 << "NOME : " << PRESUNTO.nome3 << "\n\n";
		Estoque1 << "DATA DE VALIDADE : " << PRESUNTO.validade << "\n\n";
		Estoque1 << "QUANTIDADE EM ESTOQUE : " << PRESUNTO.quantidade << " GRAMAS" << "\n\n";
		Estoque1 << "........................................................................................................\n\n";
		Estoque1 << "NOME : " << OVOS.nome3 << "\n\n";
		Estoque1 << "DATA DE VALIDADE : " << OVOS.validade << "\n\n";
		Estoque1 << "QUANTIDADE EM ESTOQUE : " << OVOS.quantidade << " UNIDADES" << "\n\n";
		Estoque1 << "........................................................................................................\n\n";
		Estoque1 << "NOME : " << TOMATE.nome3 << "\n\n";
		Estoque1 << "DATA DE VALIDADE : " << TOMATE.validade << "\n\n";
		Estoque1 << "QUANTIDADE EM ESTOQUE : " << TOMATE.quantidade << " GRAMAS" << "\n\n";
		Estoque1 << "........................................................................................................\n\n";
		Estoque1 << "NOME : " << CEBOLA.nome3 << "\n\n";
		Estoque1 << "DATA DE VALIDADE : " << CEBOLA.validade << "\n\n";
		Estoque1 << "QUANTIDADE EM ESTOQUE : " << CEBOLA.quantidade << " GRAMAS" << "\n\n";
		Estoque1 << "........................................................................................................\n\n";
		Estoque1 << "NOME : " << CATUPIRY.nome3 << "\n\n";
		Estoque1 << "DATA DE VALIDADE : " << CATUPIRY.validade << "\n\n";
		Estoque1 << "QUANTIDADE EM ESTOQUE : " << CATUPIRY.quantidade << " GRAMAS" << "\n\n";
		Estoque1 << "........................................................................................................\n\n";
		Estoque1 << "NOME : " << AZEITONAS.nome3 << "\n\n";
		Estoque1 << "DATA DE VALIDADE

Mais conteúdos dessa disciplina