Extras din proiect
In acest proiect am lucrat cu fisiere organizate relative .Programul ajuta la gestionarea clientilor unui hotel. Am lucrat cu 2 fisiere organizate relative astfel: primul(fisierul principal) contine date despre clientii hotelului, avand urmatoarea structura:
typedef struct
{int is;
char nume[20];
char prenume[20];
char oras[20];
int varsta;
int nr_nopti;
int nr_camera;
int serv_aux[6];
} clienti;
Cel ce-al doilea fisier contine date despre camerele hotelului si are urmatoarea structura:
typedef struct
{
int is1;
int nr_camera;
char tip[20];
int pret;
char disp[2];
} camera;
unde campul “nr_camera” reprezinta numarul relativ pentru ambele fisiere, campurile “is” si “is1” reprezinta indicatorii de stare,care arata daca exista sau nu inregistrare pe pozitia respectiva.
Pe baza acestui program se poate adauga,sterge,cauta clienti cazati in hotel, respective de a modifica date despre acesti clienti.De fiecare data cand se va adauga(caza), respectiv cand se va sterge(decaza) un client, se va produce modificari si in fisierul cu camere adica se va ocupa, respectiv se va elibera o camera. Pentru fiecare operatie am folosit cate un subprogram.
Programul principal presupune apelarea unui subprogram, care consta intr-un meniu cu mai multe optiuni din care utilizatorul poate alege :
void meniu()
{
int n,cond=0;
system("cls");
do
{
printf("n Clienti Hotel");
printf("n 1-Creare fisiere");
printf("n 2-Adauga client");
printf("n 3-Modifica date client");
printf("n 4-Cauta client");
printf("n 5-Sterge client");
printf("n 6-Calcul total plata");
printf("n 7-Afisare clienti");
printf("n 8-Afisare camere libere");
printf("n 9-Afisare camere");
printf("n 10-Cheltuieli cu serviciile auxiliare");
printf("n 0-iesire");
printf("n Optiunea dumneavoastra: ");
scanf("%d",&cond);
switch(cond)
{
case 1 :creare();break;
case 2 :adaugare();break;
case 3 :meniu_sec();break;
case 4 :cautare();break;
case 5 :stergere();break;
case 6 :plata();break;
case 7 :afisare();break;
case 8 :n=afis_camere_libere();break;
case 9 :afisare1();break;
case 10 :cheltuieli();break;
}}
while (cond!=0);
}
Fiecare optiune presupune apelarea unui subprogram.La alegerea celei de-a doua optiuni ‘Modifica date client’ se va apela un subprogram ce contine 2 optiuni de modificare : prelungirea sejurului, respectiv schimbarea camerei.
void meniu_sec()
{
int n,cond=0;
system("cls");
do
{
printf("n Modifica date client n");
printf("n 1-Prelungire sejur");
printf("n 2-Schimbare camera");
printf("n 0-Intoarcere la meniul principal");
printf("n Optiunea dumneavoastra: ");
scanf("%d",&cond);
switch(cond)
{
case 1 :prelungire_sejur();break;
case 2 :schimb_cam();break;
}}
while (cond!=0);
}
In continuare voi descrie fiecare optiune din cele 2 meniuri :
• Optiunea ’Creare fisiere’
Se va apela un subprogram care face apel la subprogramul de creare a fisierului cu camere ‘camere.dat’, si care contine crearea fisierului ‘clienti.dat’.Fisierele se deschid in modul ‘wb’,care permite crearea unui nou fisier. Se declara variabilele necesare si se citeste intr-o variabila numarul relativ cat timp nu introducem de la tastatura sfarsitul standard ‘CTRL-Z’. Daca acesta este mai mare decat numarul de articole din fisier,ne pozitionam la sfarsitul fisierului cu fseek(f,0,2),unde 2-reprezinta sfarsitul fisierului, iar 0-reprezinta cu cate articole ne pozitionam fata de sfarsitul fisierului, si se vor scrie articolele cu indicatorul de stare 0 pana la pozitia pe care vrem sa adaugam noua valoare. ). In cazul in care numarul citit este mai mic decat numarul de articole din fisier, ne pozitionam in fisier dupa primele n-1 articole, verificam daca indicatorul de stare este 0, adica nu exista articol pe pozitia respectiva, se citeste si se scrie articolul pe pozitia n. Daca avem articol pe pozitia respectiva se va da un mesaj corespunzator.Pentru fiecare valoare scrisa in fisier se face validare. Validarea se face prin apelarea unor functii astfel :
- pentru validarea numelui,prenumelui si a orasului se apeleaza functia ‘validare_nume’ cu un parametru de intrare-iesire.Prin aceasta se verifica ca sirul de caractere trimis ca parametru sa nu contina altceva decat litere.In cazul in care acesta nu e valid, se va citi un nou sir pana cand se va introduce o valoare corecta.
Preview document
Conținut arhivă zip
- _UpgradeReport_Files
- UpgradeReport.css
- UpgradeReport.xslt
- UpgradeReport_Minus.gif
- UpgradeReport_Plus.gif
- debug
- proiect_final.exe
- proiect_final.ilk
- proiect_final.pdb
- proiect_final
- Debug
- BuildLog.htm
- mt.dep
- proiect_final.exe.embed.manifest
- proiect_final.exe.embed.manifest.res
- proiect_final.exe.intermediate.manifest
- proiect_final.obj
- stdafx.obj
- vc80.idb
- vc80.pdb
- vc90.idb
- vc90.pdb
- camere.dat
- clienti.dat
- list.txt
- lista.txt
- proiect_final.cpp
- proiect_final.vcproj
- proiect_final.vcproj.8.00.old
- proiect_final.vcproj.ADMIN.Alyna.user
- proiect_final.vcproj.ALINA.Radu Alina.user
- ReadMe.txt
- secv.dat
- stdafx.cpp
- stdafx.h
- Algoritmi - Gesiune Hotel.doc
- proiect_final.ncb
- proiect_final.sln
- proiect_final.suo
- proiect_final.sln.old
- proiect_final.suo.old
- UpgradeLog.XML