Advertisement
Guest User

Untitled

a guest
May 19th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.27 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement