diff --git a/hazi/adatfajl.txt b/hazi/adatfajl.txt new file mode 100644 index 0000000000000000000000000000000000000000..092fecdacdaebbb5e75988e0ab54d06dfacea6c6 --- /dev/null +++ b/hazi/adatfajl.txt @@ -0,0 +1,39 @@ +2 +3 +4 +5 +1 +asd asd +asd +asd +asd asd asd +asd +1 +Kiss Bela +06301515151 +beci +Kukutyim Virag 24 +06208885969 +1 +Kiraly Istvan +06501424151 +pityu +Pest Kerekes 999 +06501414252 +2 +4 +5 +3 +1 +3 +1 +3 +0 +3 +2 +3 +5 +6 +3 +-2 + diff --git a/hazi/adatok.hpp b/hazi/adatok.hpp index 385eed2d2a9c53d1f8fe67ce4acd02c075f1a0d0..67cdc59efde6aa4459482b2658fab0c77c834baf 100644 --- a/hazi/adatok.hpp +++ b/hazi/adatok.hpp @@ -7,22 +7,28 @@ #include "privatszemely.h" #include "publikusszemely.h" -//using std::string; - +//Adat class, ami két classt tartalmaz +//PublikusAdat és PrivatAdatot class Adatok { + //A két leszármaztatott osztály PublikusAdat pubad; PrivatAdat privad; public: + //Konstruktor Adatok(const PublikusAdat& pubad,const PrivatAdat& privad): pubad(pubad), privad(privad){} + //Copy konstruktor Adatok(const Adatok& asd){ privad = asd.privad; pubad = asd.pubad; } + //Destruktor ~Adatok(){ } + //Egyenlőség operátor + //Két adatok típust hasonlít össze bool operator==(const Adatok& tbc){ if (pubad == tbc.pubad && privad == tbc.privad){ return true; @@ -30,10 +36,12 @@ public: return false; } + //Függvény, ami visszadja a Adatok PrivatAdat tagját PrivatAdat& getpriv() { return privad; } + //Függvény, ami visszadja a Adatok PublikusAdat tagját PublikusAdat& getpubad(){ return pubad; } diff --git a/hazi/adatok.txt b/hazi/adatok.txt new file mode 100644 index 0000000000000000000000000000000000000000..25f1d86d009be91cc65c1a7886d1c9b1e914aa99 --- /dev/null +++ b/hazi/adatok.txt @@ -0,0 +1,5 @@ +Kiss Bela +06301111222 +beci +Pest Virag 24 +06304444555 diff --git a/hazi/asd.zip b/hazi/asd.zip new file mode 100644 index 0000000000000000000000000000000000000000..77aedb6dca5670b7af6015c9cd28094cb162132b Binary files /dev/null and b/hazi/asd.zip differ diff --git a/hazi/bin/Debug/adatok.txt b/hazi/bin/Debug/adatok.txt new file mode 100644 index 0000000000000000000000000000000000000000..25f1d86d009be91cc65c1a7886d1c9b1e914aa99 --- /dev/null +++ b/hazi/bin/Debug/adatok.txt @@ -0,0 +1,5 @@ +Kiss Bela +06301111222 +beci +Pest Virag 24 +06304444555 diff --git a/hazi/bin/Debug/hazi b/hazi/bin/Debug/hazi new file mode 100644 index 0000000000000000000000000000000000000000..bd3d767920d21410a555b43cedcf92e9d12cff57 Binary files /dev/null and b/hazi/bin/Debug/hazi differ diff --git a/hazi/bin/Debug/hazi.exe b/hazi/bin/Debug/hazi.exe new file mode 100644 index 0000000000000000000000000000000000000000..77150d5bebbc1ff7ffb38f5c85b79c39ce338619 Binary files /dev/null and b/hazi/bin/Debug/hazi.exe differ diff --git a/hazi/bin/Debug/vCardAdatok.vcf b/hazi/bin/Debug/vCardAdatok.vcf new file mode 100644 index 0000000000000000000000000000000000000000..465736ed0bcc6975e6dd8e59812058398190ea94 --- /dev/null +++ b/hazi/bin/Debug/vCardAdatok.vcf @@ -0,0 +1,7 @@ +BEGIN:VCARD +VERSION:3.0 +N:Kiss Bela +FN:beci +ADR;TYPE=home:;;Pest Virag 24 +TEL;TYPE=home:06304444555 +TEL;TYPE=work:06301111222 diff --git a/hazi/element.h b/hazi/element.h index 031c2999025e5d70fb49eff48daab092c3ba019e..44f2f94bea21ab3fb898ab3f8d4cdeeb7c12431f 100644 --- a/hazi/element.h +++ b/hazi/element.h @@ -3,18 +3,43 @@ #include <iostream> +//generikus tomb amiben egy láncolt listában +//tárolva vannak az adatok template<class T> -class Element -{ + +//Element class, ebben van tárolva az Adatok +class Element { + public: - //Element* prev; + //A következő elemre mutató pointer Element* next; + + //Az tartalmazott Adatok tagnak az értéke + //az az a PrivatAdat és a PublikusAdat T value; + + //Konstruktor, a következő elemet automatikusan + //NULL-ra állítja Element<T>(const T& val) : value(val) {next = NULL;}; + + //Függvény, ami visszaadja a következő + //elemre mutató pointert + //next pointerrel return-öl Element* getNext() { return next; } + + //Függvény ami visszaadja a tárolt adat value-ját + //(lásd feljebb) + //value-val return-öl T getValue() const { return value; } + + //Függvény, ami a next pointert tudja + //beállítani a megadott pointerre void setNext(Element* ne) { next=ne; } + + //Függvény ami az adott tag értékét tudja állítani void setValue(const T& val) { value=val; } + + //Destruktor ~Element(){} }; diff --git a/hazi/hazi.cbp b/hazi/hazi.cbp new file mode 100644 index 0000000000000000000000000000000000000000..83792047283a6f8d56b7ee1bd2d5f047764986d2 --- /dev/null +++ b/hazi/hazi.cbp @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="6" /> + <Project> + <Option title="hazi" /> + <Option pch_mode="2" /> + <Option compiler="gcc" /> + <Build> + <Target title="Debug"> + <Option output="bin/Debug/hazi" prefix_auto="1" extension_auto="1" /> + <Option object_output="obj/Debug/" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Compiler> + <Add option="-g" /> + <Add option="-DMEMTRACE" /> + </Compiler> + </Target> + <Target title="Release"> + <Option output="bin/Release/hazi" prefix_auto="1" extension_auto="1" /> + <Option object_output="obj/Release/" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Compiler> + <Add option="-O2" /> + </Compiler> + <Linker> + <Add option="-s" /> + </Linker> + </Target> + </Build> + <Compiler> + <Add option="-Wall" /> + <Add option="-fexceptions" /> + </Compiler> + <Unit filename="adatok.hpp" /> + <Unit filename="element.h" /> + <Unit filename="gtest_lite.h" /> + <Unit filename="main.cpp" /> + <Unit filename="memtrace.cpp" /> + <Unit filename="memtrace.h" /> + <Unit filename="privatszemely.h" /> + <Unit filename="publikusszemely.h" /> + <Unit filename="string5.cpp" /> + <Unit filename="string5.h" /> + <Unit filename="victor.h" /> + <Extensions> + <code_completion /> + <envvars /> + <debugger /> + </Extensions> + </Project> +</CodeBlocks_project_file> diff --git a/hazi/hazi.depend b/hazi/hazi.depend new file mode 100644 index 0000000000000000000000000000000000000000..13aa2207896811da92d4a6979c1e5fb3dec93431 --- /dev/null +++ b/hazi/hazi.depend @@ -0,0 +1,291 @@ +# depslib dependency file v1.0 +1620143988 source:/home/zsombor/C++/hazi/adatok.cpp + <iostream> + +1620142704 source:/home/zsombor/C++/hazi/privatadat.cpp + +1620142721 source:/home/zsombor/C++/hazi/publikusadat.cpp + +1620147588 source:d:\users\sandor\downloads\c++\hazi\hazi\adatok.cpp + <iostream> + +1620146304 source:d:\users\sandor\downloads\c++\hazi\hazi\privatadat.cpp + +1620146321 source:d:\users\sandor\downloads\c++\hazi\hazi\publikusadat.cpp + +1620229739 source:d:\users\sandor\downloads\c++\hazi\hazi\main.cpp + <iostream> + "adatok.hpp" + "tomb.h" + "memtrace.h" + +1620201713 source:d:\users\sandor\downloads\c++\hazi\hazi\privatszemely.cpp + +1620201749 source:d:\users\sandor\downloads\c++\hazi\hazi\publikusszemely.cpp + +1620229163 d:\users\sandor\downloads\c++\hazi\hazi\adatok.hpp + <iostream> + "tomb.h" + +1620229218 d:\users\sandor\downloads\c++\hazi\hazi\tomb.h + <iostream> + <cstddef> + +1617816949 source:d:\users\sandor\downloads\c++\hazi\hazi\memtrace.cpp + <stdio.h> + <stdlib.h> + <string.h> + <time.h> + <ctype.h> + "memtrace.h" + +1617816949 d:\users\sandor\downloads\c++\hazi\hazi\memtrace.h + <new> + <cstdio> + <stdlib.h> + <iostream> + <fstream> + <sstream> + <vector> + <list> + <map> + <algorithm> + <functional> + <memory> + <iomanip> + <locale> + <typeinfo> + <ostream> + <stdexcept> + <ctime> + <iterator> + <regex> + +1620386162 source:d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\adatok.cpp + <iostream> + +1620389061 source:d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\main.cpp + <iostream> + "adatok.hpp" + "tomb.h" + "memtrace.h" + +1620389546 d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\adatok.hpp + <iostream> + "tomb.h" + "memtrace.h" + +1620389452 d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\tomb.h + <iostream> + <cstddef> + +1620386162 d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\memtrace.h + <new> + <cstdio> + <stdlib.h> + <iostream> + <fstream> + <sstream> + <vector> + <list> + <map> + <algorithm> + <functional> + <memory> + <iomanip> + <locale> + <typeinfo> + <ostream> + <stdexcept> + <ctime> + <iterator> + <regex> + +1620386162 source:d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\memtrace.cpp + <stdio.h> + <stdlib.h> + <string.h> + <time.h> + <ctype.h> + "memtrace.h" + +1620386162 source:d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\privatszemely.cpp + +1620386162 source:d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\publikusszemely.cpp + +1620389441 d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\string.h + <iostream> + <cstring> + +1620388886 source:d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\string.cpp + "string.h" + +1620382415 source:d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\string5.cpp + <iostream> + <cstring> + "memtrace.h" + "string5.h" + +1620391115 d:\users\sandor\downloads\c++\hazimasolat\prog2_nhf\hazi\string5.h + <iostream> + +1620386164 source:e:\bme\4. évad\prog2\zsombor\hazi\adatok.cpp + <iostream> + +1620392326 source:e:\bme\4. évad\prog2\zsombor\hazi\main.cpp + <iostream> + "memtrace.h" + "adatok.hpp" + "tomb.h" + +1620386164 e:\bme\4. évad\prog2\zsombor\hazi\memtrace.h + <new> + <cstdio> + <stdlib.h> + <iostream> + <fstream> + <sstream> + <vector> + <list> + <map> + <algorithm> + <functional> + <memory> + <iomanip> + <locale> + <typeinfo> + <ostream> + <stdexcept> + <ctime> + <iterator> + <regex> + +1620392326 e:\bme\4. évad\prog2\zsombor\hazi\adatok.hpp + <iostream> + "tomb.h" + "string5.h" + +1620390756 e:\bme\4. évad\prog2\zsombor\hazi\tomb.h + <iostream> + <cstddef> + +1620391116 e:\bme\4. évad\prog2\zsombor\hazi\string5.h + <iostream> + +1620386164 source:e:\bme\4. évad\prog2\zsombor\hazi\memtrace.cpp + <stdio.h> + <stdlib.h> + <string.h> + <time.h> + <ctype.h> + "memtrace.h" + +1620386164 source:e:\bme\4. évad\prog2\zsombor\hazi\privatszemely.cpp + +1620386164 source:e:\bme\4. évad\prog2\zsombor\hazi\publikusszemely.cpp + +1620392500 source:e:\bme\4. évad\prog2\zsombor\hazi\string5.cpp + <iostream> + <cstring> + "string5.h" + +1620386164 source:c:\users\sandor\downloads\hazi\adatok.cpp + <iostream> + +1620574929 source:c:\users\sandor\downloads\hazi\main.cpp + <iostream> + <string.h> + "memtrace.h" + <iostream> + <fstream> + "adatok.hpp" + "victor.h" + "element.h" + "string5.h" + "gtest_lite.h" + +1620386164 c:\users\sandor\downloads\hazi\memtrace.h + <new> + <cstdio> + <stdlib.h> + <iostream> + <fstream> + <sstream> + <vector> + <list> + <map> + <algorithm> + <functional> + <memory> + <iomanip> + <locale> + <typeinfo> + <ostream> + <stdexcept> + <ctime> + <iterator> + <regex> + +1620518965 c:\users\sandor\downloads\hazi\adatok.hpp + <iostream> + "string5.h" + "privatszemely.h" + "publikusszemely.h" + +1620401321 c:\users\sandor\downloads\hazi\tomb.h + <iostream> + <cstddef> + "memtrace.h" + +1620560483 c:\users\sandor\downloads\hazi\string5.h + <iostream> + "memtrace.h" + +1620386164 source:c:\users\sandor\downloads\hazi\memtrace.cpp + <stdio.h> + <stdlib.h> + <string.h> + <time.h> + <ctype.h> + "memtrace.h" + +1620386164 source:c:\users\sandor\downloads\hazi\privatszemely.cpp + +1620386164 source:c:\users\sandor\downloads\hazi\publikusszemely.cpp + +1620560713 source:c:\users\sandor\downloads\hazi\string5.cpp + <iostream> + <cstring> + "memtrace.h" + "string5.h" + +1620568923 c:\users\sandor\downloads\hazi\privatszemely.h + +1620568923 c:\users\sandor\downloads\hazi\publikusszemely.h + +1620494497 source:c:\users\sandor\downloads\hazi\victor.cpp + <iostream> + "victor.h" + +1620580243 c:\users\sandor\downloads\hazi\victor.h + <iostream> + <fstream> + "element.h" + "string5.h" + +1620580159 c:\users\sandor\downloads\hazi\element.h + <iostream> + +1620386164 c:\users\sandor\downloads\hazi\gtest_lite.h + <iostream> + <cassert> + <cmath> + <cstring> + <limits> + <cstdlib> + <string> + <fstream> + <iterator> + <regex> + "memtrace.h" + diff --git a/hazi/hazi.layout b/hazi/hazi.layout new file mode 100644 index 0000000000000000000000000000000000000000..6342b7fb0a6b47e818fd2f50a8c8ad723851013f --- /dev/null +++ b/hazi/hazi.layout @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_layout_file> + <FileVersion major="1" minor="0" /> + <ActiveTarget name="Debug" /> + <File name="element.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="6" zoom_2="0"> + <Cursor> + <Cursor1 position="316" topLine="4" /> + </Cursor> + </File> + <File name="gtest_lite.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="2" zoom_2="0"> + <Cursor> + <Cursor1 position="8628" topLine="0" /> + </Cursor> + </File> + <File name="main.cpp" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="5" zoom_2="0"> + <Cursor> + <Cursor1 position="7408" topLine="202" /> + </Cursor> + </File> + <File name="memtrace.cpp" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <Cursor> + <Cursor1 position="0" topLine="484" /> + </Cursor> + </File> + <File name="privatszemely.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="8" zoom_2="0"> + <Cursor> + <Cursor1 position="415" topLine="23" /> + </Cursor> + </File> + <File name="adatok.hpp" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="7" zoom_2="0"> + <Cursor> + <Cursor1 position="237" topLine="13" /> + </Cursor> + </File> + <File name="string5.cpp" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="4" zoom_2="0"> + <Cursor> + <Cursor1 position="5572" topLine="71" /> + </Cursor> + </File> + <File name="victor.h" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="6" zoom_2="0"> + <Cursor> + <Cursor1 position="222" topLine="222" /> + </Cursor> + </File> + <File name="publikusszemely.h" open="1" top="1" tabpos="6" split="0" active="1" splitpos="0" zoom_1="8" zoom_2="0"> + <Cursor> + <Cursor1 position="345" topLine="14" /> + </Cursor> + </File> + <File name="memtrace.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="4" zoom_2="0"> + <Cursor> + <Cursor1 position="3160" topLine="116" /> + </Cursor> + </File> + <File name="string5.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="4" zoom_2="0"> + <Cursor> + <Cursor1 position="9255" topLine="124" /> + </Cursor> + </File> +</CodeBlocks_layout_file> diff --git a/hazi/main.cpp b/hazi/main.cpp index ae4c22df54953d2ae43d450d633b6cb50603da4c..96f87bccea7ece77ac5a7f5d13246cbc042ac3cc 100644 --- a/hazi/main.cpp +++ b/hazi/main.cpp @@ -10,86 +10,251 @@ #include "victor.h" #include "element.h" #include "string5.h" +#include "gtest_lite.h" using std::cout; using std::cin; using std::endl; - +using std::stringstream; int main() { + //Generikus tömb, amiben tároljuk majd a láncolt listánk victor<Adatok> adatok; - cout<< "Udv a telefonkonyvben :)))))))"<<endl; - cout<< "1-es: szemely felvetel" <<endl; - cout<< "2-as: szemelyek listazasa" <<endl; - cout<< "3-es: szemely torlese" <<endl; - cout<< "4-es: fajlba iras" <<endl; - cout<< "5-os: vCardba iras" <<endl; - cout<< "6-os: kilepes" <<endl; + TEST(TEST_01, Default konstruktor test){ + + stringstream egy; + + adatok.addElement(Adatok(PublikusAdat(), PrivatAdat())); + + //adatok.kiir(); + adatok.testkiir(egy); + + EXPECT_STREQ("0 0 0 0 0\n", egy.str().c_str()); + + adatok.deleteElement(0); + }END + + TEST(TEST_02, Konstruktor teszteles){ + + stringstream egy; + + adatok.addElement(Adatok(PublikusAdat("Kiss Bela", "06301111222"), PrivatAdat("beci", "Pest Virag 24", "06304444555"))); + + adatok.testkiir(egy); + + EXPECT_STREQ("Kiss Bela 06301111222 beci Pest Virag 24 06304444555\n", egy.str().c_str()); + + adatok.deleteElement(0); + }END + + TEST(TEST_03, Egy elem feltoltese){ + + stringstream egy; + + String nev = "Kiss Bela", munkaszam = "06301111222", becnev = "beci", lakcim = "Pest Virag 24", privatszam = "06304444555"; + adatok.addElement(Adatok(PublikusAdat(nev, munkaszam), PrivatAdat(becnev, lakcim, privatszam))); + + adatok.testkiir(egy); + + EXPECT_STREQ("Kiss Bela 06301111222 beci Pest Virag 24 06304444555\n", egy.str().c_str()); + adatok.deleteElement(0); + }END + + TEST(TEST_04, Egy elem torlese){ + + stringstream egy; + + adatok.addElement(Adatok(PublikusAdat("Kiss Bela", "06301111222"), PrivatAdat("beci", "Pest Virag 24", "06304444555"))); + adatok.addElement(Adatok(PublikusAdat("Nagy Tamas", "06307777888"), PrivatAdat("tomi", "Buda Kerekes 50", "06303333666"))); + + adatok.deleteElement(0); + + adatok.testkiir(egy); + + EXPECT_STREQ("Nagy Tamas 06307777888 tomi Buda Kerekes 50 06303333666\n", egy.str().c_str()); + + adatok.deleteElement(0); + }END + + TEST(TEST_05, Ures elem torlese){ + + stringstream egy; + + adatok.addElement(Adatok(PublikusAdat("Kiss Bela", "06301111222"), PrivatAdat("beci", "Pest Virag 24", "06304444555"))); + + adatok.deleteElement(0); + + adatok.testkiir(egy); + + EXPECT_STREQ("Nincs adat, nem listazhatsz\n", egy.str().c_str()); + + }END + + TEST(TEST_06, Listazas teszteles){ + + stringstream egy; + + adatok.addElement(Adatok(PublikusAdat("Kiss Bela", "06301111222"), PrivatAdat("beci", "Pest Virag 24", "06304444555"))); + adatok.addElement(Adatok(PublikusAdat("Nagy Tamas", "06307777888"), PrivatAdat("tomi", "Buda Kerekes 50", "06303333666"))); + + adatok.testkiir(egy); + + EXPECT_STREQ("Kiss Bela 06301111222 beci Pest Virag 24 06304444555\nNagy Tamas 06307777888 tomi Buda Kerekes 50 06303333666\n", egy.str().c_str()); + + }END + + TEST(TEST_07, Ures lista teszteles){ + + stringstream egy; + + adatok.deleteElement(1); + adatok.deleteElement(0); + + adatok.testkiir(egy); + + EXPECT_STREQ("Nincs adat, nem listazhatsz\n", egy.str().c_str()); + + }END + + TEST(TEST_08, Fajlba iras){ + + stringstream egy; + + adatok.addElement(Adatok(PublikusAdat("Kiss Bela", "06301111222"), PrivatAdat("beci", "Pest Virag 24", "06304444555"))); + adatok.testfkiiras(egy); + + EXPECT_STREQ("A fajlba iras sikeres volt\n", egy.str().c_str()); + + adatok.deleteElement(0); + }END + + TEST(TEST_09, Fajlba iras ures){ + + stringstream egy; + + adatok.testfkiiras(egy); + + EXPECT_STREQ("Nincs adat, igy nem irhatsz fajlba\n", egy.str().c_str()); + }END + TEST(TEST_10, vCard kiiras){ + + stringstream egy; + + adatok.addElement(Adatok(PublikusAdat("Kiss Bela", "06301111222"), PrivatAdat("beci", "Pest Virag 24", "06304444555"))); + + adatok.testvCardkiiras(egy); + + EXPECT_STREQ("A vCard fajlbairas sikeres volt\n", egy.str().c_str()); + + adatok.deleteElement(0); + }END + + TEST(TEST_11, vCard ures kiiras){ + + stringstream egy; + + adatok.testvCardkiiras(egy); + + EXPECT_STREQ("Nincs adat, nem tudsz vCardba irni\n", egy.str().c_str()); + }END + + cout<<endl; + + //Menu + cout<< "+------------------------------------------+"<<endl; + cout<< "| Udv a telefonkonyvben :))))))) |"<<endl; + cout<< "| 1-es: szemely felvetel |" <<endl; + cout<< "| 2-as: szemelyek listazasa |" <<endl; + cout<< "| 3-es: szemely torlese |" <<endl; + cout<< "| 4-es: fajlba iras |" <<endl; + cout<< "| 5-os: vCardba iras |" <<endl; + cout<< "| 6-os: kilepes |" <<endl; cout<< "+------------------------------------------+" << endl; + cout<<endl; bool quit = false; - int index = 0; + int felvett = 0; + int torolt = 0; + //Ciklus ami addig fut, amíg ki nem akarunk lépni while(!quit){ + String bejov; cout<< "Mit szeretnel?"; cout<<endl; cin>>bejov; + //Ha az 1-est választja bekéri az adatokat a felhasználótól if (!strcmp(bejov.c_str(), "1")){ String aznev, munkaszam, becenevv, lakcim, privatszam; + cout<< "Add meg a nevet szokozzel elvalasztva" << endl; String vezet, kereszt; cin>>vezet>>kereszt; aznev = vezet + " " + kereszt; + cout<< "Add meg a munkaszamot" << endl; cin>>munkaszam; + cout<< "Add meg a becenevet" << endl; cin>>becenevv; String telep, utca, hazszam; + cout<< "Add meg a lakcimet(telepules, utca, hazszam)" << endl; cin>>telep>>utca>>hazszam; lakcim = telep + ";" + utca + " utca;" + ";" + hazszam; + cout<< "Add meg a privatszamot" << endl; cin>>privatszam; + + //Felveszi a bevett adatokat adatok.addElement(Adatok(PublikusAdat(aznev, munkaszam), PrivatAdat(becenevv, lakcim, privatszam))); - cout<< "A felvett szemely indexe " << index <<endl; - index++; + cout<< "A felvett szemely indexe " << felvett <<endl; + felvett++; } + //Ha kettest választ kilistázza a felvett adatokat, a törölteket nem else if (!strcmp(bejov.c_str(), "2")){ adatok.kiir(); } + //Kitörli a megadott indexű elemet else if (!strcmp(bejov.c_str(), "3")){ int torol; cout<< "Kit szeretnel torolni? Add meg az indexet"<<endl; cin>>torol; - if (torol >= index){ + //Ha nagyobb indexet ad meg, mint van, + //vagy nem elfogadható értéket, akkor nem lehet törölni + if (torol >= felvett || torol < 0){ cout<< "Nincs ilyen adat nem torolhetsz"<<endl; } else { - adatok.deleteElement(torol); - index--; + //Egyébként töröl + adatok.deleteElement(torol-torolt); cout<< "Sikeres torles" <<endl; - cout<< "Az indexek egyel hatrebb csusztak! (pl.: az 1-es 0-as lett)" << endl; + //cout<< "Az indexek egyel hatrebb csusztak! (pl.: az 1-es 0-as lett)" << endl; + torolt++; } } + //Fájlbaírás else if (!strcmp(bejov.c_str(), "4")){ adatok.fkiiras(); } + //vCardba írás else if (!strcmp(bejov.c_str(), "5")){ adatok.vCardkiiras(); } + //Kilépés else if (!strcmp(bejov.c_str(), "6")){ quit = true; } + //Minden egyéb esetben ki kell lépni, a Jporta miatt else { quit = true; } diff --git a/hazi/obj/Debug/adatok.o b/hazi/obj/Debug/adatok.o new file mode 100644 index 0000000000000000000000000000000000000000..ef4e085cd031f118a6e56fcbc1e3aa0bf89f7b6f Binary files /dev/null and b/hazi/obj/Debug/adatok.o differ diff --git a/hazi/obj/Debug/main.o b/hazi/obj/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..4a37108b12084dfba14ab6b75e70165b978af817 Binary files /dev/null and b/hazi/obj/Debug/main.o differ diff --git a/hazi/obj/Debug/memtrace.o b/hazi/obj/Debug/memtrace.o new file mode 100644 index 0000000000000000000000000000000000000000..190298f8eba492859da9dbb6795500f89a20cd21 Binary files /dev/null and b/hazi/obj/Debug/memtrace.o differ diff --git a/hazi/obj/Debug/privatadat.o b/hazi/obj/Debug/privatadat.o new file mode 100644 index 0000000000000000000000000000000000000000..04334485d466c785205c5d384b14442eef560776 Binary files /dev/null and b/hazi/obj/Debug/privatadat.o differ diff --git a/hazi/obj/Debug/privatszemely.o b/hazi/obj/Debug/privatszemely.o new file mode 100644 index 0000000000000000000000000000000000000000..dc15b4d4fd3486304692075ff44a9f0a7da7a467 Binary files /dev/null and b/hazi/obj/Debug/privatszemely.o differ diff --git a/hazi/obj/Debug/publikusadat.o b/hazi/obj/Debug/publikusadat.o new file mode 100644 index 0000000000000000000000000000000000000000..eb65b1bb57c6c311654593b0d2e155c6aa0e3046 Binary files /dev/null and b/hazi/obj/Debug/publikusadat.o differ diff --git a/hazi/obj/Debug/publikusszemely.o b/hazi/obj/Debug/publikusszemely.o new file mode 100644 index 0000000000000000000000000000000000000000..d0ab0d149ea459affb06d5e3f47ef15aafad1968 Binary files /dev/null and b/hazi/obj/Debug/publikusszemely.o differ diff --git a/hazi/obj/Debug/string.o b/hazi/obj/Debug/string.o new file mode 100644 index 0000000000000000000000000000000000000000..d9db83c786244710bc6b8ba8a1d29fd6b92fb6a8 Binary files /dev/null and b/hazi/obj/Debug/string.o differ diff --git a/hazi/obj/Debug/string5.o b/hazi/obj/Debug/string5.o new file mode 100644 index 0000000000000000000000000000000000000000..f0cd5dff3b9dc67c6be3d0e2d2ebc2a53d562518 Binary files /dev/null and b/hazi/obj/Debug/string5.o differ diff --git a/hazi/obj/Debug/victor.o b/hazi/obj/Debug/victor.o new file mode 100644 index 0000000000000000000000000000000000000000..bf055e775fb2eadec38bfb1cca754a794ddb4eea Binary files /dev/null and b/hazi/obj/Debug/victor.o differ diff --git a/hazi/privatszemely.h b/hazi/privatszemely.h index b570980de7ac522197fa4b563f19351ecb09d421..4bb8f6bc2aaf3187058a2fc42efe1980471aa837 100644 --- a/hazi/privatszemely.h +++ b/hazi/privatszemely.h @@ -1,21 +1,30 @@ #ifndef PRIVATSZEMELY_H_INCLUDED #define PRIVATSZEMELY_H_INCLUDED +//PrivatAdat class, itt vannak tárolva a privát adatok: +//becenév, lakcím, privát telefonszám class PrivatAdat { + //A három tárolt adat String becenev; String cim; String privatsz; public: + //Default konstruktor, minden adatot "0"-ra állít alaphelyzetben PrivatAdat(): becenev("0"), cim("0"), privatsz("0"){} + //Konstruktor PrivatAdat(String becenev, String cim, String privatsz): becenev(becenev), cim(cim), privatsz(privatsz) {} + //Copy konstruktor PrivatAdat(const PrivatAdat& dt){ becenev = dt.becenev; cim = dt.cim; privatsz = dt.privatsz; } + //Egyenlőség vizsgálat operátor + //igazzal tér vissza, ha minden adat egyenlő + //egyébként pedig hamissal bool operator==(const PrivatAdat& tbc){ if (becenev == tbc.becenev && cim == tbc.cim && privatsz == tbc.privatsz){ return true; @@ -23,6 +32,8 @@ public: return false; } + //Sima egyenlőség operátor + //Mindegyik adatot, a megadott típussal teszi egyenlővé PrivatAdat& operator=(const PrivatAdat& kok){ becenev = kok.becenev; cim = kok.cim; @@ -30,12 +41,17 @@ public: return *this; } + //Függvény, ami visszatér a névvel const String& getnev() { return becenev; } + + //Függvény, ami visszatér a lakcímével const String& getcim(){ return cim; } + + //Függvény, ami visszatér a privátszámával const String& getprivatsz(){ return privatsz; } diff --git a/hazi/publikusszemely.h b/hazi/publikusszemely.h index 196133927a96a5200ccb3089195b2a737da1eceb..9c42ba7e28b88c480a79fcb7df159f0bb7f3a2eb 100644 --- a/hazi/publikusszemely.h +++ b/hazi/publikusszemely.h @@ -1,33 +1,48 @@ #ifndef PUBLIKUSSZEMELY_H_INCLUDED #define PUBLIKUSSZEMELY_H_INCLUDED +//PublikusAdat class, itt vannak tárolva a publikus adatok: +//Teljes név, munkai telefonszám class PublikusAdat { String nev; String munksz; public: + //Default konstruktor, mindent "0"-ra állít alaphelyzetben PublikusAdat(): nev("0"), munksz("0"){} + //Konstruktor PublikusAdat(String nev, String munksz): nev(nev), munksz(munksz) {} + //Copy konstruktor PublikusAdat(const PublikusAdat& dt){ nev = dt.nev; munksz = dt.munksz; } + //Egyenlőséget vizsgáló operátor, + //igazzal tér vissza ha minden PublikusAdat tag megegyezik + //egyébként pedig hamissal bool operator==(const PublikusAdat& tbc){ if (nev == tbc.nev && munksz == tbc.munksz){ return true; } return false; } + + //Egyenlőség operátor, + //Mindegyik adatot, a megadott típussal teszi egyenlővé PublikusAdat& operator=(const PublikusAdat& kok){ nev = kok.nev; munksz = kok.munksz; return *this; } + + //Függvény, ami visszaadja a teljes név adattagot const String& getpubnev(){ return this->nev; } + + //Függvény, ami visszaadja a munkai telefonszámot const String& getmunksz(){ return this->munksz; } diff --git a/hazi/string5.cpp b/hazi/string5.cpp index 2f56a2ca314639146c24c048d02b4c6f240d9b7d..9b1dea91f0b815bde820bc0e3a5387376423d0a3 100644 --- a/hazi/string5.cpp +++ b/hazi/string5.cpp @@ -62,10 +62,14 @@ String::String(const String& s1) { strcpy(pData, s1.pData); } +//EgyenlĹ‘sĂ©get vizsgálĂł operátor bool String::operator==(const String& tbc){ + //Ha nem egyezik meg a stringek hossza hamissal tĂ©r vissza if (len != tbc.len){ return false; } + //EgyĂ©bkĂ©nt pedig vĂ©gigmegy a karaktereken, + //Ă©s igazzal tĂ©r vissz ha egyeznek, amĂşgy pedig hamissal else { for (size_t i = 0; i < len; i++){ if (this[i] == tbc[i]){ @@ -78,6 +82,7 @@ bool String::operator==(const String& tbc){ } } +//Nem egyenlĹ‘sĂ©get vizsgálĂł operátor bool String::operator!=(const String& tbc){ if (len == tbc.len){ return false; @@ -165,11 +170,5 @@ std::istream& operator>>(std::istream& is, String& s0) { return is; } -std::istream& getline(std::istream& is, String& str){ - char c; - while (is.get(c) && c != '\n'){ - str += c; - } - return is; -} + diff --git a/hazi/string5.h b/hazi/string5.h index 979645bf7f7ea98d164665723244a2008be41117..6aa0ee3572aa5a34f05f5326242711c62c9416af 100644 --- a/hazi/string5.h +++ b/hazi/string5.h @@ -200,5 +200,4 @@ std::istream& operator>>(std::istream& is, String& s0); /// kĂŠt str pedig ĂśsszeadhatĂł inline String operator+(char ch, const String& str) { return String(ch) + str; } -std::istream& getline(std::istream& is, String& str); #endif diff --git a/hazi/vCardAdatok.vcf b/hazi/vCardAdatok.vcf new file mode 100644 index 0000000000000000000000000000000000000000..465736ed0bcc6975e6dd8e59812058398190ea94 --- /dev/null +++ b/hazi/vCardAdatok.vcf @@ -0,0 +1,7 @@ +BEGIN:VCARD +VERSION:3.0 +N:Kiss Bela +FN:beci +ADR;TYPE=home:;;Pest Virag 24 +TEL;TYPE=home:06304444555 +TEL;TYPE=work:06301111222 diff --git a/hazi/victor.h b/hazi/victor.h index 124b8dfa6293c2c12d5b7e53d615fa4586a2d083..c6074ffaaf7465a40c2de7b2c830ffcedbe62bdb 100644 --- a/hazi/victor.h +++ b/hazi/victor.h @@ -7,35 +7,57 @@ #include "element.h" #include "string5.h" +//generikus tomb amiben egy láncolt listában +//tárolva vannak az adatok template<class T> + +//Class amiben az Element class-t tároljuk, azért szukséges, +//hogy láncolt listával összefűzhetőek legyenek az adattagok class victor { + //Az első elemre mutató pointer Element<T>* firstElement; public: + //Konstruktor, alapból NULL-ra állítja az első elemet victor() :firstElement(NULL) {} + //Elemet törlő függvény void deleteElement(int index) { - if (index == -1){ - return; - } + //Előző elemre mutató pointer, alaphelyzetben ez NULL Element<T>* prev = NULL; + + //Segéd pointer Element<T>* helper = NULL; + + //Temporary pointer, ami alaphelyzetben az első elemre mutat Element<T>* temp = firstElement; + + //Ciklus, ami elviszi a temp pointert addig, + //amíg az nem a indexel megadott elemre mutat for(int i = 0; i!=index;i++) { prev = temp; temp = temp->next; } + + //Megvizsgálja, hogy a temp nem NULL-e, + //ha igen kilép a függvényből, mert nincs teendő if (temp == NULL) { return; } + + //Egyébként megvizsgálja, hogy nem e az első elem az ami meg van adva, + //ha igen, akkor törli azt, s a helperrel az első elemet az a temp->nextre állítja else { if(prev == NULL) { helper = temp->next; delete temp; firstElement = helper; } + + //Ha nem az első, akkor az előző next pointerét az adott next pointerre állítja, + // s törli az adatot else { prev->next = temp->next; delete temp; @@ -44,57 +66,93 @@ public: return; } + //Elemet hozzáadó függvény void addElement(T element) { + + //Megvizsgálja, hogy létezik-e első element, + //ha nem a hozzáadott lesz az if (firstElement == NULL) { firstElement = new Element<T>(element); } + + //Egyébként pedig elmegy a lista végéig, s oda illeszti be az elemet else { Element<T>* temp = firstElement; - while (temp->next != NULL) { - temp = temp->next; - } - temp->next = new Element<T>(element); + while (temp->next != NULL) { + temp = temp->next; + } + temp->next = new Element<T>(element); } } + //Függvény, ami megkeresi az adott indexű elemet T getElementAt(int index) { Element<T>* temp = firstElement; int i = 0; + //Az adott elemig elmegy a függvény, + //s így a temp változó a keresett értékű lesz while (i<index) { temp = temp->next; i++; } + //Visszatér a keresett element Value-jával return temp->getValue(); } + //Függvény, ami kiírja consolba az eddig felvett adatoknak a PublikusAdat adattagjait void kiir(){ Element<T>* temp = firstElement; + //Ha nincs még elem a listában nem lehet kiiratni if (temp == NULL){ std::cout<<"Nincs adat, nem listazhatsz"<<std::endl; } + //Egyébként végig megy az adatok, s kíírja a PublikusAdatokat else{ while (temp != NULL) { std::cout<<temp->getValue().getpubad().getpubnev()<<" "; - std::cout<<temp->getValue().getpriv().getcim()<<" "; std::cout<<temp->getValue().getpubad().getmunksz()<<std::endl; temp = temp->next; } } } + //Külön kiírás a tesztnek + //Kb. ugyanúgy ír ki mint a fájlba + void testkiir(std::ostream& out) const{ + Element<T>* temp = firstElement; + if (temp == NULL){ + out<<"Nincs adat, nem listazhatsz"<<std::endl; + } + else{ + while (temp != NULL) { + out<<temp->getValue().getpubad().getpubnev()<<" " + <<temp->getValue().getpubad().getmunksz()<<" " + <<temp->getValue().getpriv().getnev()<<" " + <<temp->getValue().getpriv().getcim()<<" " + <<temp->getValue().getpriv().getprivatsz()<<"\n"; + temp = temp->next; + } + } + } + + //Fájlba kiíró függvény void fkiiras() const{ Element<T>* temp = firstElement; + //Ha nincs még elem a listában nem lehet fájlba írni if (temp == NULL){ std::cout<< "Nincs adat, igy nem irhatsz fajlba" <<std::endl; } + + //Egyébként kiír minden adatot a fájlba külön sorokban else{ std::ofstream fajl("adatok.txt"); if (!fajl){ return; } + //Ciklus ami végig megy az adatokon a kiiratás során while (temp != NULL){ fajl<<temp->getValue().getpubad().getpubnev()<<"\n"<<temp->getValue().getpubad().getmunksz()<<"\n"<< - temp->getValue().getpriv().getnev()<<"\n"<<temp->getValue().getpriv().getcim()<<" "<<temp->getValue().getpriv().getprivatsz()<<"\n"; + temp->getValue().getpriv().getnev()<<"\n"<<temp->getValue().getpriv().getcim()<<"\n"<<temp->getValue().getpriv().getprivatsz()<<"\n"; temp = temp->next; } fajl.close(); @@ -102,16 +160,45 @@ public: } } + void testfkiiras(std::ostream& out) const{ + Element<T>* temp = firstElement; + //Ha nincs még elem a listában nem lehet fájlba írni + if (temp == NULL){ + out<< "Nincs adat, igy nem irhatsz fajlba" <<std::endl; + } + + //Egyébként kiír minden adatot a fájlba külön sorokban + else{ + std::ofstream fajl("adatok.txt"); + if (!fajl){ + return; + } + //Ciklus ami végig megy az adatokon a kiiratás során + while (temp != NULL){ + fajl<<temp->getValue().getpubad().getpubnev()<<"\n"<<temp->getValue().getpubad().getmunksz()<<"\n"<< + temp->getValue().getpriv().getnev()<<"\n"<<temp->getValue().getpriv().getcim()<<"\n"<<temp->getValue().getpriv().getprivatsz()<<"\n"; + temp = temp->next; + } + fajl.close(); + out << "A fajlba iras sikeres volt" << std::endl; + } + } + + //vCardba kiíró függvény void vCardkiiras() const{ Element<T>* temp = firstElement; + //Ha nincs még elem a listában nem lehet vCardba írni if (temp == NULL){ std::cout<< "Nincs adat, nem tudsz vCardba irni"<< std::endl; } + + //Egyébként kiír minden adatot egy vCard fájlba külön vCardnak helyes formátumba else { std::ofstream fajl("vCardAdatok.vcf"); if (!fajl){ return; } + //Ciklus ami végig megy az adatokon a kiiratás során while (temp != NULL){ fajl<< "BEGIN:VCARD\nVERSION:3.0\nN:" << temp->getValue().getpubad().getpubnev() << "\nFN:" << temp->getValue().getpriv().getnev() << "\nADR;TYPE=home:;;" << temp->getValue().getpriv().getcim() << "\nTEL;TYPE=home:" << temp->getValue().getpriv().getprivatsz() << "\nTEL;TYPE=work:" @@ -124,18 +211,49 @@ public: } + void testvCardkiiras(std::ostream& out) const{ + Element<T>* temp = firstElement; + //Ha nincs még elem a listában nem lehet vCardba írni + if (temp == NULL){ + out<< "Nincs adat, nem tudsz vCardba irni"<< std::endl; + } + + //Egyébként kiír minden adatot egy vCard fájlba külön vCardnak helyes formátumba + else { + std::ofstream fajl("vCardAdatok.vcf"); + if (!fajl){ + return; + } + //Ciklus ami végig megy az adatokon a kiiratás során + while (temp != NULL){ + fajl<< "BEGIN:VCARD\nVERSION:3.0\nN:" << temp->getValue().getpubad().getpubnev() << "\nFN:" << temp->getValue().getpriv().getnev() << + "\nADR;TYPE=home:;;" << temp->getValue().getpriv().getcim() << "\nTEL;TYPE=home:" << temp->getValue().getpriv().getprivatsz() << "\nTEL;TYPE=work:" + << temp->getValue().getpubad().getmunksz()<< "\n"; + temp = temp->next; + } + fajl.close(); + out << "A vCard fajlbairas sikeres volt" << std::endl; + } + + } + + //Függvény ami töröl minden adatot void clear(){ + //Ha nincs elem visszatér, nincs mit tennie if (firstElement == NULL) return; Element<T>* next = firstElement->next; Element<T>* temp = firstElement; + //Ciklus ami végig megy az elemeken és törli őket while (temp->next != NULL) { next = temp->next; delete temp; temp = next; } + //Végül az utolsó elemet is törlő parancs delete temp; } + //Destruktor, ami meghívja a clear() függvényt, s így töröl mindent ~victor(){ if (firstElement!= NULL){ clear();