Sunteți pe pagina 1din 15

Universitatea Tehnica "Gheorghe Asachi" din Iasi Facultatea de Automatica si Calculatoare Profil : Calculatoare si Tehnologia Informatiei

Proiect POO

Student: Cosofret Constantin Grupa: 1205A An Universitar: 2012-2013

1. Descriere
Acest program poate fi folosit pentru a simula activitatea unui spital pe parcursul unei zile. El creeaza sase liste diferite(doctori,pacienti(internati si monitorizati),asistenti,boli si medicamente). Utilizatorul poate introduce initial 100 de elemente in fiecare lista, daca se doreste inserarea mai multor elemente se aloca spatiu de memorie dupa care se insereaza oricate elemente dorim. Fiecare element dintr-o lista are o serie de caracteristici proprii. Programul poate duce evidenta activitatii personalului, pacientilor, atat internati cat si monitorizati la domiciliu, rezervei de medicamente a spitalului cat si bolile cat si bolile ce au fost tratate in spital. In orice moment este posibila adaugarea unui nou angajat, sau primirea informatiilor ce au legatura cu un pacient sau a personalului spitalului, primirea unui nou stoc de medicamente, eliberarea unor medicamente sau descoperirea unui nou tip de boli. Citirea si afisarea doctorilor, asistentilor, pacientilor, medicamentelor si afectiunilor se poate face atat de la tastatura cat si din fisier, la rularea programului sunt incarcate 6 fisiere txt cu seturi de date diferite pentru fiecare clasa in parte, se pot aduce modificari asupra acestor seturi de date, dupa care la iesirea din program seturile de date pentru fiecare clasa sunt salvate in alte 6 fisiere ce au extensia txt.

2. Manual de utilizare

1. Personal Spital 1.1. Doctori 1.1.1. Angajare doctor nou - un nou doctor este angajat in spital, se cer urmatoarele date : a. Nume; b. Prenume; c. Data Nasterii(anul trebuie inserat intre 1900 si 2013, luna intre 1 si 12 iar ziua intre 1 si 31 inclusiv); d. Adresa(Strada(poate contine orice tip de caractere), Numarul, Blocul(un singur caracter, preferabil o litera),Apartamentul(un caracter numeric),Etajul(de asemenea un caracter numeric),Numarul de telefon,Orasul de provenienta, Judetul de provenienta, CNP-ul(o serie de 13 caractere de preferabil numerice)) e. Locatia din Spital in care medicul isi desfasoara activitatea: - Aripa (un singur caracter, de preferabil o litera, defineste zona din spital in care medicul respectiv isi are cabinetul); -Etajul(caracter numeric); -Camera(caracter numeric); f. Salariul(caracter numeric) ; g. Specializarea(domeniu in care medicul activeaza).

1.1.2. Concediere doctor: - concedierea se face dupa index, se cere un caracter numeric iar la inserarea acestuia, daca dooctorul respectiv exista in lista datele acestuia sunt sterse.

1.1.3. Afisare lista doctori: - se afiseaza lista doctorilor care activeaza in spital in ordinea angajarii acestora.

1.1.4.Afisare dupa index: -se afiseaza un anumit doctor din lista, cerandu-se mai intai indexul doctorului cautat.

1.2. Asistenti:

1.2.1. Angajare asistent: - un asistent este angajat in spital dupa modelul angajarii unui medic, doar ca sunt necesare mai putine date comparativ cu un doctor, nu mai sunt necesare datele referitoare la locatia din spital in care asistentul respectiv isi va desfasura activitatea si specializarea acestuia.

1.2.2. Concediere asistent: - concedierea se face dupa acelasi model ca si in cazul medicilor.

1.2.3. Afisare lista asistenti: - asistentii sunt afisati in ordinea angajarii acestora.

1.2.4.Afisare dupa index: - -se afiseaza un anumit asistent din lista, cerandu-se mai intai indexul asistentului cautat.

2. Medicamente:

2.1. Aprovizionarea cu medicamente: - se face aprovizionarea cu medicamente, fiind necesare denumirea, data fabricarii respectiv a expirarii medicamentelor(data fabricarii trebuie sa fie mai mica decat cea a expirarii),numarul de cutii si pretul pentru fiecare cutie in parte.

2.2. Distribuirea cu medicamente: - disribuirea se face dupa index, se verifica lista de medicamente, si se extrag numarul de cutii dorite, daca numarul cautat este mai mare decat rezerva actuala, sunt oferite doar medicamentele de pe stoc.

2.3. Stocul de medicamente: - se afiseaza stocul de medicamente la momentul actual.

2.4.Afisare dupa index:

-se afiseaza un anumit medicament din lista, cerandu-se mai intai indexul medicamentului cautat.

3. Boli:

3.1. Inserare boala nou intalnita: - se descopera un nou tip de boala la unul din pacientii spitalului, ea urmand a fi inserata intr-o lista pentru a fi tinuta sub evidenta;

3.2. Boli prezente la pacientii din spital: - se afiseaza o lista de boli prezente la pacientii din spital.

3.3. Afisare dupa index: - se afiseaza o anumita afectiune din lista, cerandu-se mai intai indexul afectiunii cautate.

4.Pacienti

4.1. Monitorizati

4.1.1. Inserare pacient: -se insereaza un pacient cu o afectiune mai usoara ce nu necesita internare;

