Você está na página 1de 17

FRANCIELLY MUNIQUE DA SILVA RODRIGUES UFSJ UNIVERSIDADE FEDERAL DE SO JOO DEL-REI DCOMP DEPARTAMENTO DE CINCIA DA COMPUTAO

TP 2: SISTEMA DE CADASTROS

So Joo Del-Rei 2013

FRANCIELLY MUNIQUE DA SILVA RODRIGUES UFSJ UNIVERSIDADE FEDERAL DE SO JOO DEL-REI DCOMP DEPARTAMENTO DE CINCIA DA COMPUTAO

TP 2: SISTEMA DE CADASTROS
Segundo trabalho prtico a ser entregue para obteno de nota parcial no curso de Cincia da computao na disciplina Algoritmos e Estruturas de Dados (AEDS 1) sob orientao do prof. Alan de Freitas

So Joo Del-Rei 2013

ndice:
1. Introduo......................................................................................................................3 2. Problema Proposto.........................................................................................................4 3. Descrio dasoluo......................................................................................................5 3.1. Descrio do cdigo fonte.....................................................................................5 4. Concluso....................................................................................................................16

1. Introduo
Sistemas de cadastro so muito teis hoje em dia e so utilizados em todos os lugares. So imprescindveis em lojas para o cadastro de clientes e produtos, empresas para o controle de servios e funcionrios, escolas para a organizao de livros da biblioteca, alunos, professores, etc. Esse trabalho tem por objetivo a implementao de um sistema de cadastro til e funcional.

2. Problema Proposto
Neste trabalho dever ser desenvolvido um sistema de cadastro que contenha:

1) Um menu que se repita at que o usurio escolha encerrar o programa 2) Estruturas de vetores e matrizes para guardar as informaes 3) Sub-rotinas que faam a ao escolhida pelo usurio 4) Dados armazenados em registros durante a execuo do programa 5) Salvar os dados cadastrados em um arquivo externo. O programa abre o arquivo e o l quando o programa inicia. O programa salva a informao no arquivo e o fecha quando o programa encerra.

Criar um problema prprio para resolver com o sistema de cadastro. O aluno pode escolher fazer um programa com qualquer tarefa que j lhe seja til.

O programa deve ter obrigatoriamente opes de mostrar, inserir e remover dados convenientemente, alm das outras funes convenientes ao contexto do problema.

3. Descrio da Soluo

O programa desenvolvido apresenta uma planilha de gastos mensal com um menu inicial onde so apresentadas 10 opes para cadastrar e manipular os dados da planilha.

3.1. Descrio do Cdigo fonte

Parte 1: Declarao de registros e das variveis globais:


program tp2; uses crt; TYPE gasto=RECORD {registro do tipo gasto contendo as variveis nome, categoria, valor e numero de parcelas do gasto a ser cadastrado} nome_do_gasto: string[20]; categ_gasto: string[20]; valor_do_gasto: real; parcelas: integer; end; TYPE ganho=RECORD {registro do tipo ganho contendo as variveis nome e valor do ganho (receita) a ser cadastrado} nome_do_ganho: string[30]; valor_do_ganho: real; end; TYPE debitos = array [1..100] of gasto; {declara um vetor dbitos do tipo gasto} TYPE saldo = array [1..100] of ganho; {declara um vetor saldo do tipo ganho} var arquivo_debitos: FILE of gasto; {declara um arquivo do tipo gasto} arquivo_saldo: FILE of ganho; {declara um arquivo do tipo ganho} inicio, posicao, cadastro_despesas, cadastro_receitas: integer; {outras variveis globais utilizadas}

Parte 2: Procedimentos para o cadastro de novas despesas e receitas:


Procedure nova_despesa(var vetorgastos:debitos; var cadastro_despesas: integer); begin cadastro_despesas := cadastro_despesas + 1; {contador para que o vetor mude para a posio seguinte a cada novo cadastro} writeln('Digite o nome da sua despesa:'); readln(vetorgastos[cadastro_despesas].nome_do_gasto); {salva na posio do contador na varivel nome} writeln; writeln('Especifique uma categoria para essa despesa (Ex: compras, contas, dividas):'); readln(vetorgastos[cadastro_despesas].categ_gasto); {salva na posio do contador na varivel categoria} writeln; writeln('Digite o valor gasto com essa despesa (Use pontos no lugar de virgulas):'); readln(vetorgastos[cadastro_despesas].valor_do_gasto); {salva na posio do contador na varivel valor} writeln; writeln('Digite o numero de parcelas. Se nao houverem parcelas, digite 0.'); readln(vetorgastos[cadastro_despesas].parcelas); {salva na posio do contador na varivel parcelas} writeln; end; {O procedimento abaixo segue as mesmas regras s que para cadastrar receitas} Procedure nova_receita(var vetorganhos:saldo; var cadastro_receitas: integer); begin cadastro_receitas:= cadastro_receitas + 1; writeln('Digite o nome da sua receita:'); readln(vetorganhos[cadastro_receitas].nome_do_ganho); writeln; writeln('Digite o valor dessa receita (Use pontos no lugar de virgulas):'); readln(vetorganhos[cadastro_receitas].valor_do_ganho); end;

Parte 3: Procedimentos para mostrar todas as despesas e receitas:


Procedure mostrar_despesas(var vetorgastos: debitos); var i: integer; Begin writeln('Despesas cadastradas ate agora:'); writeln; For i:= 1 to cadastro_despesas do {percorrer todo o vetor mostrando cada item cadastrado} begin writeln('Nome da despesa: ', vetorgastos[i].nome_do_gasto); writeln('Categoria: ', vetorgastos[i].categ_gasto); writeln('Valor: ', vetorgastos[i].valor_do_gasto:0:2); writeln('Parcelas: ', vetorgastos[i].parcelas); writeln; end; readkey; end; Procedure mostrar_receitas(var vetorganhos: saldo); var i: integer; Begin writeln('Receitas cadastradas ate agora:'); writeln; For i:= 1 to cadastro_receitas do {percorrer todo o vetor mostrando cada item cadastrado} begin writeln('Nome da receita: ', vetorganhos[i].nome_do_ganho); writeln('Valor: ', vetorganhos[i].valor_do_ganho:0:2); writeln; end; readkey; end;

Parte 4: Procedimentos para a edio de receitas e despesas:


Procedure edicao_despesas(var vetorgastos: debitos; var posicao, cadastro_despesas: integer); Var i, menu_edit: integer; confirma: char; Begin inicio := 2; writeln('Manipulacao de despesas: '); {Menu de edio de despesas} writeln; writeln('Digite 1 para editar.'); writeln('Digite 2 para excluir.'); writeln('Digite 0 para voltar ao menu principal.'); readln (menu_edit); Case menu_edit of 0: inicio:= 1; {volta ao menu principal} 1: Begin write('Novo nome da despesa: '); readln(vetorgastos[posicao].nome_do_gasto); {sobrescreve o contedo da varivel na posio} write('Nova categoria: '); readln(vetorgastos[posicao].categ_gasto); write('Novo valor: '); readln(vetorgastos[posicao].valor_do_gasto); write('Nova quantidade de parcelas: '); readln(vetorgastos[posicao].parcelas); writeln('Despesa editada com sucesso! '); writeln('Pressione qualquer tecla para voltar ao menu principal.'); readkey; end; 2: Begin writeln('Tem certeza que deseja excluir? (s/n)'); readln(confirma); If (confirma = 's') then begin For i:= posicao+1 to cadastro_despesas do vetorgastos[i-1] := vetorgastos[i]; {joga todos os elementos do vetor para uma posio antes} cadastro_despesas := cadastro_despesas - 1; {diminui o tamanho do vetor} writeln('Despesa excluida com sucesso! '); writeln ('Pressione qualquer tecla para voltar ao menu principal.'); readkey; end else inicio := 2; {se a excluso no for confirmada, volta ao menu} readkey; end; end; end; 8

Procedure edicao_receitas(var vetorganhos: saldo; var posicao, cadastro_receitas: integer); Var menu_edit, i: integer; confirma: char; Begin inicio := 2; writeln('Manipulacao de receitas: '); {menu de edio} writeln; writeln('Digite 1 para editar.'); writeln('Digite 2 para excluir.'); writeln('Digite 0 para voltar ao menu principal.'); readln (menu_edit); clrscr; Case menu_edit of 0: inicio := 1; 1: Begin write('Novo nome da receita: '); readln(vetorganhos[posicao].nome_do_ganho); {sobrescreve os dados do vetor na posio} write('Novo valor: '); readln(vetorganhos[posicao].valor_do_ganho); writeln('Receita editada com sucesso! '); writeln('Pressione qualquer tecla para voltar ao menu principal.'); end; 2: Begin writeln('Tem certeza que deseja excluir? (s/n)'); readln(confirma); {confirma a excluso} If (confirma = 's') then begin For i:= posicao+1 to cadastro_receitas do {percorre o vetor jogando todos os elementos para a posio anterior} vetorganhos[i-1] := vetorganhos[i]; cadastro_receitas := cadastro_receitas - 1; {diminui em 1 o tamanho do vetor} writeln('Receita excluida com sucesso! '); writeln('Pressione qualquer tecla para voltar ao menu principal.'); end else inicio:= 2; end; end; end; 9

Parte 5: Procedimentos para busca de despesas e receitas:


Procedure busca_despesas(var vetorgastos: debitos; var cadastro_despesas: integer); var busca_d, i: integer; buscanome_d: string[20]; buscacateg_d: string[20]; achou: char; Begin writeln('Busca e Edicao de Despesas'); {menu para busca de despesas por nome ou categoria} writeln; writeln('Digite o numero correspondente a opcao desejada:'); writeln; writeln('1: Buscar por nome'); writeln('2: Buscar por categoria'); readln(busca_d); Case busca_d of 1: Begin writeln('Digite o nome da despesa'); readln(buscanome_d); For i:=1 to cadastro_despesas do {busca o nome no vetor} If (buscanome_d = vetorgastos[i].nome_do_gasto) then begin clrscr; posicao := i; {salvar a posio do item} achou:= 'v'; {atribui valor varivel achou} writeln('Nome da despesa: ', vetorgastos[i].nome_do_gasto); writeln('Categoria: ', vetorgastos[i].categ_gasto); writeln('Valor: ', vetorgastos[i].valor_do_gasto:0:2); writeln('Parcelas: ', vetorgastos[i].parcelas); writeln; end; If (achou = 'v') then {se achar} begin edicao_despesas(vetorgastos, posicao, cadastro_despesas); {chama o procedimento de adio de despesas} end else begin {se no achar} writeln('Desculpe, nao foram encontradas despesas com esse nome. Tente novamente!'); readkey; end; end;

10

2: Begin writeln('Digite a categoria da despesa'); readln(buscacateg_d); For i:= 1 to cadastro_despesas do {busca categoria digitada} begin If (buscacateg_d = vetorgastos[i].categ_gasto) then {se for igual} begin writeln('Nome da despesa: ', vetorgastos[i].nome_do_gasto); writeln('Categoria: ', vetorgastos[i].categ_gasto); writeln('Valor: ', vetorgastos[i].valor_do_gasto:0:2); writeln('Parcelas: ', vetorgastos[i].parcelas); writeln; posicao := i; achou := 'v'; end; end; If (achou = 'v') then {se achou} edio_despesas(vetorgastos, posicao, cadastro_despesas) {chamar o procedimento de edio de despesas} else begin {se no achou} writeln('Desculpe, nao foram encontradas despesas na categoria ', buscacateg_d, ', Tente novamente!'); readkey; end; end; end; end; Procedure busca_receitas(var vetorganhos: saldo; var cadastro_receitas: integer); Var i: integer; busca_r: string[15]; achou: char; Begin writeln('Digite o nome da receita para realizar a busca'); readln(busca_r); For i:=1 to cadastro_receitas do Begin If (busca_r = vetorganhos[i].nome_do_ganho) then begin writeln('Nome da receita: ', vetorganhos[i].nome_do_ganho); writeln('Valor: ', vetorganhos[i].valor_do_ganho:0:2); writeln; posicao := i; achou := 'v'; end; end; If (achou = 'v') then begin edicao_receitas(vetorganhos, posicao, cadastro_receitas); {chama o procedimento} 11 end;

else begin writeln('Desculpe, nao foram encontradas receitas com esse nome. Tente novamente!'); readkey; end; end;

Parte 6: Funes para clculo de total de despesas, total de receitas e saldo:


Function total_gastos(vetorgastos: debitos): real; var soma: real; i: integer; begin soma:= 0; {declara a soma como 0} For i:= 1 to 100 do soma:= soma + vetorgastos[i].valor_do_gasto; {soma todas as variveis de valor do gasto no vetor} total_gastos:= soma; {atribui o resultado a varivel soma} end; Function total_ganhos(vetorganhos: saldo): real; var soma: real; i: integer; begin soma:= 0; {declara a soma como 0} For i:= 1 to 100 do soma:= soma + vetorganhos[i].valor_do_ganho; {soma todas as variveis de valor do gasto no vetor} total_ganhos:= soma; {atribui o resultado a varivel soma} end; Function saldo_final(vetorgastos: debitos; vetorganhos: saldo): real; Begin saldo_final:= total_ganhos(vetorganhos) - total_gastos(vetorgastos); {calcula a diferena entre os ganhos e os gastos} end;

12

Parte 7: Programa principal


var vetorgastos: debitos; vetorganhos: saldo; menu_1, i, j: integer; Begin assign(arquivo_debitos,'arquivo_debitos.txt'); {abre o arquivo} {$I-} reset(arquivo_debitos) {$I+}; {verifica se h erros} If IOResult <> 0 then {se houver, cria novo arquivo} rewrite (arquivo_debitos); {abaixo temos a mesma coisa para o arquivo de receitas} assign(arquivo_saldo,'arquivo_saldo.txt'); {$I-} reset(arquivo_saldo) {$I+}; If IOResult <> 0 then rewrite (arquivo_saldo); i := 1; j := 1; cadastro_despesas := 0; cadastro_receitas := 0; while not eof(arquivo_debitos) do {enquanto no for final de arquivo faa} begin read(arquivo_debitos,vetorgastos[i]); {ler arquivo} i := i + 1; {anda uma posio} cadastro_despesas := cadastro_despesas + 1; {aumenta o vetor} end; {abaixo temos o mesmo para o arquivo de receitas} while not eof(arquivo_saldo) do begin read(arquivo_saldo,vetorganhos[j]); j := j + 1; cadastro_receitas := cadastro_receitas + 1; end;

13

writeln('Planilha mensal de gastos'); {exibe o menu} writeln; inicio := 1; {atribui valor 1 a varivel incio} If (inicio = 1) then begin repeat writeln('Bem vindo a sua tabela de gastos!'); {continuao do menu} writeln('Entre com o numero correspondente a opcao desejada:'); writeln; writeln('1: Cadastrar uma despesa (Ex: Compras, contas, etc)'); writeln; writeln('2: Cadastrar uma receita (Ex: Salario, recebimento de aluguel, etc)'); writeln; writeln('3: Visualizar todas as despesas'); writeln; writeln('4: Visualizar todas as receitas'); writeln; writeln('5: Exibir, editar ou remover despesas'); writeln; writeln('6: Exibir, editar ou remover receitas'); writeln; writeln('7: Visualizar valor total das despesas'); writeln; writeln('8: Visualizar Valor total das receitas'); writeln; writeln('9: Calcular saldo do mes'); writeln; writeln('0: Para sair'); readln(menu_1); clrscr; Case menu_1 of 1: nova_despesa(vetorgastos, cadastro_despesas); {chama o procedimento de cadastro de despesas} 2: nova_receita(vetorganhos, cadastro_receitas); {chama o procedimento de cadastro de receitas} 3: mostrar_despesas(vetorgastos); {chama o procedimento de mostrar despesas cadastradas} 4: mostrar_receitas(vetorganhos); { chama o procedimento de mostrar receitas cadastradas} 5: busca_despesas(vetorgastos, cadastro_despesas); { chama o procedimento de buscar despesas cadastradas} 6: busca_receitas(vetorganhos, cadastro_receitas); {chama o procedimento de buscar receitas cadastradas} 14

7: Begin writeln('Valor Total das Despesas Cadastradas: ', total_gastos(vetorgastos):0:2); {chama a funo que calcula total das despesas e mostra na tela} writeln('Pressione qualquer tecla para voltar ao menu principal.'); readkey; end; 8: Begin writeln('Valot Total das Receitas Cadastradas: ', total_ganhos(vetorganhos):0:2); {chama a funo que calcula total das receitas e mostra na tela} writeln('Pressione qualquer tecla para voltar ao menu principal.'); readkey; end; 9: Begin writeln('Saldo Final Parcial (Receitas - Despesas cadastradas ate agora): ', saldo_final(vetorgastos, vetorganhos):0:2); {chama a funo que calcula o saldo e mostra na tela} writeln('Pressione qualquer tecla para voltar ao menu principal.'); readkey; end; end; CLRSCR; until (menu_1 = 0); {mostra o menu at ser selecionada opo sair} end; rewrite(arquivo_debitos); {reescrever arquivo de despesas} for i:=1 to cadastro_despesas do {para i de 1 at o nmero de cadastros, escreva no vetor} write(arquivo_debitos, vetorgastos[i]); close(arquivo_debitos); {fecha o arquivo} rewrite(arquivo_saldo); {reescrever arquivo de receitas} for j:=1 to cadastro_receitas do {para i de 1 at o nmero de cadastros, escreva no vetor} write(arquivo_saldo, vetorganhos[j]); close(arquivo_saldo); {fecha o arquivo} end. {fim do programa} 15

4. Concluso

Nesse trabalho prtico foi implementado um sistema de cadastro utilizando registros, arranjos, sub-rotinas e arquivos. O programa trata-se de uma planilha digital para o controle de despesas e receitas do ms, e possui as seguintes finalidades: Cadastro de novas despesas e receitas, visualizao dos dados j cadastrados, busca e edio desses dados, clculo do total de despesas do ms, clculo do total de receitas do ms, e clculo do saldo parcial (receitas despesas).

16

Você também pode gostar