Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica


Informatica


Qdidactic » stiinta & tehnica » informatica
Lucrare pentru sustinerea examenului de atestat profesional in informatica - "catalog oriflame" aplicatie programare vizuala



Lucrare pentru sustinerea examenului de atestat profesional in informatica - "catalog oriflame" aplicatie programare vizuala





Cuprins:







Tema proiectului

Consideratii teoretice

Cerintele si specificatiile aplicatiei

Prezentarea aplicatiei

Concluzie

Bibliografie



Anexa: programe sursa





















1. Tema proiectului





Sa se realizeze o aplicatie software implementata in limbajul C++ care utilizeaza platforma vizuala BorlandCBuilder utilizand lucrul cu fisiere text, care sa permita gestionarea datelor dintr-un catalog cu produse cosmetice.















2. Consideratii teoretice



2.1 Borland C++ Builder. Notiuni generale


Spre deosebire de Borland C++ clasic, in Borland C++ Builder se scriu programe sub Windows, folosindu-se anumite componente specifice Windows-ului. Programele astfel concepute trebuie sa raspunda anumitor evenimente (apasarea unei taste, un click de mouse etc.) Actiunile utilizatorului sunt efectuate asupra unor obiecte care sunt caracterizate prin anumite proprietati (culoare, marime etc.) Evident ca nu orice obiect poate raspunde la orice eveniment si difera de altele prin diferite proprietati.

Programele sub windows utilizeaza biblioteci speciale de subprograme numite DLL-uri (dynamic-link library).  Acestea includ elementele de interfata utilizate (subprograme care se apeleaza de fiecare data cand este nevoie de ele).


Interfata BorlandCBuilder contine:


Bara de comenzi rapide               butonul run                   Paleta de componente

Inspectorul de obiecte                       Formular


Executand pe butonul run aflat pe bara de comenzi rapide sau F9 se comanda compilarea si executia programului.


Obiectele (componentele) aplicatiei se adauga in formulare. O aplicatie poate contine unul sau mai multe formulare. Colectia de componentele se gaseste pe Paleta de componente. 


Un obiect are anumite proprietati, valorile acestora putand fiind stabilite utilizand inspectorul de obiecte. De exemplu, pentru formular (care este si el un obiect) se poate stabili textul din bara de titlu utilizand proprietatea Caption.


Fisierele care alcatuiesc programul sursa C++ Builder sunt:

Un program sursa in C++ Builder ocupa mai multe fisiere. El este realizat sub forma unui proiect.

  1. fisierul proiect.
    1. Are extensia mak
    2. Este creat automat de catre mediu
    3. Se vizualizeaza cu View/ project makefile
    4. Executia unui click asupra icon-ului are ca effect lansarea in executie a aplicatiei C++ Builder

In linii mari acesta contine informatii asupra celorlalte fisiere care alcatuiesc proiectul: project1.exe, project1.obj, project1.res, unit1.obj, unit1.dfm


Obs. Nu interveniti in sursa acestui fisier!


  1. Sursa C++ a proiectului
    1.  Are extensia cpp si numele proiectului
    2. Se vizualizeaza cu View/ project  source:

#include <vclvcl.h>

#pragma hdrstop


USEFORM('Unit1.cpp', Form1);

USERES('Project1.res');


WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)


            catch (Exception &exception)


            return 0;



In loc de functia main() aici intervine functia WinMain()

Obs. Nici in acest fisier nu se intervine.El este gestionat automat de mediu.


  1. Fisierele care contin descrierea formularului
    1. Fisierul antet

Are extensia .h

Contine clasa care defineste formularul:


#ifndef Unit1H

#define Unit1H


#include <vclClasses.hpp>

#include <vclControls.hpp>

#include <vclStdCtrls.hpp>

#include <vclForms.hpp>


class TForm1 : public Tform  // clasa care defineste formularul



Obs. Nici in acest fisier nu se intervine.El este gestionat automat de mediu

    1. Fisierul care contine functiile utilizator

Are extensia cpp este creat automat de catre mediu, dar functiile care-l alcatuiesc sunt scrise de programator.

Se vizualizeaza astfel: view/units

In cazul unei aplicatiii care contine un buton si care ca urmare a evenimentului click (de mouse) activeaza o caseta de avertizare sursa acestui fisie este:


#include <vclvcl.h>

#pragma hdrstop


#include 'Unit1.h'


#pragma resource '*.dfm'

TForm1 *Form1;


__fastcall TForm1::TForm1(TComponent* Owner)

                             : TForm(Owner)



void __fastcall TForm1::Button1Click(TObject *Sender)




    1. Fisierul care retine proprietatile formularului

Are extensia dfm

Este creat automat de mediu

Se vizualizeaza apasand butonul drept al mouse-ului deasupra formularului: view as text. (pentru revenire view as form)

Iata sursa unui astfel de fisier:


object Form1: TForm1

  Left = 274

  Top = 182

  Width = 435

  Height = 255

  Caption = 'Form1'

  Font.Charset = DEFAULT_CHARSET

  Font.Color = clWindowText

  Font.Height = -11

Font.Name = 'MS Sans Serif'

  Font.Style = []

PixelsPerInch = 96

  TextHeight = 13

  object Button1: TButton

    Left = 56

    Top = 48

    Width = 65

    Height = 33

    Caption = 'apasa'

    TabOrder = 0

    OnClick = Button1Click

  end

end

Obs: O aplicatie poate contine mai multe formulare si pentru fiecare dintre acestea  vor exista cele trei fisiere (fisier antet, fisier pt functii utilizator, fisier proprietati formular)


Salvarea programului: este recomandabil sa se creeze un folder care va contine toate fisierele aplicatiei. Salcvarea se realizeaza cu:  File / Save all


Deschiderea aplicatiei:  se realizeaza cu File / Open selectand fisierul cu extensia  mak



2.2 Componente utilizate pentru realizarea aplicatiei



La realizarea aplicatiei s-au utilizat componente de tip: TButton, TbitBtn, TLabel, TEdit, TComboBox, TStrings, TGroupBox, TMainMenu, TSaveDialog, TOpenDialog, TMemo etc.



Fisiere text


In Borland C++ Buider, putem lucra cu fisiere text, asa cum am fost obisnuiti in Borland C++ 3.0.

Pentru ale utliza trebuie sa includem, in fisierul care contine functiile utilizatorului fisierul antet fstream.h 

 #include<fstream.h>


Numele fisierului nu este de tip AnsiString ,ci este sir de caractere , ca in Borland C++ 3.0.Dar aceasta nu ridica nici o problema intrucat clasa  AnsiString are o metoda care returneaza un pointer(char *) catre sirul de caractere.

char *  c_str();


Spre exemplu daca variabila s este de tip AnsiString :

AnsiString s= 'fisier.txt' ;

char * numef;

Atunci  se realizeaza atribuirea :

numef=s. c_str();

fstream f ;

f.open(numef,ios ::in) ;  //deschide fisierul numef pentru citire


Un exemplu de utilizare a cestei metode este cel din aplicatia urmatoare :


Aplicatia 1. Sa se creeeze un fisier text cu numere aleatoare.Utilizatorul va introduce numele fisierului , numarul de numere generate si valoare maxima a numerelor care pot fi generate

void __fastcall TForm1::Button1Click(TObject *Sender)

f.close();}




Pentru fisierul text creat in programul anterior se cere sa se afiseze valoarea maxima memeorata. Se va adauga in formular un nou buton  (Button2)  si o eticheta (Label4)  in care se va afisa rezultatul


void __fastcall TForm1::Button2Click(TObject *Sender)


      else

         ShowMessage('Fisierul nu exista');



Butoane de tip TButton

In linii mari, modalitatea de utilizare a acestui tip de butoane a fost prezentata in capitolul precedent.In acest moment ne propunem o prezentare sistematizata a lor.


    Aceasta sete componenta  care se afisaza pe formular.


 PROPRIETATI .Componentele de acest tip au mai multe proprietati.Unele dintre acestea,mai importante ,le prezentam in continuare:

  1. CAPTION retine un sir de caractere , cel care este afisat de buton.Este un tip special , numit  AnsiString.Acest tip va fi reprezentat separat, dar pentru moment retinem ca i se pot atribui direct siruri de caractere prin operatorul de atribuire.

De regula, proprietatii CAPTION i se atribuie valoarea initiala prin intermediul inspectorului de obiecte.Totusi, continutul acesteia poate fi modificat dinamic (adica in timpul executiei programului).


EXEMPLU: formularul contine un buton. Initial, acsta va afisa sirul "UN BUTON". Dupa apasarea sa se va obtine sirul  "APASAT".

    

Sirul afisat initial de buton este stabilit cu ajutorul inspectorului de obiecte.

Pentru evenimentul "OnClick" raspunde functia:

void_fstcall TForm1::Button1Click(TObject *Sender)


Functia putea fi scrisa mai simplu, doar prin expresiade mai jos, dar am preferat sa declar variabila x pentru a exemplifica modul in care se declara o variabila de acest tip:

                    Button1->Caption="Apasat";

  1. ENABLED -  este proprietate de tip bool. Daca retine true,butonul este activat , contrar el este dezactivat.

Un buton dezactivat nu mai poate fi "apasat".

EXEMPLU.Aplicatia urmatoare contine doua butoane. La apasarea unuia dintre ele, celalalt va afisa sirul "DEZACTIVAT"si se va dezactiva, asa cum se vede mai jos:

Primul buton, va raspunde elementului OnClick prin metoda (functia ):

void_fastcall TForm1 ::Button1Click (TOject *Sender )


Exercitiu: Adaugati un al treilea buton care sa reactiveze butonul 2 iar textul butonului 2 sa devina "Activat"

  1. WIDITH,HEIGHT -  proprietati care retin latimea, respectiv inaltimea butonului.

De regula, valorile lor se stabilesc automat, atuinci cand, cu ajutorul mouse-lui, se dimensioneaza butonul. Evident, acestea pot fi modificate si dinamic (in timpul excutiei),dar asta se intampla rar.

Exercitiu: Adaugati un al patrulea buton care sa redimensioneze butonul 2 (100x50)

  1. FONT  - retine modul in care apare textul pe buton. Inspectorul de obiecte afiseaza in dreptul acestei proprietati 3 puncte, iar daca se excuta click asupra lor se lanseaza o cutie de dialog prin care se stabilesc font-urile

Butoane de tip TbitBtn


Se selecteaza cum se vede in figura alaturata :  (din categoria Additional)

Si ele au proprietatile butoanelor de tip TButton, dar principaljul lor avantaj este dat de faptul ca pot retine pe suprafata lor o mica imagine de tip bmp.

Proprietatea Glyph are rolul de aretine aceasta imagine.Se executa click asupra celor trei puncte afisate.

Ca urmare a acestei actiuni se lanseaza in executie un editor de imagini.

Hint, ShowHint -  proprietati care permit ca la stationarea mouse-ului asupra butonului (in general a unei componente) sa se afiseze un sir de caractere.

ShowHint trebuie setat ca fiind true.

Left, Top  -  sunt proprietati care retin pozitia butonului (in general a unei componente). Ele retin distanta in pixeli fata de coltul din stanga sus al formularului. Left retine cat de in stanga sete componenta (coloana), iar Top cat de jos este (linia).

Kind  -  exista posibilitatea de a selecta butoane predefinite. Pentru aceasta, se selecteaza tipul de buton prin alegerea uneui anumite valori,    dintr-o lista pentru  proprietatea Kind. Puteti observaprincipalele valoricare pot fi retinute de aceasta proprietate si efectul lor!



Componenta de tip TLabel

Simbolul alaturat are semnificatia de componenta TLabel.


Amplasarea sa pe formular se face ca in cazul butonului. Iata cum arata componenta amplasata pe formular:


 In continuare studiem cateva proprietati ale componentelor de tip Tlabel.

 1. Caption - Este de tip AnsiString si retine sirul afisat de componenta.

Valoarea implicita este cea afisata - Label1 -.

 Sa presupunem ca dorim sa afisam sirul "Acesta este un text afisat elegant".Modificam valoarea retinuta la Caption de catre inspectorul de obiecte, scriind sirul de mai sus:

Iata cum va arata mesajul pe fomular:



2. AutoSize - este propritatea de tip bool. Daca retine true, componenta va ocupa pe ecran exact atata spatiu cat are nevoie pentru a afisa intregul sir, iar daca retine false, ea va ocupa spatiul stabilit da catre programator.


3. Alignment - alinierea sirului afisat de componenta.Poate lua valorile:





4. WordWrap - retine proprietatea de tip bool.Daca retine true este permis ca sirul sa fie afisat pe mai multe randuri (in cazul in care sirul nu poate fi afisat pe un rand).


Exemplu:

WordWrap -true

Alignment - taCenter


5. Font -proprietatea prin care se stabilesc fonturile. Executia unui click asupra celor trei puncte afisate de inspectorul de obiecte conduce la aparitia unei cutii de dialog cu ajutorul careia se stabileste modul in care arata textul:










Componenta de tip TEdit


Componenta de tip TEdit este folosiae pentru a afisa siruri de caractere, dar si pentru a permite utilizatorului introducerea lor. Un astfel de obiect permite sa se scrie/citeasca texte pe un singur rand. Simbolul corespunzator unui obiect de tip Tedit se gaseste pe paleta de componente standard :

         


Principalele proprietati ale acestor obiecte sunt:

1. Text - de tip AnsiString. Retine sirul de caractere care este afisat sau care se citeste. Mai precis ,daca initial aceasta proprietate contine un sir de caractere - introdus cu ajutorul inspectorului de obiecte - atunci acest text este afisat in timpul executiei in obiectul Tedit. Daca utilizatorul introduce un sir de caractere, programatorul va capta acest sir utilizand proprietatea Text.


2. MaxLength - stabileste numarul de caractere pe care le poate contine sirul introdus de utilizator. De exemplul, daca va contine 2, atunci se pot introduce doar siruri avand maxim doua caractere. In situatia in care nu dorim ca acest sir sa aiba limitata lungimea , valoarea memorata trebuie sa fie 0 (0 este valoarea implicita).

3. CharCase -  poate contine una dintre urmatoarele 3 valori , care au semnificatia :


a) ecUpperCase - textul introdus va fi automat convertit in litere mici;

b) ecLowerCase - textul introdus va fi automat convertit in litere mari;

c) ecNormal - nu se fac conversii.

4. ReadOnly - este de tip bool. Daca retine true , atunci utilizatorul nu poate introduce date.

5. PasswordChar - se foloseste pentru introducerea parolelor. Daca este introdus un caracter diferit de cel nul (#0), atunci, indiferent ce scrie utilizatorul , la introducerea textului, apare acel caracter. De exemplu, dacaPassordChar retine '*' si se introduce sirul "mama", apare sirul "****". In schimb, in program se poate prelucra sirul real tastat ("mama" in exemplu).

Enabled - poate retine true sau false. Cand retine false campul de editare devine activ.



Liste de tip TComboBox





Exista situatii in care, chiar daca utilizatorul poate selecta o singura optiune, numarul total al optiunilor este mare, motiv pentru care nu se folosesc butoane radio, ci liste derulante, care sunt obiecte de tip TComboBox.


Astfel de liste, numite si liste derulante, au avantajul ca ocupa foarte putin spatiu in formular, pentru ca afiseaza numai selectia curenta.


 Atunci cand utilizatorul doreste, se pot afisa toate optiunile, asa cum se vede in figura alaturata-se executa click pe sageata, apoi click pe optiunea dorita.

Iata cum se selecteaza optiunea de tip TComboBox.      










Optiunile propriu-zise se incarca cu ajutorul editorului de texte asociat proprietatii Items(de tip TStrings, tip care va fi studiat).  





Pentru lansarea editorului se executa click asupra celor trei puncte.

     Optiunile se scriu in mod obisnuit, cate una pe rand  Pentru  a trece la un rand nou, se tasteaza Enter. Editorul este inzestrat cu un buton OK care trebuie apasat dupa introducerea optiunilor.



Se obtine:





Dupa scrierea optiunilor, lista nu afiseaza nimic, dar un click asupra sagetii are ca efect afisarea lor. De acum este permisa selectia unei optiuni si aceasta este ulterior afisata.

proprietatea Text, de tip AnsiString are rolul de a retine optiunea selectata.Dar, prin utilizarea inspectorului de obiecte, se poate atribui de la inceput o optiune. Aceasta va fi afisata de la inceput de lista.

Exemplu:

Formularul afiseaza o lista derulanta si un buton.La apasarea butonului se afiseaza selectia efectuata de catre utilizator!




Optiunile se scriu, asa cum am aratat, cu ajutorul editorului apelat din cadrul proprietatii Items. De asemenea, optiunea implicita s-a obtinut scriind-o direct in proprietatea Text a listei.La apasarea butonului raspunde functia:

void _fastcall TForm1::Button1Click(TObject *Sender)


Aceeasi secventa se scrie daca se renunta la Button1 activarea facandu-se direct la selectarea unei optiuni (evenimentul este OnClick):

void __fastcall TForm1::ComboBox1Click(TObject *Sender)


Urmatorul exemplu permite ca prin alegerea unei optiuni din lista sa se schimbe culoarea formularului:


          


void __fastcall TForm1::ComboBox1Click(TObject *Sender)




Tipul TStrings


Variabilele cu tipul TSrings au rolul de a gestiona mai multe siruri de caractere de tipul AnsiString. O astfel de variabila este, daca vreti un vector de siruri de caractere. Primul sir are indicele 0 si ultimul n-1.

O multime de componenete au cate o proprietate de acest tip.

Proprietatile si metodele acestui tip le vom studia cu ajutorul proprietatii Items(care are tipul Tsrings) a componentelor de tip TComboBox.

Iata cateva metode, mai importante:

Metoda Add are rolul de a adauga sirul transmis ca parametru ca ultim sir in lista de siruri. Ea returneaza indicele ultimului sir:

int Add(AnsiString s);

Exemplu: la apasarea unui buton se adauga o noua optiune unei listede tip TComboBox:

void__fastcall TForm1::Button1Click(TObject *Sender)


Exercitiu :

La exemplul din laboratorul anterior adaugati in mod dynamic culori citite intr-un canp de text (TEdit) . Culorile se vor edita in engleza astfel incat sa puteti seta culoarea formularului: cl+Red =>clRed, etc

Metoda Clear are rolul de a sterge toate sirurile din lista de siruri:

void Clear(void);

Exemplu: se sterg toate sirurile din lista de siruri:

ComboBox1->Items->Clear();

Metoda Delete are rolul de a sterge sirul de indice dat din lista de siruri:

void Delete(int Index);

Exemplu: se sterge sirul de indice 0 (de fapt, prima optiune):

ComboBox1->Items->Delete(0);

Metoda Insert are rolul de a insera un sir inaintea sirului de indice transmis ca parametru:

void Insert(int Index, AnsiString S);

Exemplu: se insereaza o prima optiune in lista:

ComboBox1->Items->Insert (0,"prima optiune");

Metoda Move are rolul de a insera sirul de indice CurentIndex pe pozitia NewIndex:

void Move(int CurentIndex, int NewIndex);

Exemplu: se inverseaza primele doua siruri in lista optiunilor:

ComboBox1->Items->Move(0,1);

Metoda LoadFromFile are rolul de a incarca lista de siruri dintr-un fisier text:

void LoadFromFile(AnsiString FileName);

Metoda SaveToFile are rolul de a salva lista de siruri intr-un fisier text:

void SaveToFile(AnsiString FileName);

Aceste doua metode sunt extrem de eficiente.Fisierul text nu trebuie declarat, citirea/scrierea se face la nivelul intregului fisier:

Formularul va contine un obiect de tip TComboBox. Lista optiunilor va fi incarcata, la apasarea unui buton, dintr-un fisier text.


Fisierul text se creeaza, de exemplu, cu utilitarul Notepad. Fisierul se salveaza sub un nume ales de dv.!


La apasarea butonului raspunde functia de mai jos, care incarca din fisier optiunile:


void__fastcall TForm1::Button1Click(TObject *Sender)




Cerintele si specificatiile aplicatiei








Programul va permite unui utilizator urmatoarele prelucrari:

Adaugare

Editare

Stergere

Cautare

Salvare



















Prezentarea aplicatiei



Softul reprezinta un catalog Oriflame si utilizeaza lucrul cu fisiere.


void TForm1::ScrieBD(char file[200])

f.close();



Proiectul contine doua programe, unul pentru administrarea catalogului si unul pentrul clienti.

Cu o interfata simpla si practica primul program, este alcatuit din doua formulare (Form1 si Form2).

Primul formular cuprinde trei butoante de tip TbitBtn (fig.1) care permit administratorului adaugarea, modificarea sau stergerea unui produs.


fig.1


Tot acest formular utilizeaza o componenta de tip TGroupBox ce cuprinde o componenta de tip TEdit si un buton de tip TButton, acestea permitant administratorului cautarea unui produs in baza de date (fig.2).


fig.2


La apasarea butonului "Adaugare" se va deschide un nou formular (fig.3) in care vor fi trecute detaliile produsului respective denumirea, descrierea, categoria si pretul. ID-ul produsului va fi generat automat de catre program.




Fig.3











void __fastcall TForm1::BitBtn1Click(TObject *Sender)


Butonul "Modificare" este activ doar la selectarea unui produs din baza de date deschisa de catre programul principal. La apasara acestuia va duce la deschiderea Form2, dar de data aceasta campurile vor ramane completate urmand sa fie modificate cu noile date.


void __fastcall TForm1::ConsolaDblClick(TObject *Sender)


while(id[id.Length()] == *' ')

id.Delete(id.Length(), 1);

int d = StrToInt(id);

//se actualizeaza campurile din Form2 - formularul de afisare individuala

Form2->edDenumire->Text = v[d].Denumire;

Form2->edDescriere->Text = v[d].Descriere;

Form2->edPret->Text = v[d].Pret;

Form2->cbCategorie->ItemIndex = Form2->cbCategorie->Items->IndexOf(v[d].Categorie);

Form2->edID->Text = id;

Form2->ShowModal();




Butonul "Sterge" la fel ca si cel de modificare este activ doar la selectarea unui produs. Stergerea nu va fi automata ci va aparea o fereastra de avertisment in care utilizatorul va fi reintrebat daca este sigur de stergerea produsului (fig.4).


Fig.4


void __fastcall TForm1::BitBtn3Click(TObject *Sender)


while(id[id.Length()] == *' ')

id.Delete(id.Length(), 1);

int d = StrToInt(id);

if(MessageBox(Form1->Handle, 'Sunteti sigur ca doriti sa stergeti acest produs ?', 'Catalog', MB_ICONQUESTION | MB_YESNO) == IDYES)

}
















Structura formularului




































Programul doi este numit si programul "Client" (fig.5) acesta fiind cel care prezinta clientilor produsele si cuprinde un "Cos de cumparaturi" in care acesta adauga produsele pe care doreste sa le cumpere. La final clientul avand posibilitatea de a salva factura cu produsele cumparate si totalul.


fig.5

Citirea datelor din fisier


__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)



void TForm1::CitesteBD(char file[200])

}

f.close();



La fel ca si primul program "Clientul" este alcatuit din mai multe formulare: Form1 este catalogul care afiseaza produsele, Form2 este cel care ne arata detaliile produsului si Form3 ne afiseaza produsele din cosul de cumparaturi.

La actiunea dublu-clic asupra produsului  din "Client" se va deschide fereastra "Detalii produs" ce contine butonul "Adaugare la cos", iar prin evenimenul OnClick acesta buton produsul va fi adaugat in Cosul de Cumparaturi.















Butonul "Anuleaza" are proprietatea de a goli cosul de gunoi. La evenimentul OnClick acesta va deschide o fereastra de avertisment (fig.6).


fig.6






Prin efectuarea unui clic pe meniul "Factureaza" ne va aparea o fereastra de avertisment (fig.7) si apoi vom avea posibilitatea de a salva factura in calculator.


Fig.7





Scrierea datelor in fisier se face prin functia urmatoare

void __fastcall TForm1::Factureaza1Click(TObject *Sender)


f<<endl<<'-------- ----- ------ ---'<<endl<<endl;

f<<'Total: '<<(IntToStr(suma)).c_str();

f.close();

}

}



Butonul "Despre" are aceeasi proprietate in ambele programe, acesta afisand datele realizatorului printr-o fereastra de avertisment (fig.8).








Fig.8

































Concluzie





Acest soft este inca in faza de dezvoltare urmand ca pe viitor sa fie imbunatati cu functia de cautare a unui produs, citirea datelor prin Internet, iar factura sa poata fi scoasa direct la imprimanta.

Un astfel de program ajuta foarte mult clientii si chiar agentii de vanzari deoarece este usor de utilizat, are o interfata placuta si practica, ocupa putin spatiu si foloseste putina memorie.
























Bibliografie






,,Initiere in Programarea Vizuala'' ( Varianta Borland C++ Builder) ; Tudor Sorin ; Editura L&S ;

,,Programare in C++ Builder'' ; Mihai Olteanu si Crina Grojan ; Editura Albastra





Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright