SHARE
TWEET

Untitled

a guest May 19th, 2019 79 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <cmath>
  5. #include <stdlib.h>
  6. #include <cstring>
  7.  
  8.  
  9. using namespace std;
  10.  
  11.  
  12. //funkcja uout zapobiega wielokrotnemu wpisywaniu "cout<<endl;" w kod programu
  13.  
  14.  
  15. void cls() {
  16.     #ifdef _WIN32
  17.         system("cls");
  18.     #else
  19.         system("clear");
  20.     #endif
  21. }
  22.  
  23.  
  24.  
  25. void uout(int x){
  26. for(int i=0;i<x;i++){
  27.     cout<<endl;
  28. }
  29. }
  30.  
  31. void poczekaj_na_enter() {
  32.     uout(3);
  33.     cout << "kliknij enter aby kontynuowac" << endl;
  34.     getchar(); // bierze pierwszy enter
  35.     getchar(); // teraz czeka
  36. }
  37.  
  38. //funckja cmpr porownujaca dwa stringi
  39.  
  40. int cmpr(string a,string b){
  41.     int licznik=0;
  42.  
  43.     if(a.length()==b.length()){
  44.         for(int i=0;i<a.length();i++){
  45.             if(a[i]==b[i]){
  46.             licznik++;
  47.             }
  48.         }
  49.     if (licznik==a.length()){
  50.         return 1;
  51.     }
  52.     }else{
  53.     return 0;
  54.     }
  55. }
  56.  
  57. //struktura produktow
  58. struct SProdukt{
  59.     string S_nazwa;
  60.     int S_cena;
  61.     string S_kod;
  62. };
  63.  
  64. //funkcja wypisujaca struktury w postaci obiektow
  65. void Wypisz(SProdukt* produkty,int line_num){
  66.     cls();
  67.         cout<<"nr |  nazwa  |   cena  |  kod"<<endl;
  68.     for(int i=0;i<line_num;i++){
  69.         cout<<i+1<<".    "<<produkty[i].S_nazwa<<"    "<<produkty[i].S_cena<<"    "<<produkty[i].S_kod<<endl;
  70.     }
  71.     poczekaj_na_enter();
  72. }
  73.  
  74. //funkcja dodajaca produkty
  75. void Dodaj_P(SProdukt*& produkty,int &line_num,char ** argv){
  76.     cls();
  77.     int n;
  78.     string nazwa;
  79.     string cena;
  80.     string kod;
  81.     SProdukt* tmp=0;
  82.     cout<<"Ile produktow chcesz dodac?"<<endl;
  83.     cin>>n;
  84.     tmp=new SProdukt[n+line_num];
  85.     for(int i=0;i<line_num;i++){
  86.         tmp[i]=produkty[i];
  87.     }
  88.     for(int j=line_num;j<n+line_num;j++){
  89.         cout<<"Podaj Nazwe,Cene i kod produktu(oddziel wartosci spacja ):";
  90.         cin>>nazwa;
  91.         cin>>cena;
  92.         cin>>kod;
  93.         tmp[j].S_nazwa=nazwa;
  94.         tmp[j].S_cena=stoi(cena);
  95.         tmp[j].S_kod=kod;
  96.     }
  97.         line_num+=n;
  98.     ofstream plik1(argv[1]);
  99.     plik1<<line_num<<endl;
  100.     for(int z=0;z<line_num;z++){
  101.         plik1<<tmp[z].S_nazwa<<" ";
  102.         plik1<<tmp[z].S_cena<<" ";
  103.         plik1<<tmp[z].S_kod<<endl;
  104.     }
  105.     plik1.close();
  106.     delete [] tmp;
  107.     cout<<"Produkt zostal dodany do listy"<<endl;
  108.     poczekaj_na_enter();
  109. }
  110.  
  111. void instrukcja(){
  112. cls();
  113.     cout<<"Opis programu: ";
  114.     uout(3);
  115.     cout<<"Program ten sluzy do zarzadzania sklepem sporzywczym, ale mozna go z latwoscia rozszerzyc do innych branz"<<endl;
  116.     cout<<"Pozwala on na stworzenie bazy danych produktow, ktore znajduja sie na stanie"<<endl;
  117.     cout<<"Umozliwia dodawanie, usuwanie, wyswietlanie oraz wyszukiwanie konkretnych danych"<<endl;
  118.     cout<<"Dzialanie sklepu jest dzieki niemu lepsze, poniewaz pozwala dokladnie skatalogowac produkty, ktore znajduja sie w magazynie, co znacznie usprawnia prace"<<endl;
  119.     uout(3);
  120.     cout<<"_________________________________________________________"<<endl;
  121.     uout(3);
  122.     cout<<"Instrukcja obslugi: ";
  123.     uout(3);
  124.     cout<<"Obsluga jest bardzo prosta, nalezy wybrac numer odpowiadajacy interesujacej nas instrukcji i zatwierdzic klawiszem 'Enter'"<<endl;
  125.     cout<<"Czasem wymagane bedzie wprowadzenie konkretnych danych gdy program o nie poprosi, po wpisaniu wszystkiego do wiersza polecen, nalezy zatwierdzic 'Enterem'"<<endl;
  126.     poczekaj_na_enter();
  127.  
  128.  
  129. }
  130.  
  131. //funkcja usuwajaca produkty
  132.  
  133.  void Usun_P(SProdukt*& produkty,int& line_num,char ** argv)
  134. {
  135.     cls();
  136.     int n = 0;
  137.     Wypisz(produkty,line_num);
  138.  
  139.     uout(3);
  140.  
  141.     cout<<"Wybierz produkt ktory chcesz usunac z listy (wpisujac numer tego produktu od 1 do n): ";
  142.     cin>>n;
  143.     while(n>line_num || n<0)
  144.     {
  145.         cout<<"Podany numer jest bledny, sprobuj jeszcze raz"<<endl;
  146.         cout<<"Podaj numer: ";
  147.         cin>>n;
  148.     }
  149.  
  150.  
  151.     string prod = produkty[n-1].S_nazwa;
  152.  
  153.     SProdukt* tmp = new SProdukt[line_num];
  154.  
  155.     for(int i = 0; i < line_num;i++)
  156.     {
  157.         tmp[i] = produkty[i];
  158.     }
  159.     delete [] produkty;
  160.  
  161.  
  162.     produkty = new SProdukt[line_num - 1];
  163.     int a = 0;
  164.  
  165.     n--;
  166.     for(int i = 0;i<line_num;i++)
  167.     {
  168.         if(i!=n)
  169.         {
  170.             produkty[i-a] = tmp[i];
  171.         }
  172.         if(i==n)
  173.         {
  174.             a++;
  175.         }
  176.  
  177.     }
  178.     delete [] tmp;
  179.     line_num--;
  180.  
  181.     uout(3);
  182.  
  183.     cout<<"Pomyslnie usunieto produkt "<<prod<<" z listy";
  184.     uout(3);
  185.  
  186.  
  187.     ofstream plik1(argv[1]);
  188.     if(plik1.good())
  189.     {
  190.       plik1<<line_num<<endl;
  191.         for(int z=0;z<line_num;z++)
  192.         {
  193.             plik1<<produkty[z].S_nazwa<<" ";
  194.             plik1<<produkty[z].S_cena<<" ";
  195.             plik1<<produkty[z].S_kod<<endl;
  196.         }
  197.     plik1.clear();
  198.     plik1.close();
  199.     }
  200.     else
  201.     {
  202.         cout<<"Wystapil blad zapisu"<<endl;
  203.         plik1.clear();
  204.         plik1.close();
  205.     }
  206.  
  207.     poczekaj_na_enter();
  208. }
  209.  
  210.  
  211.  
  212. //funkcja menu stanowiaca interfejs programu
  213.  
  214.  
  215.  
  216. void menu(int argc,char ** argv,SProdukt*& produkty,int line_num){
  217.    while(true) {
  218.         cls();
  219.     int wybor;
  220.  
  221.      cout<<"Witaj w naszym programie "<<endl;
  222.      cout<<endl;
  223.      cout<<"Co chcesz zrobic? (wcisnij numer odpowiadajacy czynnosci)"<<endl;
  224.      cout<<"_________________________________________________________"<<endl;
  225.      cout<<endl;
  226.      cout<<"1. Instrukcja obslugi i opis dzialania programu"<<endl;
  227.      cout<<endl;
  228.      cout<<"2. Szukaj produktu przez kod (wyswietla rozkodowany opis)"<<endl;
  229.      cout<<endl;
  230.      cout<<"3. Zobacz liste produktow"<<endl;
  231.      cout<<endl;
  232.      cout<<"4. Dodaj produkt"<<endl;
  233.      cout<<endl;
  234.      cout<<"5. Usun produkt"<<endl;
  235.      cout<<endl;
  236.      cout<<"6. Zakoncz dzialanie programu"<<endl;
  237.      cout<<endl;
  238.      cout<<"_________________________________________________________"<<endl;
  239.  
  240.      cin>>wybor;
  241. switch( wybor )
  242. {
  243.     case 1:
  244.         instrukcja();
  245.         break;
  246.     case 2:
  247.  
  248.         break;
  249.     case 3:
  250.         Wypisz(produkty,line_num);
  251.         break;
  252.     case 4:
  253.         Dodaj_P(produkty,line_num,argv);
  254.         break;
  255.     case 5:
  256.         Usun_P(produkty, line_num,argv);
  257.         break;
  258.     case 6:
  259.         system("CLS");
  260.         uout(3);
  261.         cout<<"Dziekujemy za skorzystanie z programu!";
  262.         uout(3);
  263.         break;
  264.  
  265.  
  266. }
  267.    }
  268. }
  269.  
  270.  
  271. //funkcja pobierajaca dane z pliku i pobierajaca je do struktury
  272. void Struktura_plik(SProdukt*& produkty,int& line_num,ifstream &plik){
  273. string nazwa;
  274. string cena;
  275. string kod;
  276. string linia;
  277. plik>>linia;
  278.  
  279.  
  280. line_num=stoi(linia);
  281.  
  282.  
  283.  
  284. produkty = new SProdukt[line_num];
  285. for(int i=0;i<line_num;i++){
  286.     plik>>nazwa;
  287.     plik>>cena;
  288.     plik>>kod;
  289.  
  290.     produkty[i].S_nazwa=nazwa;
  291.     produkty[i].S_cena=stoi(cena);
  292.     produkty[i].S_kod=kod;
  293.  
  294. }
  295.  
  296. plik.close();
  297.  
  298. }
  299.  
  300. int main(int argc,char** argv)
  301. {
  302. const string nazwa_pliku = "in.txt";
  303.  
  304. if(argc>1){
  305. if(cmpr(nazwa_pliku,argv[1])==0){
  306.  
  307.     cout<<"Jako argument linii polecen trzeba podac 'in.txt' "<<endl;
  308.  
  309.     return 0;
  310. }
  311.  
  312. if(cmpr(nazwa_pliku,argv[1])==1){
  313.  
  314.     ifstream plik(argv[1]);
  315.     int line_num=0;
  316.     SProdukt* produkty=0;
  317.     Struktura_plik(produkty,line_num,plik);
  318.     menu(argc,argv,produkty,line_num);
  319.     delete [] produkty;
  320.     plik.close();
  321.  
  322. }
  323.     return 0;
  324.  
  325. }
  326. else{
  327.     cout<<"Nie podano zadnego argumentu linii polecen";
  328. }
  329. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top