Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // baza_danych.cpp : Defines the entry point for the console application.
- //wyjatki i sort na 5
- #include "stdafx.h"
- #include<iostream>
- #include<string>
- #include<fstream>
- using namespace std;
- int ID = 1;
- struct produkt
- {
- int id;
- string nazwa;
- float cena;
- produkt *nast;
- produkt();
- };
- produkt::produkt() {
- nast = 0;
- }
- struct baza
- {
- produkt *pierwsza;
- void dodaj(string nazwa, float cena);
- void wczyt(ifstream &xxx);
- void usun(int id);
- void szukaj(int id);
- void szukaj(string nazwa);
- void szukaj(float cena);
- void wyswietl();
- void edycja( int id,string nazwa);
- void edycja(int id,float cena);
- void zapis(ofstream &yyy);
- void dopis(ofstream &yyy, string nazwa, float cena);
- baza(); //konstruktor, spr w necie
- };
- baza::baza() {
- pierwsza = 0; //odwołanie do wartosci
- }
- void baza::dodaj(string nazwa, float cena)
- {
- produkt *nowa = new produkt; //tworze miejssce na nastepne miejsce w liscie
- nowa->id = ID++;
- nowa->nazwa = nazwa;
- nowa->cena = cena;
- if (pierwsza == 0) //patrz linijka 22
- {
- pierwsza = nowa;
- }
- else
- {
- produkt *temp = pierwsza;
- while (temp->nast) //odwolanie do struktury temp zmiennej nast
- {
- temp = temp->nast;
- }
- temp->nast = nowa;
- nowa->nast = 0;
- }
- }
- void baza::wczyt(ifstream &xxx)
- {
- while (!xxx.eof())
- {
- produkt *nowa = new produkt;
- nowa->id = ID++;
- xxx >> nowa->nazwa;
- xxx >> nowa->cena;
- if (pierwsza == 0)
- {
- pierwsza = nowa;
- }
- else
- {
- produkt *temp = pierwsza;
- while (temp->nast)
- {
- temp = temp->nast;
- }
- temp->nast = nowa;
- nowa->nast = 0;
- }
- }
- }
- void baza::wyswietl()
- {
- produkt *temp = pierwsza;
- while (temp)
- {
- cout << "ID = " << temp->id << " Nazwa " << temp->nazwa << " cena " << temp->cena << endl;
- temp = temp->nast;
- }
- }
- void baza::usun(int id)
- {
- produkt *temp = pierwsza;
- while (id != temp->nast->id)//wyprzedzam szukanie o jeden dalej i zawsze sprawdza dwa elementy, 1234 laczy 123 a 4 wywala
- {
- temp = temp->nast;
- }
- if (temp->nast->nast == 0)
- temp->nast = 0;
- else
- temp->nast = temp->nast->nast;//jezeli nie ostatni to laczy te dwa kóleczka
- }
- void baza::szukaj(int id)
- {
- produkt *temp = pierwsza;
- while (id != temp->id)
- {
- temp = temp->nast;
- }
- cout << "ID = " << temp->id << " Nazwa: " << temp->nazwa << " cena: " << temp->cena << endl;
- }
- void baza::szukaj(string nazwa)
- {
- produkt *temp = pierwsza;
- while (nazwa != temp->nazwa)
- {
- temp = temp->nast;
- }
- cout << "ID = " << temp->id << " Nazwa: " << temp->nazwa << " cena: " << temp->cena << endl;
- }
- void baza::szukaj(float cena)
- {
- produkt *temp = pierwsza;
- while (cena != temp->cena)
- {
- temp = temp->nast;
- }
- cout << "ID = " << temp->id << " Nazwa: " << temp->nazwa << " cena: " << temp->cena << endl;
- }
- void baza::edycja(int id,string nazwa)
- {
- produkt *temp = pierwsza;
- while (id != temp->id)
- {
- temp = temp->nast;
- }
- temp->nazwa =nazwa;
- }
- void baza::edycja( int id,float cena)
- {
- produkt *temp = pierwsza;
- while (id != temp->id)
- {
- temp = temp->nast;
- }
- temp->cena = cena;
- }
- void baza::zapis(ofstream& yyy)
- {
- produkt *temp = pierwsza;
- while (temp)
- {
- yyy << temp->id << " " << temp->nazwa << " " << temp->cena << endl;
- temp = temp->nast;
- }
- }
- void baza::dopis(ofstream &yyy, string nazwa, float cena)
- {
- //ma zapisywac na koncu pliku
- yyy << ID++<< " " << nazwa << " " << cena << endl;
- }
- int main()
- {
- baza a;
- int liczba = 10, id;
- float cena;
- string nazwa;
- while (liczba)
- {
- cout << "MENU" << endl;
- cout << "1-dodaj element" << endl;
- cout << "2-wczytaj element z pliku" << endl;
- cout << "3-wyswietl wszystkie elementy" << endl;
- cout << "4-wyszujak element (podaj ID lub nazwe lub cene)" << endl;
- cout << "5-usun element " << endl;
- cout << "6-edytuj element" << endl;
- cout << "7-zapisz bazę do pliku" << endl;
- cout << "8-dodaj element do pliku" << endl;
- cout << "0-jeśli chcesz zakończyć program" << endl;
- cin >> liczba;
- switch (liczba)
- {
- case 1:
- { cout << "Podaj nazwe ";
- cin >> nazwa;
- cout << "Podaj cene ";
- cin >> cena;
- a.dodaj(nazwa, cena);
- }
- break;
- case 2:
- {
- ifstream xxx("dane.txt");
- a.wczyt(xxx);
- }
- break;
- case 3:
- {
- a.wyswietl();
- }
- break;
- case 4:
- {
- cout << "wyszukaj element";
- cout << "jesli chesz podac ID wcisnij 1, jesli nazwe wcisnij 2, lub cene podaj 3";
- int kk;
- cin >> kk;
- if (kk == 1)
- {
- cin >> id;
- a.szukaj(id);
- }
- else
- if (kk == 2)
- {
- cin >> nazwa;
- a.szukaj(nazwa);
- }
- else
- cin >> cena;
- a.szukaj(cena);
- }
- break;
- case 5:
- {
- cout << "podaj ID produktu ktory chcesz usunac ";
- cin >> id;
- a.usun(id);
- }
- break;
- case 6:
- {
- int kk;
- cout << "wcisnij 1 jesli chcesz zmienic nazwe, a 2 jesli chcesz zmienic cene ";
- cin >> kk;
- if (kk == 1)
- {
- cin >> nazwa;
- cout << "podaj ID produktu ";
- cin >> id;
- a.edycja(id,nazwa);
- }
- else
- if(kk==2)
- {
- cin >> cena;
- cout << "podaj ID produktu ";
- cin >> id;
- a.edycja(id, cena);
- }//uwaga na blad
- }
- break;
- case 7:
- {
- ofstream yyy;
- yyy.open("baza.txt",ios::app);
- a.zapis(yyy);
- yyy.close();
- cout << "Zapisano" << endl;
- }
- break;
- case 8:
- {
- cout << "Podaj nazwe ";
- cin >> nazwa;
- cout << " Podaj cene ";
- cin >> cena;
- ofstream yyy("baza.txt");//zapis na koniec !! napisać
- a.dopis(yyy, nazwa, cena);
- }
- break;
- }
- }
- system("Pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement