using System.Collections.Generic;
using System.Globalization;
const int MAX_PEOPLE = 10;
public string PhoneNumber;
public static void Main(string[] args)
Person[] people = new Person[MAX_PEOPLE];
int currentPersonIndex = 0;
DisplayMenu(people, currentPersonIndex);
int.TryParse(Console.ReadLine(), out userChoice);
switch ((MenuOptions)userChoice)
case MenuOptions.AddPerson:
AddPerson(people, currentPersonIndex);
case MenuOptions.EditPerson:
EditPerson(people, currentPersonIndex);
case MenuOptions.DeletePerson:
people = DeletePerson(people, currentPersonIndex);
case MenuOptions.DisplayPeople:
if (currentPersonIndex > 0)
case MenuOptions.SearchPeople:
if (currentPersonIndex > 0)
SearchPeople(people, currentPersonIndex);
static void DisplayMenu(Person[] people, int currentIndex)
Console.WriteLine("\nPlease choose an option...");
if (currentIndex < MAX_PEOPLE)
Console.WriteLine("{0}: Add a new person.", (int)MenuOptions.AddPerson);
Console.WriteLine("{0}: Edit a person.", (int)MenuOptions.EditPerson);
Console.WriteLine("{0}: Delete a person.", (int)MenuOptions.DeletePerson);
Console.WriteLine("{0}: Search a person.", (int)MenuOptions.SearchPeople);
Console.WriteLine("{0}: Display the list of people.", (int)MenuOptions.DisplayPeople);
Console.WriteLine("{0}: Quit.", (int)MenuOptions.Quit);
static Person GetPersonFromUser()
Console.WriteLine("\nEnter details for the new person...");
person.Name = Console.ReadLine();
Console.Write("Phone Number: ");
person.PhoneNumber = Console.ReadLine();
static int GetRecordNo(Person[] people)
Console.WriteLine("\nEnter Record No of the person...");
Console.Write("Record No: ");
int.TryParse(Console.ReadLine(), out recordno);
static void AddPerson(Person[] people, int currentIndex)
if (currentIndex < MAX_PEOPLE)
people[currentIndex] = GetPersonFromUser();
static void EditPerson(Person[] people, int currentIndex)
int recordno = GetRecordNo(people);
Person person = new Person();
if (recordno != 0 && recordno <= MAX_PEOPLE)
Console.WriteLine("\nEnter new information of the person to edit...");
Console.Write("New Name: ");
person.Name = Console.ReadLine();
Console.Write("New Phone Number: ");
person.PhoneNumber = Console.ReadLine();
people[recordno - 1] = person;
Console.WriteLine("\n Record is updated...");
static Person[] DeletePerson(Person[] people, int currentIndex)
int recordno = GetRecordNo(people);
if (recordno != 0 && recordno <= MAX_PEOPLE)
var lst = new List<Person>(people);
lst.RemoveAt(recordno - 1);
Console.WriteLine("\n Record is deleted...");
static void SearchPeople(Person[] people, int currentIndex)
string searchterm = String.Empty;
Console.WriteLine("\nEnter name of the person to search...");
searchterm = Console.ReadLine();
List<Person> searchresult = new List<Person>();
for (int k = 0; k < currentIndex; k++)
if (people[k].Name.IndexOf(searchterm) > -1)
searchresult.Add(people[k]);
var selectedpeople = searchresult.ToArray();
if (selectedpeople.Length == 0)
Console.WriteLine("\nNo record is found...");
DisplayPeople(selectedpeople);
static void DisplayPeople(Person[] people)
Console.WriteLine("".PadLeft(50, '*'));
Console.WriteLine("{0} {1} {2}", "No".PadRight(4), "| Name".PadRight(20), "| Phone Number".PadRight(10));
Console.WriteLine("".PadLeft(50, '-'));
foreach (Person person in people)
Console.WriteLine("{0} | {1} | {2}", i.ToString().PadRight(4), person.Name.PadRight(18), person.PhoneNumber);
Console.WriteLine("".PadLeft(50, '*'));