Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <conio.h>
- using namespace std;
- struct Data
- {
- void Make(Data d)
- {
- name=d.name;
- recepta=d.recepta;
- ilosc=d.ilosc;
- index=d.index;
- }
- string name;
- string recepta;
- int ilosc;
- string index;
- };
- struct Node
- {
- void Display(int i)
- {
- cout << "l" << i << ". " << dat->name << " " << dat->recepta << " " << dat->index << " " << dat->ilosc << endl;
- }
- Node* next;
- Node* prev;
- Data* dat;
- };
- struct List
- {
- void Make()
- {
- start=new Node;
- start->next=NULL;
- start->prev=NULL;
- start->dat=NULL;
- }
- void Add(Data d)
- {
- Node* s=start;
- if(s->dat==NULL)
- {
- s->dat=new Data();
- s->dat->Make(d);
- }else
- {
- while(s->next!=NULL)
- s=s->next;
- s->next=new Node();
- s->next->prev=s;
- s->next->next=NULL;
- s->next->dat=new Data();
- s->next->dat->Make(d);
- }
- }
- Node* Find(string index,int &l)
- {
- int n=1;
- Node* s=start;
- if(s->dat!=NULL)
- do
- {
- l=n;
- if(s->dat->index==index) return s;
- s=s->next;
- n++;
- }while(s!=NULL);
- l=0;
- return s;
- }
- void Display()
- {
- int n=1;
- Node* s=start;
- if(s->dat!=NULL)
- do
- {
- s->Display(n);
- s=s->next;
- n++;
- }while(s!=NULL);
- }
- void Delete(string index)
- {
- int tmp;
- Node* n=Find(index,tmp);
- if(tmp)
- {
- if(n->next!=NULL&&n->prev!=NULL)
- {
- n->prev->next=n->next;
- delete n;
- }else if(n->next==NULL&&n->prev!=NULL)
- {
- n->prev->next=NULL;
- delete n;
- }else if(n->next!=NULL&&n->prev==NULL)
- {
- n->next->prev=NULL;
- start=n->next;
- delete n;
- }else
- {
- n->dat=NULL;
- }
- }
- }
- Node* start;
- };
- void Header()
- {
- system("cls");
- cout << "-------------------------------------------------------------------------------" << endl;
- cout << "| Autor : Katarzyna Sojka |" << endl;
- cout << "| Projekt : Baza danych lekow |" << endl;
- cout << "| Data : 18.05.2012 |" << endl;
- cout << "-------------------------------------------------------------------------------" << endl << endl;
- }
- void Footer()
- {
- cout << "Ok. Nacisnij dowolny klawisz";
- fflush(stdin);
- getc(stdin);
- }
- int Menu()
- {
- Header();
- int o;
- cout << "1. Dodaj lek"<<endl;
- cout<< "2. Znajdz lek"<<endl;
- cout<< "3. Usun lek"<<endl;
- cout<< "4. Podejrzyj liste"<<endl;
- cout<< "5. Wczytaj z pliku"<<endl;
- cout<< "6. Wykres"<<endl;
- cout<< "7. Wyjscie"<<endl;
- cout << "Wybierz opcje: ";
- cin >> o;
- return o;
- }
- void WczytajZPliku(List *L)
- { system("cls");
- FILE *test = NULL;
- char leki[10][20] = {0};
- int i = 0;
- int recepta1 = 0, nierecepta1 = 0;
- test=fopen("leki.txt", "r+t");
- for (i = 0; i < 10; i++)
- {
- fscanf(test, "%s", &leki[i]);
- printf("Czy %s jest na recepte (T,N)\n", leki[i]);
- if(getch()=='t')
- {
- recepta1++;
- }
- else
- nierecepta1++;
- }
- fclose(test);
- printf("Lekow na recepte jest %d, a bez recepty: %d \n", recepta1,nierecepta1);
- getch();
- }
- void Wykres(List *L)
- { system("cls");
- int nierecepta = 0;
- int recepta = 0;
- Header();
- Data d;
- if(d.recepta=="tak")
- {
- recepta++;
- }
- else
- {
- nierecepta++;
- }
- int max = 0;
- int i;
- max = recepta > nierecepta ? recepta : nierecepta;
- for (i = max; i > 0; i--)
- {
- if (recepta - i >= 0)
- printf("%d|X",i);
- else
- printf(" ");
- if (nierecepta - i >= 0)
- printf(" X");
- else
- printf(" ");
- printf("\n");
- }
- getch();
- }
- void AddLek(List *L)
- {
- Header();
- Data d;
- cout << "Nazwa: "; cin >> d.name;
- cout << "Recepta: "; cin >> d.recepta;
- cout << "Indeks: "; cin >> d.index;
- cout << "Ilosc w opakowaniu: "; cin >> d.ilosc;
- L->Add(d);
- Footer();
- }
- void ShowList(List *L)
- {
- Header();
- L->Display();
- Footer();
- }
- void FindLek(List *L)
- {
- Header();
- cout << "Indeks szukanego leku: ";
- string index;
- cin >> index;
- int res;
- L->Find(index,res);
- if(res)
- cout << "Lek znajduje sie w bazie na " << res << " pozycji.";
- else
- cout << "Lek nie znajduje sie w bazie.n";
- Footer();
- }
- void DeleteLek(List *L)
- {
- Header();
- cout << "Indeks leku do usuniecia: ";
- string index;
- cin >> index;
- L->Delete(index);
- Footer();
- }
- int main()
- {
- List L;
- int Opt=0;
- L.Make();
- while(Opt!=7)
- {
- Opt=Menu();
- switch(Opt)
- {
- case 1: AddLek(&L); break;
- case 2: FindLek(&L); break;
- case 3: DeleteLek(&L); break;
- case 4: ShowList(&L); break;
- case 5: WczytajZPliku(&L); break;
- case 6: Wykres(&L); break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment