Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <cmath>
- #include <stdlib.h>
- #include <cstring>
- using namespace std;
- //funkcja uout zapobiega wielokrotnemu wpisywaniu "cout<<endl;" w kod programu
- void cls() {
- #ifdef _WIN32
- system("cls");
- #else
- system("clear");
- #endif
- }
- void uout(int x){
- for(int i=0;i<x;i++){
- cout<<endl;
- }
- }
- void poczekaj_na_enter() {
- uout(3);
- cout << "kliknij enter aby kontynuowac" << endl;
- getchar(); // bierze pierwszy enter
- getchar(); // teraz czeka
- }
- //funckja cmpr porownujaca dwa stringi
- int cmpr(string a,string b){
- int licznik=0;
- if(a.length()==b.length()){
- for(int i=0;i<a.length();i++){
- if(a[i]==b[i]){
- licznik++;
- }
- }
- if (licznik==a.length()){
- return 1;
- }
- }else{
- return 0;
- }
- }
- //struktura produktow
- struct SProdukt{
- string S_nazwa;
- int S_cena;
- string S_kod;
- };
- //funkcja wypisujaca struktury w postaci obiektow
- void Wypisz(SProdukt* produkty,int line_num){
- cls();
- cout<<"nr | nazwa | cena | kod"<<endl;
- for(int i=0;i<line_num;i++){
- cout<<i+1<<". "<<produkty[i].S_nazwa<<" "<<produkty[i].S_cena<<" "<<produkty[i].S_kod<<endl;
- }
- poczekaj_na_enter();
- }
- //funkcja dodajaca produkty
- void Dodaj_P(SProdukt*& produkty,int &line_num,char ** argv){
- cls();
- int n;
- string nazwa;
- string cena;
- string kod;
- SProdukt* tmp=0;
- cout<<"Ile produktow chcesz dodac?"<<endl;
- cin>>n;
- tmp=new SProdukt[n+line_num];
- for(int i=0;i<line_num;i++){
- tmp[i]=produkty[i];
- }
- for(int j=line_num;j<n+line_num;j++){
- cout<<"Podaj Nazwe,Cene i kod produktu(oddziel wartosci spacja ):";
- cin>>nazwa;
- cin>>cena;
- cin>>kod;
- tmp[j].S_nazwa=nazwa;
- tmp[j].S_cena=stoi(cena);
- tmp[j].S_kod=kod;
- }
- line_num+=n;
- ofstream plik1(argv[1]);
- plik1<<line_num<<endl;
- for(int z=0;z<line_num;z++){
- plik1<<tmp[z].S_nazwa<<" ";
- plik1<<tmp[z].S_cena<<" ";
- plik1<<tmp[z].S_kod<<endl;
- }
- plik1.close();
- delete [] tmp;
- cout<<"Produkt zostal dodany do listy"<<endl;
- poczekaj_na_enter();
- }
- void instrukcja(){
- cls();
- cout<<"Opis programu: ";
- uout(3);
- cout<<"Program ten sluzy do zarzadzania sklepem sporzywczym, ale mozna go z latwoscia rozszerzyc do innych branz"<<endl;
- cout<<"Pozwala on na stworzenie bazy danych produktow, ktore znajduja sie na stanie"<<endl;
- cout<<"Umozliwia dodawanie, usuwanie, wyswietlanie oraz wyszukiwanie konkretnych danych"<<endl;
- cout<<"Dzialanie sklepu jest dzieki niemu lepsze, poniewaz pozwala dokladnie skatalogowac produkty, ktore znajduja sie w magazynie, co znacznie usprawnia prace"<<endl;
- uout(3);
- cout<<"_________________________________________________________"<<endl;
- uout(3);
- cout<<"Instrukcja obslugi: ";
- uout(3);
- cout<<"Obsluga jest bardzo prosta, nalezy wybrac numer odpowiadajacy interesujacej nas instrukcji i zatwierdzic klawiszem 'Enter'"<<endl;
- cout<<"Czasem wymagane bedzie wprowadzenie konkretnych danych gdy program o nie poprosi, po wpisaniu wszystkiego do wiersza polecen, nalezy zatwierdzic 'Enterem'"<<endl;
- poczekaj_na_enter();
- }
- //funkcja usuwajaca produkty
- void Usun_P(SProdukt*& produkty,int& line_num,char ** argv)
- {
- cls();
- int n = 0;
- Wypisz(produkty,line_num);
- uout(3);
- cout<<"Wybierz produkt ktory chcesz usunac z listy (wpisujac numer tego produktu od 1 do n): ";
- cin>>n;
- while(n>line_num || n<0)
- {
- cout<<"Podany numer jest bledny, sprobuj jeszcze raz"<<endl;
- cout<<"Podaj numer: ";
- cin>>n;
- }
- string prod = produkty[n-1].S_nazwa;
- SProdukt* tmp = new SProdukt[line_num];
- for(int i = 0; i < line_num;i++)
- {
- tmp[i] = produkty[i];
- }
- delete [] produkty;
- produkty = new SProdukt[line_num - 1];
- int a = 0;
- n--;
- for(int i = 0;i<line_num;i++)
- {
- if(i!=n)
- {
- produkty[i-a] = tmp[i];
- }
- if(i==n)
- {
- a++;
- }
- }
- delete [] tmp;
- line_num--;
- uout(3);
- cout<<"Pomyslnie usunieto produkt "<<prod<<" z listy";
- uout(3);
- ofstream plik1(argv[1]);
- if(plik1.good())
- {
- plik1<<line_num<<endl;
- for(int z=0;z<line_num;z++)
- {
- plik1<<produkty[z].S_nazwa<<" ";
- plik1<<produkty[z].S_cena<<" ";
- plik1<<produkty[z].S_kod<<endl;
- }
- plik1.clear();
- plik1.close();
- }
- else
- {
- cout<<"Wystapil blad zapisu"<<endl;
- plik1.clear();
- plik1.close();
- }
- poczekaj_na_enter();
- }
- //funkcja menu stanowiaca interfejs programu
- void menu(int argc,char ** argv,SProdukt*& produkty,int line_num){
- while(true) {
- cls();
- int wybor;
- cout<<"Witaj w naszym programie "<<endl;
- cout<<endl;
- cout<<"Co chcesz zrobic? (wcisnij numer odpowiadajacy czynnosci)"<<endl;
- cout<<"_________________________________________________________"<<endl;
- cout<<endl;
- cout<<"1. Instrukcja obslugi i opis dzialania programu"<<endl;
- cout<<endl;
- cout<<"2. Szukaj produktu przez kod (wyswietla rozkodowany opis)"<<endl;
- cout<<endl;
- cout<<"3. Zobacz liste produktow"<<endl;
- cout<<endl;
- cout<<"4. Dodaj produkt"<<endl;
- cout<<endl;
- cout<<"5. Usun produkt"<<endl;
- cout<<endl;
- cout<<"6. Zakoncz dzialanie programu"<<endl;
- cout<<endl;
- cout<<"_________________________________________________________"<<endl;
- cin>>wybor;
- switch( wybor )
- {
- case 1:
- instrukcja();
- break;
- case 2:
- break;
- case 3:
- Wypisz(produkty,line_num);
- break;
- case 4:
- Dodaj_P(produkty,line_num,argv);
- break;
- case 5:
- Usun_P(produkty, line_num,argv);
- break;
- case 6:
- system("CLS");
- uout(3);
- cout<<"Dziekujemy za skorzystanie z programu!";
- uout(3);
- break;
- }
- }
- }
- //funkcja pobierajaca dane z pliku i pobierajaca je do struktury
- void Struktura_plik(SProdukt*& produkty,int& line_num,ifstream &plik){
- string nazwa;
- string cena;
- string kod;
- string linia;
- plik>>linia;
- line_num=stoi(linia);
- produkty = new SProdukt[line_num];
- for(int i=0;i<line_num;i++){
- plik>>nazwa;
- plik>>cena;
- plik>>kod;
- produkty[i].S_nazwa=nazwa;
- produkty[i].S_cena=stoi(cena);
- produkty[i].S_kod=kod;
- }
- plik.close();
- }
- int main(int argc,char** argv)
- {
- const string nazwa_pliku = "in.txt";
- if(argc>1){
- if(cmpr(nazwa_pliku,argv[1])==0){
- cout<<"Jako argument linii polecen trzeba podac 'in.txt' "<<endl;
- return 0;
- }
- if(cmpr(nazwa_pliku,argv[1])==1){
- ifstream plik(argv[1]);
- int line_num=0;
- SProdukt* produkty=0;
- Struktura_plik(produkty,line_num,plik);
- menu(argc,argv,produkty,line_num);
- delete [] produkty;
- plik.close();
- }
- return 0;
- }
- else{
- cout<<"Nie podano zadnego argumentu linii polecen";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement