0

Hi I am trying to build a contact managers program using an object array to store the data. I need to view a report that displays a summary of contacts available and then have a menu to allow the user to interact with the program. I need to have the option to save and load files but I am unsure how to go about doing this.

Any guidance would be appreciated.

static void Main(string[] args)
        {
            //The MAXPLAYERS constant is the physical table size
            const Int32 MAXCONTACTS = 23;

            //Declare the player tables

            Contact[] contacts = new Contact[MAXCONTACTS];

            //Keep track of the actual number of players (i.e. logical table size)
            Int32 contactCount = 0;
            Int32 number = 0;
            String lastName = " ";
            String phoneNumber = " "; 
            String emailAddress = " "; 

            String firstName = " "; ;

            Console.WriteLine("Contact List");
            // display the menu to the user
            Console.WriteLine("Enter option or M for menu:");
            //Main Driver
            char menuItem;
            Console.WriteLine("Welcome to the player system...\n");
            menuItem = GetMenuItem();
            while (menuItem != 'X')
            {

                ProcessMenuItem(menuItem, number, firstName, lastName, phoneNumber, emailAddress, contacts, ref contactCount, MAXCONTACTS);
                menuItem = GetMenuItem();

            }
            Console.WriteLine("\nThank you, goodbye");
            Console.ReadLine();
        }
        static char GetMenuItem()
        {
            char menuItem;
            DisplayMenu();
            menuItem = IOConsole.GetChar((Console.ReadLine()));

            while (menuItem != 'C'
                && menuItem != 'L' && menuItem != 'X' && menuItem != 'R' && menuItem != 'U' && menuItem != 'D')
            {
                Console.WriteLine("\nError - Invalid menu item");
                DisplayMenu();
                //menuItem = IOConsole.GetChar((Console.ReadLine()));
            }
            return menuItem;
        }

        static void DisplayMenu()
        {
           Console.WriteLine("C-> Create Contacts");
           Console.WriteLine("R-> Remove Contacts");
           Console.WriteLine("U-> Update Contacts");
           Console.WriteLine("D -> Load data from file");
           Console.WriteLine("S-> Save data to file");
           Console.WriteLine("L-> View sorted by last name");
           Console.WriteLine("F-> View sorted by first name");
           Console.WriteLine("P-> View by partial name search");
           Console.WriteLine("T-> View by contact type");
           Console.WriteLine("Q-> Quit");
        }

        //Routes to the appropriate process routine based on the user menu choice
        static void ProcessMenuItem(Char menuItem, Int32 number, String firstName, String lastName, String phoneNumber,
            String emailAddress, Contact[] contacts, ref Int32 contactCount, Int32 MAXCONTACTS)
        {
            switch (menuItem)
            {
                case 'C':
                    createContact();
                    break;
                case 'R':
                    removeContact();
                    break;
                case 'U':
                    updateContact();
                    break;
                case 'D':
                    LoadToFile();
                    break;
                case 'S':
                    saveToFile();
                    break;

                case 'L':
                    sortByLastName();
                    break;
                case 'F':
                    sortByFirstName();
                       break;
                case 'P':

                       break;
                case 'T':

                       break;
                case 'Q':

                       break;

            }                   
        }


        public static void saveToFile()
        {

        }
        public static void LoadToFile()
        {

        }
andrew165
  • 37
  • 6
  • Your question is too vague. If you're asking us how you should store the data in a file then you're asking in the wrong place because that's not what this site is for. If you have already tried to store the data in a file but were unsuccessful, then this site is for you to post your code and a description of the specific error. – jmcilhinney Jul 27 '15 at 02:38

1 Answers1

0

You have several possible ways to save/load your Contact object array by either:

  1. Serialization (Serialize ArrayList of Objects)

  2. XML (https://msdn.microsoft.com/en-us/library/ms172872.aspx)

  3. JSON (https://msdn.microsoft.com/en-us/library/bb412179(v=vs.110).aspx)

...or any other format you would want.

But you can focus on those formats above and see which is the simplest method would be in your case.

As added solution, you can try to learn from this code, using DataSet and DataTable to save your Contact object, and write it to xml file:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;

namespace TestContacts
{
    class Contact
    {
        public string Name = "";
    }

    class Program
    {
        static void Main(string[] args)
        {
            Contact c1 = new Contact();
            c1.Name = "Name1";

            Contact c2 = new Contact();
            c2.Name = "Name2";

            Contact c3 = new Contact();
            c3.Name = "Name3";

            //Simpliest approach could be saving it to data table 
            DataSet ds = new DataSet("Contact");
            DataTable dt = new DataTable("Info");
            dt.Columns.Add("name", typeof(string));

            //You can loop but for simplicity add one by one
            DataRow r1 = dt.NewRow();
            r1["name"] = c1.Name;
            dt.Rows.Add(r1);

            DataRow r2 = dt.NewRow();
            r2["name"] = c2.Name;
            dt.Rows.Add(r2);

            DataRow r3 = dt.NewRow();
            r3["name"] = c3.Name;
            dt.Rows.Add(r3);

            //Save to file using XML file format
            ds.Tables.Add(dt);
            ds.WriteXml("C:\\contacts.xml", XmlWriteMode.WriteSchema);

            //You can also load via
            ds.ReadXml("C:\\contacts.xml", XmlReadMode.ReadSchema);

        }
    }
}
Community
  • 1
  • 1
Joel Legaspi Enriquez
  • 1,236
  • 1
  • 10
  • 14