Sunteți pe pagina 1din 21

Colegiul Militar Liceal Dimitrie Cantemir

- promoia 2008 -

tema

Programarea Consultaiilor pentru un Cabinet Medical

Indrumator proiect: Profesor Dichei Nicoleta

Realizat de :

DESCRIEREA LIMBAJULUI FOXPRO


Problema gestionarii colectiilor de date Un sistem de gestiune al datelor organizate fie in fisiere, fie in baze de date, este un pachet de programe care trebuie sa aiba urmatoarele functii: 1. definirea proprietatilor datelor, a legaturilor dintre ele 2. tinerea la zi a datelor 3. calcule 4. extragerea datelor intr-o forma corespunzatoare Componentele software necesare ar fi: 1. sisteme de gestiune specializate scrise in limbajele de programare uzuale, care permit structurile de fisier si beneficiaza de modulele de gestiune a fisierelor din cadrul sistemului de operare sub care s-a facut implementarea aplicatiilor 2. sisteme universale de gestiune a bazelor de date, care sunt oferite de institutii specializate in productia software, cu facilitati deosebite pentru programatori sau utilizatori neinformaticieni. Sisteme de gestiune ale bazelor de date (SGBD) Un sistem de gestiune a bazelor de date este un pachet de programre realizat de fime specializate, care realizeaza gestiunea si prelucrarea complexa a datelor, asigurand independenta programelor de aplicatie fata de modul de structurare a datelor. Functiile unui SGBD sunt: 1. functia de descriere a datelor: SGBD trebuie sa permita descrierea structurii datelor, a legaturilor intre entitati, a conditiilot de validare si de acces. Pentru aceasta functie, SGBD-urile dispun de un limbaj specializat: limbajul de descriere a bazei de date) 2. functia de manipulare permite crearea , actualizarea datelor, cautarea rapida, sortarea si editarea totala sau partiala a unei inregistrari virtuale ce corespunde unei intrebari formulate in limbajul de manipulare al bazei de date. 3. functia de utilizare permite comunicarea intre utilizator si baza de date sub aspectul asigurarii unei interfete care il avantajeaza cel mai mult pe utilizator. Structura si functionarea unui SGBD Complexitatea unui SGBD rezida in dimensiunea sa, reflectata nu numai in multitudinea instructiunilor sale dar si in multimea componentelor, fiind prin complexitate cel putin la nivelul unui sistem de operare. SGBD lucreaza ca subsistem sub controlul sistemului de operare al calculatorului care constituie suportul hard al bazei de date. In aceasta calitate SGBd foloseste selectiv o serie de functii oferite de sistemul de operare. Un SGBd contine in principal monitor, compilatoare, monitor de inlantuire, programe utilitare. O sesiune a unui SGBd decurge in modul urmator: 1. calculatorul functioneaza sub controlul sistemului de operare 2. un utilizator face apel la SGBD in sensul ca emite catre sistemul de operare comanda de lansare in executie a produsului SGBD 3. sistemul de operare analizeaza comanda utilizator si incarca pe disc monitorul SGDB 4. iesirea din programul monitor permite preluarea controlului de catre sistemul de operare. Un SGBD trebuie sa asigure urmatoarele functiuni elementare, referitoare la bazele de date : definirea bazei de date introducerea datelor (adaugarea de noi date la baza de date)

modificarea unor date existente in baza de date stergerea unor date interogarea bazei de date, adica extragerea informatiilor stocate in aceasta Pe masura dezvoltarii acestor sisteme lista s-a completat cu facilitati importante cum ar fi : generare de rapoarte modalitati noi de interogare a bazei de date (de exemplu un limbaj de tip SQL) noi tipuri de organizare a bazelor de date si noi tipuri de acces (de exemplu accesul indexat) FOXPRO 2.6 este un sistem de gestiune al bazelor de date relational iar in comparatie cu concurentii sai directi (DBASE 4 si PARADOX 2.5) se mentine in frunte datorita performantelor sale. Principalele sale atuuri sunt folosirea optimizarii Rushmore si prezenta in limbaj a unor instructiuni SQL. Limbajul FOXPRO Comenzile FOXPRO permit descrierea tuturor functiunilor generale ale unui SGBD, anume : 1. gestionarea structurii conceptuale a bazei de date separat de structura fizica (CREATE, MODIFY STRUCTURE, COPY STRUCTURE, DISPLAY STRUCTURE, CREATE TABLE) 2. gestionarea datelor : incarcare (APPEND, INSERT), modificare (REPLACE, EDIT, CHANGE), stergere (DELETE, ZAP, PACK, RECALL) 3. satisfacerea cerintelor de regasire rapida a datelor , fie prin specificarea unor criterii complexe de selectie, cit si prin folosirea unor chei de acces (FIND, SEEK, LOCATE) 4. afisarea datelor in diferite modalitati (CREATE/MODIFY REPORT, CREATE/MODIFY LABEL, CREATE/MODIFY SCREEN) 5. programare structurata (IF, CASE, DO WHILE, SCAN) 6. modularizare si parametrizare (PROCEDURE, FUNCTION) 7. facilitati ale utilizatorilor in organizarea mediului de lucru (SET COLOR, DEFINE WINDOW, DEFINE MENU). 8. protectie (SET LOCK, SET EXCLUSIVE, SET ENCRYPTION) Programarea consultatiilor pentru un cabinet medical -Descrierea AplicatieiAcest program a fost conceput pentru programarea consultatiilor intr-un cabinet medical privat si a celorlalte operatiuni legate de acesta. Programul incepe cu un meniu care contine optiunile de baza ADAUGARI ,MODIFICARI, STERGERI si CAUTARI. In submeniul ADAUGARI, exista mai multe optiuni necesare lucrului cu programarea consultatiilor, acestea fiind adaugarea de noi fise de pacienti, de noi doctori, de cabinete specializate si consultatii. In cel de-al doilea submeniu, MODIFICARI exista optiuni prin care se pot modifica informatiile deja existente despre fisele pacientilor, specializarea cabinetelor sau programarea consultatiilor. Cel de-al treilea submeniu, STERGERI este foarte util in eliminarea datelor invechite ca de exemplu stergerea fisei unui pacient transferat la un alt doctor sau un doctor care a plecat. Pe lnga cele trei submeniuri mai este si submeniul CAUTARI prin care se pot gasi informatiile despre pacienti, doctori sau cabinete si lista cu consultatiile programate pentru ziua curent. Programul este structurat astfel: Meniul, care contine optiunile enumerate mai sus Submeniul Adaugari 1. Adaugarea de noi pacienti 2. Adaugarea de noi doctori 3. Adaugarea unui nou cabinet 4. Adaugarea unei consultatii

Submeniul Modificari 1. Modificarea unei fise 2. Modificarea unei consultatii 3. Moclificarea unui cabinet Submeniul Stergeri 1. Stergerea unei fise 2. Stergerea unei consultatii 3. Stergerea unui cabinet 4. Stergerea unui doctor Submeniul Cautari 1. Cautarea unei fie dupa nume i prenume dupa seria de buletin dupa numarul fiei 2. Cautarea unui cabinet 3. Cautarea unui doctor 4. Consultatiile din ziua curenta Pad-ul Iesire Bazele de date folosite in acest prograrn: 1. Fisa.dbf 2. Doctori.dbf Nr N 4 Specializare Orar 1 C20 N5 3. Consultatii.dbf 4. Cabinet.dbf Fia.dbf Nr Nume N 4 C10 Prenum e C10 Adres a C20 Telefo n N9 Data_n S_buleti n D8 C10 Diag Trat C20 C20 Inter n C20 Antec C40 Orar 2 N5

Doctori.dbf Nr Nume N4 C10 Consultatii.dbf Nr Nume N4 C10 Cabinet.dbf Meniul

Prenume C10

Adresa C20 Prenume C10

Telefon N9 Plata C9

Specializare Vechime C20 N2 Data D8

Studii C20

Cabinet C20

Contine cinci optiuni, adaugare, stergere, cautare, rnodificare si iesire care opreste prograrnul. Aceste optiuni au asociate taste speciale care pot activa pad-urile respective prin apsarea lor, acestea putnd fi recunoscute prin culoarea diferita a unor litere fa de restul cuvntului. La selectarea padurilor n partea de jos a ecranului apare o band neagr pe care sunt descrise functiile butoanelor

respective. Adugarea Submeniul Adaugare contine patru optiuni, enumerate mai sus. Adaugarea de noi pacienti. Prima optiune din meniu, aceasta face adaugarea de noi pacienti ntr-o fereastra, in care se introduc toate datele necesare, numarul fisei, numele, prenumele, adresa, numarul de telefon, data nasterii, seria de buletin, diagnostic, internari, tratament, antecedente medicale. Dupa introducerea datelor se apasa tasta ESC, dupa care va aparea un meniu din care va trebui sa alegeti DA pentru salvarea adaugarilor, sau NU pentru iesire fara salvare. Adaugarea de noi doctori. La fel ca si la adaugarea de pacienti apare o fereastra in care se introduc informatii despre doctori, adica numele, prenumele, telefonul, adresa, vechimea, domeniul de specializare si studiile. Salvarea si introducerea datelor se face la fel ca si la adaugarea pacientilor. Adaugarea de noi consultatii. Fereastra de introducere a datelor contine mai multe casute in care se va scrie informatia despre consultatia respectiva, adica date despre pacient ca numele, prenumele, numele fisei, adresa si numarul de telefon si data consultatiei si cabinetul, unde va avea Ioc consultatia. Salvarea datelor se faee in aeelasi rnod descris mai sus. Adaugarea uriui nou cabinet. Introducerea datelor despre cabinet se face foarte sirnplu, singurele date de introdus fiind numarul cabinetului, specializarea (ex. oftalmologie), orarul care consta in ora de incepere si de inchidere a programului. Salvarea si introducerea datelor se face la fel ca si mai sus.

In fiecare din cazurile de mai sus s-au folosit functiile PROPER( ) pentru introducerea numelui si prenumelui si functia UPPER( ) pentru introducerea adresei sau a diagnosticului sau a studiilor, etc. La introducerea numarului fisei sau al cabinetului si a numarului de telefon sau a orarului se pot folosi numai cifre. Introducerea datei la data nasterii sau data consultatiei se face n ordinea zi / luna / an, anul scriindu-se cu patru cifre. Diagnostic din fisa.dbf reprezinta diagnosticul pus de doctor, antecedente reprezinta un mic istoric rnedical in care sunt inscrise date despre bolile precedente pe care ADAUGARI ADAUGARI NOI PACIENTI ADAUGARI NOI DOCTORI ADAUGARI NOI CONSULTATII ADAUGARI NOI CABINETE le-a avut pacientul respectiv si eventuale antecedente familiale care prezinta bolile ereditare sau malformatii existente in familia pacientului. Modificarea Submeniul modificare contine patru optiuni:

Modificarea unei fise in partea de jos a ferestrei exista un set de cinci butoane, primele doua asigurnd miscarea pe verticala prin inregistrari una cate una, urmatoarele doua misca pointerul din tabela in varf sau la baza si ultimul care permite iesirea din fereastra de modificare. Modificarile sunt salvate pe masura ce sunt scrise. La apasarea butoanelor definite mai sus apare in fereastra de modificare inregistrarea dorita. La fel ca si pad-urile din meniu acestora le-au fost asociate taste cheie pentru o folosire mai usoara. Modificarea consultatiilor si cabinetelor se face in acelasi mod butoanele indeplinind acelasi rol. Butoanele au fost definite intr-un ciclu WHILE, acestea fiind de tip PUSH BUTTONS, care sunt formate din numele butonului inconjurat de semnele < , > . TERGERI TERGEREA UNEI FISE TERGEREA UNUI DOCTOR TERGEREA UNEI CONSULTATII TERGEREA UNUI CABINET Stergerea Submeniul stergere contine patru optiuni: Stergerea unei fise se face intr-o fereastra in care sunt listate toate inregistrarile cu datele principale pentru cautarea mai rapida. O inregistrare poate fi marcata pentru stergere (apare o mica bulina in fata inregistrarii) prin apasarea combinatiei de taste CTRL+T, aceasta fiind stearsa la iesirea din fereastra de stergeri. Iesirea din fereastra de stergeri se poate face prin ESCAPE sau prin CTRL+Q pentru a iesi fara sa mai stearga. Stergerile se fac in acelasi mod si la celelalte optiuni. In fereastra care apare nu se pot face modificari sau adaugari, singurele permise fiind stergerile. Cautari CAUTARI CAUTARE FISA CAUTARE DOCTOR CAUTARE CABINET CONSULTATIILE MODIFICARI MODIFICAREA UNUI DOCTOR MODIFICAREA UNEI FISE MODIFICAREA UNEI CONSULTATII MODIFICAREA UNUI CABINET Submeniul cautari cu toate optiunile sale:

Dupa nume si prenume Dupa serie de buletin

Dupa nurnarul fisei

Cautarea unei fise se poate face dupa nume si prenume, dupa serie buletin si dupa numarul fisei. Cautarea se face foarte simplu: la selectarea optiunii dorite, spre exemplu Dupa nume si prenume apare o fereastra in care se scrie numele si prenumele pacientului a carui fisa este cautata si dupa introducerea acestora in partea de jos a ecranului apare o fereastra in care sunt listate toate inregistrarile gasite. In aceasta fereastra inregistrarile nu pot fi modificate sub nici o forma. Cautarile prin celelalte optiuni se fac in acelasi mod cu o exceptie, ultima optiune Consultatiite care listeaza intr-o fereastra asemanatoare celei de stergeri toate consultatiile din ziua curenta, la fel aceste inregistrari neputand fi modificate.

Aplicatia
SET ESCAPE OFF SET CENTURY ON SET MARK TO '.' SET DATE TO DMY SET TALK OFF SET EXACT OFF PUSH KEY CLEAR CLEAR CLOSE ALL DATABASES DEFI WIND W1 FROM 0,0 TO 22,78 DOUB TITL ' Program pentru Evidenta Consultatiilor unui Cabinet Medical - 2006 ' acti wind w1 defi menu st @ 15,5 say 'Program realizat de ' @ 16,5 say 'Elev al clasei XII ' @ 17,5 say 'Profesor Indrumator Dichei Nicoleta ' @ 18,5 say 'Colegiul Militar Liceal ' @ 10,62 SAY 'C:\cristian\.scurtu.bmp bitmap

DEFINE MENU aa DEFINE PAD op1 OF aa PROMPT "Adaugari" COLOR SCHEME 3 DEFINE PAD op2 OF aa PROMPT "Modificari" COLOR SCHEME 3 DEFINE PAD op3 OF aa PROMPT "Stergeri" COLOR SCHEME 3 DEFINE PAD op4 OF aa PROMPT "Cautare" COLOR SCHEME 3 DEFINE PAD op5 OF aa PROMPT "Iesire" COLOR SCHEME 3 ON PAD op1 OF aa ACTIVATE POPUP adaugari ON PAD op2 OF aa ACTIVATE POPUP modificari ON PAD op3 OF aa ACTIVATE POPUP stergeri ON PAD op4 OF aa ACTIVATE POPUP cautare ON PAD op5 OF aa ACTIVATE POPUP IESIRE DEFINE POPUP IESIRE MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF IESIRE PROMPT "IESIRE DIN PROGRAM" DEFINE BAR 2 OF IESIRE PROMPT "IESIRE IN SISTEM" ON SELE BAR 1 OF IESIRE DO EXIT ON SELE BAR 2 OF IESIRE QUIT DEFINE POPUP adaugari MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF adaugari PROMPT "\<Pacienti noi" ; MESSAGE 'Adaugare de pacienti noi' DEFINE BAR 2 OF adaugari PROMPT "\<Doctori noi" ; MESSAGE 'Adaugare de doctori noi' DEFINE BAR 3 OF adaugari PROMPT "\<Adaugare consultatii" ; MESSAGE 'Adaugare de consultatii' DEFINE BAR 4 OF adaugari PROMPT "Ada\<ugare cabinet" ; MESSAGE 'Adaugarea unui nou cabinet' ON SELE BAR 1 OF adaugari DO pac_noi ON SELE BAR 2 OF adaugari DO doc_noi ON SELE BAR 3 OF adaugari DO consultatii ON SELE BAR 4 OF adaugari DO ad_cabinet DEFINE POPUP modificari MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF modificari PROMPT "\<Modificare fisa" ; MESSAGE 'Modificarea unei fise' DEFINE BAR 2 OF modificari PROMPT "M\<odificare consultatie" ; MESSAGE 'Modificarea consultatiilor' DEFINE BAR 3 OF modificari PROMPT "Mo\<dificare cabinet" ; MESSAGE 'Modificarea unui cabinet' DEFINE BAR 4 OF modificari PROMPT "Mo\<dificare doctor" ; MESSAGE 'Modificarea datelor unui doctor' ON SELE BAR 1 OF modificari DO m_fisa ON SELE BAR 2 OF modificari DO m_cons ON SELE BAR 3 OF modificari DO m_cab ON SELE BAR 4 OF modificari DO m_doc DEFINE POPUP stergeri MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF stergeri PROMPT "\<Stergeri fise" ; MESSAGE 'Stergerea unei fise din baza de date' DEFINE BAR 2 OF stergeri PROMPT "S\<tergeri doctori" ; MESSAGE 'Stergerea unui doctor din baza de date ' DEFINE BAR 3 OF stergeri PROMPT "St\<ergeri cabinet" ; MESSAGE 'Stergerea unui desfiintarea din baza de date ' DEFINE BAR 4 OF stergeri PROMPT "Ste\<rgeri consultatii" ; MESSAGE 'Anularea unei consultatii' ON SELE BAR 1 OF stergeri DO s_fisa ON SELE BAR 2 OF stergeri DO s_doct ON SELE BAR 3 OF stergeri DO s_cab ON SELE BAR 4 OF stergeri DO s_cons DEFINE POPUP cautare MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF cautare PROMPT "\<Cautare fisa" ;

MESSAGE 'Cautarea unei fise' DEFINE BAR 2 OF cautare PROMPT "C\<autare cabinet" ; MESSAGE 'Cautarea unui cabinet' DEFINE BAR 3 OF cautare PROMPT "Ca\<utare doctori" ; MESSAGE 'Cautarea unui doctor' DEFINE BAR 4 OF cautare PROMPT "C\<onsultatii" ; MESSAGE 'Consultatiile de astazi' ON SELE BAR 1 OF CAUTARE ACTIVATE POPUP cfisa ON SELE BAR 2 OF CAUTARE DO ccab ON SELE BAR 3 OF CAUTARE DO cdoc ON SELE BAR 4 OF CAUTARE DO ccon DEFINE POPUP cfisa MARGIN RELATIVE SHADOW COLOR SCHEME 4 FROM 1,55 DEFINE BAR 1 OF cfisa PROMPT "dupa nume" ; MESSAGE 'Cautarea fisei dupa nume' DEFINE BAR 2 OF cfisa PROMPT "dupa numar fisa" ; MESSAGE 'Cautarea fisei dupa numarul ei' DEFINE BAR 3 OF cfisa PROMPT "dupa serie buletin" ; MESSAGE 'Cautarea fisei dupa seria de buletin' ON SELE BAR 1 OF cfisa DO dnum ON SELE BAR 2 OF cfisa DO dnr ON SELE BAR 3 OF cfisa DO dser ACTIVATE MENU aa PROCEDURE EXIT POP KEY ALL DEACTIVATE MENU aa RETURN ************************************************************************ PROCEDURE pac_noi USE c:\cristian\fisa.dbf POP KEY ALL DEFINE WINDOW w1 FROM 1,10 TO 23,70 SHADOW ; TITLE '------Fisa pacient------' FLOAT double; FOOTER 'ESC=IESIRE' ACTIVATE WINDOW w1 marc=0 num=SPACE(10) pren=SPACE(10) adr=SPACE(20) tel=0 da_n={} bul=SPACE(10) trat=SPACE(40) inter=SPACE(40) diag=SPACE(40) ant1=SPACE(40) ant2=SPACE(40) ant3=SPACE(40) @1,1 SAY 'Nr. fisa:' GET marc PICTURE '9999' @3,4 SAY 'Nume :' GET num PICTURE REPLICATE ('x',10) @3,36 SAY 'Prenume :' GET pren PICTURE REPLICATE ('x',10) @5,2 SAY 'Adresa :' GET adr PICTURE REPLICATE ('x',20) @5,36 SAY 'Telefon :' GET tel PICTURE '9999999999' @7,1 SAY 'Data nasterii:' GET da_n @7,31 SAY 'Seria buletin:' GET bul PICTURE 'xx999999' @9,20 SAY '-----Consultatii-----' @11,1 SAY 'Diagnostic :' GET trat PICTURE REPLICATE ('x',40) @13,2 SAY 'Internari :' GET inter PICTURE REPLICATE ('x',40) @15,2 SAY 'Tratament :' GET diag PICTURE REPLICATE ('x',40) @17,1 SAY 'Antecedente:' GET ant1 PICTURE REPLICATE ('x',40) @18,14 GET ant2 PICTURE REPLICATE ('x',40) @19,14 GET ant3 PICTURE REPLICATE ('x',40) READ CYCLE ON KEY LABEL ESC DO nosave DEFINE WINDOW q1 FROM 20,25 TO 22,53 TITLE 'Salvati adaugarile?'; DOUBLE SHADOW

ACTIVATE WINDOW q1 ON KEY LABEL ESC DO nosave DEFI MENU q DEFINE PAD opt1 OF q PROMPT " DA " DEFINE PAD opt2 OF q PROMPT " NU " ON SELE PAD opt1 OF q DO save ON SELE PAD opt2 OF q DO nosave ACTIVATE MENU q PROCEDURE save APPEND BLANK REPLACE marca WITH marc REPLACE nume WITH PROPER(num) REPLACE prenume WITH PROPER(pren) REPLACE adresa WITH upper(adr) REPLACE telefon WITH tel REPLACE data_n WITH da_n REPLACE S_BULETIN WITH upper(BUL) REPLACE tratament WITH upper(trat) REPLACE internari WITH upper(inter) REPLACE diagnostic WITH upper(diag) REPLACE anteceden1 WITH upper(ant1) REPLACE anteceden2 WITH upper(ant2) REPLACE anteceden3 WITH upper(ant3) DEACTIVATE WINDOW q1,w1 DEACTIVATE MENU q PROCEDURE nosave DEACTIVATE WINDOW w1,q1 DEACTIVATE MENU q RETURN POP KEY ALL RETURN **************************************************************************** PROC doc_noi USE c:\cristian\doctori.dbf POP KEY ALL DEFINE WINDOW w2 FROM 2,15 TO 18,70 SHADOW FLOAT DOUBLE; TITLE '----Introduceti datele doctorului----' ; FOOTER 'ESC=IESIRE' ACTIVATE WIND w2 num=SPACE(10) pren=SPACE(20) adr=SPACE(20) tel=0 cnp=0 spec=SPACE(20) vec=0 s1=SPACE(40) s2=SPACE(40) s3=SPACE(40) @1,1 SAY 'Numele :' GET num PICTURE REPLICATE ('x',10) @1,21 SAY 'Prenumele :' GET pren PICTURE REPLICATE ('x',20) @3,1 SAY 'Adresa :' GET adr PICTURE REPLICATE ('x',20) @3,33 SAY 'Telefon :' GET tel PICTURE '9999999999' @5,4 SAY 'CNP :' GET cnp PICTURE '999999999999' @5,23 SAY 'Vechime :' GET vec PICTURE '99' @5,37 SAY 'ani' @9,1 SAY 'Specializarea :' GET spec PICTURE REPLICATE ('x',20) @11,1 SAY 'Studii :' GET s1 PICTURE REPLICATE ('x',40) @12,10 GET s2 PICTURE REPLICATE ('x',40) @13,10 GET s3 PICTURE REPLICATE ('x',40) READ CYCLE DEFINE WINDOW q2 FROM 20,25 TO 22,53 TITLE 'Salvati adaugarile ?' ACTIVATE WIND q2 ON KEY LABEL ESC DO nosavedoc DEFINE MENU qw DEFINE PAD opt1 OF qw PROMPT " DA " DEFINE PAD opt2 OF qw PROMPT " NU " ON SELE PAD opt1 OF qw DO savedoc ON SELE PAD opt2 OF qw DO nosavedoc

ACTIVATE MENU qw PROCEDURE savedoc APPEND BLANK REPLACE nume WITH proPER(num) REPLACE prenume WITH proPER(pren) REPLACE adresa WITH UPPER(adr) REPLACE telefon WITH tel REPLACE codnum WITH cnp REPLACE specializa WITH upper(spec) REPLACE vechime WITH vec REPLACE studii1 WITH upper(s1) REPLACE studii2 WITH upper(s2) REPLACE studii3 WITH upper(s3) DEACTIVATE WINDOW q2 DEACTIVATE WINDOW w2 DEACTIVATE MENU qw RETURN PROCEDURE nosavedoc DEACTIVATE WINDOW q2,w2 DEACTIVATE MENU qw RETURN POP KEY ALL RETURN ***************************************************************************** PROCEDURE consultatii USE C:\cristian\CONSULTA.DBF POP KEY ALL DEFINE WINDOW w3 FROM 1,13 TO 12,66 SHAD TITLE '------Consultatii------'; FLOAT DOUBLE FOOTER 'ESC=IESIRE' ACTIVATE WINDOW w3 marc=0 num=SPACE(10) pren=SPACE(10) dat={} cab=SPACE(20) plat=0 @1,1 SAY 'Nr. fisa:' GET marc PICTURE '9999' @3,4 SAY 'Nume :' GET num PICTURE REPLICATE ('x',10) @3,28 SAY 'Prenume :' GET pren PICTURE REPLICATE ('x',10) @5,1 SAY 'Data consultatiei:' GET dat @5,31 SAY 'Plata:'GET plat PICTURE '9999999' @7,1 SAY 'Cabinet:' GET cab PICTURE REPLICATE ('x',20) READ CYCLE DEFINE WINDOW q3 FROM 20,25 TO 22,53 DOUBLE; TITLE 'Salvati adaugarile ?' SHADOW ACTIVATE WIND q3 ON KEY LABEL ESC DO nosavecon DEFINE MENU qe DEFINE PAD opt1 OF qe PROMPT " DA " DEFINE PAD opt2 OF qe PROMPT " NU " ON SELE PAD opt1 OF qe DO savecon ON SELE PAD opt2 OF qe DO nosavecon ACTIVATE MENU qe PROCEDURE savecon APPEND BLANK REPLACE marca WITH marc REPLACE nume WITH UPPER(num) REPLACE prenume WITH UPPER(pren) REPLACE data WITH dat REPLACE cabinet WITH UPPER(cab) REPLACE plata WITH plat DEACTIVATE WINDOW q3,w3 DEACTIVATE MENU qe RETURN PROCEDURE nosavecon DEACTIVATE WINDOW q3,W3 DEACTIVATE MENU qe RETURN POP KEY ALL

RETURN ************************************************************************************* PROCEDURE ad_cabinet USE C:\cristian\cabinet.DBF IN 1 POP KEY ALL DEFINE WINDOW W4 FROM 6,11 TO 16,56 SHADOW DOUBLE FLOAT; TITLE '-------ADAUGAREA UNUI NOU CABINET-------'; FOOTER 'ESC=IESIRE' ACTIVATE WINDOW W4 mar=0 numA=0 SPEC=SPACE(20) OR1=SPACE(5) OR2=SPACE(5) @1,1 SAY 'Nr. cabinet:' GET NUMA PICTURE '9999' @3,1 SAY 'Specializare :' GET SPEC PICTURE REPLICATE ('x',20) @5,14 SAY '------ORAR------' @7,4 SAY 'De la' @7,12 GET OR1 PICTURE '99:99' @7,18 SAY 'pana la' @7,27 GET OR2 PICTURE '99:99' READ CYCLE DEFINE WINDOW q4 FROM 20,25 TO 22,53 DOUBLE; TITLE 'Salvati adaugarile ?' SHADOW ACTIVATE WINDOW q4 ON KEY LABEL ESC DO nosavecab DEFINE MENU qr DEFINE PAD opt1 OF qr PROMPT " DA " DEFINE PAD opt2 OF qr PROMPT " NU " ON SELE PAD opt1 OF qr DO savecab ON SELE PAD opt2 OF qr DO nosavecab ACTIVATE MENU qr PROCEDURE savecab APPEND BLANK REPLACE marca WITH mar REPLACE numar WITH NUMA REPLACE specializa WITH SPEC REPLACE orar1 WITH OR1 REPLACE orar2 WITH OR2 DEACTIVATE WINDOW q4,w4 DEACTIVATE MENU qR RETURN PROCEDURE nosavecab DEACTIVATE WINDOW q4,W4 DEACTIVATE MENU qR RETURN POP KEY ALL RETURN ********************************************************************** procedure s_fisa USE c:\cristian\fisa.dbf DEFI WIND w1 FROM 1,10 TO 24,70 SHAD TITLE '------Stergere fisa------' ; FLOAT double ACTI WIND w1 @21,1 GET mchoice FUNCTION '*H URMATOAREA;PRECEDENTA;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATOAREA' IF DELETED()=.T. CHOICE=.T. ELSE IF DELETED()=.F. CHOICE=.F. ENDIF ENDIF @ 0,0 GET choice FUNCTION '*C Sters' DEFAULT .F. DO WHILE MCHOICE <> 'IESIRE' @21,1 GET mchoice FUNCTION '*H URMATOAREA;PRECEDENTA;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATOAREA' @ 0,0 GET choice FUNCTION '*C Sters' DEFAULT .F. @1,1 SAY 'Nr. fisa:' GET marcA PICTURE '9999'

@3,4 SAY 'Nume :' GET numE PICTURE REPLICATE ('x',10) @3,36 SAY 'Prenume :' GET prenUME PICTURE REPLICATE ('x',10) @5,2 SAY 'Adresa :' GET adresa PICTURE REPLICATE ('x',20) @5,36 SAY 'Telefon :' GET telefon PICTURE '9999999999' @7,1 SAY 'Data nasterii:' GET data_n @7,31 SAY 'Seria buletin:' GET s_buletin PICTURE 'xx999999' @9,20 SAY '-----Consultatii-----' @11,1 SAY 'Diagnostic :' GET tratament PICTURE REPLICATE ('x',40) @13,2 SAY 'Internari :' GET internari PICTURE REPLICATE ('x',40) @15,2 SAY 'Tratament :' GET diagnostic PICTURE REPLICATE ('x',40) @17,1 SAY 'Antecedente:' GET anteceden1 PICTURE REPLICATE ('x',40) @18,14 GET anteceden2 PICTURE REPLICATE ('x',40) @19,14 GET anteceden3 PICTURE REPLICATE ('x',40) READ CYCLE IF mchoice = 'URMATOAREA' SKIP 1 IF EOF()=.T. go top ENDIF ENDIF IF mchoice = 'PRECEDENTA' SKIP -1 IF BOF()=.T. go bottom ENDIF ENDIF IF mchoice = 'SUS' GOTO TOP ENDIF IF mchoice = 'DEL' DELETE ENDIF IF DELETED()=.T. CHOICE=.T. ELSE IF DELETED()=.F. CHOICE=.F. ENDIF ENDIF IF mchoice = 'IESIRE' DEAC WIND W1 ENDIF ENDDO RETURN ********************************************************************* PROCEDURE s_doct USE c:\cristian\doctori.dbf DEFINE WINDOW w2 FROM 2,10 TO 20,70 SHADOW FLOAT DOUBLE; TITLE '----Stergerea unui doctor----' ACTIVATE WIND w2 @15,1 GET mchoice FUNCTION '*H URMATORUL;PRECEDENTUL;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATORUL' IF DELETED()=.T. CHOICE=.T. ELSE IF DELETED()=.F. CHOICE=.F. ENDIF ENDIF @ 0,1 GET choice FUNCTION '*C Sters' DEFAULT .F. DO WHILE MCHOICE <> 'IESIRE' @15,1 GET mchoice FUNCTION '*H URMATORUL;PRECEDENTUL;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATORUL' @ 0,1 GET choice FUNCTION '*C Sters' DEFAULT .F. @1,1 SAY 'Numele :' GET nume PICTURE REPLICATE ('x',10) @1,21 SAY 'Prenumele :' GET prenume PICTURE REPLICATE ('x',20)

@3,1 SAY 'Adresa :' GET adresa PICTURE REPLICATE ('x',20) @3,33 SAY 'Telefon :' GET telefon PICTURE '9999999999' @5,4 SAY 'CNP :' GET codnum PICTURE '999999999999' @5,23 SAY 'Vechime :' GET vechime PICTURE '99' @5,37 SAY 'ani' @9,1 SAY 'Specializarea :' GET specializa PICTURE REPLICATE ('x',20) @11,1 SAY 'Studii :' GET studii1 PICTURE REPLICATE ('x',40) @12,10 GET studii2 PICTURE REPLICATE ('x',40) @13,10 GET studii3 PICTURE REPLICATE ('x',40) READ IF mchoice = 'URMATORUL' SKIP 1 IF EOF()=.T. go top ENDIF ENDIF IF mchoice = 'PRECEDENTUL' SKIP -1 IF BOF()=.T. go bottom ENDIF ENDIF IF mchoice = 'SUS' GOTO TOP ENDIF IF mchoice = 'DEL' DELETE ENDIF IF DELETED()=.T. CHOICE=.T. ELSE IF DELETED()=.F. CHOICE=.F. ENDIF ENDIF IF mchoice = 'IESIRE' DEAC WIND W2 ENDIF ENDDO RETURN ********************************************************************* PROCEDURE s_cab USE c:\cristian\cabinet.dbf DEFINE WINDOW W4 FROM 6,10 TO 18,70 SHADOW DOUBLE FLOAT; TITLE '-------STERGEREA UNUI CABINET-------' ACTIVATE WINDOW W4 @9,1 GET mchoice FUNCTION '*H URMATORUL;PRECEDENTUL;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATORUL' IF DELETED()=.T. CHOICE=.T. ELSE IF DELETED()=.F. CHOICE=.F. ENDIF ENDIF @ 0,1 GET choice FUNCTION '*C Sters' DEFAULT .F. DO WHILE MCHOICE <> 'IESIRE' @9,1 GET mchoice FUNCTION '*H URMATORUL;PRECEDENTUL;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATORUL' @ 0,1 GET choice FUNCTION '*C Sters' DEFAULT .F. @1,1 SAY 'Nr. cabinet:' GET numar PICTURE '9999' @3,1 SAY 'Specializare :' GET specializa PICTURE REPLICATE ('x',20) @5,14 SAY '------ORAR------' @7,4 SAY 'De la' @7,12 GET orar1 PICTURE '99:99' @7,18 SAY 'pana la' @7,27 GET orar2 PICTURE '99:99' READ IF mchoice = 'URMATORUL'

SKIP 1 IF EOF()=.T. Go top ENDIF ENDIF IF mchoice = 'PRECEDENTUL' SKIP -1 IF BOF()=.T. Go bottom ENDIF ENDIF IF mchoice = 'SUS' GOTO TOP ENDIF IF mchoice = 'DEL' DELETE ENDIF IF DELETED()=.T. CHOICE=.T. ELSE IF DELETED()=.F. CHOICE=.F. ENDIF ENDIF IF mchoice = 'IESIRE' DEAC WIND W4 ENDIF ENDDO RETURN ********************************************************************* PROCEDURE S_CONS USE C:\cristian\CONSULTA.DBF DEFINE WINDOW w3 FROM 1,10 TO 13,70 SHAD TITLE '------Consultatii------'; FLOAT DOUBLE ACTIVATE WINDOW w3 @9,1 GET mchoice FUNCTION '*H URMATOAREA;PRECEDENTA;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATOAREA' IF DELETED()=.T. CHOICE=.T. ELSE IF DELETED()=.F. CHOICE=.F. ENDIF ENDIF @ 0,1 GET choice FUNCTION '*C Sters' DEFAULT .F. DO WHILE MCHOICE <> 'IESIRE' @9,1 GET mchoice FUNCTION '*H URMATOAREA;PRECEDENTA;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATOAREA' @ 0,1 GET choice FUNCTION '*C Sters' DEFAULT .F. @1,1 SAY 'Nr. fisa:' GET marca PICTURE '9999' @3,4 SAY 'Nume :' GET nume PICTURE REPLICATE ('x',10) @3,28 SAY 'Prenume :' GET prenume PICTURE REPLICATE ('x',10) @5,1 SAY 'Data consultatiei:' GET data @5,31 SAY 'Plata:'GET plata PICTURE '9999999' @7,1 SAY 'Cabinet:' GET cabinet PICTURE REPLICATE ('x',20) READ IF mchoice = 'URMATOAREA' SKIP 1 IF EOF()=.T. go top ENDIF ENDIF IF mchoice = 'PRECEDENTA' SKIP -1 IF BOF()=.T. go bottom ENDIF ENDIF IF mchoice = 'SUS'

GOTO TOP ENDIF IF mchoice = 'DEL' DELETE ENDIF IF DELETED()=.T. CHOICE=.T. ELSE IF DELETED()=.F. CHOICE=.F. ENDIF ENDIF IF mchoice = 'IESIRE' DEAC WIND W3 ENDIF ENDDO RETURN ***************************************************************************** PROCEDURE dnum USE c:\cristian\fisa.dbf PUSH KEY CLEAR DEFINE WINDOW qqq FROM 6,10 TO 10,60 SHADOW DOUBLE ACTIVATE WINDOW qqq wnume=space(10) wpren=space(10) @1,1 SAY 'Nume' GET wnume PICTURE REPLICATE ('X',10) @1,23 SAY 'Prenume' GET wpren PICTURE REPLICATE ('X',10) READ *wnume=PROPER(ALLTRIM(WNUME)) *wpren=PROPER(ALLTRIM(WPREN)) DEFINE WINDOW qq FROM 14,0 TO 22,79 SHADOW DOUBLE ; TITLE 'Fisele cautate' ACTIVATE WINDOW qq BROWSE FOR (WNUME=NUME AND PRENUME=WPREN) IN WINDOW qq ; FIELDS MARCA:H='NR',nume,prenume,data_n:H='D_nasterii',; adresa,telefon,s_buletin NOAPPEND NOEDIT NODELETE PACK ON KEY LABEL ESC DO KILL PROCEDURE KILL clear windows RETURN RETURN ******************************************************************************** PROCEDURE dnr USE c:\cristian\fisa.dbf PUSH KEY CLEAR DEFINE WINDOW qqq FROM 6,20 TO 10,45 SHADOW DOUBLE ACTIVATE WINDOW qqq wnr=0 @1,1 SAY 'Numarul fisei:' GET wnr PICTURE '9999' READ DEFINE WINDOW qq FROM 14,1 TO 22,79 SHADOW DOUBLE ; TITLE 'Fisele cautate' ACTIVATE WINDOW qq BROWSE FOR MARCA=wnr IN WINDOW qq ; FIELDS MARCA:H='NR.',nume,prenume,data_n:H='D_nasterii',adresa,telefon,s_buletin; NOAPPEND NOEDIT NODELETE PACK ON KEY LABEL ESC DO KILL PROCEDURE KILL clear windows RETURN RETURN ********************************************************************************* PROCEDURE dSER USE c:\cristian\fisa.dbf PUSH KEY CLEAR DEFINE WINDOW qqq FROM 6,20 TO 10,60 SHADOW DOUBLE ACTIVATE WINDOW qqq

WSR=SPACE(10) @1,7 SAY 'Seria de buletin:' GET wsr PICT REPL ('X',10) READ DEFINE WINDOW qq FROM 14,1 TO 22,79 SHADOW DOUBLE ; TITLE 'Fisele cautate' ACTIVATE WINDOW qq BROWSE FOR S_BULETIN=wsr IN WINDOW qq ; FIELDS MARCA:H='NR.',nume,prenume,data_n:H='D_nasterii',adresa,telefon,s_buletin; NOAPPEND NOEDIT NODELETE PACK ON KEY LABEL ESC DO KILL PROCEDURE KILL clear windows RETURN RETURN *********************************************************************************** PROCEDURE CCAB USE c:\cristian\cabinet.dbf PUSH KEY CLEAR DEFINE WINDOW qqq FROM 6,10 TO 10,60 SHADOW DOUBLE ACTIVATE WINDOW qqq wspe=SPACE(20) @1,1 SAY 'SPECIALIZAREA' GET wspe PICT REPL ('X',20) READ *wspe=PROPER(ALLTRIM(wspe)) DEFINE WINDOW qq FROM 14,0 TO 22,79 SHADOW DOUBLE ; TITLE 'Fisele cautate' ACTIVATE WINDOW qq BROWSE FOR wspe=specializa IN WINDOW qq ; FIELDS MARCA:H='NR',Specializa:H='Specializarea',orar1,orar2; NOAPPEND NOEDIT NODELETE PACK ON KEY LABEL ESC DO KILL PROCEDURE KILL clear windows RETURN RETURN ************************************************************************** PROCEDURE CDOC USE c:\cristian\doctori.dbf PUSH KEY CLEAR DEFINE WINDOW qqq FROM 6,10 TO 10,40 SHADOW DOUBLE ACTIVATE WINDOW qqq wspe=space(20) @1,1 SAY 'Numele' GET wspe PICTURE REPLICATE ('X',10) READ *wspe=PROPER(ALLTRIM(wspe)) DEFINE WINDOW qq FROM 14,0 TO 22,79 SHADOW DOUBLE ; TITLE 'Doctorii cautati' ACTIVATE WINDOW qq BROWSE FOR wspe=NUME IN WINDOW qq ; FIELDS MARCA:H='NR',nume,prenume,specializa:H='Specializare',; adresa,telefon NOAPPEND NOEDIT NODELETE PACK ON KEY LABEL ESC DO KILL PROCEDURE KILL clear windows RETURN RETURN ************************************************************************* PROCEDURE CCON USE c:\cristian\consulta.dbf PUSH KEY CLEAR DEFINE WINDOW qq FROM 14,0 TO 22,79 SHADOW DOUBLE ; TITLE 'Consultatiile de astazi' ACTIVATE WINDOW qq BROWSE FOR date()=data IN WINDOW qq ; FIELDS MARCA:H='NR',nume,prenume,cabinet,data; NOAPPEND NOEDIT NODELETE

PACK ON KEY LABEL ESC DO KILL PROCEDURE KILL clear windows RETURN RETURN *************************************************************************** procedure m_fisa USE c:\cristian\fisa.dbf DEFI WIND w1 FROM 1,10 TO 24,70 SHAD TITLE '------Fisa pacient------' ; FLOAT double ACTI WIND w1 @21,1 GET mchoice FUNCTION '*H URMATOAREA;PRECEDENTA;SUS;JOS;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATOAREA' DO WHILE MCHOICE <> 'IESIRE' @21,1 GET mchoice FUNCTION '*H URMATOAREA;PRECEDENTA;SUS;JOS;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATOAREA' @1,1 SAY 'Nr. fisa:' GET marcA PICTURE '9999' @3,4 SAY 'Nume :' GET numE PICTURE REPLICATE ('x',10) @3,36 SAY 'Prenume :' GET prenUME PICTURE REPLICATE ('x',10) @5,2 SAY 'Adresa :' GET adresa PICTURE REPLICATE ('x',20) @5,36 SAY 'Telefon :' GET telefon PICTURE '9999999999' @7,1 SAY 'Data nasterii:' GET data_n @7,31 SAY 'Seria buletin:' GET s_buletin PICTURE 'xx999999' @9,20 SAY '-----Consultatii-----' @11,1 SAY 'Diagnostic :' GET tratament PICTURE REPLICATE ('x',40) @13,2 SAY 'Internari :' GET internari PICTURE REPLICATE ('x',40) @15,2 SAY 'Tratament :' GET diagnostic PICTURE REPLICATE ('x',40) @17,1 SAY 'Antecedente:' GET anteceden1 PICTURE REPLICATE ('x',40) @18,14 GET anteceden2 PICTURE REPLICATE ('x',40) @19,14 GET anteceden3 PICTURE REPLICATE ('x',40) READ IF mchoice = 'URMATOAREA' SKIP 1 IF EOF()=.T. go top ENDIF ENDIF IF mchoice = 'PRECEDENTA' SKIP -1 IF BOF()=.T. go bottom ENDIF ENDIF IF mchoice = 'SUS' GOTO TOP ENDIF IF mchoice = 'JOS' GOTO BOTTOM ENDIF IF mchoice = 'IESIRE' DEAC WIND W1 ENDIF ENDDO RETURN ************************************************************************** procedure m_cons USE C:\cristian\CONSULTA.DBF DEFINE WINDOW w3 FROM 1,6 TO 13,66 SHAD TITLE '------Consultatii------'; FLOAT DOUBLE ACTIVATE WINDOW w3 @9,1 GET mchoice FUNCTION '*H URMATOAREA;PRECEDENTA;SUS;JOS;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATOAREA' DO WHILE MCHOICE <> 'IESIRE' @9,1 GET mchoice FUNCTION '*H URMATOAREA;PRECEDENTA;SUS;JOS;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATOAREA' @1,1 SAY 'Nr. fisa:' GET marca PICTURE '9999' @3,4 SAY 'Nume :' GET nume PICTURE REPLICATE ('x',10) @3,30 SAY 'Prenume :' GET prenume PICTURE REPLICATE ('x',10)

@5,1 SAY 'Data consultatiei:' GET data @5,33 SAY 'Plata:'GET plata PICTURE '9999999' @7,1 SAY 'Cabinet:' GET cabinet PICTURE REPLICATE ('x',20) READ IF mchoice = 'URMATOAREA' SKIP 1 IF EOF()=.T. go top ENDIF ENDIF IF mchoice = 'PRECEDENTA' SKIP -1 IF BOF()=.T. go bottom ENDIF ENDIF IF mchoice = 'SUS' GOTO TOP ENDIF IF mchoice = 'JOS' GOTO BOTTOM ENDIF IF mchoice = 'IESIRE' DEAC WIND W3 ENDIF ENDDO RETURN ********************************************************************************* procedure m_cab USE C:\cristian\cabinet.DBF IN 1 DEFINE WINDOW W4 FROM 6,11 TO 18,56 SHADOW DOUBLE FLOAT; TITLE '-------MODIFICAREA UNUI CABINET-------' ACTIVATE WINDOW W4 @9,4 GET mchoice FUNCTION '*H URMATORUL;PRECEDENTUL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATORUL' DO WHILE MCHOICE <> 'IESIRE' @9,4 GET mchoice FUNCTION '*H URMATORUL;PRECEDENTUL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATORUL' @1,1 SAY 'Nr. cabinet:' GET numar PICTURE '9999' @3,1 SAY 'Specializare :' GET specializa PICTURE REPLICATE ('x',20) @5,14 SAY '------ORAR------' @7,4 SAY 'De la' @7,12 GET orar1 PICTURE '99:99' @7,18 SAY 'pana la' @7,27 GET orar2 PICTURE '99:99' READ IF mchoice = 'URMATORUL' SKIP 1 IF EOF()=.T. go top ENDIF ENDIF IF mchoice = 'PRECEDENTUL' SKIP -1 IF BOF()=.T. go bottom ENDIF ENDIF IF mchoice = 'IESIRE' DEAC WIND W4 ENDIF ENDDO RETURN ******************************************************************************* PROCEDURE m_doc USE c:\cristian\doctori.dbf DEFINE WINDOW w2 FROM 2,10 TO 20,70 SHADOW FLOAT DOUBLE; TITLE '----Modificarea datelor doctorului----' ACTIVATE WIND w2

@15,1 GET mchoice FUNCTION '*H URMATORUL;PRECEDENTUL;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATORUL' DO WHILE MCHOICE <> 'IESIRE' @15,1 GET mchoice FUNCTION '*H URMATORUL;PRECEDENTUL;SUS;DEL;IESIRE'; SIZE 1, 10, 1 DEFAULT 'URMATORUL' @1,1 SAY 'Numele :' GET nume PICTURE REPLICATE ('x',10) @1,21 SAY 'Prenumele :' GET prenume PICTURE REPLICATE ('x',20) @3,1 SAY 'Adresa :' GET adresa PICTURE REPLICATE ('x',20) @3,33 SAY 'Telefon :' GET telefon PICTURE '9999999999' @5,4 SAY 'CNP :' GET codnum PICTURE '999999999999' @5,23 SAY 'Vechime :' GET vechime PICTURE '99' @5,37 SAY 'ani' @9,1 SAY 'Specializarea :' GET specializa PICTURE REPLICATE ('x',20) @11,1 SAY 'Studii :' GET studii1 PICTURE REPLICATE ('x',40) @12,10 GET studii2 PICTURE REPLICATE ('x',40) @13,10 GET studii3 PICTURE REPLICATE ('x',40) READ IF mchoice = 'URMATORUL' SKIP 1 IF EOF()=.T. go top ENDIF ENDIF IF mchoice = 'PRECEDENTUL' SKIP -1 IF BOF()=.T. go bottom ENDIF ENDIF IF mchoice = 'SUS' GOTO TOP ENDIF IF mchoice = 'DEL' DELETE ENDIF IF DELETED()=.T. CHOICE=.T. ELSE IF DELETED()=.F. CHOICE=.F. ENDIF ENDIF IF mchoice = 'IESIRE' DEAC WIND W2 ENDIF ENDDO RETURN

S-ar putea să vă placă și