Skip to content

Instantly share code, notes, and snippets.

@cadwallion
Created February 11, 2012 15:01
Show Gist options
  • Save cadwallion/1800399 to your computer and use it in GitHub Desktop.
Save cadwallion/1800399 to your computer and use it in GitHub Desktop.
C# AddressBook
using System;
class Address {
public string name;
public string address;
public Address(string name, string address) {
this.name = name;
this.address = address;
}
}
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;
}
}
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