+ All Categories
Home > Documents > 9. Aplicatie informatică cu prelucrare de fisiere

9. Aplicatie informatică cu prelucrare de fisiere

Date post: 24-Jun-2015
Category:
Upload: marin-binzari
View: 238 times
Download: 1 times
Share this document with a friend
26
9. Aplicaţie informatică cu prelucrare de fişiere Capitolul prezintă un model de aplicaţie care simulează activitatea informaţională la nivelul unei organizaţii economico-sociale de dimensiuni medii. Din perspectivă sistemică, orice organizaţie poate fi privită ca o componentă a unui sistem superior cum ar fi sistemul de subramură, sistemul de ramură etc. La rândul său, privită cel puţin din perspectiva funcţiunilor manageriale ale întreprinderii, orice organizaţie constituie un sistem format din subsisteme corespunzătoare departamentelor aprovizionare, desfacere, financiar, contabilitate, resurse umane, marketing etc. În direcţia eficientizării activităţii fiecărui subsistem al organizaţiei socio-economice, conducerea are la dispoziţie cel mai performant instrument existent astăzi pe piaţă – instrumentul informatic. În acest context, rezolvarea unei probleme cu ajutorul calculatorului electronic este o activitate complexă, care presupune o abordare sistematică, bazată pe o succesiune de operaţii, pentru realizarea cărora se folosesc tehnici şi instrumente specifice. În practica proiectării aplicaţiilor informatice se utilizează o serie de concepte de bază: Proiect informatic – denumire generică referitoare la realizarea sistemelor informatice, a aplicaţiilor informatice sau a unor probleme independente. Sistem informatic – ansamblu structurat de elemente intercorelate funcţional, pentru automatizarea procesului de culegere şi prelucrare a datelor, în vederea obţinerii informaţiilor pentru fundamentarea deciziilor. În general, sistemele informatice reprezintă componente ale sistemelor informaţionale din organizaţiile socio-economice. Aplicaţie informatică – denumire generică pentru problemele de informatică de dimensiuni relativ reduse, care vizează un domeniu de activitate strict delimitat. Metodologie – în sens informatic, defineşte succesiunea etapelor de parcurs pentru conceperea şi realizarea proiectelor informatice. O metodologie poate cuprinde mai multe metode. Metodă (tehnică) – o mulţime de paşi, aplicaţi într-o succesiune logică asupra unei mulţimi de date de intrare, care conduce la obţinerea rezultatelor. Aplicaţiile informatice acoperă o gamă largă de probleme 1 , ale căror extreme pot fi caracterizate astfel: a) existenţa unui volum relativ redus de date de intrare şi ieşire, dublată de calcule laborioase (aplicaţii tehnico-inginereşti, care conduc la aplicaţii bazate pe aproximări succesive, exprimate matematic prin ecuaţii algebrice şi transcendente, sisteme de ecuaţii liniare, ecuaţii diferenţiale, integrale, adică într-o formulare globală, aplicaţii bazate pe metode de calcul numeric). b) existenţa unui volum mare de date de intrare şi ieşire, asociate uzual unor calcule cu complexitate redusă (evidenţa materialelor, evidenţa personalului şi 1 Capitolul 4 – Etapele rezolvării problemelor cu calculatorul, în lucrarea Algoritmi în programare, B. Ghilic-Micu (coord.), Ed. ASE, Bucureşti 2002, pg. 65
Transcript
Page 1: 9. Aplicatie informatică cu prelucrare de fisiere

9. Aplicaţie informatică cu prelucrare de fişiere Capitolul prezintă un model de aplicaţie care simulează activitatea informaţională la nivelul unei organizaţii economico-sociale de dimensiuni medii. Din perspectivă sistemică, orice organizaţie poate fi privită ca o componentă a unui sistem superior cum ar fi sistemul de subramură, sistemul de ramură etc. La rândul său, privită cel puţin din perspectiva funcţiunilor manageriale ale întreprinderii, orice organizaţie constituie un sistem format din subsisteme corespunzătoare departamentelor aprovizionare, desfacere, financiar, contabilitate, resurse umane, marketing etc. În direcţia eficientizării activităţii fiecărui subsistem al organizaţiei socio-economice, conducerea are la dispoziţie cel mai performant instrument existent astăzi pe piaţă – instrumentul informatic. În acest context, rezolvarea unei probleme cu ajutorul calculatorului electronic este o activitate complexă, care presupune o abordare sistematică, bazată pe o succesiune de operaţii, pentru realizarea cărora se folosesc tehnici şi instrumente specifice.

În practica proiectării aplicaţiilor informatice se utilizează o serie de concepte de bază:

Proiect informatic – denumire generică referitoare la realizarea sistemelor informatice, a aplicaţiilor informatice sau a unor probleme independente.

Sistem informatic – ansamblu structurat de elemente intercorelate funcţional, pentru automatizarea procesului de culegere şi prelucrare a datelor, în vederea obţinerii informaţiilor pentru fundamentarea deciziilor. În general, sistemele informatice reprezintă componente ale sistemelor informaţionale din organizaţiile socio-economice.

Aplicaţie informatică – denumire generică pentru problemele de informatică de dimensiuni relativ reduse, care vizează un domeniu de activitate strict delimitat.

Metodologie – în sens informatic, defineşte succesiunea etapelor de parcurs pentru conceperea şi realizarea proiectelor informatice. O metodologie poate cuprinde mai multe metode.

Metodă (tehnică) – o mulţime de paşi, aplicaţi într-o succesiune logică asupra unei mulţimi de date de intrare, care conduce la obţinerea rezultatelor. Aplicaţiile informatice acoperă o gamă largă de probleme1, ale căror extreme pot fi caracterizate astfel:

a) existenţa unui volum relativ redus de date de intrare şi ieşire, dublată de calcule laborioase (aplicaţii tehnico-inginereşti, care conduc la aplicaţii bazate pe aproximări succesive, exprimate matematic prin ecuaţii algebrice şi transcendente, sisteme de ecuaţii liniare, ecuaţii diferenţiale, integrale, adică într-o formulare globală, aplicaţii bazate pe metode de calcul numeric).

b) existenţa unui volum mare de date de intrare şi ieşire, asociate uzual unor calcule cu complexitate redusă (evidenţa materialelor, evidenţa personalului şi

1 Capitolul 4 – Etapele rezolvării problemelor cu calculatorul, în lucrarea Algoritmi în programare, B. Ghilic-Micu (coord.), Ed. ASE, Bucureşti 2002, pg. 65

Page 2: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

calculul salariilor, evidenţa mijloacelor fixe, urmărirea realizării producţiei, a contractelor de aprovizionare/desfacere etc., adică, în general, aplicaţii de gestiune economică). Între aceste extreme există o diversitate de aplicaţii, dintre care unele presupun atât volume mari de date cât şi modele economico-matematice bazate pe calcule laborioase: gestiunea stocurilor, programarea producţiei, probleme de transport, croire, alocare a resurselor etc.

Realizarea proiectelor informatice este un proces complex, structurat în mai multe etape, cu obiective specifice. Modul de realizare a acestor etape, resursele implicate şi durata lor totală depind de varianta de soluţie aleasă, pe de o parte, şi de nivelul de abordare (aplicaţie, sistem informatic, problemă), pe de altă parte. În funcţie de complexitatea problemelor abordate în vederea rezolvării cu calculatorul, din perspectiva programelor care vor fi elaborate, soluţiile proprii pot conduce la una din situaţiile: sisteme de programe realizate la nivelul unor aplicaţii informatice, abordate independent sau ca parte a unor sisteme informatice; unul sau mai multe programe, în cazul unor probleme de dimensiuni reduse.

9.1. Etapele de realizare a proiectelor informatice Realizarea proiectelor informatice presupune parcurgerea următoarelor etape: formularea cerinţelor, analiza, concepţia2 şi finalizarea3. Pentru realizarea unui proiect informatic se recomandă constituirea unei echipe de analiză-concepţie-programare. Numărul membrilor echipei va fi stabilit în funcţie de dimensiunea şi complexitatea proiectului, precum şi de resursele disponibile. În acest sens, există mai multe modele de organizare a activităţii de analiză-concepţie-programare: organizare democratică (deschisă), echipa programatorului şef (CPT – Chief Programmer’s Team), echipa chirurgicală etc. Organizarea democratică este cel mai simplu model de conducere a proiectelor, în care: întreaga echipă are ca scop unic reuşita proiectului şi nu scopuri individuale, înlăturarea erorilor şi nu ascunderea lor; definirea soluţiei de realizare a proiectului se face în colectiv; realizarea sarcinilor se distribuie între membrii echipei iar rolul conducător poate fi jucat de orice membru al echipei, prin rotaţie. Echipa programatorului şef (CPT) presupune existenţa unui număr de programatori dintre care unul este conducător, iar procesul de realizare a proiectelor trebuie structurat precis, pe sarcini care se vor distribui membrilor echipei. Programatorul şef este conducătorul tehnic al întregii echipe, realizând şi legătura cu beneficiarii produsului. De asemenea, programatorul şef trebuie să fie un bun manager şi un bun analist-programator. Avantajul principal al acestui model de organizare este că activitatea poate fi riguros planificată şi urmărită, atât sub aspectul sarcinilor de executat, cât şi al resurselor şi termenelor stabilite. 2 În literatura de specialitate, etapa de concepţie se regăseşte sub numele de proiectare şi conţine două subetape: proiectarea de ansamblu (logică) şi proiectarea de detaliu (fizică). 3 Finalizarea, conform metodologiilor existente, cuprinde fazele de testare de ansamblu, implementare şi evaluare a produsului informatic.

Page 3: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

Modelul echipei chirurgicale presupune o specializare mai accentuată a membrilor echipei de analiză-concepţie-programare. Astfel, va exista un manager care va fi ajutat de un administrator şi un secretar, iar ceilalţi membri ai echipei vor fi repartizaţi pe diverse sarcini: formalizarea matematică, proiectarea algoritmilor, stabilirea instrumentelor de programare, elaborarea documentaţiei, determinarea necesarului de hardware şi software, codificarea şi implementarea, testarea şi depanarea programelor, crearea interfaţelor om-calculator etc. Indiferent de modelul ales pentru organizarea activităţii echipei de analiză-concepţie-programare, acesta trebuie să asigure controlul proiectului în sensul atingerii obiectivelor privind calitatea produselor software, utilizarea eficientă a resurselor alocate, încadrarea în costurile alocate şi respectarea termenelor stabilite.

Principalele etape de realizare a proiectelor informatice sunt: 1. Formularea cerinţelor pentru proiect. Realizarea unui proiect

presupune, încă de la început, formularea clară, completă şi corectă a problemei, ca o cerinţă importantă pentru desfăşurarea cu bune rezultate a activităţii de concepţie şi finalizare a proiectelor. Cerinţele sunt formulate de beneficiarul proiectului. După formularea cerinţelor se va stabili echipa de analiză-concepţie-programare, pentru fiecare membru al echipei atribuindu-se responsabilităţi în procesul de realizare a proiectului informatic, pornind de la un model de organizare.

2. Analiza. În această fază, plecând de la formularea cerinţelor informaţionale exprimate concret în date de ieşire, echipa de analiză-proiectare va identifica transformările şi prelucrările necesare pentru obţinerea acestora. În funcţie de natura aplicaţiei, se vor stabili formulele matematice şi metodele numerice corespunzătoare. Aparatul matematic folosit va fi argumentat teoretic în documentaţia care trebuie să însoţească proiectul informatic în forma finală. Pe baza exprimării matematice a prelucrărilor şi transformărilor identificate în proiect se vor stabili datele de intrare4 necesare. De asemenea, se vor pune în evidenţă condiţiile iniţiale şi restricţiile referitoare la soluţie. La finalul fazei, membrii echipei vor angaja discuţii în urma cărora se poate reveni pentru eventuale corectări şi detalieri, înainte de trecerea la faza următoare.

3. Concepţia proiectului (proiectarea aplicaţiei). Pe baza datelor de intrare/ieşire şi prelucrărilor stabilite în cadrul analizei se proiectează formatele5 de intrare, formatele de ieşire, codurile şi algoritmii, se definesc colecţiile de date şi

4 Determinarea datelor de intrare pornind de la transformările necesare pentru obţinerea datelor de ieşire se realizează utilizând tehnica analizei concordanţei ieşiri-intrări (intrările sunt condiţionate de ieşiri). 5 În acest context, prin format se înţelege modul în care vor fi reprezentate extern (pe ecran sau pe hârtie) câmpurile pentru citirea datelor de intrare şi cele pentru afişarea rezultatelor. De asemenea, formatele de intrare/ieşire sunt parte integrantă din interfaţa aplicaţiei informatice cu utilizatorul, în proiectarea căreia trebuie să fie luate în calcul şi elemente de estetică şi “ergonomie vizuală” (sarcina responsabilului cu proiectarea interfeţei).

Page 4: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

se stabilesc modulele proiectului care urmează să fie programate (structurarea proiectului).

Formatele de intrare se vor constitui în ferestre individualizate de preluare a datelor şi vor conţine câmpuri “dedicate”. Formatele de ieşire trebuie să fie sugestive, să evidenţieze rezultatele (datele de ieşire) şi să ofere, eventual, posibilităţi de imprimare. Formatele de intrare/ieşire trebuie să fie descrise şi în documentaţia proiectului.

Proiectarea codurilor reprezintă o activitate cu implicaţii importante asupra funcţionării produselor informatice. Codul reprezintă o combinaţie de simboluri elementare (sau semnale), împreună cu o serie de reguli de combinare a lor, atribuită univoc unei entităţi reale, pentru a o identifica fără nici un dubiu. Între cod şi entitatea reală există o relaţie de asociere biunivocă. Simplificând, codurile pot fi văzute ca “porecle unice” atribuite unor entităţi din cadrul proiectelor informatice. Cel mai cunoscut exemplu este codul numeric personal, format din 13 caractere: unul pentru sex, şase pentru data naşterii (an, lună, zi), cinci din registrul de evidenţă a populaţiei şi o cifră de control. Codificarea este activitatea de stabilire a codurilor.

Datele care stau la baza obţinerii rezultatelor (informaţiilor de ieşire) vor fi grupate în colecţii, care vor concretiza sistemul de fişiere sau baza de date. Pot fi identificate următoarele tipuri de colecţii de date: de bază, pentru tranzacţii, intermediare, colecţii de date statistice, colecţii de date istorice.

Se identifică funcţiile de prelucrare, care vor fi grupate în entităţi numite module. Pentru aceasta pot fi utilizate tehnicile de proiectare top-down şi modularizată6. Etapa se finalizează cu elaborarea schemei de sistem, care ilustrează modulele de prelucrare, colecţiile de date folosite şi legăturile dintre module şi colecţii.

Proiectarea algoritmilor este o etapă complexă, care presupune analiza riguroasă a problemei şi a formalizării ei matematice. Tehnicile top-down şi modularizată pot fi adoptate şi în proiectarea algoritmilor. Etapa trebuie încheiată, obligatoriu, cu testarea algoritmilor. Odată cu elaborarea algoritmilor se stabilesc resursele de calcul necesare: echipamentele periferice, limbajele de programare care vor fi utilizate, seturile de date care vor fi folosite la testare, necesarul de memorie internă etc. Necesarul de resurse va trebui să fie trecut în formă explicită în documentaţie, astfel încât să se poată realiza o exploatare ulterioară corectă a produsului program.

Codificarea algoritmilor poate fi realizată după elaborarea algoritmilor sau în paralel, când se lucrează în echipă. Scrierea programelor trebuie să se facă respectând algoritmii (eventual se pot face modificări şi detalieri ale acestora) urmărindu-se, în acelaşi timp, optimizarea utilizării resurselor calculatorului (timp unitate centrală, memorie internă şi periferice) şi realizarea interfeţelor deja conturate în etapele anterioare.

6 Paragraful 3.8 – Proiectarea algoritmilor, în lucrarea Algoritmi în programare, B. Ghilic-Micu (coord.), Ed. ASE, Bucureşti 2002, pg. 60

Page 5: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

În documentaţia proiectului vor apărea în formă explicită detaliile legate de limbajul de programare ales, de versiunea acestuia, de sistemul de operare sub care poate rula produsul informatic.

4. Finalizarea proiectului. Odată realizat, proiectul este testat în ansamblu pe baza unor seturi de date de control prestabilite. Produsele program se consideră corecte dacă rezultatele obţinute sunt cele scontate (pentru datele de test, programatorii trebuie să determine apriori rezultatele – valorile şi forma lor de prezentare). Programele se testează atât independent, cât şi în corelaţie cu cele care se execută în amonte sau în aval. Implementarea aplicaţiei informatice presupune asigurarea exploatării sale în condiţii reale la beneficiar, furnizorul livrând produsul “la cheie” (programe în formă executabilă, care pot fi exploatate conform manualului de utilizare/ exploatare).

5. Evaluarea proiectelor. La baza elaborării proiectelor informatice stă conceptul de eficienţă economică, respectiv compararea efectelor obţinute cu cheltuielile necesare pentru funcţionarea sistemului/aplicaţiei în cauză. În acest sens s-au formulat mai multe teorii şi concepte care privesc evaluarea eficienţei proiectelor informatice, şi care se pot clasifica în trei grupe:

1. teorii şi metode bazate pe utilitatea proiectelor – eficienţa lor nu poate fi pusă în discuţie cât timp acestea nu servesc cerinţelor informaţionale ale utilizatorului final;

2. teorii şi concepte bazate pe valoarea informaţiilor furnizate prin proiectele informatice realizate – eficienţa lor rezultă din impactul pe care îl au sistemele/ aplicaţiile respective asupra activităţii de conducere a organizaţiilor economico-sociale;

3. teorii şi concepte pentru care eficienţa economică se poate evalua prin contribuţia produselor informatice realizate la sporirea eficienţei activităţilor cu caracter tehnic, de producţie, economic sau social, numărul indicatorilor utilizaţi fiind limitat: coeficientul de satisfacere a cerinţelor informaţionale, coeficientul timpului de răspuns, coeficientul timpului de recuperare, coeficientul economiei de personal, coeficientul eficienţei economice, coeficientul tehnico-economic.

6. Exploatarea şi mentenanţa. După punerea la punct, produsele intră în utilizare, fiind urmărite în vederea depistării unor erori care nu au putut fi sesizate anterior. Această fază asigură menţinerea în funcţiune şi dezvoltarea produselor informatice, proces care poate să continue pe tot parcursul utilizării lor şi care poate conduce la dezvoltarea de noi versiuni, bazate pe informaţii despre comportarea produsului la utilizatorul final.

7. Documentarea. Deşi nu este o etapă distinctă în procesul de realizare a

proiectelor informatice (documentarea se asigură în cadrul fiecărei etape parcurse), pentru a-i sublinia importanţa şi pentru a crea reflexul întocmirii ei, o punctăm

Page 6: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

metodologic şi separat. Documentarea corectă a proiectului informatic face posibilă exploatarea, dezvoltarea şi adaptarea produselor, mai ales dacă fac parte dintr-un sistem informatic, precum şi comercializarea lor către diverşi utilizatori. Documentaţia proiectului (manuale de prezentare şi utilizare/exploatare), cuprinde:

descrierea problemei (rezultatele, datele de intrare, procesul de prelucrare, formalizarea matematică şi modelul matematic, precizia algoritmilor etc.);

descrierea resurselor necesare şi a restricţiilor de utilizare; schema de sistem a proiectului (organigrama modulelor); schema tehnologică a proiectului (modul de punere în funcţiune a

modulelor); reprezentarea algoritmilor pentru fiecare modul (schemă logică, pseudocod

etc.); modul de apel al procedurilor/funcţiilor şi structura datelor/parametrilor

care se transferă între apelator şi apelat; instrucţiuni de utilizare (procedura de punere în lucru, lista şi forma

întrebărilor şi răspunsurilor în conversaţia cu utilizatorii etc.); exemple de utilizare.

Documentaţia proiectului poate fi tehnoredactată folosind instrumente informatice specifice: editoare de texte; editoare grafice; editoare de ecuaţii etc. Trebuie menţionată, în special pentru dezvoltările ulterioare, utilitatea autodocumentării proiectelor, realizată sub forma unor comentarii intercalate în programe.

Evoluţia rapidă în domeniul tehnologiei informaţiei a condus la elaborarea de noi metodologii pentru realizarea proiectelor informatice. În cazul unui proiect real, de mari dimensiuni (sistem informatic/produs program) este bine ca echipa de analiză-concepţie-programare să utilizeze o metodologie de proiectare (consacrată sau proprie). Există o multitudine de metodologii de analiză-proiectare, începând cu cele structurate şi continuând cu metodologiile orientate obiect.

În abordarea structurată, cele mai reprezentative metodologii sunt: SSADM (Structured Systems Analysis and Design Method – elaborată în Marea Britanie la începutul anilor ’80), MERISE (Franţa), Yourdon&Constantine, Jackson, SA/SD (Structured Analysis/Structured Design), HIPO (Hierarchycal Input Proces Output) etc. Metodologiile de analiză şi proiectare a sistemelor informatice au cunoscut o îmbunătăţire remarcabilă datorită dezvoltării programării orientate obiect. Analiza şi proiectarea orientate obiect reprezintă un nou mod de abordare a problemelor, bazat pe concepte din lumea reală. Modelele orientate obiect constituie reprezentări abstracte ale sistemelor reale. Dintre cele mai cunoscute metodologii de analiză-proiectare orientate obiect fac parte: OOSE (Object Oriented Software Engineering – Ivar Jacobson), OMT (Object Modelling Technique), OOSA (Object Oriented System Analysis - Shlaer&Mellor), OOA (Object Oriented Analysis - Coad&Yourdon) etc.

Page 7: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

Pentru analiza şi proiectarea aplicaţiilor informatice există o serie de instrumente software (medii integrate de dezvoltare software), care asistă echipa de analiză-proiectare pe tot parcursul elaborării proiectelor. Astfel de instrumente sunt produsele CASE (Computer Aided Software Engineering), care oferă posibilităţi grafice şi de editare, generarea de cod în diferite limbaje de programare, autodocumentarea proiectelor, conexiuni Internet etc. Proiectele reale nu pot fi realizate fără un suport adecvat de baze de date sau sisteme de fişiere, deoarece presupun memorarea stării iniţiale a sistemului şi actualizarea lui în timp. Pentru exemplificare am ales o problemă a cărei rezolvare utilizează un sistem de fişiere binare şi text, simulând metodele de organizare relativă şi indexată.

Formularea cerinţelor pentru proiect Să se realizeze un proiect de aplicaţie informatică utilizând limbajul Pascal pentru gestiunea activităţii de închiriere a autoturismelor pentru o societate comercială din domeniu. Aplicaţia va evidenţia aspectele legate de parcul auto, de gestiunea clienţilor, contractelor de închiriere şi a facturilor emise. De asemenea, principalele funcţiuni ale aplicaţiei se vor regăsi în următoarele operaţii, dintre care unele situaţii se vor obţine la cerere: înregistrări/achiziţii auto; închirieri auto; reeşalonarea tarifelor auto; radieri auto; emiterea automată a facturilor; plata facturilor emise şi scadente; prezentarea ofertei auto pe tipuri de autoturisme; calculul venitului societăţii pe fiecare maşină.

Analiza Echipa de analiză-concepţie-programare a identificat, pe baza cerinţelor formulate în proiect, datele de ieşire şi principalele prelucrări necesare pentru obţinerea acestor date. Datele de ieşire:

a) facturile emise ca urmare a scadenţei contractelor de închiriere auto; b) oferta integrală a societăţii (prezentată pe tipuri de autoturisme); c) venitul înregistrat pe fiecare maşină din parcul auto.

Prelucrări: a) compararea datei curente din sistem cu data scadenţei contractelor

neonorate, calculul valorii facturii emise luând în calcul numărul de kilometri parcurşi de client de la momentul închirierii auto; de asemenea, la calculul valorii facturate se va ţine cont de fidelitatea clientului;

b) ordonarea alfabetică a datelor despre autoturismele din parcul auto în funcţie de tipul acestora (problemă cu control după caracteristică);

c) calculul valorii închirierilor auto pentru fiecare maşină din parcul auto. De asemenea, au fost stabilite condiţiile iniţiale şi restricţiile referitoare la

soluţie: - o maşină nu poate fi închiriată dacă apare într-un contract neonorat;

Page 8: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

- unicitatea numerelor de înmatriculare auto; - o maşină poate fi radiată dacă nu face obiectul unui contract de

închiriere neonorat; - valoarea facturată este calculată cu o precizie de două zecimale; - oferta auto a societăţii va fi afişată pe ecran şi va fi memorată într-un

fişier text. Pe baza prelucrărilor, pentru obţinerea datelor de ieşire, au fost definite

următoarele date de intrare: informaţiile despre o maşină (număr auto, marca, anul fabricaţiei, tariful la 100 km, starea, numărul de km la bord). Alte date de intrare, care participă la obţinerea datelor de ieşire vor fi construite (introduse) interactiv şi constau din informaţiile despre clienţi (cod, nume, adresa, număr de contracte încheiate), contracte şi facturi.

Concepţia proiectului (proiectarea aplicaţiei) Plecând de la analiza proiectului, în această etapă au fost definite formatele de intrare/ieşire, s-au proiectat codurile, colecţiile de date şi modulele aplicaţiei, precum şi algoritmii care vor fi programaţi. De asemenea, au fost elaborate schema de sistem a proiectului şi schema tehnologică de punere în funcţiune a modulelor. Formatele de intrare au fost proiectate pornindu-se de la datele de intrare identificate. Pentru crearea fişierelor cu date despre parcul auto, clienţi, contracte şi facturi, a fost realizat un program independent (creare), care realizează crearea fără articole a fişierelor. Pentru toate situaţiile formulate în problemă au fost proiectate formate de ieşire care oferă posibilitatea obţinerii rezultatelor în fişiere text şi/sau pe ecran. Fişierele rezultate vor avea nume sugestive, în funcţie de cerinţele solicitate de utilizator, şi pot fi vizualizate în orice editor de texte. Conţinuturile fişierelor de ieşire vor fi prezentate în documentaţia proiectului.

Corespunzător situaţiilor prezentate, au fost proiectate opt module specializate, apelate din modulul principal al proiectului. Pe baza modulelor proiectate, au fost definitivate schema de sistem a proiectului şi schema tehnologică de punere în lucru a modulelor. Activitatea de codificare vizează caracteristicile maşinilor din parcul auto, informaţiile despre clienţi, atributele contractelor de închiriere şi informaţiile dintr-o factură. Codificarea va ajuta şi la definirea colecţiilor de date.

Colecţiile de date externe alese sunt fişiere binare, câte unul pentru maşini, clienţi, contracte şi facturi. Structura logică a articolelor din fiecare fişier este descrisă în manualul de prezentare:

Algoritmii s-au realizat folosind metoda proiectării structurate, iar pentru implementarea acestora s-a utilizat limbajul Pascal. În cadrul algoritmilor nu au fost proiectate secvenţe de validare7. Descrierea detaliată a algoritmilor poate fi studiată în documentaţia proiectului. De asemenea, primitivele folosite în lucrul cu

7 Pentru validare a se vedea capitolul 11 – Validarea datelor, din lucrarea Algoritmi în programare, B. Ghilic-Micu (coord.), Ed. ASE, Bucureşti 2002, pg. 183

Page 9: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

fişiere relative (clienti.dat) şi fişiere indexate (auto.dat) sunt prezentate detaliat în capitolele 7 şi 8 ale acestei lucrări).

Diferenţele faţă de unităţile relativ.tpu şi indexate.tpu constau în structura articolelor (tabelul 9.1).

Tabelul 9.1. Diferenţe faţă de unităţile din capitolele 7 şi 8

UNIT Indexate; INTERFACE TYPE TipCheie= string[7]; TipArt=RECORD nrm:TipCheie; marca:string[15]; an:word; tarif:real; stare:0..1; nrkm:longint end; TipFis=FILE OF TipArt;

UNIT Relativ; INTERFACE TYPE tipa=RECORD is:BYTE; nume:string[40]; adr:string[30]; nrc:byte; END; tipf=FILE of tipa;

Finalizarea proiectului

Pentru această fază, proiectul a fost testat în ansamblu, verificându-se astfel funcţionalitatea acestuia. Testarea s-a realizat utilizând date de test. După testare, proiectul informatic este livrat beneficiarului, unde va fi implementat şi pregătit pentru exploatare.

Exploatarea şi mentenanţa Aplicaţia va fi exploatată la beneficiar, urmărindu-se comportamentul acesteia pe parcursul utilizării.

Documentarea Documentaţia proiectului cuprinde manualele de prezentare şi de utilizare/exploatare. Pentru tehnoredactarea acestora a fost folosit editorul de texte Microsoft Word 2002, editorul de ecuaţii Microsoft Equation 3.0 şi editorul grafic Microsoft Word Picture 2002.

Page 10: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

9.2. Dosarul de prezentare a aplicaţiei Aplicaţia realizată permite gestiunea activităţii de închiriere a autoturismelor pentru o societate comercială din domeniu. Aplicaţia evidenţiază aspectele legate de parcul auto, de gestiunea clienţilor, contractelor de închiriere şi a facturilor emise. Principalele funcţiuni ale aplicaţiei sunt următoarele:

A. înregistrări/achiziţii auto; B. închirieri auto; C. actualizarea tarifelor auto; D. radieri auto; E. emiterea automată a facturilor; F. plata facturilor emise şi scadente; G. prezentarea ofertei auto pe tipuri de autoturisme; H. calculul venitului societăţii pe fiecare maşină.

Aplicaţia simulare este scrisă în Limbajul Pascal, versiunea 6.0, fiind structurată în opt module, câte unul pentru fiecare funcţiune. Punerea în execuţie a modulelor aplicaţiei se realizează conform schemei de sistem (figura 9.1).

M eniu principal

G

func ţia 1 A

func ţia 2 B

func ţia 3 C

func ţia 4 D

func ţia 5 E

func ţia 6 F

func ţia 7

G

func ţia 8 H

Fig. 9.1. Schema de sistem a proiectului

Page 11: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

Prelucrările aplicaţiei folosesc patru colecţiile de date externe (fişiere binare), câte unul pentru maşini, clienţi, contracte şi facturi. Structura logică a articolelor din fiecare fişier este:

Fişierul auto.dat, organizat indexat după cheia primară nrauto:

Semnificaţie numărul de

înmatriculare auto (cheia primară)

tipul auto, marca

anul de fabricaţie

tariful la 100 km

starea maşinii: închiriată sau nu

număr de km la bord

Codificare nrm marca an tarif stare nrkm Tip string[7] string[15] word real 0..1 longint

Fişierul clienti.dat, organizat relativ după cheia relativă codclient:

Semnificaţie codul clientului

(cheia relativă)

indicatorul de stare a

articolului

numele şi prenumele clientului

adresa clientului

număr de contracte încheiate

Codificare codc is nume adr nrc Tip word byte string[40] string[30] byte

Fişierul contr.dat, organizat secvenţial:

Semnificaţie numărul contractului

codul clientului

numărul auto al maşinii

închiriate

data încheierii

contractului

număr de km

parcurşi

data stingerii

contractului

starea contractului: în derulare sau stins

Codificare nrc codc nrm dataem nrkm scadenta on Tip word word string[7] data* longint data* 0..1

* a fost definit tipul data, de forma: an (word), luna (1..12), zi (1..31).

Fişierul facturi.dat, organizat secvenţial:

Semnificaţie numărul facturii

numărul contractului

numele clientului

numărul auto al maşinii

închiriate

număr de km

parcurşi

valoarea facturii

starea facturii:

achitată sau nu

Codificare nrf nrc nume nrm nrkm val achitat Tip word word string[40] string[7] longint real 0..1

Pentru memorarea datelor din fişierele aplicaţiei au fost definite, ca

structuri de date interne, următoarele tipuri de articole: TipCheie= string[7]; TipArt=record nrm:TipCheie; marca:string[15]; an:word; tarif:real; stare:0..1; nrkm:longint end;

Page 12: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

tipa=record is:BYTE; nume:string[40]; adr:string[30]; nrc:byte; end; data=record an:word; luna:1..12; zi:1..31 end; contr=record nrc:word; codc:word; nrm:tipcheie; dataem:data; nrkm:longint; scadenta:data; on:0..1 end; facturi=record nrf:word; nrc:word; nume:string[40]; nrm:tipcheie; nrkm:longint; val:real; achitat:0..1 end; Simultan cu crearea fişierului indexat (de date) auto.dat se creează automat şi fişierul secvenţial auto.idx care va conţine tabela de indexuri asociată. Structura articolului tabelei de indexuri este prezentată în capitolul 8.

Pentru fiecare modul au fost proiectate seturi de date de test, modulele fiind testate atât individual, cât şi în inter-funcţionalitatea lor. Structura sistemului de fişiere a fost proiectată astfel încât să simuleze funcţionarea unei baze de date relaţionale (figura 9.2).

Pentru funcţiunea G a aplicaţiei se creează un fişier temporar de manevră pe baza căruia se obţine oferta de maşini grupate după câmpul marca. Structura logică a articolelor din fişierul de manevră este următoarea: manevra=record nrauto:string[7]; marca:string[15]; tarif:real; nrkm:longint end;

Page 13: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

AUTO.DAT CLIENTI.DAT

CONTR.DAT FACTURI.DAT

MENIU PRINCIPALnrm

MANEVRA.TMP OFERTA.TXT

codc

nrc

nume

Fig. 9.2. Relaţiile dintre fişierele aplicaţiei

Descrierea algoritmilor pe funcţiuni

1. Modulul functia1 (funcţiunea A) este o operaţie de adăugare în acces direct în fişierul indexat auto.dat. Se folosesc primitivele openold, start, writekeyrec şi closefis din unitatea indexate. Dacă valoarea cheii primare (nrm) introdusă de la tastatură este validă se realizează preluarea câmpurilor din structura articolului, se setează starea pe valoarea 0 (neînchiriat) şi se scrie articolul în fişier. Fişierul conducător este tastatura, iar în caz de cheie invalidă se semnalează eroare.

2. Modulul functia2 (funcţiunea B) constă în mai multe operaţii: - introducerea de la tastatură a tipului de maşină pe care doreşte să o închirieze

clientul (marca); - căutare în acces secvenţial în fişierul indexat auto.dat utilizând primitiva

readseqrec din unitatea indexate; căutarea se face cu selecţie după două criterii (marca şi starea);

- afişarea ofertei disponibile pentru marca căutată; - alegerea maşinii care va face obiectul unui nou contract de închiriere (prin

introducerea de la tastatură a cheii primare corespunzătoare maşinii din oferta afişată la pasul anterior);

- introducerea datelor despre client cu validarea cheii relative (codc) din fişierul clienti.dat (se foloseşte primitiva writed din unitatea relativ);

- în cazul în care clientul există se realizează operaţia de modificare a numărului de contracte de închiriere (sporul de fidelitate);

Page 14: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

- adăugare în acces secvenţial în fişierul contr.dat după ce sunt completate celelalte câmpuri ale articolului şi starea contractului ia valoarea 0 (contract în derulare).

3. Modulul functia3 (funcţiunea C) realizează reeşalonarea tarifelor prin creşterea acestora cu 10% şi constă în operaţia de modificare în acces secvenţial a articolelor din fişierul auto.dat, utilizând primitivele readseqrec şi rewriterec din unitatea indexate.

4. Modulul functia4 (funcţiunea D) realizează ştergerea în acces direct a articolelor din fişierul indexat auto.idx pentru cheile primare citite de la tastatură. Radierea unei maşini se poate face doar dacă nu există contracte neonorate pentru maşina respectivă. Această verificare se face comparând data curentă din sistem (citită cu procedura getdate din unitatea DOS a mediului Pascal) cu data de scadenţă a contractelor neonorate, folosindu-se o funcţie special construită dme.

5. Modulul functia5 (funcţiunea E) realizează adăugarea în acces secvenţial la sfârşitul fişierului facturi.dat. O factură este emisă automat dacă în fişierul de contracte se găseşte o înregistrare care are ca dată de scadenţă data curentă din sistem. În momentul emiterii facturii are loc calculul valorii acesteia pe baza numărului de kilometri parcurşi de la momentul încheierii contractului de închiriere. În cazul în care clientul este fidel (numărul de contracte încheiate este de cel puţin cinci), aplicaţia permite acordarea unui discount de 10%. De asemenea, odată cu emiterea facturii se modifică în acces direct şi starea maşinii din fişierul auto.dat.

6. Modulul functia6 (funcţiunea F) cuprinde două operaţii de modificare: modificarea stării facturii după achitare şi modificarea stării contractului aferent (stingerea acestuia).

7. Modulul functia7 (funcţiunea G) constituie un model de problemă cu control după caracteristică (marca). Astfel, pe baza fişierului indexat auto.dat se creează un fişier temporar (manevra.tmp) care este şters fizic la ieşirea din această funcţiune. Fişierul temporar este ordonat după caracteristica de grupare marca, obţinându-se apoi pe ecran şi în lista oferta.txt oferta de maşini.

8. Modulul functia6 (funcţiunea H) este o operaţie de consultare în acces secvenţial a fişierului facturi.dat, după o validare prealabilă a cheii primare nrm (introdusă de la tastatură) în fişierul indexat auto.dat. În cazul când cheia există se realizează totalul facturilor achitate în urma stingerii contractelor de închiriere care au avut ca obiect maşina cu numărul auto corespunzător cheii.

Instalarea produsului informatic

La instalarea produsului, beneficiarul va lansa în execuţie programul creare.exe, care realizează crearea fişierelor aplicaţiei fără articole. Utilizatorul va trebui să furnizeze de la tastatură numele asociate fişierelor fizice pe disc.

Page 15: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

Urmează punerea în execuţie a aplicaţiei simulare, în urma căreia va fi afişat meniul principal al aplicaţiei.

Utilizatorul poate alege una din cele opt opţiuni, iar pentru fiecare opţiune

se deschide un ecran special în care sunt preluate datele de intrare şi sunt afişate rezultatele.

Dacă este aleasă opţiunea 2 şi clientul care urmează să închirieze maşina este nou (nu există în fişierul clienti.dat), ecranul aplicaţiei va arăta astfel:

Dacă este aleasă opţiunea 5 şi există facturi scadente la momentul apelării opţiunii, se emite automat o factură de următoarea formă:

Page 16: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

Pentru opţiunea 7 rezultatul este afişat pe ecran, dar va fi salvat şi într-un fişier text numit oferta.txt.

Page 17: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

DOSAR DE PREZENTARE

Anexa A: fişierul sursă creare.pas program creare; uses crt, relativ, indexate; type data=record an:word; luna:1..12; zi:1..31 end; contr=record nrc:word; codc:word; nrm:tipcheie; dataem:data; nrkm:longint; scadenta:data; on:0..1 end; facturi=record nrf:word; nrc:word; nume:string[40]; nrm:tipcheie; nrkm:longint; val:real; achitat:0..1 end; var f:tipfis; g:tipf; h1:file of contr; h2:file of facturi; numef,numeg,numeh1,numeh2:string; ivk:boolean; begin

clrscr; write('Numele fisierului de masini:'); readln(numef); opennew(f,numef,ivk); write('Numele fisierului de clienti:'); readln(numeg); open(g,numeg,0,ivk); write('Numele fisierului de contracte:'); readln(numeh1); assign(h1,numeh1); rewrite(h1); write('Numele fisierului de facturi:'); readln(numeh2); assign(h2,numeh2); rewrite(h2);

end.

Page 18: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

DOSAR DE PREZENTARE

Anexa B: fişierul sursă simulare.pas program simulare; uses dos,crt,relativ,indexate; type data=record an:word; luna:word; zi:word end; contr=record nrc:word; codc:word; nrm:tipcheie; dataem:data; nrkm:longint; scadenta:data; on:0..1 end; facturi=record nrf:word; nrc:word; nume:string[40]; nrm:tipcheie; nrkm:longint; val:real; achitat:0..1 end; manevra=record nrauto:string[7]; marca:string[15]; tarif:real; nrkm:longint end; const numef:string='auto.dat'; numeg:string='clienti.dat'; numeh1:string='contr.dat'; numeh2:string='facturi.dat'; var f:tipfis; g:tipf; h1:file of contr; h2:file of facturi; m:file of manevra; l:text; a:tipart; b:tipa; c:contr; d:facturi; t,z:manevra; ivk,sf,vb:boolean; opt:0..8; i:byte; datas:data; codc,sapt:word; nrm_t:tipcheie; c1,marca_t:string[15]; r:char; n:longint; tot:real; procedure meniu; begin reset(input); clrscr; gotoxy(30,7); write('Aplicatie multifunctionala RENT A CAR'); gotoxy(26,9); write('1. Achizitie auto'); gotoxy(26,10); write('2. Inchiriere auto'); gotoxy(26,11); write('3. Cresterea pretului carburantului cu 10%'); gotoxy(26,12); write('4. Radiere auto'); gotoxy(26,13); write('5. Emitere automata factura');

Page 19: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

gotoxy(26,14); write('6. Plata factura'); gotoxy(26,15); write('7. Oferta auto pe tipuri de masini'); gotoxy(26,16); write('8. Valoarea inchirierilor pe masina'); gotoxy(20,18); write('Functia aleasa (sau 0):'); gotoxy(46,18); readln(opt); end; procedure functia1; begin clrscr; checkeof:=true; openold(f,numef,ivk); if ivk then writeln('Fisier inexistent!') else begin gotoxy(20,2); write('Nr. de inmatriculare (exp: B92BGM) sau ^Z:'); while not eof do begin gotoxy(20,42); readln(nrm_t); for i:=1 to length(nrm_t) do nrm_t[i]:=upcase(nrm_t[i]); start(f,nrm_t,ivk); if not ivk then begin gotoxy(26,18); writeln('Nr. deja existent!'); gotoxy(26,18); readln; clreol end else begin writeln; a.nrm:=nrm_t; write('Marca :'); readln(a.marca); for i:=1 to length(a.marca) do a.marca[i]:=upcase(a.marca[i]); write('Anul fabricatiei :'); readln(a.an); write('Tarif la 100 km :'); readln(a.tarif); write('Nr. km la bord :'); readln(a.nrkm); a.stare:=0; writekeyrec(f,a,nrm_t,ivk) end; writeln; write('Nr. de inmatriculare (exp: B92BGM) sau ^Z:') end end; closefile(f) end; procedure functia2; begin clrscr; checkeof:=true; assign(h1,numeh1); reset(h1); seek(h1,filesize(h1)); assign(g,numeg); reset(g); write('Marca sau ^Z:'); while not eof do begin openold(f,numef,ivk); readln(marca_t); for i:=1 to length(marca_t) do

marca_t[i]:=upcase(marca_t[i]);

Page 20: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

sf:=false; vb:=false; i:=0; readseqrec(f,a,sf); while not sf do begin if (a.marca=marca_t) and (a.stare=0) then begin inc(i); gotoxy(10,2+i); write(a.nrm,' ',a.marca,

' ',a.nrkm:5,' km la bord'); vb:=true end; readseqrec(f,a,sf) end; readln; if not vb then begin gotoxy(26,18); writeln('Marca de masina inexistenta sau alocata!'); gotoxy(26,18); readln; clrscr end else begin writeln; write('Nr. de inmatriculare din oferta:'); readln(nrm_t); for i:=1 to length(nrm_t) do nrm_t[i]:=upcase(nrm_t[i]); readkeyrec(f,a,nrm_t,ivk); if ivk then writeln('Nr. de inmatriculare introdus gresit!') else begin a.stare:=1; rewriterec(f,a,ivk); closefile(f); c.nrm:=a.nrm; c.nrc:=filesize(h1)+1; c.nrkm:=a.nrkm; getdate(c.dataem.an,c.dataem.luna,c.dataem.zi,sapt); write('Codul clientului:'); readln(codc); readd(g,b,codc,ivk); if ivk then begin writeln('Client nou!'); write('Nume:'); readln(b.nume); write('Adresa:'); readln(b.adr); b.nrc:=1; writed(g,b,codc,ivk) end else begin b.nrc:=b.nrc+1; writed(g,b,codc,ivk) end; writeln('Data scadentei contractului:'); write('Anul:'); readln(c.scadenta.an); write('Luna:'); readln(c.scadenta.luna); write('Ziua:'); readln(c.scadenta.zi);

Page 21: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

c.on:=0; write(h1,c); clrscr end end; write('Marca sau ^Z:') end; close(h1); close(g) end; procedure functia3; begin openold(f,numef,ivk); clrscr; writeln('Tarifele la inchirieri auto vor creste cu 10%'); sf:=false; readseqrec(f,a,sf); while not sf do begin a.tarif:=a.tarif*1.1; rewriterec(f,a,ivk); readseqrec(f,a,sf) end; gotoxy(20,20); write('Sfarsit de operatie. Apasati ENTER'); readln; closefile(f) end; function dme(var d1,d2:data):boolean; begin if d1.an>=d2.an then if (d1.an=d2.an) and (d1.luna>=d2.luna) then if (d1.an=d2.an) and (d1.luna=d2.luna) and (d1.zi>=d2.zi) then dme:=true else dme:=false end; procedure functia4; begin clrscr; checkeof:=true; openold(f,numef,ivk); write('Nr. de inmatriculare al masinii de radiat sau ^Z:'); while not eof do begin readln(nrm_t); for i:=1 to length(nrm_t) do nrm_t[i]:=upcase(nrm_t[i]); readkeyrec(f,a,nrm_t,ivk); if ivk then begin gotoxy(26,18); writeln('Masina neinmatriculata sau radiata!'); gotoxy(26,18); readln; clrscr end else begin if a.stare=1 then writeln('Pentru masina cu numarul ',

nrm_t,' exista contracte neonorate!') else begin writeln; writeln('Nr. de inmatriculare: ',a.nrm); writeln('Marca: ',a.marca); writeln('Anul fabricatiei: ',a.an); writeln('Tarif la 100 km: ',a.tarif:6:0,' USD');

Page 22: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

writeln; write('Confirmati radierea (d/n)?'); readln(r); if upcase(r)='D' then deletekeyrec(f,nrm_t,ivk) end end; write('Nr. inmatriculare al masinii de radiat sau ^Z:') end; closefile(f) end; procedure functia5; begin clrscr; assign(h2,numeh2); reset(h2); seek(h2,filesize(h2)); assign(h1,numeh1); reset(h1); assign(g,numeg); reset(g); openold(f,numef,ivk); getdate(datas.an,datas.luna,datas.zi,sapt); while not eof(h1) do begin vb:=false; read(h1,c); if (dme(datas,c.scadenta)) and (c.on=0) then begin vb:=true; d.nrf:=filesize(h2)+1; d.nrc:=c.nrc; readd(g,b,c.codc,ivk); d.nume:=b.nume; d.nrm:=c.nrm; writeln('Factura aferenta contractului nr. ',d.nrc, ' pentru masina ',d.nrm); repeat write('Nr. de km: '); readln(n); if n<c.nrkm then writeln('Km mai putini decat la '

'inchiriere!') until n>=c.nrkm; d.nrkm:=n; readkeyrec(f,a,c.nrm,ivk); d.val:=(d.nrkm-c.nrkm)*a.tarif/100; if b.nrc>=5 then d.val:=0.9*d.val; d.achitat:=0; write(h2,d); readkeyrec(f,a,d.nrm,ivk); a.stare:=0; rewriterec(f,a,ivk); clrscr; gotoxy(20,2); write('FACTURA FISCALA nr. ',d.nrf:5); gotoxy(15,4); write('S.C. RENT A CAR S.R.L. BUCURESTI'); gotoxy(12,7); write('Contravaloarea contractului nr. ',

d.nrc:6); gotoxy(12,8); write('Numele clientului: ',d.nume); gotoxy(12,9); write('Nr. masinii inchiriate: ',d.nrm); gotoxy(12,11); write('Valoare factura: ',d.val:10:2,

' USD');

Page 23: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

gotoxy(20,15); write('Emitent'); gotoxy(50,15); write('Beneficiar'); readln; clrscr end end; if not vb then writeln('Nu sunt contracte scadente astazi!'); readln; closefile(f); close(g); close(h1); close(h2) end; procedure functia6; begin clrscr; assign(h2,numeh2); reset(h2); assign(h1,numeh1); reset(h1); openold(f,numef,ivk); while not eof(h2) do begin read(h2,d); vb:=false; if d.achitat=0 then begin vb:=true; writeln('Nr. factura: ',d.nrf); writeln('Nr. contract: ',d.nrc); writeln('Nr. auto: ',d.nrm); writeln('Valoare: ',d.val:10:2,' USD'); writeln; write('Platiti factura (d/n)?'); readln(r); if upcase(r)='D' then begin d.achitat:=1; seek(h2,filepos(h2)-1); write(h2,d); reset(h1); while not eof(h1) do begin read(h1,c); if c.nrc=d.nrc then begin c.on:=1;

seek(h1,filepos(h1)-1); write(h1,c) end end end end end; if not vb then writeln('Nu exista facturi de platit!'); readln; closefile(f); close(h1); close(h2) end;

Page 24: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

procedure functia7; begin openold(f,numef,ivk); assign(m,'manevra.tmp'); rewrite(m); readseqrec(f,a,sf); while not sf do begin if a.stare=0 then begin t.nrauto:=a.nrm; t.marca:=a.marca; t.tarif:=a.tarif; t.nrkm:=a.nrkm; write(m,t) end; readseqrec(f,a,sf) end; closefile(f);

{sortarea dupa marca} repeat vb:=false; for i:=1 to filesize(m)-1 do begin seek(m,i-1); read(m,t,z); if t.marca>z.marca then begin seek(m,i-1); write(m,z,t); vb:=true end end until not vb;

{obtinerea ofertei} assign(l,'oferta.txt'); rewrite(l); clrscr; seek(m,0); writeln(l,' Oferta de masini'); writeln(l,'_____________________________________'); writeln(l,'| Nr. auto | Tarif | Nr. km la bord |'); writeln(l,'_____________________________________'); writeln(' Oferta de masini'); writeln('_____________________________________'); writeln('| Nr. auto | Tarif | Nr. km la bord |'); writeln('_____________________________________'); sf:=false; fillchar(t.nrauto,8,' '); read(m,t); while not sf do begin c1:=t.marca; writeln(l,c1); writeln(c1); while (not sf) and (t.marca=c1) do

Page 25: 9. Aplicatie informatică cu prelucrare de fisiere

Aplicaţie informatică cu prelucrare de fişiere

begin t.nrauto[0]:=#7; writeln(l,'|',t.nrauto,' |',t.tarif:7:2,'|',

t.nrkm:16,'|'); writeln('|',t.nrauto,' |',t.tarif:7:2,'|',

t.nrkm:16,'|'); fillchar(t.nrauto,8,' '); {$I-} read(m,t) {$I+}; if ioresult<>0 then sf:=true end; writeln(l,'_____________________________________'); writeln('_____________________________________') end; close(m); erase(m); close(l); readln end; procedure functia8; begin clrscr; checkeof:=true; openold(f,numef,ivk); assign(h2,numeh2); reset(h2); write('Nr. de inmatriculare al masinii sau ^Z:'); while not eof do begin readln(nrm_t); for i:=1 to length(nrm_t) do nrm_t[i]:=upcase(nrm_t[i]); start(f,nrm_t,ivk); if ivk then begin gotoxy(26,18); writeln('Masina neinmatriculata sau radiata!'); gotoxy(26,18); readln; clrscr end else begin seek(h2,0); tot:=0; while not eof(h2) do begin read(h2,d); if (d.nrm=nrm_t) and (d.achitat=1) then tot:=tot+d.val end; writeln('Masina ',nrm_t:7,' a inregistrat o valoare a'+ ' inchirierilor de ',tot:7:2,' USD'); readln end; write('Nr. de inmatriculare sau ^Z:') end; closefile(f); close(h2) end;

Page 26: 9. Aplicatie informatică cu prelucrare de fisiere

Algoritmi în programare. Aplicaţii

{programul principal} begin meniu; while opt<>0 do begin case opt of 1: functia1; 2: functia2; 3: functia3; 4: functia4; 5: functia5; 6: functia6; 7: functia7; 8: functia8 end; meniu end end.

9.3. Dosarul de utilizare/exploatare a aplicaţiei

Pentru exploatarea corectă a produsului informatic proiectat, beneficiarul trebuie să asigure un minim de resurse hardware şi software, care constă în:

- calculator IBM-PC sau compatibil; - microprocesor 80386, frecvenţa de 166 MHz; - memorie RAM 16 Mb; - monitor VGA; - sistem de operare MS-DOS, versiunea 6.2; - limbajul de programare Pascal, versiunea 6.0; - un editor de texte.

Etape în utilizarea produsului simulare:

1. Lansarea în execuţie a aplicaţiei creare.exe, pentru crearea, fără articole, a fişierelor referitoare la parcul auto (auto.dat şi auto.idx), la clienţi (clienti.dat), la contracte (contr.dat) şi la facturi (facturi.dat). 2. Lansarea în execuţie a aplicaţiei simulare.exe, care execută următorii paşi: 2.1. afişează meniul principal;

2.2. execută funcţiunile din meniul principal dacă pasul 1 s-a realizat corect (în soluţia adoptată, numele fişierelor sunt stabilite în aplicaţia simulare în secţiunea const).

3. Utilizatorul va solicita execuţia uneia din opţiunile meniului. 4. După execuţia fiecărei opţiuni, simulare revine în meniul principal. 5. Terminarea execuţiei se poate realiza prin alegerea opţiunii 0 din meniu.


Recommended