Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.61 KB | None | 0 0
  1. // baza_danych.cpp : Defines the entry point for the console application.
  2.  
  3. //wyjatki i sort na 5
  4. #include "stdafx.h"
  5.  
  6. #include<iostream>
  7. #include<string>
  8. #include<fstream>
  9. using namespace std;
  10.  
  11. int ID = 1;
  12. struct produkt
  13. {
  14. int id;
  15. string nazwa;
  16. float cena;
  17. produkt *nast;
  18. produkt();
  19.  
  20. };
  21. produkt::produkt() {
  22. nast = 0;
  23. }
  24. struct baza
  25. {
  26. produkt *pierwsza;
  27. void dodaj(string nazwa, float cena);
  28. void wczyt(ifstream &xxx);
  29. void usun(int id);
  30. void szukaj(int id);
  31. void szukaj(string nazwa);
  32. void szukaj(float cena);
  33. void wyswietl();
  34. void edycja( int id,string nazwa);
  35. void edycja(int id,float cena);
  36. void zapis(ofstream &yyy);
  37. void dopis(ofstream &yyy, string nazwa, float cena);
  38. baza(); //konstruktor, spr w necie
  39. };
  40. baza::baza() {
  41. pierwsza = 0; //odwołanie do wartosci
  42. }
  43. void baza::dodaj(string nazwa, float cena)
  44. {
  45.  
  46. produkt *nowa = new produkt; //tworze miejssce na nastepne miejsce w liscie
  47.  
  48. nowa->id = ID++;
  49. nowa->nazwa = nazwa;
  50. nowa->cena = cena;
  51.  
  52. if (pierwsza == 0) //patrz linijka 22
  53. {
  54. pierwsza = nowa;
  55. }
  56. else
  57. {
  58. produkt *temp = pierwsza;
  59.  
  60. while (temp->nast) //odwolanie do struktury temp zmiennej nast
  61. {
  62. temp = temp->nast;
  63. }
  64. temp->nast = nowa;
  65. nowa->nast = 0;
  66. }
  67.  
  68. }
  69. void baza::wczyt(ifstream &xxx)
  70. {
  71.  
  72. while (!xxx.eof())
  73. {
  74. produkt *nowa = new produkt;
  75.  
  76. nowa->id = ID++;
  77. xxx >> nowa->nazwa;
  78. xxx >> nowa->cena;
  79.  
  80. if (pierwsza == 0)
  81. {
  82. pierwsza = nowa;
  83. }
  84. else
  85. {
  86. produkt *temp = pierwsza;
  87.  
  88. while (temp->nast)
  89. {
  90. temp = temp->nast;
  91. }
  92. temp->nast = nowa;
  93. nowa->nast = 0;
  94. }
  95.  
  96. }
  97. }
  98. void baza::wyswietl()
  99. {
  100. produkt *temp = pierwsza;
  101. while (temp)
  102. {
  103. cout << "ID = " << temp->id << " Nazwa " << temp->nazwa << " cena " << temp->cena << endl;
  104. temp = temp->nast;
  105. }
  106. }
  107. void baza::usun(int id)
  108. {
  109. produkt *temp = pierwsza;
  110. while (id != temp->nast->id)//wyprzedzam szukanie o jeden dalej i zawsze sprawdza dwa elementy, 1234 laczy 123 a 4 wywala
  111. {
  112. temp = temp->nast;
  113. }
  114. if (temp->nast->nast == 0)
  115. temp->nast = 0;
  116. else
  117. temp->nast = temp->nast->nast;//jezeli nie ostatni to laczy te dwa kóleczka
  118. }
  119. void baza::szukaj(int id)
  120. {
  121. produkt *temp = pierwsza;
  122. while (id != temp->id)
  123. {
  124. temp = temp->nast;
  125. }
  126. cout << "ID = " << temp->id << " Nazwa: " << temp->nazwa << " cena: " << temp->cena << endl;
  127.  
  128. }
  129. void baza::szukaj(string nazwa)
  130. {
  131. produkt *temp = pierwsza;
  132. while (nazwa != temp->nazwa)
  133. {
  134. temp = temp->nast;
  135. }
  136. cout << "ID = " << temp->id << " Nazwa: " << temp->nazwa << " cena: " << temp->cena << endl;
  137.  
  138. }
  139. void baza::szukaj(float cena)
  140. {
  141. produkt *temp = pierwsza;
  142. while (cena != temp->cena)
  143. {
  144. temp = temp->nast;
  145. }
  146. cout << "ID = " << temp->id << " Nazwa: " << temp->nazwa << " cena: " << temp->cena << endl;
  147.  
  148. }
  149. void baza::edycja(int id,string nazwa)
  150. {
  151. produkt *temp = pierwsza;
  152. while (id != temp->id)
  153. {
  154. temp = temp->nast;
  155. }
  156. temp->nazwa =nazwa;
  157.  
  158. }
  159. void baza::edycja( int id,float cena)
  160. {
  161. produkt *temp = pierwsza;
  162. while (id != temp->id)
  163. {
  164. temp = temp->nast;
  165. }
  166. temp->cena = cena;
  167. }
  168. void baza::zapis(ofstream& yyy)
  169. {
  170. produkt *temp = pierwsza;
  171. while (temp)
  172. {
  173. yyy << temp->id << " " << temp->nazwa << " " << temp->cena << endl;
  174. temp = temp->nast;
  175. }
  176.  
  177. }
  178. void baza::dopis(ofstream &yyy, string nazwa, float cena)
  179. {
  180. //ma zapisywac na koncu pliku
  181. yyy << ID++<< " " << nazwa << " " << cena << endl;
  182.  
  183. }
  184.  
  185. int main()
  186. {
  187. baza a;
  188.  
  189. int liczba = 10, id;
  190. float cena;
  191. string nazwa;
  192.  
  193.  
  194.  
  195. while (liczba)
  196. {
  197. cout << "MENU" << endl;
  198. cout << "1-dodaj element" << endl;
  199. cout << "2-wczytaj element z pliku" << endl;
  200. cout << "3-wyswietl wszystkie elementy" << endl;
  201. cout << "4-wyszujak element (podaj ID lub nazwe lub cene)" << endl;
  202. cout << "5-usun element " << endl;
  203. cout << "6-edytuj element" << endl;
  204. cout << "7-zapisz bazę do pliku" << endl;
  205. cout << "8-dodaj element do pliku" << endl;
  206. cout << "0-jeśli chcesz zakończyć program" << endl;
  207. cin >> liczba;
  208.  
  209. switch (liczba)
  210. {
  211. case 1:
  212. { cout << "Podaj nazwe ";
  213. cin >> nazwa;
  214. cout << "Podaj cene ";
  215. cin >> cena;
  216. a.dodaj(nazwa, cena);
  217.  
  218. }
  219. break;
  220. case 2:
  221. {
  222.  
  223. ifstream xxx("dane.txt");
  224. a.wczyt(xxx);
  225. }
  226. break;
  227. case 3:
  228. {
  229. a.wyswietl();
  230. }
  231. break;
  232. case 4:
  233. {
  234. cout << "wyszukaj element";
  235. cout << "jesli chesz podac ID wcisnij 1, jesli nazwe wcisnij 2, lub cene podaj 3";
  236. int kk;
  237. cin >> kk;
  238. if (kk == 1)
  239. {
  240. cin >> id;
  241. a.szukaj(id);
  242. }
  243. else
  244. if (kk == 2)
  245. {
  246. cin >> nazwa;
  247. a.szukaj(nazwa);
  248.  
  249. }
  250. else
  251. cin >> cena;
  252. a.szukaj(cena);
  253.  
  254. }
  255. break;
  256. case 5:
  257. {
  258. cout << "podaj ID produktu ktory chcesz usunac ";
  259. cin >> id;
  260. a.usun(id);
  261. }
  262. break;
  263. case 6:
  264. {
  265. int kk;
  266. cout << "wcisnij 1 jesli chcesz zmienic nazwe, a 2 jesli chcesz zmienic cene ";
  267. cin >> kk;
  268. if (kk == 1)
  269. {
  270.  
  271. cin >> nazwa;
  272. cout << "podaj ID produktu ";
  273. cin >> id;
  274. a.edycja(id,nazwa);
  275.  
  276. }
  277. else
  278. if(kk==2)
  279. {
  280. cin >> cena;
  281. cout << "podaj ID produktu ";
  282. cin >> id;
  283. a.edycja(id, cena);
  284. }//uwaga na blad
  285.  
  286. }
  287. break;
  288. case 7:
  289. {
  290. ofstream yyy;
  291. yyy.open("baza.txt",ios::app);
  292. a.zapis(yyy);
  293. yyy.close();
  294. cout << "Zapisano" << endl;
  295. }
  296. break;
  297. case 8:
  298. {
  299. cout << "Podaj nazwe ";
  300. cin >> nazwa;
  301. cout << " Podaj cene ";
  302. cin >> cena;
  303. ofstream yyy("baza.txt");//zapis na koniec !! napisać
  304. a.dopis(yyy, nazwa, cena);
  305. }
  306. break;
  307.  
  308. }
  309.  
  310.  
  311. }
  312.  
  313. system("Pause");
  314. return 0;
  315. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement