UNIP INTERATIVA Projeto Integrado Multidisciplinar Cursos Superiores de Tecnologia Tecnologia
DESENVOLVIMENTO DE SOT!ARE SOT!ARE Siste"a de Venda Venda de Passagens Pas sagens
Polo #######$U Ano
UNIP INTERATIVA Projeto Integrado Multidisciplinar Cursos Superiores de Tecnologia Tecnologia
DESENVOLVIMENTO DE SOT!ARE SOT!ARE Siste"a de Venda Venda de Passagens Pas sagens
No"eNo"eNo"eNo"eNo"eNo"e RA% &&&&&&&&&&& Curso% An'lise e Desen(ol(i"ento de Siste"as Se"estre% &)
Polo #######$U Ano
Resu"o
Este projeto te" por o*jeti(o o desen(ol(i"ento de u" siste"a de (enda de passagens de +ni*us, O siste"a -oi desen(ol(i"ento na linguage" de progra"a./o C co" a utili0a./o da -erra"enta DEV C11, Utili0ando os con2eci"entos e t3cnicas ad4uiridos ao longo do pri"eiro tri"estre do curso de An'lise e Desen(ol(i"ento de Siste"as -oi poss5(el desen(ol(er o aplicati(o de -or"a a atender os re4uisitos do projeto, As -un.6es -ora" "odulari0adas se"pre 4ue poss5(el a -i" de tornar -uturas "anuten.6es "ais si"ples, ora" adicionados co"ent'rios por todo o c7digo a -i" de -acilitar sua co"preens/o,
A*stract
T2is project ai"s to de(elop a *us tic8ets sale s9ste" , T2e s9ste" 2as *een de(eloped in t2e C progra""ing language :it2 t2e use o- DEV C 11 tool, Using t2e 8no:ledge and s8ills ac4uired during t2e -irst 4uarter o- t2e course in S9ste"s Anal9sis and De(elop"ent :as possi*le to gro: t2e application to "eet project re4uire"ents , T2e -unctions are "odulari0ed :2ere(er possi*le in order to "a8e -uture "aintenance easier, Co""ents 2a(e *een added t2roug2out t2e code in order to "a8e understanding easier,
Su"'rio
Introdu./o;;;;;;;;;;;;;;;;;;;;;;;;;;;; < ) = Dos Re4uisitos;;;;;;;;;;;;;;;;;;;;;;;;,,, > ? = Do Modelo de Desen(ol(i"ento;;;;;;;;;;;;;;;;;,,, > ?,) = Do Prot7tipo;;;;;;;;;;;;;;;;;;;;;;;;;@ ?,? = Da Modelage";;;;;;;;;;;;;;;;;;;;;;;;)& = Da I"ple"enta./o das uncionalidades;;;;;;;;;;;;;;;)) ,) = Da I"ple"enta./o dos Ve5culos;;;;;;;;;;;;;;;;;, )B ,? = Da I"ple"enta./o das Vendas;;;;;;;;;;;;;;;;;,,, )> , = Da I"ple"enta./o do luo de Caia;;;;;,,,;;;;;;;;; ) Conclus/o;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;, ?) Re-erncias;;;;;;;;;;;;;;;;;;;;;;;;;;;,, ??
< Introdu./o
O siste"a desen(ol(ido neste projeto 3 capa0 de e"itir u" tic8et contendo in-or"a.6es co"o data e 2or'rio da (iage"F nG"ero da poltronaF nG"ero do +ni*us e destino, Ta"*3" de(er' ser capa0 de per"itir at3 duas passagens gratuitas para idosos e -ornecer desconto de <&H para estudantes, De(er' ser capa0 de e(itar a (enda de u"a "es"a poltrona para "ais de u" passageiro, Por -i"F de(er' ser capa0 de ei*ir as "o(i"enta.6es do caia, Ao longo deste tetoF detal2arei co"o -oi o processo de desen(ol(i"ento do siste"a e as solu.6es adotadas para 4ue -osse poss5(el atender aos re4uisitos,
> ) = Dos Re4uisitos O siste"a desen(ol(ido neste projeto de(er' ser capa0 de ad"inistrar ('rios aspectos da (enda de passagens de +ni*us, O pri"eiro re4uisito 3 4ue o siste"a le(e e" considera./o u"a ta*ela de tari-a./o co" o (alor das passagens, A partir da5F de(er' per"itir 4ue estudantes co"pre passagens co" <&H de desconto, Ta"*3" de(er' per"itir 4ue at3 duas passagens ten2a" gratuidade de )&&H para idosos, Ap7s a -inali0a./o da (endaF de(er' ser e"itido u" tic8et contendo a data e 2ora da partida do +ni*usF o local de destinoF o nG"ero do +ni*us e o nG"ero da poltrona, O siste"a n/o poder' per"itir 4ue a "es"a poltrona seja (endida "ais de u" passageiro, N/o pode" ser (endidos "ais lugares do 4ue os dispon5(eis no (e5culo, De(er' -a0er a gest/o do caiaF ar"a0enando todas as "o(i"enta.6es do dia e o saldo do -ec2a"ento,
? = Do Modelo de Desen(ol(i"ento Considerando o pe4ueno ta"an2o do projetoF optei por seguir o conceito dos "3todos 'geisF no sentido iniciar o projeto co" u" prot7tipoF de intercalar o planeja"ento co" a escrita do c7digo e de -ocar no -unciona"entoF "ais do 4ue na docu"enta./o, O desen(ol(i"ento ta"*3" se deu de -or"a incre"entalF pois ap7s a inclus/o de -uncionalidades o processo retorna(a -ase an'lise das necessidadesF passando por no(a "odelage"F codi-ica./o e testes, Para constru./o do prot7tipoF pri"eira"ente -ora" de-inidos os "enus e op.6es necess'rios, Assi"F -ora" desen(ol(idas as principais telas a sere" ei*idas pelo aplicati(o por3" se" as -uncionalidades 4ue seria" i"ple"entadas posterior"ente, Toda a "odelage" -oi reali0ada por "eio de descri./o narrati(a, As tare-as necess'rias -ora" de-inidas e depois -ora" gradati(a"ente detal2adas e trans-or"adas e" tare-as "enores, Assi" 4ue esti(esse" su-iciente"ente detal2adasF as -un.6es era" ent/o codi-icadas,
@ Esta -or"a de desen(ol(i"ento se "ostrou *astante e-icienteF para u" projeto de pe4ueno co"o este, Por3"F 3 necess'rio 4ue a descri./o narrati(a seja capa0 de atingir u" n5(el de detal2a"ento ade4uado e 4ue seja *astante clara,
?,) = Do prot7tipo A ela*ora./o do prot7tipo en(ol(eu a identi-ica./o das op.6es necess'rias no "enu principal do aplicati(o, Identi-i4uei 4ue seria necess'ria u"a op./o para cada destino di-erente e 4ue a princ5pio o siste"a tra*al2aria co" destinos% S/o PauloF Curiti*a e Jelo Kori0onte, Ta"*3" seria necess'ria u"a op./o para 4ue -osse ei*ido o -luo de caia, Por -i"F seria necess'ria u"a op./o para sair do siste"a, De-inidas as necessidade do "enu principalF -oi pro(idenciada sua codi-ica./o, To"ei o cuidado de n/o inserir o c7digo de ei*i./o do "enu direta"ente na -un./o main() a -i" de e(itar 4ue -icasse polu5da, Optei por delegar essa tare-a u"a -un./o c2a"ada exibirMenuPrincipal() 4ue 3 c2a"ada pela -un./o main(), O prot7tipo do "enu -icou da
seguinte -or"a% Je" (indo ao siste"a de (endas de passagens da Viagens Tour Menu Principal ) Vender passage" para Sao Paulo ? Vender passage" para Curiti*a Vender passage" para Jelo Kori0onte B estao do Caia Sair Selecione u"a opcao% A pr7i"a etapa -oi ela*orar a ei*i./o do "enu secund'rioF 4ue seria ei*ido ap7s a sele./o de u" destino pelo usu'rio, E" "in2a concep./oF o siste"a de(eria ei*ir na tela u"a representa./o das poltronas do +ni*us, Essa representa./o de(eria ei*ir o nG"ero das poltronas e sua ocupa./o, A ocupa./o seria indicada pelo caracteres F IF C e E 4ue representa" respecti(a"enteF u"a poltrona (a0iaF u"a poltrona ocupada por idoso co"
gratuidadeF u"a poltrona ocupada por u" pagante co"u" e u"a poltrona ocupada por u" estudante, Na tela s/o ei*idas B poltronas por lin2aF representando as duas poltronas do lado es4uerdo e as duas poltronas do lado direito, Al3" de ei*ir as poltronas e suas ocupa.6esF ta"*3" 3 ei*ido o destinoF os (alores de todos os tipos de passagens, Por -i"F o usu'rio 3 solicitado a digitar o nG"ero da poltrona a ser (endida ou digitar ) para retornar ao "enu principal, Eis o prot7tipo do "enu% Ei*indo Assentos Disponi(eis para Curiti*a &) &? & &B &< &> &@ & & )& )) )? ) )B )< )> )@ ) ) ?& ?) ?? ? ?B ?< ?> ?@ ? ? & ) ? B < > @ B& B) B? B BB B< B> B@ B O (alor da passage" co"u" e2 de RQ>&,&& Estudantes paga" RQ&,&& Idosos paga" RQ&,&& "ai"o de ? por (eiculo Digite o nu"ero do assento a ser (endido ou ) para (oltar% Os dois "enus apresentados -inali0ara" a etapa inicial de prototipa./o e a partir de ent/o -oi poss5(el inciar a pr7i"a etapa, Co"o esta"os tra*al2ando e" u" "odelo incre"entalF depois de "odeladas e desen(ol(idas as -uncionalidades dos "enus principais e secund'riosF retornnei -ase de prototipa./o por "ais duas (e0es a -i" de desen(ol(er os prot7tipos do -luo de caia e da e"iss/o do tic8et,
Eis o prot7tipo do relat7rio de representa o -luo de caia co" todas as transa.6es reali0adas durante a eecu./o do siste"a, Ta"*3" 3 ei*ido o saldo de todas as transa.6es e-etudas, Os (alores s/o ei*idos co" o s5"*olo da "oeda e co" duas casas deci"ais, Mo(i"entacao do Caia RQ?@,<& RQ<<,&& RQ??,<& RQB<,&& RQ&,&& RQ>&,&& O saldo no caia e2 de RQ?B&,&& Press an9 8e9 to continue , , ,
A*aioF o prot7tipo do "7dulo de i"press/o do tic8et, S/o i"pressos% o local de destinoF a data e o 2or'rio da partidaF o nG"ero do +ni*us e o nG"ero da poltrona, Co"pro(ante de Co"pra de Passage"
Destino Curiti*a Partida as )B%& do dia )>$)?$?&)< Oni*us nu"ero% BB Poltrona% ?> Press an9 8e9 to continue , , ,
)& ?,? = Da Modelage" Co" as principais inter-aces prontas pude co"e.ar a ela*orar a l7gica a ser seguida pelo siste"a, Co"o "encionei anterior"enteF optei por descre(er toda a l7gica por "eio de u"a descri./o narrati(a, Conclu5 4ue tal a*ordage" seria "ais e-eti(a e" rela./o utili0a./o do portugol ou da ela*ora./o de -luogra"as, Deitel e Deitel ?&))F e" seu li(ro C% Co"o Progra"arF ta"*3" se utili0a" do "3todo de descri./o narrati(aF deno"inandoo co"o Pseudoc7digo, E" sua de-ini./oF o pseudoc7digo 3 u"a linguage" arti-icial e in-or"alF se"el2ante linguage" do dia a dia 4ue ajuda os progra"adores a desen(ol(er algorit"os, Voltando ao nosso siste"a de passagensF a ela*ora./o da l7gica do "enu principal -oi *astante si"ples, Li"itandose condu0ir o usu'rio para o "enu secund'rio correto, A descri./o narrati(a -icou da seguinte -or"a% Caso o usu'rio selecione a op./o )% Ei*a a tela de (enda do (e5culo 4ue ir' S/o Paulo Caso o usu'rio selecione a op./o ?% Ei*a a tela de (enda do (e5culo 4ue ir' Curiti*a Caso o usu'rio selecione a op./o % Ei*a a tela de (enda do (e5culo 4ue ir' Jelo Kori0onte Caso o usu'rio selecione a op./o B% Ei*a o -luo de caia Caso o usu'rio selecione a op./o % Per"ite a sa5da do loop 4ue "ant3" o "enu
Na tela de (enda de passagens aca*ou sendo concentrada pratica"ente toda a l7gica do progra"aF le(ando u"a descri./o u" pouco "ais etensa, A4ui precisa"os sa*er 4ual (e5culo -oi selecionado no "enu anterior e ent/o ei*ir suas in-or"a.6es ao usu'rio, Depois ser' solicitado ao usu'rio 4ue selecione u"a poltrona e o tipo de passage"F e-etuandose as (eri-ica.6es de disponi*ilidade, Ap7s a con-ir"a./o da (endaF precisa"os e"itir u" tic8etF registrar a transa./o e indicar ao siste"a 4ue a poltrona se encontra ocupada, A*aio segue a descri./o narrati(a do algorit"o ela*orado para eecutar essas tare-as,
)) Ei*ir as in-or"a.6es do (e5culo selecionado Ei*ir a ta*ela dos assentos do (e5culo selecionado Ei*ir os (alores para todos os tipos de passagens Solicitar ao usu'rio 4ue selecione u"a poltrona Veri-icar se 3 u"a poltrona ('lida = Se n/o -or = ei*ir "ensage" Veri-icar se a poltrona est' (a0ia Se n/o esti(er = ei*ir "ensage" Solicitar ao usu'rio 4ue in-or"e o tipo de passage" Se a passage" -or de idosoF (eri-icar disponi*ilidade = Se n/oF ei*e "sg Re"o(er u" dos lugares dispon5(eis para idosos Preenc2er a ta*ela de assentos do (e5culo co" o caractere ade4uado Registrar a transa./o de acordo co" o (alor da passage" I"pri"ir Tic8et Retornar ao "enu de (endas
= Da I"ple"enta./o das uncionalidades Antes de iniciali0ar a i"ple"enta./o de 4ual4uer -uncionalidadeF identi-i4uei 4ue 2a(ia ('rios erros ocorrendo durante a eecu./o dos prot7tipos, Ent/o precisei trat'los antes de iniciar o desen(ol(i"ento, O pri"eiro desses erros se da(a pela utili0a./o da -un./o scan- para o*ten./o de u"a op./o a ser digitada pelo usu'rio, Todos os "enus ela*oradosF solicita" ao usu'rio a sele./o de u"a op./o por "eio da entrada de u" nG"ero inteiro, Por3"F o siste"a se co"porta(a de -or"a inade4uada 4uando o usu'rio digita(a u" caractere, E" u"a r'pida *usca ao oogleF perce*i 4ue ('rios no(atos so-ria" co" o "es"o pro*le"a, Rapida"ente aca*ei c2egando ao site stac8o(er-lo:,co"F onde 3 poss5(el encontrar sugest6es da co"unidade para os "ais di(ersos pro*le"as, AliF eu desco*ri 4ue a -un./o scan- retorna u" inteiro representando o nG"ero de atri*ui.6es e-etuadas co" sucesso, Se o (alor de retorno da -un./o scan-HdF Wopcao -or igual &F signi-ica 4ue a entrada do usu'rio -oi in('lida, Ent/oF para contornar os erros apresentados criei a -un./o solicitarIntF 4ue solicita a
)? entrada de u" inteiro e o ar"a0ena na (ari'(el valorDigitado, X -eita a (eri-ica./o do retorno da -un./o scan-, En4uanto a -un./o scan-HdF H(alorDigitado n/o retornar o (alor )F indicando 4ue a atri*ui./o solicitada -oi e-etuada co" sucessoF o siste"a -icar' e" loop solicitando ao usu'rio a entrada de u" nG"ero, Yuando o usu'rio digitar u" nG"ero a -un./o o ar"a0enar' co" sucesso na (ari'(el valorDigitado e o retornar' -un./o c2a"adora, Mes"o to"ando estes cuidados a -un./o solicitarInt ainda entra(a e" loop in-inito 4uando o usu'rio entra(a co" u" caractere, Segundo as eperincias relatadas no site stac8o(er-lo:,co"F isso se de(ia eistncia de sujeira no *u--er de entrada, Ent/o precisei criar u"a -un./o para es(a0iar o *u--er de entrada do tecladoF pois as in-or"a.6es ali ar"a0enadas ainda causa(a" erros no siste"a, Essa -un./o 3 eecutada i"ediata"ente ap7s u" scan- in('lido e consiste e" eecutar a -un./o getc2ar at3 4ue se encontre u"a 4ue*ra de lin2a Zn ou u" indicador de -i" de ar4ui(o EO, Ap7s esta i"ple"enta./oF os erros deiara" de ocorrer, int solicitarInt[ int (alorDigitado\ :2ile scan-]Hd]F W(alorDigitado^_)[
es(a0iarJu--erEntrada\ print-]Digite u" nu"ero% ]\ ` return (alorDigitado\
` (oid es(a0iarJu--erEntrada[ c2ar c\ :2ilec _ getc2ar ^_ Zn WW c ^_ EO\ `
Outro pro*le"a identi-icado re-erese porta*ilidade do siste"aF pois sou usu'rio Linu e senti certa -rustra./o ao n/o conseguir eecutar os prot7tipos desen(ol(idos e" !indo:s, Identi-i4uei 4ue o pro*le"a residia na utili0a./o da -un./o system() co" os argu"entos cls e pause nati(os do !indo:s, Segue a*aio a solu./o encontrada, Criei a -un./o pausar e su*stitu5 todos os usos de s9ste"pause pela -un./o
) criada, Sua -uncionalidade resu"ese ei*ir a "ensage" Pressione ENTER para continuar en4uanto u"a c2a"ada -un./o getc2ar deia o siste"a espera de u"a entrada, A eistncia de res5duos de in-or"a./o e" *u--er ta"*3" prejudicara" o -unciona"ento
da
-un./o,
Desta
-or"a
inclu5
u"a
c2a"ada
-un./o
esvaziarBufferEntrada(), Pro*le"a resol(idoF co" direito u"a de"onstra./o da
i"portncia da cria./o de -un.6es o*jeti(as 4ue possa" ser reutili0adas, (oid pausar[ print-]ZnPressione ENTER para continuar,Zn]\ es(a0iarJu--erEntrada\ getc2ar\ `
A alternati(a para utili0a./o de s9ste"cls -oi "ais co"plea e en(ol(eu a utili0a./o de outra sugest/o encontrada e" stac8o(er-lo:,co", A solu./o se utili0a da Co"pila./o Condicional a*ordada por Deitel e Deitel?&)) no Cap5tulo ) do li(ro C Co"o Progra"ar, Atra(3s das direti(as bi-de-F beli-F bendi- (eri-icase o siste"a operacional e" eecu./o e orientase o co"pilador a co"pilar apenas a instru./o ade4uada, Criei a -un./o limparTela() i"ple"entando essas direti(as, (oid li"parTela[ bi-de- linu s9ste" ]clear]\ beli- de-ined !IN? s9ste" ]cls]\ belse
print-]ZeKZe?]\
bendi` A partir deste "o"ento o siste"a se tornou port'(el, X poss5(el co"pil'lo e eecut' lo co" sucesso e" siste"as !indo:s e Linu,
)B ,) Da I"ple"enta./o dos Ve5culos De posse do prot7tipo e da descri./o narrati(aF conclu5 4ue a pr7i"a etapa de(eria ser a cria./o de u"a estrutura 4ue pudesse representar u" (e5culo e as in-or"a.6es deste (e5culo 4ue seria" necess'rias ao siste"a, A utili0a./o de u"a estrutura (isa -acilitar a adi./o de ('rios (e5culos co" destinosF datas e 2or'rios di-erentes, Assi"F -oi criado o struct de no"e “veiculo 4ue cont3" as in-or"a.6es de% DestinoF Valor da Passage"F Data da PartidaF Kora da PartidaF NG"ero do Ve5culoF Poltronas Dispon5(eis para ratuidade de Idosos e u" (etorF co" B posi.6esF representando todas as poltronas do +ni*us, struct (eiculo[ c2ar ta*elaPoltronasYUANTIDADEPOLTRONASf\ int idososDisponi(eis\ -loat (alorPassage"Co"u"\ c2ar destino)
)< a -i" de representar os +ni*us co" destino S/o PauloF Curiti*a e Jelo Kori0onte, As (ari'(eis -ora" deno"inadas (eiculoSPF (eiculoCTJ e (eiculoJK respecti(a"ente, $ Cria o*jetos do tipo struct (eiculo para cada u" dos (e5culos para o 4ual ser' disponi*ili0ada a (enda de passagens $ t9pede- struct (eiculo Veiculo\ Veiculo (eiculoSPF (eiculoCTJF (eiculoJK\
A pr7i"a etapa -oi pro(idenciar a iniciali0a./o das (ari'(eis do tipo Veiculo, Criei a -un./o inicializar#eiculos() , Nesta -un./o s/o iniciali0adas as in-or"a.6es todos os (e5culos, Segue a*aio a iniciali0a./o do (e5culo co" destino S/o Paulo, Os de"ais (e5culos -ora" iniciali0ados da "es"a -or"a e dentro da "es"a -un./o "as co" seus respecti(os dados, (oid iniciali0arVeiculos[ $$inciali0a as in-or"a.6es do (e5culo co" destino S/o Paulo strcp9(eiculoSP,destinoF ]Sao Paulo]\ strcp9(eiculoSP,dataPartidaF ])<$)?$?&)<]\ strcp9(eiculoSP,2oraPartidaF ]))%?&]\ (eiculoSP,nu"eroVeiculo _ @@&&\ (eiculoSP,(alorPassage"Co"u" _ B<,&\ (eiculoSP,idososDisponi(eis_?\ iniciali0arPoltronasW(eiculoSP\ `
O (etor
tabelaPoltronas!"
de cada (e5culo 3 iniciali0ado pela -un./o
inicializarPoltronas() 4ue preenc2e todos os itens do (etor co" o caractere 4ue representa u"
assento (ago,
)> $ Iniciali0a a ta*ela de poltronas do (eiculo, Preenc2endo todos os assentos co" o indicador de assento (ago, A ta*ela 3 representada por u" (etor de c2ar e o assento (ago 3 representado pelo c2ar de-inido na constante ASSENTOVAO $ (oid iniciali0arPoltronasVeiculo pVeiculo[ int cont\ -orcont_&\ contYUANTIDADEPOLTRONAS\ cont11[ pVeiculohta*elaPoltronascontf _ ASSENTOVAO\ ` `
,? = Da I"ple"enta./o das Vendas O aplicati(o se inicia co" a ei*i./o do "enu principal atra(3s da -un./o ei*irMenuPrincipal, Nesta -un./oF o usu'rio ser' solicitado a selecionar u" destino para o 4ual ser/o (endidas as passagens, Yuando u" destino -or selecionadoF ser' passada u"a re-erncia do respecti(o (e5culo -un./o mnu#enderPassagem() , Todo o siste"a de (endas est' i"ple"entado na -un./o "nuVenderPassage"F 4ue rece*e u"a re-erncia ao (e5culo re-erente ao destino selecionado pelo usu'rio, Ao rece*er u"a re-erencia do tipo VeiculoF a -un./o passa a ser reutili0'(el para 4ual4uer (e5culo e assi" e(ita"os a redundncia de c7digo, Esta -un./o 3 respons'(el por ei*ir as in-or"a.6es do destinoF os (alores das passagensF a representa./o das poltronas co" sua ocupa./o, Solicita ao usu'rio 4ue in-or"e o nG"ero da poltrona a ser (endida e depois solicita o tipo de passage" co"u"F idoso ou estudante, Por -i" reali0a a (endaF registra a transa./o no -luo de caiaF por "eio da -un./o inserirTransacao e e"ite o co"pro(ante de co"pra por "eio da -un./o i"pri"irTic8et, Dentro da -un./o "nuVenderPassage" ta"*3" 3 (eri-icado se a poltrona selecionada j' est' ocupada e se o li"ite de gratuidades para idosos j' -oi atingido,
)@ Co"o pode"os notarF a -un./o "nuVenderPassage" 3 u"a -orte candidata ser des"e"*rada e" -un.6es "enores e "ais espec5-icas, Por -alta de te"po e ta"*3" por receio de -a0er co" 4ue o c7digo -i4ue de di-5cil co"preens/oF optei por "anter desta -or"a, Ainda assi"F a -un./o se utili0a de ('rios outras -un.6es "enores co"o i"pri"irTic8et 4ue rece*e o nG"ero da poltrona (endida e u"a re-erncia ao (e5culo e i"pri"e todas as in-or"a.6es da (iage" co"o data de 2or'rio da partidaF nG"ero do +ni*usF nG"ero da poltrona e destino, $ Ei*e na tela o co"pro(ante de co"pra da passage" $ (oid i"pri"irTic8etint nu"PoltronaF Veiculo pVeiculo[ li"parTela\ print-]Zn]\ print-] Co"pro(ante de Co"pra de Passage" Zn]\ print-]Zn]\ print-]Destino HsZnZn]F pVeiculohdestino\ print-]Partida as Hs do dia HsZnZn]F pVeiculoh2oraPartidaF pVeiculohdataPartida\ print-]Oni*us nu"ero% Hd Poltrona% H&?dZnZn]F pVeiculohnu"eroVeiculoF nu"Poltrona\ pausar\ `
A -un./o "nuVenderPassage" ta"*3" se utili0a da -un./o ei*irAssentos 4ue rece*e u"a re-erncia ao (e5culo e ei*e na tela u"a representa./o das poltronas do (e5culo e sua ocupa./o, (oid ei*irAssentosVeiculo pVeiculo[ int nu"Poltrona\ -ornu"Poltrona_&\ nu"PoltronaYUANTIDADEPOLTRONAS\ nu"Poltrona11[ $$Yue*ra u"a lin2a a cada 4uatro poltronas i- nu"Poltrona H B __ &[ print-]Zn]\ ` $$Ei*e o nG"ero da poltrona e u" c2aracter representando sua ocupa./o print-]H&?d Hc ]F nu"Poltrona1)F pVeiculohta*elaPoltronasnu"Poltronaf\ ``
) A -i" de -acilitar e(entual "udan.a nas regras de pre.os para idosos e estudantesF a -un./o "nuVenderPassage" se utili0a das -un.6es getValorEstudante e getValorIdoso 4ue s/o respons'(eis por calcular os (alores das passagens para estudantes e idosos co" *ase nas regras de-inidas, $ Calcula e retorna o (alor da passage" de estudante para o (eiculo in-or"ado, A eistncia desta -un./o -acilita e centrali0a a i"ple"enta.6a de u"a e(entual altera./o no (alor da passage" para estudantes $ -loat getValorEstudanteVeiculo pVeiculo[ return pVeiculoh(alorPassage"Co"u"$?\ ` $ Calcula e retorna o (alor da passage" de idoso para o (eiculo in-or"ado, A eistncia desta -un./o -acilita e centrali0a a i"ple"enta.6a de u"a e(entual altera./o no (alor da passage" para idosos $ -loat getValorIdosoVeiculo pVeiculo[ return &,&\ `
, = Da i"ple"enta./o do Registro do luo de Caia A -uncionalidade de registro do -luo de caia -oi a Glti"a a ser inserida no projeto, Optei por utili0ar u"a estrutura de lista ligada pois n/o 2' co"o sa*er antecipada"ente a 4uantidade de registros a sere" ar"a0enados e desta -or"a -ica descartada a possi*ilidade de utili0a./o de u" (etor ou "atri0 est'ticos,
) Criei u"a estrutura c2a"ada transacao contendo o (alor da transa./o e u" ponteiro para a pr7i"a transa./o da lista, utura"ente podese adicionar outras propriedades estrutura de -or"a a detal2ar a transa./o, $ Cria a estrutura de u"a transacao contendo os ca"pos necessarios incluindo u" ponteiro para o proi"o ite" a -i" de criar u"a lista $ struct transacao[ -loat (alor\ $$c2ar descricaof\ struct transacao proi"aTransacao\ `\ $ Cria o tipo Transacao representantdo a estrutura transacao e cria u" o*jeto listaTransacoes do tipo Transacao 4ue ar"a0enar' as opera.6es e-etuadasF garantindo o controle do caia $ t9pede- struct transacao Transacao\ Transacao listaTransacoes\ Toda (e0 4ue a -un./o mnu#enderPassagem() -inali0a u"a (endaF 3 c2a"ada a -un./o void registrarTransacao() 4ue encapsula parte do c7digo e e" conjunto co" a -un./o inserirTransacao() insere o (alor da (enda na lista,
$un./o a ser c2a"ada direta"ente para inser./o de transa.6es, O o*jeti(o 3 encapsular u"a parte do c7digo necess'rio e tornar "ais si"ples a c2a"ada de inser./o,$ (oid registrarTransacao-loat nu"[ listaTransacoes _ inserirTransacaolistaTransacoesF nu"\ `
?& $un./o para inserir transa.6es no relat7rio de caia, N/o de(e ser c2a"ada direta"ente,$ Transacao inserirTransacao Transacao pListaF -loat nu"[ Transacao no(aTransacao _ Transacao"allocsi0eo-Transacao\ no(aTransacaoh(alor _ nu"\ no(aTransacaohproi"aTransacao _ pLista\ ` O registro do -luo de caia -oi i"ple"entado co" utili0a./o dos con2eci"entos ad4uiridos na Unidade VII da disciplina de Linguage" e T3cnicas de Progra"a./o, Todo o registro
se
d'
atra(3s
das
-un.6es
iniciali0arTransacoesF
inserirTransacao()$
registrarTransacao$ imprimeTansacoes() e da estrutura transacao,
A i"press/o de todo o -luo de caia pode ser reali0ada atra(3s do "enu principal, $ I"pri"e o relat7rio do caia e o saldo eistente $ (oid i"pri"eTransacoes Transacao pLista[ -loat total _ &,&\ Transacao au\ li"parTela\ print-]Mo(i"entacao do CaiaZnZn]\ -or au _ pLista\ au ^_NULL\ au _ auhproi"aTransacao[ print- ]RQH,?-Zn]F auh(alor\ total 1_ auh(alor\ ` print-]ZnO saldo no caia e2 de RQH,?-ZnZn]F total\ pausar\ `
?) Conclus/o
Para a i"ple"enta./o de u" siste"a de pe4ueno porteF os "3todos adotados neste projeto co"o os conceitos essenciais dos "3todos 'geisF prototipa./o e "odelage" por "eio de descri./o narrati(a -ora" ade4uados e e-icientes, A (ers/o -inal do siste"a desen(ol(ido neste projeto atende s especi-ica.6es pre(istas no "anualF de -or"a satis-at7ria, N/o -ora" identi-icados erros durante sua eecu./o,
?? Re-erncias%
UNIP = UNIVERSIDADE PAULISTA, Engenharia de Software I , S/o PauloF ?&)B, UNIP = UNIVERSIDADE PAULISTA, Linguagem e Técnicas de Programação, S/o PauloF ?&)B, MANANOF os3 Augusto N, ,\ OLIVEIRAF a9r igueiredo de, Algoritmos: L7gica para Desen(ol(i"ento de Progra"a./o de Co"putadores, ?) edi./o, S/o Paulo% XricaF ?&&, DEITELF Paul\ DEITELF Kar(e9, Java: Co"o Progra"ar, edi./o, S/o Paulo% PearsonF ?&)), DEITELF Paul\ DEITELF Kar(e9, : Co"o Progra"ar, > edi./o, S/o Paulo% PearsonF ?&)),