Painting Rooms Console App

[code language=”csharp”] using System;
using static System.Console;

/// <summary>
/// # # # # # # # # # # # # #
/// # Mark Hesser #
/// # Jan 18, 18 #
/// # Painting Estimates #
/// # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
/// # Instructions: #
/// # Create a program named PaintingEstimate whose Main() method prompts a user for length and width #
/// # of a room in feet. Create a method that accepts the values and then computes the cost of painting #
/// # the room, assuming the room is rectangular and has four full walls and 9-foot ceilings. The price #
/// # of the job is $6 per square foot. Return the price to the Main() method, and display it. #
/// # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
/// </summary>
namespace PaintingEstimate
{
class Paint
{
static void Main(string[] args)
{
#region Declarations
double roomWidth = 0, roomLength = 0, sqFt = 0, jobTotal;
bool quit = false;
#endregion

Title = "Paint Estimate";

while (!quit)
{
Clear();
WriteLine("\t\t\t Paint Estimate");
WriteLine("\n Please enter the Length and Width of the room in feet that needs painted.\n");

//User Input for Length
Write(" Length: ");
while (!Double.TryParse(ReadLine(), out roomLength)) //Error Checking
{
WriteLine("That is not a number… Please Try Again!");
Write(" Length: ");
}

//User Input for Width
Write(" Width: ");
while (!Double.TryParse(ReadLine(), out roomWidth)) //Error Checking
{
WriteLine(" That is not a number… Please Try Again!");
Write(" Width: ");
}

//This Calculates the Total paintable square footage
CalculateSqFt(out sqFt, roomWidth, roomLength);

//This Calculates the Total Cost based on a 9 foot ceiling with the rate of $9 per square foot
CalculatePrice(out jobTotal, sqFt);

//This Displays the Total Cost of the Job

WriteLine("\n The Total Cost to paint {0}SqFt is {1:C}", sqFt, jobTotal);

Quit(ref quit);
}
}

/// <summary>
/// This Method calculates the total sqft of the paintable wall space,
/// assuming the room is rectangular and has four 4 walls and 9-foot ceilings.
/// </summary>
/// <param name="sqFt"></param>
/// <param name="width"></param>
/// <param name="length"></param>
/// <returns></returns>
static double CalculateSqFt(out double sqFt, double width, double length)
{
const double height = 9;
sqFt = (((length * height) * 2) + ((width * height) * 2));
return sqFt;
}

/// <summary>
/// This Method uses the sqFt value from Main and then computes the cost of painting the room.
/// </summary>
/// <param name="Width"></param>
/// <param name="Length"></param>
/// <returns></returns>
static double CalculatePrice(out double total, double sqFt)
{
const double priceSqFt = 6;
total = sqFt * priceSqFt;

return total;
}

/// <summary>
/// This Method asks the user if they would like to enter another estimate.
/// </summary>
static void Quit(ref bool quit)
{
ConsoleKeyInfo kb;
//Asks the user if they would like to enter another estimate.
Write("\n Would you like to Enter another Estimate? (y/n) ");
#region Quit?
kb = ReadKey(); //Listens for Key
if (kb.Key == ConsoleKey.N) //Ends the Program
{
quit = true;
}
else if (kb.Key == ConsoleKey.Y)
{
quit = false;
}
else //Tells the User they are stupid and then Quits the program
{
WriteLine("\n You didn’t hit Y or N. " +
"\n I’m going to assume you said No. " +
"\n Press Any Key Quit…\a");
ReadKey();
quit = true; //Ends Program
}
#endregion
}
}
}
[/code]