Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include<fstream>
  4. #include <conio.h>
  5.  
  6. using namespace std;
  7.  
  8.  
  9.  
  10.  
  11. class Element
  12. {
  13. public:
  14. Element *nast,*pop;
  15. int ID;
  16. Element(int id){
  17. ID=id;
  18. nast=NULL;
  19. pop=NULL;
  20. }
  21.  
  22. void drukuj(){
  23. cout << "ID:";
  24. }
  25.  
  26. virtual void intro(){
  27. cout << "Element z id:" << ID <<endl;
  28. }
  29.  
  30. //klasę pochodną zwierzę zawierającą pola imię i wiek
  31.  
  32. virtual string GetName(){
  33. return "Element";
  34. }
  35.  
  36. virtual int getWiek(){
  37. return 0;
  38. }
  39.  
  40. virtual void zapiszDoPliku(ofstream *plik){
  41. (*plik) << "Element"<<endl;
  42. (*plik) << "ID: " << ID <<endl;
  43. }
  44. };
  45. class zwierze :public Element
  46. {
  47. public:
  48. string imie;
  49. int wiek;
  50. zwierze(string N,int W,int I): Element(I){
  51. imie=N;
  52. wiek=W;
  53. }
  54. string getType(){
  55. return "Zwierze:";
  56. }
  57.  
  58. string getImie(){
  59. return imie;
  60. }
  61.  
  62. int getWiek(){
  63. return wiek;
  64. }
  65. void intro(){
  66. cout << getType() << " " << imie << ", wiek: " << wiek << "\n";
  67. }
  68.  
  69. void zapiszDoPliku(ofstream *plik) {
  70. (*plik) << getType()<<endl;
  71. (*plik) << "ID: " << ID << " Imie: " << imie << " Wiek: " << wiek <<endl;
  72. }
  73. };
  74.  
  75. class Kot: public zwierze{
  76. public:
  77. Kot(string N,int W,int I):zwierze(N,W,I){}
  78.  
  79. string getType(){
  80. return "Kot";
  81. }
  82. };
  83. class Pies: public zwierze{
  84. public:
  85. Pies(string N,int W,int I):zwierze(N,W,I){}
  86.  
  87. string getType(){
  88. return "Pies";
  89. }
  90. };
  91.  
  92. class Lista
  93. {
  94. public:
  95. Element *pierwszy, *ostatni;
  96. int ilosc;
  97.  
  98. Lista()
  99. {
  100. pierwszy=NULL;
  101. ostatni=NULL;
  102. ilosc=0;
  103. }
  104.  
  105. void drukuj()
  106. {
  107. Element * temp =pierwszy;
  108. while (temp) /*temp!=NULL*/
  109. {
  110. temp->intro();
  111. temp=temp->nast;
  112. }
  113. }
  114. Element *Utworz(int id) {
  115. return new Element(id);
  116. }
  117. void dodaj_na_koniec(Element * E) //to mam zamienic
  118. {
  119. if (pierwszy==NULL)
  120. {
  121. pierwszy=E;
  122. ostatni=E;
  123. }
  124. else
  125. {
  126. ostatni->nast = E; /* za ostatnim stoi nowy*/
  127. E->pop=ostatni; /*przed nowym ma stac ostatni */
  128. ostatni =E; /* ostatni element staje sie przedostatnim,
  129. a role ostatniego spelnia nowy*/
  130. }
  131. ilosc++;
  132. }
  133.  
  134. Element *Utworz(int id) {
  135. return new Element(id);
  136. }
  137. };
  138. class zoo:public Lista{
  139. public:
  140. void dodajZwierze(){
  141. int flag=1;
  142. while(flag){
  143. string typ;
  144. cout<<"Jakie zwierze dodajesz?(kot,pies)";
  145. cin>>typ;
  146. if(typ=="kot"){
  147. dodaj_na_koniec(UtworzKota());
  148. flag=0;
  149. }
  150. else if( typ == "pies" ){
  151. dodaj_na_koniec( UtworzPsa() );
  152. flag = 0;
  153. }
  154.  
  155. else{
  156. cout << "Nieprawidlowy typ zwierzecia \n";
  157. }
  158. }
  159. }
  160.  
  161. void wyszukajPoImieniu(){
  162. string imie;
  163. cout << "Podaj imie: ";
  164. cin >> imie;
  165. Element *Temp = pierwszy;
  166. while( Temp ) {
  167. if( Temp->getImie() == imie ){
  168. Temp->intro();
  169. }
  170. Temp = Temp->nast;
  171. }
  172. }
  173.  
  174. void wyszukajPoWieku(){
  175. int wiek;
  176. cout << "Podaj wiek: ";
  177. cin >> wiek;
  178. Element *Temp = pierwszy;
  179. while( Temp ) {
  180. if( Temp->getWiek() == wiek ){
  181. Temp->intro();
  182. }
  183. Temp = Temp->nast;
  184. }
  185. }
  186.  
  187. void wyszukajPoImieniuIWieku(){
  188. string imie;
  189. cout << "Podaj imie: ";
  190. cin >> imie;
  191. int wiek;
  192. cout << "Podaj wiek: ";
  193. cin >> wiek;
  194. Element *Temp = pierwszy;
  195. while( Temp ) {
  196. if( Temp->getWiek() == wiek && Temp->getImie() == imie ){
  197. Temp->intro();
  198. }
  199. Temp = Temp->nast;
  200. }
  201. }
  202.  
  203. Kot *UtworzKota() {
  204. string imie;
  205. int wiek;
  206. cout << "Podaj imie: ";
  207. cin >> imie;
  208. cout << "Podaj wiek: ";
  209. cin >> wiek;
  210. return new Kot(imie, wiek, ilosc);
  211. }
  212.  
  213. Pies *UtworzPsa() {
  214. string imie;
  215. int wiek;
  216. cout << "Podaj imie: ";
  217. cin >> imie;
  218. cout << "Podaj wiek: ";
  219. cin >> wiek;
  220. return new Pies(imie, wiek, ilosc);
  221. }
  222. void zapisz_do_pliku()
  223. {
  224. ofstream plik;
  225. plik.open("lista1.txt");
  226. if (!plik.good()) {cout << "blad otwarcia";exit(10);}
  227. plik << "zoo " <<ilosc<<endl;
  228. Element * temp=pierwszy;
  229. while(temp)
  230. {
  231. temp->zapisz_do_pliku(&plik);
  232. temp=temp->get_nast();
  233. }
  234.  
  235. plik.close();
  236. }
  237.  
  238. void odczyt_z_pliku()
  239. {
  240. ifstream plik;
  241. plik.open("lista1.txt");
  242. if (!plik.good()) {cout << "blad otwarcia 1";exit(10);}
  243. ///Lista ilosc
  244. string text;
  245. plik >> text;
  246. if (text!="zoo") {cout << "blad otwarcia 2"<<text;exit(10);}
  247. int I;
  248. plik >> I;///ilosc
  249. for (int i =0;i<I;i++)
  250. {
  251. plik >> text;
  252. string IdNaglowek, ImieNaglowek, WiekNaglowek;
  253. string imie;
  254. int id, wiek;
  255.  
  256. if( text == "Kot" || text == "Pies" ){
  257. plik >> IdNaglowek;
  258. if( IdNaglowek != "ID:" ){ cout << "blad otwarcia 3 "<<IdNaglowek;exit(10); }
  259. plik >> id;
  260.  
  261.  
  262. plik >> ImieNaglowek;
  263. if( ImieNaglowek != "Imie:" ){ cout << "blad otwarcia 4 "<<ImieNaglowek;exit(10); }
  264. plik >> imie;
  265.  
  266.  
  267. plik >> WiekNaglowek;
  268. if( WiekNaglowek != "Wiek:" ){ cout << "blad otwarcia 5 "<<WiekNaglowek;exit(10); }
  269. plik >> wiek;
  270.  
  271. if( text == "Kot" ){
  272. Kot *kot = new Kot(imie, wiek, id);
  273. dodaj_na_koniec(kot);
  274. }
  275. if( text == "Pies" ){
  276. Pies *pies = new Pies(imie, wiek, id);
  277. dodaj_na_koniec(pies);
  278. }
  279. }
  280. else{
  281. cout << "blad odczytu";
  282. exit(10);
  283. }
  284. }
  285. plik.close();
  286. }
  287.  
  288.  
  289. void menu(int numer){
  290. if( numer == 0 ){
  291. cout << "> 1. Zapisz do zoo.txt\n";
  292. }else{
  293. cout << "1. Zapisz do zoo.txt\n";
  294. }
  295. if( numer == 1 ){
  296. cout << "> 2. Odczytaj z zoo.txt\n";
  297. }else{
  298. cout << "2. Odczytaj z zoo.txt\n";
  299. }
  300. if( numer == 2 ){
  301. cout << "> 3. Dodaj zwierzaka\n";
  302. }else{
  303. cout << "3. Dodaj zwierzaka\n";
  304. }
  305. if( numer == 3 ){
  306. cout << "> 4. Wyszukaj po imieniu\n";
  307. }else{
  308. cout << "4. Wyszukaj po imieniu\n";
  309. }
  310. if( numer == 4 ){
  311. cout << "> 5. Wyszukaj po wieku\n";
  312. }else{
  313. cout << "5. Wyszukaj po wieku\n";
  314. }
  315. if( numer == 5 ){
  316. cout << "> 6. Wyszukaj po imieniu i wieku\n";
  317. }else{
  318. cout << "6. Wyszukaj po imieniu i wieku\n";
  319. }
  320. if( numer == 6 ){
  321. cout << "> 7. Koniec\n";
  322. }else{
  323. cout << "7. Koniec\n";
  324. }
  325. }
  326. };
  327.  
  328.  
  329. int main()
  330. {
  331. zoo *Zo = new zoo();
  332.  
  333. int menuOn = 1;
  334. int menuNumer = 0;
  335. while (menuOn){
  336. system("cls");
  337.  
  338. menu(menuNumer);
  339. char c;
  340. c=getch();
  341. if( c == 80 ){
  342. //down
  343. if( menuNumer == 6 ){
  344. menuNumer = 0;
  345. }else{
  346. menuNumer = menuNumer + 1;
  347. }
  348. }
  349. if( c == 72 ){
  350. //up
  351. if( menuNumer == 0 ){
  352. menuNumer = 6;
  353. }else{
  354. menuNumer = menuNumer - 1;
  355. }
  356. }
  357. if( c == '\r' ){
  358. system("cls");
  359. if( menuNumer == 0 ) {
  360. Zo->zapiszDoPliku();
  361. int secondMenu = 1;
  362. while( secondMenu ){
  363. cout << "Zapisano! [potwierdz enterem]";
  364. char c;
  365. c=getch();
  366. if( c == '\r' ) secondMenu = 0;
  367. }
  368. }
  369. if( menuNumer == 1 ){
  370. Zo->odczytajZPliku();
  371. Zo->Drukuj();
  372. int secondMenu = 1;
  373. while( secondMenu ){
  374. cout << "\n[potwierdz enterem]";
  375. char c;
  376. c=getch();
  377. if( c == '\r' ) secondMenu = 0;
  378. }
  379. }
  380. if( menuNumer == 2 ){
  381. Zo->dodajZwierze();
  382. }
  383. if( menuNumer == 3 ){
  384. Zo->wyszukajPoImieniu();
  385. int secondMenu = 1;
  386. while( secondMenu ){
  387. cout << "\n[potwierdz enterem]";
  388. char c;
  389. c=getch();
  390. if( c == '\r' ) secondMenu = 0;
  391. }
  392. }
  393. if( menuNumer == 4 ){
  394. Zo->wyszukajPoWieku();
  395. int secondMenu = 1;
  396. while( secondMenu ){
  397. cout << "\n[potwierdz enterem]";
  398. char c;
  399. c=getch();
  400. if( c == '\r' ) secondMenu = 0;
  401. }
  402. }
  403. if( menuNumer == 5 ){
  404. Zo->wyszukajPoImieniuIWieku();
  405. int secondMenu = 1;
  406. while( secondMenu ){
  407. cout << "\n[potwierdz enterem]";
  408. char c;
  409. c=getch();
  410. if( c == '\r' ) secondMenu = 0;
  411. }
  412. }
  413. if( menuNumer == 6 ) exit(0);
  414. }
  415. }
  416.  
  417.  
  418. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement