Created
February 11, 2012 15:01
-
-
Save cadwallion/1800399 to your computer and use it in GitHub Desktop.
C# AddressBook
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
class Address { | |
public string name; | |
public string address; | |
public Address(string name, string address) { | |
this.name = name; | |
this.address = address; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
class AddressBook { | |
List<Address> addresses; | |
public AddressBook() { | |
addresses = new List<Address>(); | |
} | |
public bool add(string name, string address) { | |
Address addr = new Address(name, address); | |
Address result = find(name); | |
if (result == null) { | |
addresses.Add(addr); | |
return true; | |
} else { | |
return false; | |
} | |
} | |
public bool remove(string name) { | |
Address addr = find(name); | |
if (addr != null) { | |
addresses.Remove(addr); | |
return true; | |
} else { | |
return false; | |
} | |
} | |
public void list(Action<Address> action) { | |
addresses.ForEach(action); | |
} | |
public bool isEmpty() { | |
return (addresses.Count == 0); | |
} | |
public Address find(string name) { | |
Address addr = addresses.Find( | |
delegate(Address a) { | |
return a.name == name; | |
} | |
); | |
return addr; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
class AddressPrompt { | |
AddressBook book; | |
public AddressPrompt() { | |
book = new AddressBook(); | |
} | |
static void Main(string[] args) { | |
string selection = ""; | |
AddressPrompt prompt = new AddressPrompt(); | |
prompt.displayMenu(); | |
while (!selection.ToUpper().Equals("Q")) { | |
Console.WriteLine("Selection: "); | |
selection = Console.ReadLine(); | |
prompt.performAction(selection); | |
} | |
} | |
void displayMenu() { | |
Console.WriteLine("Main Menu"); | |
Console.WriteLine("========="); | |
Console.WriteLine("A - Add an Address"); | |
Console.WriteLine("D - Delete an Address"); | |
Console.WriteLine("E - Edit an Address"); | |
Console.WriteLine("L - List All Addresses"); | |
Console.WriteLine("Q - Quit"); | |
} | |
void performAction(string selection) { | |
string name = ""; | |
string address = ""; | |
switch (selection.ToUpper()) { | |
case "A": | |
Console.WriteLine("Enter Name: "); | |
name = Console.ReadLine(); | |
Console.WriteLine("Enter Address: "); | |
address = Console.ReadLine(); | |
if (book.add(name, address)) { | |
Console.WriteLine("Address successfully added!"); | |
} else { | |
Console.WriteLine("An address is already on file for {0}.", name); | |
} | |
break; | |
case "D": | |
Console.WriteLine("Enter Name to Delete: "); | |
name = Console.ReadLine(); | |
if (book.remove(name)) { | |
Console.WriteLine("Address successfully removed"); | |
} else { | |
Console.WriteLine("Address for {0} could not be found.", name); | |
} | |
break; | |
case "L": | |
if (book.isEmpty()) { | |
Console.WriteLine("There are no entries."); | |
} else { | |
Console.WriteLine("Addresses:"); | |
book.list( | |
delegate(Address a) { | |
Console.WriteLine("{0} - {1}", a.name, a.address); | |
} | |
); | |
} | |
break; | |
case "E": | |
Console.WriteLine("Enter Name to Edit: "); | |
name = Console.ReadLine(); | |
Address addr = book.find(name); | |
if (addr == null) { | |
Console.WriteLine("Address for {0} count not be found.", name); | |
} else { | |
Console.WriteLine("Enter new Address: "); | |
addr.address = Console.ReadLine(); | |
Console.WriteLine("Address updated for {0}", name); | |
} | |
break; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment