Vous êtes sur la page 1sur 23

UNIP INTERATIVA

Projeto Integrado Multidisciplinar


Cursos Superiores de Tecnologia

DESENVOLVIMENTO DE SOFTWARE
Sistema de Venda de Passagens

Polo XXXXXXX/UF
Ano

UNIP INTERATIVA
Projeto Integrado Multidisciplinar
Cursos Superiores de Tecnologia

DESENVOLVIMENTO DE SOFTWARE
Sistema de Venda de Passagens

NomeNomeNomeNomeNomeNome
RA: 00000000000
Curso: Anlise e Desenvolvimento de Sistemas
Semestre: 01

Polo XXXXXXX/UF
Ano

Resumo

Este projeto tem por objetivo o desenvolvimento de um sistema de venda de passagens


de nibus. O sistema foi desenvolvimento na linguagem de programao C com a utilizao
da ferramenta DEV C++. Utilizando os conhecimentos e tcnicas adquiridos ao longo do
primeiro trimestre do curso de Anlise e Desenvolvimento de Sistemas foi possvel
desenvolver o aplicativo de forma a atender os requisitos do projeto. As funes foram
modularizadas sempre que possvel a fim de tornar futuras manutenes mais simples. Foram
adicionados comentrios por todo o cdigo a fim de facilitar sua compreenso.

Abstract

This project aims to develop a bus tickets sale system . The system has been developed
in the C programming language with the use of DEV C ++ tool. Using the knowledge and
skills acquired during the first quarter of the course in Systems Analysis and Development
was possible to grow the application to meet project requirements . The functions are
modularized wherever possible in order to make future maintenance easier. Comments have
been added throughout the code in order to make understanding easier.

Sumrio

Introduo 5
1 Dos Requisitos... 6
2 Do Modelo de Desenvolvimento... 6
2.1 Do Prottipo7
2.2 Da Modelagem10
3 Da Implementao das Funcionalidades11
3.1 Da Implementao dos Veculos. 14
3.2 Da Implementao das Vendas... 16
3.3 Da Implementao do Fluxo de Caixa... 18
Concluso.... 21
Referncias.. 22

5
Introduo

O sistema desenvolvido neste projeto capaz de emitir um ticket contendo


informaes como data e horrio da viagem, nmero da poltrona, nmero do nibus e destino.
Tambm dever ser capaz de permitir at duas passagens gratuitas para idosos e fornecer
desconto de 50% para estudantes. Dever ser capaz de evitar a venda de uma mesma poltrona
para mais de um passageiro. Por fim, dever ser capaz de exibir as movimentaes do caixa.
Ao longo deste texto, detalharei como foi o processo de desenvolvimento do sistema e
as solues adotadas para que fosse possvel atender aos requisitos.

6
1 Dos Requisitos
O sistema desenvolvido neste projeto dever ser capaz de administrar vrios aspectos
da venda de passagens de nibus.
O primeiro requisito que o sistema leve em considerao uma tabela de tarifao
com o valor das passagens. A partir da, dever permitir que estudantes compre passagens
com 50% de desconto. Tambm dever permitir que at duas passagens tenham gratuidade de
100% para idosos.
Aps a finalizao da venda, dever ser emitido um ticket contendo a data e hora da
partida do nibus, o local de destino, o nmero do nibus e o nmero da poltrona.
O sistema no poder permitir que a mesma poltrona seja vendida mais de um
passageiro.
No podem ser vendidos mais lugares do que os disponveis no veculo.
Dever fazer a gesto do caixa, armazenando todas as movimentaes do dia e o saldo
do fechamento.

2 Do Modelo de Desenvolvimento
Considerando o pequeno tamanho do projeto, optei por seguir o conceito dos mtodos
geis, no sentido iniciar o projeto com um prottipo, de intercalar o planejamento com a
escrita do cdigo e de focar no funcionamento, mais do que na documentao. O
desenvolvimento tambm se deu de forma incremental, pois aps a incluso de
funcionalidades o processo retornava fase anlise das necessidades, passando por nova
modelagem, codificao e testes.
Para construo do prottipo, primeiramente foram definidos os menus e opes
necessrios. Assim, foram desenvolvidas as principais telas a serem exibidas pelo aplicativo
porm sem as funcionalidades que seriam implementadas posteriormente.
Toda a modelagem foi realizada por meio de descrio narrativa. As tarefas
necessrias foram definidas e depois foram gradativamente detalhadas e transformadas em
tarefas menores. Assim que estivessem suficientemente detalhadas, as funes eram ento
codificadas.

7
Esta forma de desenvolvimento se mostrou bastante eficiente, para um projeto de
pequeno como este. Porm, necessrio que a descrio narrativa seja capaz de atingir um
nvel de detalhamento adequado e que seja bastante clara.

2.1 Do prottipo
A elaborao do prottipo envolveu a identificao das opes necessrias no menu
principal do aplicativo.
Identifiquei que seria necessria uma opo para cada destino diferente e que a
princpio o sistema trabalharia com 3 destinos: So Paulo, Curitiba e Belo Horizonte. Tambm
seria necessria uma opo para que fosse exibido o fluxo de caixa. Por fim, seria necessria
uma opo para sair do sistema.
Definidas as necessidade do menu principal, foi providenciada sua codificao. Tomei
o cuidado de no inserir o cdigo de exibio do menu diretamente na funo main() a fim de
evitar que ficasse poluda. Optei por delegar essa tarefa uma funo chamada
exibirMenuPrincipal() que chamada pela funo main(). O prottipo do menu ficou da
seguinte forma:
Bem vindo ao sistema de vendas de passagens da Viagens Tour
Menu Principal
1 - Vender passagem para Sao Paulo
2 - Vender passagem para Curitiba
3 - Vender passagem para Belo Horizonte
4 - Gestao do Caixa
9 - Sair
Selecione uma opcao:
A prxima etapa foi elaborar a exibio do menu secundrio, que seria exibido aps a
seleo de um destino pelo usurio. Em minha concepo, o sistema deveria exibir na tela
uma representao das poltronas do nibus. Essa representao deveria exibir o nmero das
poltronas e sua ocupao. A ocupao seria indicada pelo caracteres '-', 'I', 'C' e 'E' que
representam respectivamente, uma poltrona vazia, uma poltrona ocupada por idoso com

8
gratuidade, uma poltrona ocupada por um pagante comum e uma poltrona ocupada por um
estudante. Na tela so exibidas 4 poltronas por linha, representando as duas poltronas do lado
esquerdo e as duas poltronas do lado direito.
Alm de exibir as poltronas e suas ocupaes, tambm exibido o destino, os valores
de todos os tipos de passagens.
Por fim, o usurio solicitado a digitar o nmero da poltrona a ser vendida ou digitar
-1 para retornar ao menu principal. Eis o prottipo do menu:
Exibindo Assentos Disponiveis para Curitiba
01| - | 02| - | 03| - | 04| - |
05| - | 06| - | 07| - | 08| - |
09| - | 10| - | 11| - | 12| - |
13| - | 14| - | 15| - | 16| - |
17| - | 18| - | 19| - | 20| - |
21| - | 22| - | 23| - | 24| - |
25| - | 26| - | 27| - | 28| - |
29| - | 30| - | 31| - | 32| - |
33| - | 34| - | 35| - | 36| - |
37| - | 38| - | 39| - | 40| - |
41| - | 42| - | 43| - | 44| - |
45| - | 46| - | 47| - | 48| - |
O valor da passagem comum eh de R$60.00
Estudantes pagam R$30.00
Idosos pagam R$0.00 (maximo de 2 por veiculo)
Digite o numero do assento a ser vendido ou -1 para voltar:
Os dois menus apresentados finalizaram a etapa inicial de prototipao e a partir de
ento foi possvel inciar a prxima etapa.
Como estamos trabalhando em um modelo incremental, depois de modeladas e
desenvolvidas as funcionalidades dos menus principais e secundrios, retornnei fase de
prototipao por mais duas vezes a fim de desenvolver os prottipos do fluxo de caixa e da
emisso do ticket.

Eis o prottipo do relatrio de representa o fluxo de caixa com todas as transaes


realizadas durante a execuo do sistema. Tambm exibido o saldo de todas as transaes
efetudas. Os valores so exibidos com o smbolo da moeda e com duas casas decimais.
Movimentacao do Caixa
R$27.50
R$55.00
R$22.50
R$45.00
R$30.00
R$60.00
O saldo no caixa eh de R$240.00
Press any key to continue . . .

Abaixo, o prottipo do mdulo de impresso do ticket. So impressos: o local de


destino, a data e o horrio da partida, o nmero do nibus e o nmero da poltrona.
*************************************
* Comprovante de Compra de Passagem

*************************************
Destino Curitiba
Partida as 14:30 do dia 16/12/2015
Onibus numero: 4433 Poltrona: 26
Press any key to continue . . .

10
2.2 Da Modelagem
Com as principais interfaces prontas pude comear a elaborar a lgica a ser seguida
pelo sistema. Como mencionei anteriormente, optei por descrever toda a lgica por meio de
uma descrio narrativa. Conclu que tal abordagem seria mais efetiva em relao utilizao
do portugol ou da elaborao de fluxogramas.
Deitel e Deitel (2011), em seu livro C: Como Programar, tambm se utilizam do
mtodo de descrio narrativa, denominando-o como Pseudocdigo. Em sua definio, o
pseudocdigo uma linguagem artificial e informal, semelhante linguagem do dia a dia que
ajuda os programadores a desenvolver algoritmos.
Voltando ao nosso sistema de passagens, a elaborao da lgica do menu principal foi
bastante simples. Limitando-se conduzir o usurio para o menu secundrio correto. A
descrio narrativa ficou da seguinte forma:
Caso o usurio selecione a opo 1:
Exiba a tela de venda do veculo que ir So Paulo
Caso o usurio selecione a opo 2:
Exiba a tela de venda do veculo que ir Curitiba
Caso o usurio selecione a opo 3:
Exiba a tela de venda do veculo que ir Belo Horizonte
Caso o usurio selecione a opo 4:
Exiba o fluxo de caixa
Caso o usurio selecione a opo 9:
Permite a sada do loop que mantm o menu

Na tela de venda de passagens acabou sendo concentrada praticamente toda a lgica


do programa, levando uma descrio um pouco mais extensa. Aqui precisamos saber qual
veculo foi selecionado no menu anterior e ento exibir suas informaes ao usurio. Depois
ser solicitado ao usurio que selecione uma poltrona e o tipo de passagem, efetuando-se as
verificaes de disponibilidade. Aps a confirmao da venda, precisamos emitir um ticket,
registrar a transao e indicar ao sistema que a poltrona se encontra ocupada.
Abaixo segue a descrio narrativa do algoritmo elaborado para executar essas tarefas.

11
Exibir as informaes do veculo selecionado
Exibir a tabela dos assentos do veculo selecionado
Exibir os valores para todos os tipos de passagens
Solicitar ao usurio que selecione uma poltrona
Verificar se uma poltrona vlida Se no for exibir mensagem
Verificar se a poltrona est vazia - Se no estiver exibir mensagem
Solicitar ao usurio que informe o tipo de passagem
Se a passagem for de idoso, verificar disponibilidade Se no, exibe msg
Remover um dos lugares disponveis para idosos
Preencher a tabela de assentos do veculo com o caractere adequado
Registrar a transao de acordo com o valor da passagem
Imprimir Ticket
Retornar ao menu de vendas

3 Da Implementao das Funcionalidades


Antes de inicializar a implementao de qualquer funcionalidade, identifiquei que
havia vrios erros ocorrendo durante a execuo dos prottipos. Ento precisei trat-los antes
de iniciar o desenvolvimento.
O primeiro desses erros se dava pela utilizao da funo scanf() para obteno de
uma opo a ser digitada pelo usurio. Todos os menus elaborados, solicitam ao usurio a
seleo de uma opo por meio da entrada de um nmero inteiro. Porm, o sistema se
comportava de forma inadequada quando o usurio digitava um caractere.
Em uma rpida busca ao Google, percebi que vrios novatos sofriam com o mesmo
problema. Rapidamente acabei chegando ao site stackoverflow.com, onde possvel encontrar
sugestes da comunidade para os mais diversos problemas. Ali, eu descobri que a funo
scanf() retorna um inteiro representando o nmero de atribuies efetuadas com sucesso. Se o
valor de retorno da funo scanf(%d, &opcao) for igual 0, significa que a entrada do
usurio foi invlida.
Ento, para contornar os erros apresentados criei a funo solicitarInt(), que solicita a

12
entrada de um inteiro e o armazena na varivel valorDigitado. feita a verificao do retorno
da funo scanf(). Enquanto a funo scanf(%d, %valorDigitado) no retornar o valor 1,
indicando que a atribuio solicitada foi efetuada com sucesso, o sistema ficar em loop
solicitando ao usurio a entrada de um nmero. Quando o usurio digitar um nmero a funo
o armazenar com sucesso na varivel valorDigitado e o retornar funo chamadora.
Mesmo tomando estes cuidados a funo solicitarInt() ainda entrava em loop infinito
quando o usurio entrava com um caractere. Segundo as experincias relatadas no site
stackoverflow.com, isso se devia existncia de sujeira no buffer de entrada.
Ento precisei criar uma funo para esvaziar o buffer de entrada do teclado, pois as
informaes ali armazenadas ainda causavam erros no sistema. Essa funo executada
imediatamente aps um scanf invlido e consiste em executar a funo getchar() at que se
encontre uma quebra de linha (\n) ou um indicador de fim de arquivo (EOF).
Aps esta implementao, os erros deixaram de ocorrer.
int solicitarInt(){
int valorDigitado;
while (scanf("%d", &valorDigitado)!=1){
esvaziarBufferEntrada();
printf("Digite um numero: ");
}
return valorDigitado;
}
void esvaziarBufferEntrada(){
char c;
while((c = getchar()) != '\n' && c != EOF);
}

Outro problema identificado refere-se portabilidade do sistema, pois sou usurio


Linux e senti certa frustrao ao no conseguir executar os prottipos desenvolvidos em
Windows. Identifiquei que o problema residia na utilizao da funo system() com os
argumentos cls e pause nativos do Windows. Segue abaixo a soluo encontrada.
Criei a funo pausar() e substitu todos os usos de system(pause) pela funo

13
criada. Sua funcionalidade resume-se exibir a mensagem Pressione ENTER para
continuar enquanto uma chamada funo getchar() deixa o sistema espera de uma
entrada. A existncia de resduos de informao em buffer tambm prejudicaram o
funcionamento

da

funo.

Desta

forma

inclu

uma

chamada

funo

esvaziarBufferEntrada(). Problema resolvido, com direito uma demonstrao da


importncia da criao de funes objetivas que possam ser reutilizadas.
void pausar(){
printf("\nPressione ENTER para continuar.\n");
esvaziarBufferEntrada();
getchar();
}

A alternativa para utilizao de system(cls) foi mais complexa e envolveu a


utilizao de outra sugesto encontrada em stackoverflow.com. A soluo se utiliza da
Compilao Condicional abordada por Deitel e Deitel(2011) no Captulo 13 do livro C
Como Programar. Atravs das diretivas #ifdef, #elif, #endif verifica-se o sistema operacional
em execuo e orienta-se o compilador a compilar apenas a instruo adequada. Criei a
funo limparTela() implementando essas diretivas.
void limparTela(){
#ifdef linux
system ("clear");
#elif defined WIN32
system ("cls");
#else
printf("\e[H\e[2J");
#endif
}
A partir deste momento o sistema se tornou portvel. possvel compil-lo e executlo com sucesso em sistemas Windows e Linux.

14
3.1 - Da Implementao dos Veculos
De posse do prottipo e da descrio narrativa, conclu que a prxima etapa deveria
ser a criao de uma estrutura que pudesse representar um veculo e as informaes deste
veculo que seriam necessrias ao sistema. A utilizao de uma estrutura visa facilitar a adio
de vrios veculos com destinos, datas e horrios diferentes.
Assim, foi criado o struct de nome veiculo que contm as informaes de: Destino,
Valor da Passagem, Data da Partida, Hora da Partida, Nmero do Veculo, Poltronas
Disponveis para Gratuidade de Idosos e um vetor, com 48 posies, representando todas as
poltronas do nibus.
struct veiculo{
char tabelaPoltronas[QUANTIDADE_POLTRONAS];
int idososDisponiveis;
float valorPassagemComum;
char destino[15];
char dataPartida[15];
char horaPartida[15];
int numeroVeiculo;
};
O campo idososDisponiveis foi criado para facilitar o gerenciamento das gratuidades
j oferecidas. Sem este campo, uma das solues alternativas seria percorrer todos os 48
assentos, a fim de identificar quantos idosos com passagens gratuitas estavam no nibus.
O vetor tabelaPoltronas[] foi criado para facilitar a administrao das poltronas e
exibir para o usurio a ocupao do veculo. Optei por criar um vetor do tipo caractere,
criando tambm constantes que representam cada tipo de ocupao possvel. O caractere 'I'
representa um assento ocupado por idoso. O caractere 'E' representa um assento ocupado por
estudante. O caractere 'C' representa um assento ocupado por quem comprou a passagem
comum. Por fim o caractere '-' representa um assento vago. Se o cliente quiser que os assentos
vagos passem a ser representados pelo caractere 'X', basta substituir o valor da respectiva
constante.
Criei o tipo Veiculo referindo-se estrutura veiculo e criei trs variveis deste tipo

15
a fim de representar os nibus com destino So Paulo, Curitiba e Belo Horizonte. As
variveis foram denominadas veiculoSP, veiculoCTB e veiculoBH respectivamente.
/*
Cria objetos do tipo struct veiculo para cada um dos veculos para o qual
ser disponibilizada a venda de passagens
*/
typedef struct veiculo Veiculo;
Veiculo veiculoSP, veiculoCTB, veiculoBH;

A prxima etapa foi providenciar a inicializao das variveis do tipo Veiculo. Criei
a funo inicializarVeiculos(). Nesta funo so inicializadas as informaes todos os
veculos. Segue abaixo a inicializao do veculo com destino So Paulo. Os demais
veculos foram inicializados da mesma forma e dentro da mesma funo mas com seus
respectivos dados.
void inicializarVeiculos(){
//incializa as informaes do veculo com destino So Paulo
strcpy(veiculoSP.destino, "Sao Paulo");
strcpy(veiculoSP.dataPartida, "15/12/2015");
strcpy(veiculoSP.horaPartida, "11:20");
veiculoSP.numeroVeiculo = 7700;
veiculoSP.valorPassagemComum = 45.0;
veiculoSP.idososDisponiveis=2;
inicializarPoltronas(&veiculoSP);
}

vetor

tabelaPoltronas[]

de

cada

veculo

inicializado

pela

funo

inicializarPoltronas() que preenche todos os itens do vetor com o caractere que representa um
assento vago.

16
/*
Inicializa a tabela de poltronas do veiculo. Preenchendo
todos os assentos com o indicador de assento vago.
A tabela representada por um vetor de char e o assento vago
representado pelo char definido na constante ASSENTO_VAGO
*/
void inicializarPoltronas(Veiculo *pVeiculo){
int cont;
for(cont=0; cont<QUANTIDADE_POLTRONAS; cont++){
pVeiculo->tabelaPoltronas[cont] = ASSENTO_VAGO;
}
}

3.2 Da Implementao das Vendas


O aplicativo se inicia com a exibio do menu principal atravs da funo
exibirMenuPrincipal(). Nesta funo, o usurio ser solicitado a selecionar um destino para o
qual sero vendidas as passagens. Quando um destino for selecionado, ser passada uma
referncia do respectivo veculo funo mnuVenderPassagem().
Todo o sistema de vendas est implementado na funo mnuVenderPassagem(), que
recebe uma referncia ao veculo referente ao destino selecionado pelo usurio. Ao receber
uma referencia do tipo Veiculo, a funo passa a ser reutilizvel para qualquer veculo e assim
evitamos a redundncia de cdigo. Esta funo responsvel por exibir as informaes do
destino, os valores das passagens, a representao das poltronas com sua ocupao. Solicita
ao usurio que informe o nmero da poltrona a ser vendida e depois solicita o tipo de
passagem (comum, idoso ou estudante). Por fim realiza a venda, registra a transao no fluxo
de caixa, por meio da funo inserirTransacao() e emite o comprovante de compra por meio
da funo imprimirTicket().
Dentro da funo mnuVenderPassagem() tambm verificado se a poltrona
selecionada j est ocupada e se o limite de gratuidades para idosos j foi atingido.

17
Como podemos notar, a funo mnuVenderPassagem() uma forte candidata ser
desmembrada em funes menores e mais especficas. Por falta de tempo e tambm por receio
de fazer com que o cdigo fique de difcil compreenso, optei por manter desta forma.
Ainda assim, a funo se utiliza de vrios outras funes menores como
imprimirTicket() que recebe o nmero da poltrona vendida e uma referncia ao veculo e
imprime todas as informaes da viagem como data de horrio da partida, nmero do nibus,
nmero da poltrona e destino.
/*
Exibe na tela o comprovante de compra da passagem
*/
void imprimirTicket(int numPoltrona, Veiculo *pVeiculo){
limparTela();
printf("*************************************\n");
printf("* Comprovante de Compra de Passagem *\n");
printf("*************************************\n");
printf("Destino %s\n\n", pVeiculo->destino);
printf("Partida as %s do dia %s\n\n", pVeiculo->horaPartida, pVeiculo->dataPartida);
printf("Onibus numero: %d Poltrona: %02d\n\n", pVeiculo->numeroVeiculo, numPoltrona);
pausar();
}

A funo mnuVenderPassagem() tambm se utiliza da funo exibirAssentos() que


recebe uma referncia ao veculo e exibe na tela uma representao das poltronas do veculo e
sua ocupao.
void exibirAssentos(Veiculo *pVeiculo){
int numPoltrona;
for(numPoltrona=0; numPoltrona<QUANTIDADE_POLTRONAS; numPoltrona++){
//Quebra uma linha a cada quatro poltronas
if (numPoltrona % 4 == 0){
printf("\n");
}
//Exibe o nmero da poltrona e um character representando sua ocupao
printf("%02d| %c | ", numPoltrona+1, pVeiculo->tabelaPoltronas[numPoltrona]);
}}

18
A fim de facilitar eventual mudana nas regras de preos para idosos e estudantes, a
funo mnuVenderPassagem se utiliza das funes getValorEstudante() e getValorIdoso() que
so responsveis por calcular os valores das passagens para estudantes e idosos com base nas
regras definidas.
/*
Calcula e retorna o valor da passagem de estudante para
o veiculo informado. A existncia desta funo facilita
e centraliza a implementaa de uma eventual alterao
no valor da passagem para estudantes
*/
float getValorEstudante(Veiculo *pVeiculo){
return pVeiculo->valorPassagemComum/2;
}
/*
Calcula e retorna o valor da passagem de idoso para
o veiculo informado. A existncia desta funo facilita
e centraliza a implementaa de uma eventual alterao
no valor da passagem para idosos
*/
float getValorIdoso(Veiculo *pVeiculo){
return 0.0;
}

3.3 Da implementao do Registro do Fluxo de Caixa


A funcionalidade de registro do fluxo de caixa foi a ltima a ser inserida no projeto.
Optei por utilizar uma estrutura de lista ligada pois no h como saber antecipadamente a
quantidade de registros a serem armazenados e desta forma fica descartada a possibilidade de
utilizao de um vetor ou matriz estticos.

19
Criei uma estrutura chamada transacao contendo o valor da transao e um ponteiro
para a prxima transao da lista. Futuramente pode-se adicionar outras propriedades
estrutura de forma a detalhar a transao.
/*
Cria a estrutura de uma transacao contendo os campos necessarios
incluindo um ponteiro para o proximo item a fim de criar uma lista
*/
struct transacao{
float valor;
//char descricao[];
struct transacao *proximaTransacao;
};
/*
Cria o tipo Transacao representantdo a estrutura transacao
e cria um objeto listaTransacoes do tipo Transacao que
armazenar as operaes efetuadas, garantindo o controle
do caixa
*/
typedef struct transacao Transacao;
Transacao* listaTransacoes;
Toda vez que a funo mnuVenderPassagem() finaliza uma venda, chamada a funo
void registrarTransacao() que encapsula parte do cdigo e em conjunto com a funo
inserirTransacao() insere o valor da venda na lista.
/*Funo a ser chamada diretamente para insero de transaes. O objetivo
encapsular uma parte do cdigo necessrio e tornar mais simples a chamada de
insero.*/
void registrarTransacao(float num){
listaTransacoes = inserirTransacao(listaTransacoes, num);
}

20
/*Funo para inserir transaes no relatrio de caixa. No deve ser chamada
diretamente.*/
Transacao* inserirTransacao (Transacao *pLista, float num){
Transacao* nova_Transacao = (Transacao*)malloc(sizeof(Transacao));
nova_Transacao->valor = num;
nova_Transacao->proximaTransacao = pLista;
}
O registro do fluxo de caixa foi implementado com utilizao dos conhecimentos
adquiridos na Unidade VII da disciplina de Linguagem e Tcnicas de Programao. Todo o
registro

se

atravs

das

funes

inicializarTransacoes(),

inserirTransacao(),

registrarTransacao, imprimeTansacoes() e da estrutura transacao.


A impresso de todo o fluxo de caixa pode ser realizada atravs do menu principal.
/*
Imprime o relatrio do caixa e o saldo existente
*/
void imprimeTransacoes (Transacao *pLista){
float total = 0.0;
Transacao* aux;
limparTela();
printf("Movimentacao do Caixa\n\n");
for (aux = pLista; aux !=NULL; aux = aux->proximaTransacao){
printf ("R$%.2f\n", aux->valor);
total += aux->valor;
}
printf("\nO saldo no caixa eh de R$%.2f\n\n", total);
pausar();
}

21
Concluso

Para a implementao de um sistema de pequeno porte, os mtodos adotados neste


projeto como os conceitos essenciais dos mtodos geis, prototipao e modelagem por meio
de descrio narrativa foram adequados e eficientes.
A verso final do sistema desenvolvido neste projeto atende s especificaes
previstas no manual, de forma satisfatria. No foram identificados erros durante sua
execuo.

22
Referncias:

UNIP UNIVERSIDADE PAULISTA. Engenharia de Software I. So Paulo, 2014.


UNIP UNIVERSIDADE PAULISTA. Linguagem e Tcnicas de Programao. So Paulo,
2014.
MANZANO, Jos Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: Lgica para
Desenvolvimento de Programao de Computadores. 21 edio. So Paulo: rica, 2008.
DEITEL, Paul; DEITEL, Harvey. Java: Como Programar. 8 edio. So Paulo: Pearson,
2011.
DEITEL, Paul; DEITEL, Harvey. C: Como Programar. 6 edio. So Paulo: Pearson, 2011.