Sto provando a creare un programma di gestione contatti in un'applicazione console utilizzando un elenco per archiviare e visualizzare i dati. Devo visualizzare un rapporto che visualizza un riepilogo dei contatti disponibili e quindi avere un menu per consentire all'utente di interagire con il programma. Ho un metodo per creare un contatto e un oggetto di contatto. Ho anche un metodo per eliminare un contatto, ma voglio che l'utente sia in grado di scegliere un nome di contatto e di essere in grado di eliminare il contatto selezionato. Tuttavia non sono sicuro di come farlo.rimuovere l'elemento selezionato dall'utente da un elenco
Qualsiasi consiglio sarebbe apprezzato.
static void Main(string[] args)
{
//Declare the list
List<Contact> contactList = new List<Contact>();
//Main Driver
char menuItem;
Console.WriteLine("Contact List\n");
menuItem = GetMenuItem();
while (menuItem != 'Q')
{
ProcessMenuItem(menuItem, contactList);
menuItem = GetMenuItem();
}
Console.WriteLine("\nThank you, goodbye");
Console.ReadLine();
}
//Returns either a 'C', 'R', 'U', 'D', 'L', or 'X' to the caller
static char GetMenuItem()
{
char menuItem;
DisplayMenu();
menuItem = char.ToUpper(IOConsole.GetChar("\nPlease pick an item: "));
while (menuItem != 'C'
&& menuItem != 'R' && menuItem != 'Q' && menuItem != 'U' && menuItem != 'D' && menuItem != 'S' && menuItem != 'L' && menuItem != 'F' && menuItem != 'P' && menuItem != 'T')
{
Console.WriteLine("\nError - Invalid menu item");
DisplayMenu();
menuItem = char.ToUpper(IOConsole.GetChar("\nEnter option or M for menu:"));
}
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, List<Contact> contactList)
{
switch (menuItem)
{
case 'C':
createContact();
break;
case 'R':
removeContact(contactList);
break;
case 'U':
updateContact(contactList);
break;
case 'D':
LoadFromFile();
break;
case 'S':
saveToFile();
break;
case 'L':
sortByLastName(contactList);
break;
case 'F':
sortByFirstName(contactList);
break;
case 'P':
DisplayList(contactList);
break;
case 'T':
sortByContactType();
break;
case 'Q':
break;
}
}
//allows the user to remove a contact
public static void removeContact(List<Contact> contactList)
{
for (int i = 0; i < contactList.Count; i++)
if (i % 5 == 0)
contactList.RemoveAt(i);
}
In questo un nome di contatto potrebbe essere lo stesso, È necessario selezionare un campo Unico che non può corrispondere, Utilizzare il numero di telefono invece che sarebbe stato meglio – VizardCrawler
@ vishal: ho aggiornato la mia risposta ora è in grado di rimuovere i dettagli in base nome del contatto o numero di contatto –
Ma un contatto non dovrebbe mai essere cancellato usando il nome del contatto !! , come si potrebbe ripetere un nome, possono esserci due persone con lo stesso nome !! , E apprezzo che lo hai aggiornato, dovresti sempre rimuovere o modificare qualcosa che è unico, direi usare il numero stesso o Id se ha – VizardCrawler