diff options
| author | Connor McDowell <[email protected]> | 2024-02-26 16:41:41 -0800 |
|---|---|---|
| committer | Connor McDowell <[email protected]> | 2024-02-26 16:41:41 -0800 |
| commit | 5d43b761af021cd669630e0fc3e0014e24376c68 (patch) | |
| tree | dceb788eb59c2b94ebddf371fab0075a10b69eaa /Project1 | |
| parent | getters and setters created (diff) | |
| download | homework-7-connormcdowell275-5d43b761af021cd669630e0fc3e0014e24376c68.tar.xz homework-7-connormcdowell275-5d43b761af021cd669630e0fc3e0014e24376c68.zip | |
testing. will finish later in the week
Diffstat (limited to 'Project1')
| -rw-r--r-- | Project1/Contacts.h | 6 | ||||
| -rw-r--r-- | Project1/contacts.cpp | 568 |
2 files changed, 296 insertions, 278 deletions
diff --git a/Project1/Contacts.h b/Project1/Contacts.h index 31e497b..f453350 100644 --- a/Project1/Contacts.h +++ b/Project1/Contacts.h @@ -16,6 +16,9 @@ public: contact(contact&& move); contact& operator=(contact&& rhs); + int Get_index(); + void Set_index(int id); + const char* Get_firstName(); void Set_firstName(const char* firstName); @@ -40,6 +43,7 @@ public: void print(); private: + int _id; const char* _firstName{ }; const char* _lastName{ }; const char* _streetAddress{ }; @@ -82,7 +86,7 @@ public: struct contact_struct { int a = 0; - size_t id = 0; + size_t id = contact_list::get_length; size_t count = 0; char Name[30]; char Email[105]; diff --git a/Project1/contacts.cpp b/Project1/contacts.cpp index 429f8e5..6462a52 100644 --- a/Project1/contacts.cpp +++ b/Project1/contacts.cpp @@ -99,284 +99,298 @@ size_t contact_list::get_size() return size_; } +void contact::Set_index(int id) +{ + _id = id; +} + +int contact::Get_index() +{ + return _id; +} + + //functions -//char addNew(contact newContact[], size_t MAX, size_t& t) -//{ -// //using couts to prompt using for all parts of newContact struct. -// //update plans: check for newContact[i].bool value, if false, use a modified void update -// //(new function thats just void update with different couts) to be called with an if statement. -// //or another for. -// //for (size_t i = 0; i < max/length; i++) -// //if (bool == false) -// // void mod_update -// // to check for any "empty"/deleted contacts before adding one. if bool == false should include break after mod_update. -// //CURRENTLY WORKS -// for (size_t i = 0; i < MAX, i++;) -// { -// for(newContact[i].a = 1; ++i;) -// { -// newContact[i].a = 0; -// for (auto j = newContact[i].id; j < MAX; j++) -// { -// if(newContact[i].id != 0) -// { -// i = i + 1; -// } -// } -// newContact[i].id = i; -// newContact[i].count = t; -// cin.ignore(1000, '\n'); -// cout << "Please enter each piece of information when you are prompted to" << endl; -// cout << "enter name: " << endl; -// cin.getline(newContact[i].Name, 25); -// cout << "enter Email: " << endl; -// cin.getline(newContact[i].Email, 100); -// cout << "enter Street Address: " << endl; -// cin.getline(newContact[i].StreetAddress, 35); -// cout << "enter city: " << endl; -// cin.getline(newContact[i].City, 30); -// cout << "enter State as two letter abbreviation: " << endl; -// cin.getline(newContact[i].State, 3); -// cout << "Please enter the next value as a series of numbers" << endl; -// cout << "enter Zip: " << endl; -// cin >> newContact[i].Zip; -// break; -// } -// } -// for (size_t i = t ; i < MAX; i++) -// { -// newContact[i].a = 0; -// newContact[i].id = i+1; -// newContact[i].count = t; -// cin.ignore(1000, '\n'); -// cout << "Please enter each piece of information when you are prompted to" << endl; -// cout << "enter name: " << endl; -// cin.getline(newContact[i].Name, 25); -// cout << "enter Email: " << endl; -// cin.getline(newContact[i].Email, 100); -// cout << "enter Street Address: " << endl; -// cin.getline(newContact[i].StreetAddress, 35); -// cout << "enter city: " << endl; -// cin.getline(newContact[i].City, 30); -// cout << "enter State as two letter abbreviation: " << endl; -// cin.getline(newContact[i].State, 3); -// cout << "Please enter the next value as a series of numbers" << endl; -// cout << "enter Zip: " << endl; -// cin >> newContact[i].Zip; -// t++; -// break; -// } -// -// //cout << newContact[i]->Name << "\n" << newContact[i]->Email << "\n" << newContact[i]->StreetAddress << "\n" << newContact[i]->City << "\n" << newContact[i]->State << "\n" << newContact[i]->Zip << endl; -// return 0; -//} -//// print contact i -//// name: -//// email -//// address -//// city -//// state -//// zip -// -//void update(contact newContact[], size_t MAX) -//{ -// //uses input based on list number from print (though when delete is made will be using that id/name print) to update the values of. -// //CURRENTLY WORKING -// cout << "select a contact to update based on their position in the list (check print all contacts for list position)" << endl; -// int c = 0; -// cin >> c; -// int t = c - 1; -// for (size_t i = t; i < MAX;) -// { -// cin.ignore(1000, '\n'); -// cout << "Please enter each piece of information when you are prompted to" << endl; -// newContact[i].id = c; -// cout << "enter name: " << endl; -// cin.getline(newContact[i].Name, 25); -// cout << "enter Email: " << endl; -// cin.getline(newContact[i].Email, 100); -// cout << "enter Street Address: " << endl; -// cin.getline(newContact[i].StreetAddress, 35); -// cout << "enter city: " << endl; -// cin.getline(newContact[i].City, 30); -// cout << "enter State as two letter abbreviation: " << endl; -// cin.getline(newContact[i].State, 3); -// cout << "Please enter the next value as a series of numbers" << endl; -// cout << "enter Zip: " << endl; -// cin >> newContact[i].Zip; -// break; -// } -//} -// -//void printAll(contact newContact[], size_t& MAX) -//{ -// //prints all info but count and bool for every existing (non trash value filled) contact struct -// //CURRENTLY WORKING -// for (size_t i = 0; i <= MAX; ++i) -// { -// /*for (int t = -1; t < newContact[i].id;) { -// break; -// }*/ -// if (newContact[i].a == 1) -// { -// i = i + 1; -// } -// if (newContact[i].id == 0) { -// break; -// } -// if (newContact[i].id < 0) { -// break; -// } -// if (newContact[i].id > MAX) { -// break; -// } -// -// -// cout << "List number: " << newContact[i].id << endl; -// cout << "name: " << newContact[i].Name << endl; -// cout << "Email: " << newContact[i].Email << endl; -// cout << "Address: " << newContact[i].StreetAddress << endl; -// cout << "city: " << newContact[i].City << endl; -// cout << "state: " << newContact[i].State << endl; -// cout << "Zip: " << newContact[i].Zip << endl; -// } -//} -// -//contact contact_double(contact*& newContact, size_t& MAX, size_t t) -//{ -// /*hell on earth is in this condenced comment*/ -// //supposedly doubles length. doesn't work. -// //current ideas: add if loop to whole main with the id counter t and if length of newContact = max double the length. -// //current problems: using const size_t max prevents editing size for the whole function, and it resets as soon as the while loop loops or leaves the scope of the if statement. -// //contact* doubleContact = new contact[MAX * 2]; -// //for (auto a = 0u; a < MAX; ++a) -// //{ -// // doubleContact[a].a = newContact[a].a; -// // doubleContact[a].id = newContact[a].id; -// // doubleContact[a].count = newContact[a].count; -// // doubleContact[a].Name[25] = newContact[a].Name[25]; -// // doubleContact[a].Email[100] = newContact[a].Email[100]; -// // doubleContact[a].StreetAddress[35] = newContact[a].StreetAddress[35]; -// // doubleContact[a].City[30] = newContact[a].City[30]; -// // doubleContact[a].State[3] = newContact[a].State[3]; -// // doubleContact[a].Zip = newContact[a].Zip; -// // cout << "List number: " << doubleContact[a].id << endl; -// // cout << "name: " << doubleContact[a].Name << endl; -// // cout << "Email: " << doubleContact[a].Email << endl; -// // cout << "Address: " << doubleContact[a].StreetAddress << endl; -// // cout << "city: " << doubleContact[a].City << endl; -// // cout << "state: " << doubleContact[a].State << endl; -// // cout << "Zip: " << doubleContact[a].Zip << endl; -// //} -// //newContact = doubleContact; -// //delete[] doubleContact; -// ////delete[] newContact; -// //MAX = MAX * 2; -// ////printAll(&doubleContact[MAX], MAX); -// ////printAll(&newContact[MAX], MAX); -// //return newContact[MAX]; -// -// contact* doubleContact = new contact[MAX * 2]; -// for (auto a = 0u; a < MAX; ++a) -// { -// doubleContact[a] = newContact[a]; -// } -// delete[] newContact; -// newContact = doubleContact; -// MAX = MAX * 2; -// return newContact[MAX - 1]; -//} -// -//size_t max_double(size_t MAX) -//{ -// MAX = MAX * 2; -// return MAX; -//} -// -//void delete_contact(contact newContact[], size_t MAX) -//{ -// //Work in progress, add BOOL (true) to struct, when this is selected print id list with respective names -// //then take input of id list number and set bool to false -// //add to new part to addNew: if bool != 0 then copy and paste update code w/addNew couts -// cout << "The list of contacts and their names will now print" << endl; -// for (auto i = 0u; i < MAX; i++) -// { -// if (newContact[i].id == 0) { -// break; -// } -// if (newContact[i].id < 0) { -// break; -// } -// if (newContact[i].id > MAX) { -// break; -// } -// //if (newContact[i].a == 1) -// //{ -// // break; -// //} -// cout << "Id number: " << newContact[i].id << " is under the name: " << newContact[i].Name << endl; -// //size_t delete_choice = 0; -// //cout << "\n"; -// //cin.ignore(1000, '\n'); -// //cout << "Enter the id number of the contact you'd like to delete" << endl; -// //cin >> delete_choice; -// //if (delete_choice == newContact[i].id) -// //{ -// // newContact[i].a = 1; -// // cout << "Contact number: " << newContact[i].id << " deleted" << endl; -// // newContact[i + 1].id = newContact[i + 1].id - 1; -// // break; -// //} -// } -// for (auto i = 0u; i < MAX; i++) -// { -// size_t delete_choice = 0; -// cout << "\n"; -// cin.ignore(1000, '\n'); -// cout << "Enter the id number of the contact you'd like to delete" << endl; -// cin >> delete_choice; -// if (delete_choice != newContact[i].id) -// { -// i = i + 1; -// } -// if (delete_choice == newContact[i].id) -// { -// newContact[i].a = 1; -// cout << "Contact number: " << newContact[i].id << " deleted" << endl; -// newContact[i + 1].id = newContact[i + 1].id - 1; -// break; -// } -// } -// //cout << "The list of contacts and their names will now print" << endl; -// // for (auto i = 0u; i <= MAX; i++) -// // { -// // if (newContact[i].id == 0) { -// // break; -// // } -// // if (newContact[i].id < 0) { -// // break; -// // } -// // if (newContact[i].id > MAX) { -// // break; -// // } -// // //if (newContact[i].a == 1) -// // //{ -// // // break; -// // //} -// // cout << "Id number: " << newContact[i].id << " is under the name: " << newContact[i].Name << endl; -// // } -// //size_t delete_choice = 0; -// //cout << "\n"; -// //cin.ignore(1000, '\n'); -// //cout << "Enter the id number of the contact you'd like to delete" << endl; -// //cin >> delete_choice; -// // if (delete_choice == newContact[i].id) -// // { -// // newContact[i].a = 1; -// // cout << "Contact number: " << newContact[i].id << " deleted" << endl; -// // break; -// // } -//} +char addNew(contact newContact[], size_t MAX, size_t& t) +{ + //using couts to prompt using for all parts of newContact struct. + //update plans: check for newContact[i].bool value, if false, use a modified void update + //(new function thats just void update with different couts) to be called with an if statement. + //or another for. + //for (size_t i = 0; i < max/length; i++) + //if (bool == false) + // void mod_update + // to check for any "empty"/deleted contacts before adding one. if bool == false should include break after mod_update. + //CURRENTLY WORKS + for (size_t i = 0; i < MAX, i++;) + { + for(newContact[i].a = 1; ++i;) + { + newContact[i].a = 0; + for (auto j = newContact[i].id; j < MAX; j++) + { + if(newContact[i].id != 0) + { + i = i + 1; + } + } + newContact[i].id = i; + newContact[i].count = t; + cin.ignore(1000, '\n'); + cout << "Please enter each piece of information when you are prompted to" << endl; + cout << "enter name: " << endl; + cin.getline(newContact[i].Name, 25); + cout << "enter Email: " << endl; + cin.getline(newContact[i].Email, 100); + cout << "enter Street Address: " << endl; + cin.getline(newContact[i].StreetAddress, 35); + cout << "enter city: " << endl; + cin.getline(newContact[i].City, 30); + cout << "enter State as two letter abbreviation: " << endl; + cin.getline(newContact[i].State, 3); + cout << "Please enter the next value as a series of numbers" << endl; + cout << "enter Zip: " << endl; + cin >> newContact[i].Zip; + break; + } + } + for (size_t i = t ; i < MAX; i++) + { + newContact[i].a = 0; + newContact[i].id = i+1; + newContact[i].count = t; + cin.ignore(1000, '\n'); + cout << "Please enter each piece of information when you are prompted to" << endl; + cout << "enter name: " << endl; + cin.getline(newContact[i].Name, 25); + cout << "enter Email: " << endl; + cin.getline(newContact[i].Email, 100); + cout << "enter Street Address: " << endl; + cin.getline(newContact[i].StreetAddress, 35); + cout << "enter city: " << endl; + cin.getline(newContact[i].City, 30); + cout << "enter State as two letter abbreviation: " << endl; + cin.getline(newContact[i].State, 3); + cout << "Please enter the next value as a series of numbers" << endl; + cout << "enter Zip: " << endl; + cin >> newContact[i].Zip; + t++; + break; + } + + //cout << newContact[i]->Name << "\n" << newContact[i]->Email << "\n" << newContact[i]->StreetAddress << "\n" << newContact[i]->City << "\n" << newContact[i]->State << "\n" << newContact[i]->Zip << endl; + return 0; +} + +void contact_list::AddContact(const contact& contact) +{ + size_t length = contact_list::length_; + for (size_t i = 0; i < length, i++;) + { + + } + +} + +void update(contact newContact[], size_t MAX) +{ + //uses input based on list number from print (though when delete is made will be using that id/name print) to update the values of. + //CURRENTLY WORKING + cout << "select a contact to update based on their position in the list (check print all contacts for list position)" << endl; + int c = 0; + cin >> c; + int t = c - 1; + for (size_t i = t; i < MAX;) + { + cin.ignore(1000, '\n'); + cout << "Please enter each piece of information when you are prompted to" << endl; + newContact[i].id = c; + cout << "enter name: " << endl; + cin.getline(newContact[i].Name, 25); + cout << "enter Email: " << endl; + cin.getline(newContact[i].Email, 100); + cout << "enter Street Address: " << endl; + cin.getline(newContact[i].StreetAddress, 35); + cout << "enter city: " << endl; + cin.getline(newContact[i].City, 30); + cout << "enter State as two letter abbreviation: " << endl; + cin.getline(newContact[i].State, 3); + cout << "Please enter the next value as a series of numbers" << endl; + cout << "enter Zip: " << endl; + cin >> newContact[i].Zip; + break; + } +} + +void printAll(contact newContact[], size_t& MAX) +{ + //prints all info but count and bool for every existing (non trash value filled) contact struct + //CURRENTLY WORKING + for (size_t i = 0; i <= MAX; ++i) + { + /*for (int t = -1; t < newContact[i].id;) { + break; + }*/ + if (newContact[i].a == 1) + { + i = i + 1; + } + if (newContact[i].id == 0) { + break; + } + if (newContact[i].id < 0) { + break; + } + if (newContact[i].id > MAX) { + break; + } + + + cout << "List number: " << newContact[i].id << endl; + cout << "name: " << newContact[i].Name << endl; + cout << "Email: " << newContact[i].Email << endl; + cout << "Address: " << newContact[i].StreetAddress << endl; + cout << "city: " << newContact[i].City << endl; + cout << "state: " << newContact[i].State << endl; + cout << "Zip: " << newContact[i].Zip << endl; + } +} + +contact contact_double(contact*& newContact, size_t& MAX, size_t t) +{ + /*hell on earth is in this condenced comment*/ + //supposedly doubles length. doesn't work. + //current ideas: add if loop to whole main with the id counter t and if length of newContact = max double the length. + //current problems: using const size_t max prevents editing size for the whole function, and it resets as soon as the while loop loops or leaves the scope of the if statement. + //contact* doubleContact = new contact[MAX * 2]; + //for (auto a = 0u; a < MAX; ++a) + //{ + // doubleContact[a].a = newContact[a].a; + // doubleContact[a].id = newContact[a].id; + // doubleContact[a].count = newContact[a].count; + // doubleContact[a].Name[25] = newContact[a].Name[25]; + // doubleContact[a].Email[100] = newContact[a].Email[100]; + // doubleContact[a].StreetAddress[35] = newContact[a].StreetAddress[35]; + // doubleContact[a].City[30] = newContact[a].City[30]; + // doubleContact[a].State[3] = newContact[a].State[3]; + // doubleContact[a].Zip = newContact[a].Zip; + // cout << "List number: " << doubleContact[a].id << endl; + // cout << "name: " << doubleContact[a].Name << endl; + // cout << "Email: " << doubleContact[a].Email << endl; + // cout << "Address: " << doubleContact[a].StreetAddress << endl; + // cout << "city: " << doubleContact[a].City << endl; + // cout << "state: " << doubleContact[a].State << endl; + // cout << "Zip: " << doubleContact[a].Zip << endl; + //} + //newContact = doubleContact; + //delete[] doubleContact; + ////delete[] newContact; + //MAX = MAX * 2; + ////printAll(&doubleContact[MAX], MAX); + ////printAll(&newContact[MAX], MAX); + //return newContact[MAX]; + + contact* doubleContact = new contact[MAX * 2]; + for (auto a = 0u; a < MAX; ++a) + { + doubleContact[a] = newContact[a]; + } + delete[] newContact; + newContact = doubleContact; + MAX = MAX * 2; + return newContact[MAX - 1]; +} + +size_t max_double(size_t MAX) +{ + MAX = MAX * 2; + return MAX; +} + +void delete_contact(contact newContact[], size_t MAX) +{ + //Work in progress, add BOOL (true) to struct, when this is selected print id list with respective names + //then take input of id list number and set bool to false + //add to new part to addNew: if bool != 0 then copy and paste update code w/addNew couts + cout << "The list of contacts and their names will now print" << endl; + for (auto i = 0u; i < MAX; i++) + { + if (newContact[i].id == 0) { + break; + } + if (newContact[i].id < 0) { + break; + } + if (newContact[i].id > MAX) { + break; + } + //if (newContact[i].a == 1) + //{ + // break; + //} + cout << "Id number: " << newContact[i].id << " is under the name: " << newContact[i].Name << endl; + //size_t delete_choice = 0; + //cout << "\n"; + //cin.ignore(1000, '\n'); + //cout << "Enter the id number of the contact you'd like to delete" << endl; + //cin >> delete_choice; + //if (delete_choice == newContact[i].id) + //{ + // newContact[i].a = 1; + // cout << "Contact number: " << newContact[i].id << " deleted" << endl; + // newContact[i + 1].id = newContact[i + 1].id - 1; + // break; + //} + } + for (auto i = 0u; i < MAX; i++) + { + size_t delete_choice = 0; + cout << "\n"; + cin.ignore(1000, '\n'); + cout << "Enter the id number of the contact you'd like to delete" << endl; + cin >> delete_choice; + if (delete_choice != newContact[i].id) + { + i = i + 1; + } + if (delete_choice == newContact[i].id) + { + newContact[i].a = 1; + cout << "Contact number: " << newContact[i].id << " deleted" << endl; + newContact[i + 1].id = newContact[i + 1].id - 1; + break; + } + } + //cout << "The list of contacts and their names will now print" << endl; + // for (auto i = 0u; i <= MAX; i++) + // { + // if (newContact[i].id == 0) { + // break; + // } + // if (newContact[i].id < 0) { + // break; + // } + // if (newContact[i].id > MAX) { + // break; + // } + // //if (newContact[i].a == 1) + // //{ + // // break; + // //} + // cout << "Id number: " << newContact[i].id << " is under the name: " << newContact[i].Name << endl; + // } + //size_t delete_choice = 0; + //cout << "\n"; + //cin.ignore(1000, '\n'); + //cout << "Enter the id number of the contact you'd like to delete" << endl; + //cin >> delete_choice; + // if (delete_choice == newContact[i].id) + // { + // newContact[i].a = 1; + // cout << "Contact number: " << newContact[i].id << " deleted" << endl; + // break; + // } +} |