-sunt cerute urmatoarele date: a. Numele si Prenumele; b. Data Nasterii; c. Adresa(Strada(poate contine orice tip de caractere), Numarul, Blocul(un singur caracter, preferabil o litera),Apartamentul(un caracter numeric),Etajul(de asemenea un caracter numeric),Numarul de telefon,Orasul de provenienta, Judetul de provenienta); d.CNP-ul; e. Afectiunea de care sufera pacientul; f. Medicamentul recomandat;

4.1.2. Eliminare pacient din lista: -eliminarea are loc dupa index;

4.1.3. Lista pacienti monitorizati: - se afiseaza o lista cu toti pacientii monitorizati in ordinea inserarii lor.

4.1.4.Afisare dupa index: -se afiseaza un anumit pacient monitorizat din lista, cerandu-se mai intai indexul pacientului cautat.

4.2. Internati

4.2.1. Internare pacient: - se insereaza un pacient dupa modelul celor monitorizati, diferenta constand in faptul ca mai sunt necesare inserarea urmatoarelor date: - zile de spitalizare recomandate; - camera in care va fi internat pacientul; - etajul; -aripa, locatia din spital in care va fi internat pacientul;

4.2.2. Externare pacient: - un pacient care si-a terminat tratamentul si s-a vindecat este eliberat, fiin necesar indexul acestuia pentru a-i fi sterse datele;

4.2.3. Lista pacienti internati: - este afisata lista pacientilor internati dupa ordinea internarii.

4.2.4.Afisare dupa index: -se afiseaza un anumit pacient internat din lista, cerandu-se mai intai indexul pacientului cautat.

5.Afiseaza detalii despre creatorul programului: - afiseaza un set de date personale despre cel ce a creat programul.

6. Despre program: -cateva informatii minimale cu privire la aceste program;

7. Meniu vid

Pentru a iesi din program sau din o secventa se foloseste tasta "Esc" sau "0". 3. Fisierele din program

a. Fisiere header: -Principal.h - Globale.h - Lista.h - OperatiiSimple.h - ElementMeniu.h b.Fisiere sursa: -Principal.cpp - Globale.cpp - Lista.cpp - OperatiiSimple.cpp - ElementMeniu.cpp - Fisier.cpp

- main.cpp c. Fisiere cu extensia txt: - Doctor.txt; - Asistent.txt; - Medicamente.txt; - Boli.txt; - Monitorizat.txt; - Internat.txt.

4. Bucati de cod mai interesante

- functie de supraincarcare a operatorului << pentru clasa Doctor, cu scopul de a face afisarea in fisier:
ofstream &operator << (ofstream &os, Doctor &d) { os << d.date.date.getZi() << endl; os << d.date.date.getLuna() << endl; os << d.date.date.getAn() << endl; os << d.date.adresa.getStrada() << endl; os << d.date.adresa.getTelefon() << endl; os << d.date.adresa.getOras() << endl; os << d.date.adresa.getJudet() << endl; os << d.date.adresa.getNumar() << endl;

os << d.date.adresa.getApartament() << endl; os << d.date.adresa.getEtaj() << endl; os << d.date.adresa.getBloc() << endl; os << d.date.getNume() << endl; os << d.date.getPrenume() << endl; os << d.CNP << endl; os << d.aripa << endl; os << d.specializarea << endl; os << d.camera << endl; os << d.etajSpital << endl; os << d.salariu << endl; return os; }

- functie de supraincarcare a operatorului >> pentru clasa Internat, cu scopul de a face afisarea in fisier:
ifstream &operator >> (ifstream &in,Internat &i) { int zi,luna,an; char nume[100],prenume[100],CNP[100]; char strada[100],telefon[100],oras[100],judet[100]; int numar,apartament,etaj; char bloc; in >> zi;

in.get(); in >> luna; in.get(); in >> an; in.get(); Data data(zi,luna,an); in.getline(strada,100); in.getline(telefon,100); in.getline(oras,100); in.getline(judet,100); in >> numar; in.get(); in >> apartament; in.get(); in >> etaj; in.get(); in >> bloc; in.get(); Adresa adresa(strada,numar,apartament,etaj,bloc,telefon,oras,judet); in.getline(nume,100); in.getline(prenume,100); Persoana temp(nume,prenume,data,adresa); i.date=temp; in.getline(CNP,100);

i.CNP = new char[strlen(CNP)+1]; strcpy(i.CNP,CNP); in >> i.aripa; in.get(); char diagnostic[100]; in.getline(diagnostic,100); Boli diag(diagnostic); i.diagnosticat = diag; in.getline(i.tratament,100); in >> i.zileInternare; in.get(); in >> i.camera; in.get(); in >> i.etaj; in.get(); return in; }

- functie de supraincarcare a operatorului = pentru clasa Monitorizat, cu scopul de a face folosi util constructorul de copiere:
Monitorizat &Monitorizat::operator =(const Monitorizat &m) { date=m.date; if(CNP != NULL) {

delete [] CNP; } CNP = new char [strlen(m.CNP)+1]; strcpy(CNP,m.CNP); diagnostic=m.diagnostic; if(tratament != NULL) { delete [] tratament; } tratament = new char [strlen(m.tratament)+1]; strcpy(tratament,m.tratament); return *this; }

5.Diagrama

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