Microsoft Word - BD4_Curs11.doc

Documente similare
Slide 1

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Analiză de flux de date 29 octombrie 2012

1

E_d_Informatica_sp_SN_2014_bar_10_LRO

PHP (II)

Analiză statică Analiza fluxului de date 23 octombrie 2014

Tipuri de date abstracte 30 noiembrie 2005 Programarea calculatoarelor 2. Curs 9 Marius Minea

Furnicuţa şi-a construit un depozit pentru grăunţe

Metode de sortare - pregătire admitere - Conf.dr. Alexandru Popa Lect. dr. Andrei Pătraşcu Universitatea din Bucureşti 1

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Microsoft Word - CarteC.doc

MISIUNE Biblioteca Universității 1 Decembrie 1918 din Alba Iulia funcționează din anul 1991, an în care s-a înființat universitatea și își desfășoară

Paradigme de programare

ALGORITHMICS

tehnologii web

Microsoft Word - WME-versiunea rtf

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

ALGORITHMICS

Subiectul 1

Universitatea Aurel Vlaicu din Arad Facultatea de Științe Exacte CONCURSUL INTERNAȚIONAL DE MATEMATICĂ ȘI INFORMATICĂ CAIUS IACOB Ediția a VIII-a SECȚ

Microsoft Word - Curs_07.doc

Caraivan George-Alexandru Grupa 431A Interfața driver-kernel la Linux Introducere Deși pentru unii dintre noi acest lucru poate fi o supriză, cei mai

Crearea ghidului de studiu Syllabus

Microsoft Word - PCLP2_Curs_4_2019.doc

Microsoft Word - CarteC.doc

Grafuri neorinetate Aplicatii 1 Care este numărul maxim de componente conexe pe care le poate avea un graf neorientat cu 20 noduri şi 12 muchii? a. 6

C++ Probleme

PowerPoint Presentation

Furnicuţa şi-a construit un depozit pentru grăunţe

Gestionarea I/E

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

Microsoft Word - CarteC.doc

Programarea şi utilizarea calculatoarelor

Microsoft Word - lab_access.doc

RZOLVARE EXERCITIU ZODII declare cursor distributie_zodie is select nume_zodie, count(*) distributie from zodiac z join utilizatori u on to_date(to_ch

Limbaje de Programare Curs 8 – Fisiere

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

Laborator5_SQL_an2

Manual de utilizare Room Booking System

Intrebari frecvente PCE_Competitia O persoana care beneficiaza de o bursa postdoctorala finantata prin fonduri de coeziune (POSDRU) care se fi

PowerPoint Presentation

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

1

Declaraţii. Instrucţiuni 19 octombrie 2005 Programarea calculatoarelor 2. Curs 3b Marius Minea

Universitatea din Craiova Facultatea de Economie şi Administrarea Afacerilor Str. A.I. Cuza nr.13, cod Tel/Fax:

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XI 1.Fişierul text bac.in conţine cel mult 1000 de

Informație și comunicare

Utilizarea Internetului in Afaceri FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 4. Dezvoltarea site-urilor si blog-uri

BC MOLDINDCONBANK SA

Microsoft Word - Laborator 6 - Expresii Regulate IV.doc

Facultatea de Litere

Microsoft Word - Curs 11 - PHP.doc

INSTITUTUL DE DEZVOLTARE A SOCIETĂŢII INFORMAŢIONLE

Aggregating Data

Ecuatii si sisteme de ecuatii neliniare 1 Metoda lui Newton Algorithm 1 Metoda lui Newton pentru ecuaţia f(x) = 0. Date de intrare: - Funcţia f - Apro

MINISTERUL EDUCAŢIEI, CULTURII ŞI CERCETĂRII AL REPUBLICII MOLDOVA UNIVERSITATEA DE STAT ALECU RUSSO DIN BĂLŢI FACULTATEA DE ŞTIINŢE REALE, ECONOMICE

EXCEL FĂRĂ SECRETE Grafice şi diagrame

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

1 Lucrarea nr. 8 - Structuri de date de tip liste sortate O listă sortată reprezintă un aranjament al înregistrărilor din cadrul listei în funcţie de

Capitole Speciale de Informatică Curs 2: Determinarea vocabularului de termeni şi a listelor de postări 4 octombrie 2018 Reamintim că listele de indec

Ggestiunea FNUASS

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Microsoft Word - Plus TV Analog Pro Stick Installation _Rom V1.3_.doc

Structuri de date pentru partiţii de mulţimi O partiţie finită a unei mulţimi nevide S este o mulţime finită de submulţimi ale lui S: {S 1, S 2,..., S

Fgggfbn x

Ghid privind raportările referitoare la decontarea internalizată conform articolului 9 din regulamentul privind depozitarii centrali de titluri de val

Managementul Resurselor Umane

Diapositive 1

Laborator02

Secţiunea 7-8 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA 1 ID 100 puncte Calculatoarele trebuie să se recunoască în rețeau

Secţiunea 5-6 avansaţi PROBLEMA 1 Concurs online de informatică Categoria PROGRAMARE 100 puncte NR Un număr natural nenul V care se plictisea singur,

Informare şi documentare în biblioteci

BDV-EF1100

Problema 1 Pentru informatizarea activităţii de tranzacţionare a titlurilor de valoarea se cunoaşte că un client este identificat prin CNP, nume, pren

UNIVERSITATEA DIN CRAIOVA Facultatea de Economie şi Administrarea Afacerilor Str. A.I. Cuza nr.13, cod Tel./Fax:

Microsoft® Access®

AcadNet Etapa Naţională Secțiunea calculatoare, clasele Citiți cu atenție toate subiectele înainte de a începe rezolvarea. Aveți 15 minut

Microsoft Word - Curs_08.doc

Data primirii :11:26 Entitatea (Cod CUIIO) SITUAŢIILE FINANCIARE pentru perioada Eximdor SRL (Denumirea co

NORMĂ pentru aplicarea Ghidului ESMA privind raportările referitoare la decontarea internalizată conform articolului 9 din regulamentul privind depozi

L7

Poo Laboratoare 1 Contents Laborator7 2 1 Colecţii de obiecte în Java Interfaţa Iterator Interfaţa C

E_d_Informatica_sp_MI_2015_bar_02_LRO

Gestiunea serviciilor de recuperare a sănătăţii în sanatorii şi preventorii

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Utilizare Internet

Înregistrator de temperatură şi umiditate AX-DT100 Instrucţiuni de utilizare

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Raportarea serviciilor de dializă la nivel CNAS

PREZENTAREA BIBLIOTECII U

manual_ARACIS_evaluare_experti_v5

Transcriere:

13.IMPLEMENTAREA STRUCTURILOR DE TIP RETEA SIMPLA In structurile arborescente, fiecare nod părinte poate avea mai mulţi fii, iar fiecare nod fiu are un singur părinte. Din acest motiv modelele de BD ierarhice nu permit legaturi orizontale între entităţile A şi B de pe acelaşi nivel ierarhic (fig.1), sau referinţe de la doua entităţi A şi B spre aceeaşi entitate C (fig.2). A B A B Fig.1 Fig.2 C Consideram gestiunea unei biblioteci universitare, care conţine un fişier de CARTI si unul de STUDENTI (cititori) (fig.3) STUDENTI N:M TITLURI CARTI Fig.3 Un student poate împrumuta de la biblioteca mai multe cărţi. Fiecare titlu de carte poate exista în mai multe exemplare, cu număr de inventar distinct (NRI), care pot fi împrumutate la studenţi diferiţi. Aceste legaturi sunt de tipul reţea simplă (N:M). Pentru implementarea acestei BD vom folosi structura din Fig.4, care transforma legaturile N:M in 2 legaturi mai simple 1:N, care se pot implementa prin referinţe si liste înlănţuite. STUDENTI TITLURI CODS PCI NUME.. PINV TITLU CODZ AUTOR... ISBN 1:N 1:N N:1 N:1 CARTI CODS URS NRI DATA URT PTIT Fig.4 Fişierul STUDENTI este indexat după CODS şi NUME. El refera prin pointerul PCI (pointer cărţi împrumutate) prima carte din lanţul de cărţi împrumutate de un student, având pointerul de înlănţuire URS. Cărţile se identifica prin numărul de inventar NRI, după care fişierul este indexat. Cărţile ne împrumutate, au câmpurile CODS si DATA completate cu spatii, iar cele împrumutate conţin codul studentului şi data când s-a împrumutat cartea. Fişierul TITLURI conţine datele comune pentru toate cărţile cu acelaşi titlu (titlu, autor, cod ISBN, nr. pagini, cod limba,..). Pointerul PINV (pointer nr. inventar) referă prima carte din lanţul cărţilor cu acel titlu, care se înlănţuie între ele prin pointerul URT. Pointerul PTIT face o referinţă de la o carte identificată prin NRI, spre înregistrarea care conţine titlul 1

cărţii. Toţi pointerii folosesc numărul înregistrării referite din fişier, şi utilizează -1 pentru a indica sfârşitul de lanţ. Codul zecimal de clasificare CODZ serveşte la identificarea titlurilor după domeniu şi poate fi cheie de indexare a fişierului pentru a găsi toate cărţile dintr-un domeniu mai larg sau mai îngust. Acest cod consideră 10 domenii mari fiecare împărţit în 10 subdomenii, care la rândul lor se împart în 10 sub-subdomenii, s.a.m.d. Codul ISBN serveşte lc şi cod unic de identificarea unui titlu de carte şi conţine: Codul ţării, codul editurii, codul colecţiei, codul cărţii în colecţie, etc. Pentru a comanda un titlu de carte la o librărie electronică este suficient să se specificii ISBN-ul, fără alte amănunte. In fig.5 se prezintă structura BD si modul de înlănţuire: STUDENTI TITLURI CODS PCI NUME.. PINV TITLU CODZ AUTOR ISBN 123 10 Pop Gh 15 10 Memorii 519-1 Dumitru T 29 17 Timpul CARTI CODS URS NRI DATA PTIT URT 10 123 17 4563 021293 15 20 17 123 25 4598 241293 29 25 20 4634 15-1 25 123-1 5678 100194 29 134 Fig.5 Prezentam mai jos programul principal si procedurile: * PBIBL * Program gestiune biblioteca * I.Jian 2004 set exact on set talk off mes2='selectati cu sageti sau prima litera ' defi popup b1 from 5,5 to 15,40 mess mes2 defi bar 1 of b1 prompt 'OPERATII CU CARTI' skip defi bar 3 of b1 prompt 'Adaugare titluri ' defi bar 4 of b1 prompt 'Imprumutare carti ' defi bar 5 of b1 prompt 'Carti imprumutate ' defi bar 6 of b1 prompt 'Restituire carti ' defi bar 7 of b1 prompt 'Terminat ' on select popup b1 do pselect 2

activ popup b1 ******** PROCEDURE PSELECT DO CASE case bar()=3 do atitl case bar()=4 do cauts case bar()=5 do cauts case bar()=6 do cauts case bar()=7 close all DEACTIV POPUP ENDCASE && **sfirsit program principal** && Imprumut carti unui student && Afisare carti imprumutate && Restituire carti * * CAUTS * Cautare un student dupa Cods * PROCEDURE CAUTS SELECT 1 use stud index icods alias st use carti index inri in 2 alias ca use titluri in 3 alias tl SELECT 2 set relation to ptit into tl SELECT 1 r1='d' DO WHILE r1 $ 'DdYy' vcod =space(5) @ 1,1 say 'Cod student ' get vcod vcod =trim(vcod) seek vcod if eof()?'studentul cod: '+ vcod+' nu exista ' DO CASE case bar()=4 set exact on do imprumut && imprumut carti case bar()=5 set exact off 3

do afis_c && afisare carti imprumutate case bar()=6 set exact on do rest_c && restituire carti ENDCASE SELECT 1 'Continuati pt. alt student?d/n ' to r1 close all set exact off && * sfirsit CAUT_S * **************************** * IMPRUMUT * imprumut carti **************************** PROCEDURE IMPRUMUT R2='d' DO WHILE r2 $ 'DdYy' * n=pci && pointer carti imprumutate select 2 && fisier carti (volume) vnri=0 @ 2,2 say 'Nr.inventar carte: ' get vnri * seek vnri && cautare carte * if eof() * Se considera numarul de inventar NRI egal cu numarul inregistrarii din fisierul Carti if vnri >recc().or.vnri <0? 'Nr.inventar: ', vnri, ' inexistent' go vnri if cods # space(5)? 'Cartea e imprumutata studentului cods: ',cods d1=seek(cods,1) && cautare student? st->nume,' adresa: ',st->adresa repl urs with st->pci,cods with st->cods,data with date() repl st->pci with recno() && actualizare pointeri? 'S-a inregistrat ',nri,tl->titlu,tl->autor? ' pt.studentul: ',st->nume,' cods:',st->cods 'Mai sint carti pentru acelasi student? d/n ' to r2 && * sfirsit imprumut carti 4

**** * AFIS_C * afisare carti imprumutate **** PROCEDURE AFIS_C DO WHILE cods =vcod && se pot afisa pe grupuri @ 2,0 say 'Studentul '+Nume +'cods: '+cods +' adr: '+adresa if pci=-1 @ 3,5 say 'Nu are carti imprumutate! ' skip @ 3,5 say 'A imprumutat cartile: ' n=pci && pointer spre carti select 2 && fisierul carti DO WHILE n # -1 go n && pozitionare pe carte * afisare titluri carti imprumutate? nri,' ',tl->titlu,' ',tl->autor n=urs && urmatoarea carte select 1 skip && urmatorul student din grup && * sfirsit AFIS_C * ATITL * adaugare titluri carti PROCEDURE ATITL use carti in 2 && fisier carti use titluri in 3 && fisier titluri carti SELECT 3 r1='d' DO WHILE r1 $ 'DdYy' append blank @ 1,10 say 'ADAUGARE TITLURI CARTI' @ 3,2 say 'Titlul cartii: ' get titlu @ 4,2 say 'Autori: ' get autor @ 5,2 say 'Cod zecimal: ' get codz @ 6,2 say 'Cod limba: ' get codl n= recno() && Nr.inregistrare titlu adaugat SELECT 2 * Se genereaza nr. de exemplare in fis. carti 5

go bottom p=-1 && indicator urmatoarea inregistrare ni=nri+1 && nr.inventar urmator dupa ultima carte ne=0 && contor nr.exemplare @ 8,5 say 'Nr. exemplare: ' get ne valid ne>0 DO WHILE ne>0 && generare numere inventar append blank repl nri with ni && nr inventar urmator repl ptit with recno(3) && pointer spre titlul cartii repl urt with p && urmatoarea carte cu acelasi titlu? 'Nr.inventar: ',nri && nr inventar generat ni=ni+1 ne=ne-1 && contor cicluri -nr exemplare p=recno() && adresa inregistrare (precedenta) * repl tl->pinv with p && pointer cap de lant in fis.titluri SELECT 3 repl pinv with p 'Mai adaugati titluri? d/n' to r1 ' Reindexati fisierul titluri? d/n ' to r1 if r1$'ddyy' index on codz to icodz close all * sfirsit * ATITL ***** * REST_C * Restituire carti imprumutate ***** PROCEDURE REST_C r2='d' n=pci && pointer prima carte imprumutata SELECT 2 && fisier carti DO WHILE r2 $ 'DdYy' if st->pci=-1? 'Studentul ',st->cods,' nu mai are carti imprumutate ' input 'Nr.inventar carte: ' to vnri n=st->pci && prima carte n1=1 && este primul din lant gasit =.n. && indicator articol gasit 6

DO WHILE n # -1 && parcurgere lant go n IF nri # vnri preced=n && articol precedent in lant n1= n1+1 && nu e primul n=urs && urmatorul articol ELSE gasit =.y.? ' Cartea ','Nri: ',nri,' RESTITUITA '? tl->titlu,' autor: ',tl->autor m=urs && salvare pointer urmator repl cods with space(5), urs with 0 && initializari cimpuri exit && terminare cautare ENDIF IF.not. gasit? ' Nr. inventar: ',vnri,' gresit ' 'Continuati restituire pt. acelasi student? d/n ' to r2 ENDIF * cartea s-a gasit IF n1=1 && articolul sters este primul in lant repl st->pci with m ELSE go preced repl urs with m && refacere lant ENDIF 'Continuati restituiri pt. acelasi student?d/n ' to r2 * sfirsit REST_c ******************************** 7