// This public void will empty the rack of a given flavor. public void EmptyCanRackOf(string FlavorOfBinToBeEmptied) { Flavor flavorEnumeral = FlavorOps.ToFlavor(FlavorOfBinToBeEmptied); Debug.WriteLine("Emptying can rack of flavor {0}", FlavorOfBinToBeEmptied); rack[flavorEnumeral] = EMPTYBIN; }
// OPTIONAL – return true if the rack is empty of a specified flavor // false otherwise public Boolean IsEmpty(string FlavorOfBinToBeChecked) { Debug.WriteLine("Checking if can rack is empty of flavor {0}", FlavorOfBinToBeChecked, DUMMYARGUMENT); // convert the string Flavor into the appropriate int value Flavor flavorEnumeral = FlavorOps.ToFlavor(FlavorOfBinToBeChecked); return(rack[flavorEnumeral] == EMPTYBIN); }
// This method will remove a can of the specified flavor from the rack. public void RemoveACanOf(string FlavorOfCanToBeRemoved) { FlavorOfCanToBeRemoved = FlavorOfCanToBeRemoved.ToUpper(); if (IsEmpty(FlavorOfCanToBeRemoved)) { Debug.WriteLine("*** Failed attempt to remove a can of {0} from an empty rack", FlavorOfCanToBeRemoved, DUMMYARGUMENT); } else { Debug.WriteLine("removing a can of {0} flavored soda from the rack", FlavorOfCanToBeRemoved, DUMMYARGUMENT); // convert the string Flavor into the appropriate Flavor value Flavor flavorEnumeral = FlavorOps.ToFlavor(FlavorOfCanToBeRemoved); rack[flavorEnumeral]--; } }
// This method adds a can of the specified flavor to the rack. public void AddACanOf(string FlavorOfCanToBeAdded) { FlavorOfCanToBeAdded = FlavorOfCanToBeAdded.ToUpper(); if (IsFull(FlavorOfCanToBeAdded)) { Debug.WriteLine("*** Failed attempt to add a can of {0} to a full rack", FlavorOfCanToBeAdded, DUMMYARGUMENT); } else { Debug.WriteLine("adding a can of {0} flavored soda to the rack", FlavorOfCanToBeAdded, DUMMYARGUMENT); // convert the string Flavor into the Flavor value Flavor flavorEnumeral = FlavorOps.ToFlavor(FlavorOfCanToBeAdded); rack[flavorEnumeral]++; } }
static void Main(string[] args) { PurchasePrice sodaPrice = new PurchasePrice(0.35M); CanRack sodaRack = new CanRack(); CoinBox changeBox = new CoinBox(new List <Coin> { new Coin(Coin.Denomination.QUARTER), new Coin(Coin.Denomination.DIME), new Coin(Coin.Denomination.NICKEL), new Coin(Coin.Denomination.QUARTER), new Coin(Coin.Denomination.QUARTER), new Coin(Coin.Denomination.DIME) }); Console.WriteLine("Welcome to the .NET C# Soda Vending Machine"); Boolean timeToExit = false; do { sodaRack.DisplayCanRack(); Console.Write("Please insert {0:c} worth of coins: ", sodaPrice.PriceDecimal); decimal totalValueInserted = 0M; while (totalValueInserted < sodaPrice.PriceDecimal) { Coin coinInserted = null; while (coinInserted == null) { try { // get the coin inserted string coinNameInserted = Console.ReadLine().ToUpper(); coinInserted = new Coin(coinNameInserted); } catch (System.ArgumentException) { Console.WriteLine("That's not a recognized coin. Please retry."); } } Console.WriteLine("You have inserted a {0} worth {1:c}", coinInserted, coinInserted.ValueOf); changeBox.Deposit(coinInserted); // running total of the value of the coins inserted totalValueInserted += coinInserted.ValueOf; Console.WriteLine("Total value inserted is {0:c}", totalValueInserted); } // select a flavor of soda Boolean canDispensed = false; while (!canDispensed) { Flavor flavorEnumeral = Flavor.REGULAR; Boolean flavorChosen = false; Console.Write("What flavor would you like? : "); while (!flavorChosen) { try { // get the flavor request string flavorName = Console.ReadLine().ToUpper(); // Well, this used to be trouble. flavorEnumeral = FlavorOps.ToFlavor(flavorName); flavorChosen = true; } catch (System.ArgumentException) { Console.WriteLine("That's not a recognized flavor. Please retry."); } catch (VENDBADFLAVORException ve) { Console.WriteLine(ve.Message); Console.WriteLine("Please retry"); } } if (!sodaRack.IsEmpty(flavorEnumeral)) { sodaRack.RemoveACanOf(flavorEnumeral); Console.WriteLine("Thanks, here is your can of {0}.", flavorEnumeral); canDispensed = true; } else { Console.WriteLine("We are out of {0}", flavorEnumeral); } } Console.Write("Exit the vending machine? (y/n): "); string response = Console.ReadLine(); timeToExit = response.Trim().ToUpper().StartsWith("Y"); } while (!timeToExit); Console.WriteLine("Contents of Coin Box:"); Console.WriteLine("{0}\tHalf Dollar(s)", changeBox.HalfDollarCount); Console.WriteLine("{0}\tQuarter(s)", changeBox.QuarterCount); Console.WriteLine("{0}\tDime(s)", changeBox.DimeCount); Console.WriteLine("{0}\tNickel(s)", changeBox.NickelCount); Console.WriteLine("{0}\tSlug(s)", changeBox.SlugCount); Console.WriteLine(); Console.WriteLine("Total value in coin box is {0:c}", changeBox.ValueOf); }