aboutsummaryrefslogtreecommitdiff
path: root/Project1/contacts.cpp
diff options
context:
space:
mode:
authorConnor McDowell <[email protected]>2024-02-26 14:45:17 -0800
committerConnor McDowell <[email protected]>2024-02-26 14:45:17 -0800
commit6f9a49f95cf3ca9e518bc460f7458719b43793b0 (patch)
treef4979539ca12bf4b85c553cbb422b31a124cf642 /Project1/contacts.cpp
parentadd deadline (diff)
downloadarchived-homework-7-connormcdowell275-6f9a49f95cf3ca9e518bc460f7458719b43793b0.tar.xz
archived-homework-7-connormcdowell275-6f9a49f95cf3ca9e518bc460f7458719b43793b0.zip
added menu driven address book from assignment 6
Diffstat (limited to 'Project1/contacts.cpp')
-rw-r--r--Project1/contacts.cpp286
1 files changed, 286 insertions, 0 deletions
diff --git a/Project1/contacts.cpp b/Project1/contacts.cpp
new file mode 100644
index 0000000..295df0d
--- /dev/null
+++ b/Project1/contacts.cpp
@@ -0,0 +1,286 @@
+#include "Contacts.h"
+#include <iostream>
+#include <list>
+#include <vector>
+
+using std::cin;
+using std::cout;
+using std::endl;
+
+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;
+ // }
+} \ No newline at end of file