Application:
Introducing Data Reading
|
|
- Launch Microsoft Visual Studio
- To start a new project, on the main menu, click File -> New Project
- In the middle list, click Empty Project
- Change the Name to gdcs5 (for Georgetown Dry Cleaning
Services)
- Click OK
- In the Solution Explorer, right-click gdcs5 -> Add -> New Item...
- In the middle list, click Code File
- Change the Name to ClearningOrder and press Enter
- To request strings from the user, change the file as follows:
using System;
public class CleaningOrder
{
public static int Main()
{
string customerName, homePhone;
Console.Title = "Georgetown Dry Cleaning Services";
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
// Request customer information from the user
Console.Write("Enter Customer Name: ");
customerName = Console.ReadLine();
Console.Write("Enter Customer Phone: ");
homePhone = Console.ReadLine();
Console.Clear();
// Display the receipt
Console.WriteLine("====================================");
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
Console.WriteLine("====================================");
Console.Write("Customer: ");
Console.WriteLine(customerName);
Console.Write("Home Phone: ");
Console.WriteLine(homePhone);
Console.WriteLine("====================================\n");
System.Console.ReadKey();
return 0;
}
}
- Execute the program. When asked to provide a customer name, type a
name, such as James Watson:
- Press Enter
- When asked to provide a phone number, type something, such as (410)
493-2005
-/- Georgetown Dry Cleaning Services -/-
Enter Customer Name: James Watson
Enter Customer Phone: (410) 493-2005
- Press Enter:
====================================
-/- Georgetown Dry Cleaning Services -/-
====================================
Customer: James Watson
Home Phone: (410) 493-2005
====================================
- Press Enter to close the DOS window and return to your programming
environment
In C#, everything the user types is a string and the
compiler would hardly analyze it without your explicit asking it to do so.
Therefore, if you want to get a number from the user, first request a
string. Here is an example:
using System;
public class Exercise
{
public static void Main()
{
int number;
string strNumber;
strnumber = Console.ReadLine();
}
}
After getting the string, you must convert it to a
number. To perform this conversion, each data type of the .NET Framework
provides a mechanism called Parse. To use Parse(), type the
data type, followed by a period, followed by Parse, and followed by
parentheses. In the parentheses of Parse, type the string that you requested
from the user. Here is an example:
using System;
public class Exercise
{
public static void Main()
{
int number;
string strNumber;
strnumber = Console.ReadLine();
number = int.Parse(strNumber);
}
}
An advanced but faster way to do this is to type
Console.ReadLine() in the parentheses of Parse. This has the same
effect. Here is an example:
using System;
public class Exercise
{
public static int Main()
{
int number;
number = int.Parse(Console.ReadLine());
return 0;
}
}
Application:
Reading Numeric Values
|
|
- To retrieve various numbers from the user, change the file as
follows:
using System;
public class CleaningOrder
{
public static int Main()
{
// Price of items
const double PriceOneShirt = 0.95;
const double PriceAPairOfPants = 2.95;
const double PriceOneDress = 4.55;
const double TaxRate = 0.0575; // 5.75%
// Customer personal infoirmation
string customerName, homePhone;
// Unsigned numbers to represent cleaning items
uint numberOfShirts, numberOfPants, numberOfDresses;
// Each of these sub totals will be used for cleaning items
double subTotalShirts, subTotalPants, subTotalDresses;
// Values used to process an order
double totalOrder, taxAmount, salesTotal;
double amountTended, moneyChange;
Console.Title = "Georgetown Dry Cleaning Services";
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
// Request customer information from the user
Console.Write("Enter Customer Name: ");
customerName = Console.ReadLine();
Console.Write("Enter Customer Phone: ");
homePhone = Console.ReadLine();
// Request the quantity of each category of items
Console.Write("Number of Shirts: ");
string strShirts = Console.ReadLine();
numberOfShirts = uint.Parse(strShirts);
Console.Write("Number of Pants: ");
string strPants = Console.ReadLine();
numberOfPants = uint.Parse(strPants);
Console.Write("Number of Dresses: ");
string strDresses = Console.ReadLine();
numberOfDresses = uint.Parse(strDresses);
// Perform the necessary calculations
subTotalShirts = numberOfShirts * PriceOneShirt;
subTotalPants = numberOfPants * PriceAPairOfPants;
subTotalDresses = numberOfDresses * PriceOneDress;
// Calculate the "temporary" total of the order
totalOrder = subTotalShirts +
subTotalPants +
subTotalDresses;
// Calculate the tax amount using a constant rate
taxAmount = totalOrder * TaxRate;
// Add the tax amount to the total order
salesTotal = totalOrder + taxAmount;
// Communicate the total to the user...
Console.Write("\nThe Total order is: ");
Console.WriteLine(salesTotal);
// and request money for the order
Console.Write("Amount Tended? ");
amountTended = double.Parse(Console.ReadLine());
// Calculate the difference owed to the customer
// or that the customer still owes to the store
moneyChange = amountTended - salesTotal;
Console.Clear();
// Display the receipt
Console.WriteLine("====================================");
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
Console.WriteLine("====================================");
Console.Write("Customer: ");
Console.WriteLine(customerName);
Console.Write("Home Phone: ");
Console.WriteLine(homePhone);
Console.WriteLine("------------------------------------");
Console.WriteLine("Item Type Qty Unit/Price Sub-Total");
Console.WriteLine("------------------------------------");
Console.Write("Shirts ");
Console.Write(numberOfShirts);
Console.Write(" ");
Console.Write(PriceOneShirt);
Console.Write(" ");
Console.WriteLine(subTotalShirts);
Console.Write("Pants ");
Console.Write(numberOfPants);
Console.Write(" ");
Console.Write(PriceAPairOfPants);
Console.Write(" ");
Console.WriteLine(subTotalPants);
Console.Write("Dresses ");
Console.Write(numberOfDresses);
Console.Write(" ");
Console.Write(PriceOneDress);
Console.Write(" ");
Console.WriteLine(subTotalDresses);
Console.WriteLine("------------------------------------");
Console.Write("Total Order: ");
Console.WriteLine(totalOrder);
Console.Write("Tax Rate: ");
Console.Write(TaxRate * 100);
Console.WriteLine('%');
Console.Write("Tax Amount: ");
Console.WriteLine(taxAmount);
Console.Write("Net Price: ");
Console.WriteLine(salesTotal);
Console.WriteLine("------------------------------------");
Console.Write("Amount Tended: ");
Console.WriteLine(amountTended);
Console.Write("Difference: ");
Console.WriteLine(moneyChange);
Console.WriteLine("====================================");
System.Console.ReadKey();
return 0;
}
}
- Execute the program and test it. Here is an example:
-/- Georgetown Dry Cleaning Services -/-
Enter Customer Name: Genevieve Alton
Enter Customer Phone: (202) 974-8244
Number of Shirts: 8
Number of Pants: 2
Number of Dresses: 3
The Total order is: 28.711125
Amount Tended? 30
- Press Enter
===============================
-/- Georgetown Dry Cleaning Services -/-
====================================
Customer: Genevieve Alton
Home Phone: (202) 974-8244
------------------------------------
Item Type Qty Unit/Price Sub-Total
------------------------------------
Shirts 8 0.95 7.60
Pants 2 2.95 5.90
Dresses 3 4.55 13.65
------------------------------------
Total Order: 27.15
Tax Rate: 5.7500%
Tax Amount: 1.561125
Net Price: 28.711125
------------------------------------
Amount Tended: 30
Difference: 1.288875
====================================
- Close the DOS window
Requesting Dates and Times
|
|
As done with the regular numbers, you can request a date
value from the user. This is also done by requesting a string from the user.
Here is an example:
using System;
namespace ValueRequests
{
class Exercise
{
static void Main()
{
string strDateHired;
strDateHired = Console.ReadLine();
}
}
}
After the user has entered the string you can then
convert it to a DateTime value. Just like any value you request from
the user, a date or time value that the user types must be valid, otherwise,
the program would produce an error. Because dates and times follow some
rules for their formats, you should strive to let the user know how you
expect the value to be entered.
By default, if you request only a date from the user and
the user enters a valid date, the compiler would add the midnight value to
the date. If you request only the time from the user and the user enters a
valid time, the compiler would add the current date to the value. Later on,
we will learn how to isolate either only the date or only the time.
Application:
Requesting Date and Time Values
|
|
- To deal with new dates and times, change the program as follows:
using System;
public class OrderProcessing
{
public static int Main()
{
// Price of items
const double PriceOneShirt = 0.95;
const double PriceAPairOfPants = 2.95;
const double PriceOneDress = 4.55;
const double TaxRate = 0.0575; // 5.75%
// Basic information about an order
string customerName, homePhone;
DateTime orderDate;
// Unsigned numbers to represent cleaning items
uint numberOfShirts, numberOfPants, numberOfDresses;
// Each of these sub totals will be used for cleaning items
double subTotalShirts, subTotalPants, subTotalDresses;
// Values used to process an order
double totalOrder, taxAmount, salesTotal;
double amountTended, moneyChange;
Console.Title = "Georgetown Dry Cleaning Services";
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
// Request order information from the user
Console.Write("Enter Customer Name: ");
customerName = Console.ReadLine();
Console.Write("Enter Customer Phone: ");
homePhone = Console.ReadLine();
Console.WriteLine("Enter the order date and " +
"time (mm/dd/yyyy hh:mm AM/PM)");
orderDate = DateTime.Parse(Console.ReadLine());
// Request the quantity of each category of items
Console.Write("Number of Shirts: ");
string strShirts = Console.ReadLine();
numberOfShirts = uint.Parse(strShirts);
Console.Write("Number of Pants: ");
string strPants = Console.ReadLine();
numberOfPants = uint.Parse(strPants);
Console.Write("Number of Dresses: ");
string strDresses = Console.ReadLine();
numberOfDresses = uint.Parse(strDresses);
// Perform the necessary calculations
subTotalShirts = numberOfShirts * PriceOneShirt;
subTotalPants = numberOfPants * PriceAPairOfPants;
subTotalDresses = numberOfDresses * PriceOneDress;
// Calculate the "temporary" total of the order
totalOrder = subTotalShirts +
subTotalPants +
subTotalDresses;
// Calculate the tax amount using a constant rate
taxAmount = totalOrder * TaxRate;
// Add the tax amount to the total order
salesTotal = totalOrder + taxAmount;
// Communicate the total to the user...
Console.Write("\nThe Total order is: ");
Console.WriteLine(salesTotal);
// and request money for the order
Console.Write("Amount Tended? ");
amountTended = double.Parse(Console.ReadLine());
// Calculate the difference owed to the customer
// or that the customer still owes to the store
moneyChange = amountTended - salesTotal;
Console.Clear();
// Display the receipt
Console.WriteLine("====================================");
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
Console.WriteLine("====================================");
Console.Write("Customer: ");
Console.WriteLine(customerName);
Console.Write("Home Phone: ");
Console.WriteLine(homePhone);
Console.Write("Date & Time: ");
Console.WriteLine(orderDate);
Console.WriteLine("------------------------------------");
Console.WriteLine("Item Type Qty Unit/Price Sub-Total");
Console.WriteLine("------------------------------------");
Console.Write("Shirts ");
Console.Write(numberOfShirts);
Console.Write(" ");
Console.Write(PriceOneShirt);
Console.Write(" ");
Console.WriteLine(subTotalShirts);
Console.Write("Pants ");
Console.Write(numberOfPants);
Console.Write(" ");
Console.Write(PriceAPairOfPants);
Console.Write(" ");
Console.WriteLine(subTotalPants);
Console.Write("Dresses ");
Console.Write(numberOfDresses);
Console.Write(" ");
Console.Write(PriceOneDress);
Console.Write(" ");
Console.WriteLine(subTotalDresses);
Console.WriteLine("------------------------------------");
Console.Write("Total Order: ");
Console.WriteLine(totalOrder);
Console.Write("Tax Rate: ");
Console.Write(TaxRate * 100);
Console.WriteLine('%');
Console.Write("Tax Amount: ");
Console.WriteLine(taxAmount);
Console.Write("Net Price: ");
Console.WriteLine(salesTotal);
Console.WriteLine("------------------------------------");
Console.Write("Amount Tended: ");
Console.WriteLine(amountTended);
Console.Write("Difference: ");
Console.WriteLine(moneyChange);
Console.WriteLine("====================================");
System.Console.ReadKey();
return 0;
}
}
- Execute the program and test it. Here is an example:
-/- Georgetown Dry Cleaning Services -/-
Enter Customer Name: Alexander Pappas
Enter Customer Phone: (301) 397-9764
Enter the order date and time (mm/dd/yyyy hh:mm AM/PM)
06/22/98 08:26 AM
Number of Shirts: 2
Number of Pants: 6
Number of Dresses: 0
The Total order is: 20.727000
Amount Tended? 50
- Press Enter:
====================================
-/- Georgetown Dry Cleaning Services -/-
====================================
Customer: Alexander Pappas
Home Phone: (301) 397-9764
Date & Time: 6/22/1998 8:26:00 AM
------------------------------------
Item Type Qty Unit/Price Sub-Total
------------------------------------
Shirts 2 0.95 1.90
Pants 6 2.95 17.70
Dresses 0 4.55 0
------------------------------------
Total Order: 19.60
Tax Rate: 5.7500%
Tax Amount: 1.127000
Net Price: 20.727000
------------------------------------
Amount Tended: 50
Difference: 29.273000
====================================
- Return to your programming environment
Instead of using two Write() or a combination of
Write() and WriteLine() to display data, you can convert a
value to a string and display it directly. To do this, you can provide two
strings to the Write() or WriteLine() and separate them with a
comma:
- The first part of the string provided to Write() or
WriteLine() is the complete string that would display to the user.
This first string itself can be made of different sections:
- One section is a string in any way you want it to display
- Another section is a number included between an opening curly
bracket "{" and a closing curly bracket "}". This combination of "{"
and "}" is referred to as a placeholder
You can put the
placeholder anywhere inside of the string. The first placeholder
must have number 0. The second must have number 1, etc. With this
technique, you can create the string anyway you like and use the
placeholders anywhere inside of the string
- The second part of the string provided to Write() or
WriteLine() is the value that you want to display. It can be one
value if you used only one placeholder with 0 in the first string. If
you used different placeholders, you can then provide a different value
for each one of them in this second part, separating the values with a
comma
Here are examples:
using System;
public class Exercise
{
public static void Main()
{
var fullName = "Anselme Bogos";
var age = 15;
var hSalary = 22.74;
Console.WriteLine("Full Name: {0}", fullName);
Console.WriteLine("Age: {0}", Age);
Console.WriteLine("Distance: {0}", hSalary);
}
}
This would produce:
Full Name: Anselme Bogos
Age: 15
Distance: 22.74
As mentioned already, the numeric value typed in the
curly brackets of the first part is an ordered number. If you want to
display more than one value, provide each incremental value in its curly
brackets. The syntax used is:
Write("To Display {0} {1} {2} {n}", First, Second, Third, nth);
You can use the sections between a closing curly bracket
and an opening curly bracket to create a meaningful sentence.
Application:
Displaying Data With Placeholders
|
|
- To use curly brackets to display data, change the file as follows:
using System;
public class OrderProcessing
{
public static int Main()
{
// Price of items
const double PriceOneShirt = 0.95;
const double PriceAPairOfPants = 2.95;
const double PriceOneDress = 4.55;
const double TaxRate = 0.0575; // 5.75%
// Basic information about an order
string customerName, homePhone;
DateTime orderDate;
// Unsigned numbers to represent cleaning items
uint numberOfShirts, numberOfPants, numberOfDresses;
// Each of these sub totals will be used for cleaning items
double subTotalShirts, subTotalPants, subTotalDresses;
// Values used to process an order
double totalOrder, taxAmount, salesTotal;
double amountTended, moneyChange;
Console.Title = "Georgetown Dry Cleaning Services";
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
// Request order information from the user
Console.Write("Enter Customer Name: ");
customerName = Console.ReadLine();
Console.Write("Enter Customer Phone: ");
homePhone = Console.ReadLine();
Console.WriteLine("Enter the order date and " +
"time (mm/dd/yyyy hh:mm AM/PM)");
orderDate = DateTime.Parse(Console.ReadLine());
// Request the quantity of each category of items
Console.Write("Number of Shirts: ");
numberOfShirts = uint.Parse(Console.ReadLine());
Console.Write("Number of Pants: ");
numberOfPants = uint.Parse(Console.ReadLine());
Console.Write("Number of Dresses: ");
numberOfDresses = uint.Parse(Console.ReadLine());
// Perform the necessary calculations
subTotalShirts = numberOfShirts * PriceOneShirt;
subTotalPants = numberOfPants * PriceAPairOfPants;
subTotalDresses = numberOfDresses * PriceOneDress;
// Calculate the "temporary" total of the order
totalOrder = subTotalShirts +
subTotalPants +
subTotalDresses;
// Calculate the tax amount using a constant rate
taxAmount = totalOrder * TaxRate;
// Add the tax amount to the total order
salesTotal = totalOrder + taxAmount;
// Communicate the total to the user...
Console.Write("\nThe Total order is: ");
Console.WriteLine(salesTotal);
// and request money for the order
Console.Write("Amount Tended? ");
amountTended = double.Parse(Console.ReadLine());
// Calculate the difference owed to the customer
// or that the customer still owes to the store
Difference = amountTended - salesTotal;
Console.Clear();
// Display the receipt
Console.WriteLine("====================================");
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
Console.WriteLine("====================================");
Console.WriteLine("Customer: {0}", customerName);
Console.WriteLine("Home Phone: {0}", homePhone);
Console.WriteLine("Date & Time: {0}", orderDate);
Console.WriteLine("------------------------------------");
Console.WriteLine("Item Type Qty Unit/Price Sub-Total");
Console.WriteLine("------------------------------------");
Console.WriteLine("Shirts {0} {1} {2}",
numberOfShirts,
PriceOneShirt, subTotalShirts);
Console.WriteLine("Pants {0} {1} {2}",
numberOfPants,
PriceAPairOfPants, subTotalPants);
Console.WriteLine("Dresses {0} {1} {2}",
numberOfDresses,
PriceOneDress, subTotalDresses);
Console.WriteLine("------------------------------------");
Console.WriteLine("Total Order: {0}", totalOrder);
Console.WriteLine("Tax Rate: {0}%", TaxRate * 100);
Console.WriteLine("Tax Amount: {0}", taxAmount);
Console.WriteLine("Net Price: {0}", salesTotal);
Console.WriteLine("------------------------------------");
Console.WriteLine("Amount Tended: {0}", amountTended);
Console.WriteLine("Difference: {0}", Difference);
Console.WriteLine("====================================");
System.Console.ReadKey();
return 0;
}
}
- Execute the program and test it
- Close the DOS window
We mentioned earlier that everything the user types
using the keyboard is primarily a string and it's your job to convert it to
the appropriate type. In reverse, if you have a value that is not a string,
you can easily convert it to a string. To support this, each .NET Framework
data type provides a mechanism called ToString. Normally, in C#, as
we mentioned with boxing, and as we have done so far, this conversion is
automatically or transparently done by the compiler. In some cases, you will
need to perform the conversion yourself.
To convert a value of a primitive data type to a string,
type the name of the variable, followed by a period, followed by
ToString(). Here is an example:
using System;
public class Exercise
{
public static void Main()
{
var fullName = "Anselme Bogos";
var age = 15;
var hSalary = 22.74;
Console.WriteLine("Full Name: {0}", fullName);
Console.WriteLine("Age: {0}", age.ToString());
Console.WriteLine("Distance: {0}", hSalary.ToString());
Console.WriteLine();
}
}
In some cases, you will type something in the
parentheses of ToString().
Application:
Converting to String
|
|
- To convert some values to string, change the program as follows:
using System;
public class OrderProcessing
{
public static int Main()
{
// Price of items
const double PriceOneShirt = 0.95;
const double PriceAPairOfPants = 2.95;
const double PriceOneDress = 4.55;
const double TaxRate = 0.0575; // 5.75%
. . . No Change
Console.WriteLine("------------------------------------");
Console.WriteLine("Shirts {0} {1} {2}",
numberOfShirts.ToString(),
PriceOneShirt,
subTotalShirts.ToString());
Console.WriteLine("Pants {0} {1} {2}",
numberOfPants, PriceAPairOfPants,
subTotalPants);
Console.WriteLine("Dresses {0} {1} {2}",
numberOfDresses, PriceOneDress,
subTotalDresses);
Console.WriteLine("------------------------------------");
Console.WriteLine("Total Order: {0}", totalOrder);
Console.WriteLine("Tax Rate: {0}%", TaxRate * 100);
Console.WriteLine("Tax Amount: {0}",
taxAmount.ToString());
Console.WriteLine("Net Price: {0}", salesTotal);
Console.WriteLine("------------------------------------");
Console.WriteLine("Amount Tended: {0}", amountTended);
Console.WriteLine("Difference: {0}", Difference);
Console.WriteLine("====================================");
System.Console.ReadKey();
return 0;
}
}
- Execute the program and test it
- Close the DOS window
To properly display data in a friendly and most familiar
way, you can format it. Formatting tells the compiler what kind of data you
are using and how you want the compiler to display it to the user. As it
happens, you can display a natural number in a common value or, depending on
the circumstance, you may prefer to show it as a hexadecimal value. When it
comes to double-precision numbers, you may want to display a distance with
three values on the right side of the decimal separator and in some cases,
you may want to display a salary with only 2 decimal places.
The System namespace provides a specific letter
that you can use in the Write() or WriteLine()'s placeholder
for each category of data to display. To format a value, in the placeholder
of the variable or value, after the number, type a colon and one of the
appropriate letters from the following table. If you are using ToString(),
then, in the parentheses of ToString(), you can include a specific
letter or combination inside of double-quotes. The letters and their
meanings are:
|
Character |
Used
For |
|
c |
C |
Currency values |
|
d |
D |
Decimal numbers |
|
e |
E |
Scientific numeric display
such as 1.45e5 |
|
f |
F |
Fixed decimal numbers |
|
g |
G |
General and most common type
of numbers |
|
n |
N |
Natural numbers |
|
r |
R |
Roundtrip formatting |
|
x |
X |
Hexadecimal formatting |
|
p |
P |
Percentages |
Here are examples:
using System;
public class Exercise
{
public static void Main()
{
var Distance = 248.38782;
var age = 15;
var NewColor = 3478;
var hSalary = 22.74;
var HoursWorked = 35.5018473;
var WeeklySalary = hSalary * HoursWorked;
Console.WriteLine("Distance: {0}", Distance.ToString("E"));
Console.WriteLine("Age: {0}", age.ToString());
Console.WriteLine("Color: {0}", NewColor.ToString("X"));
Console.WriteLine("Weekly Salary: {0} for {1} hours",
WeeklySalary.ToString("c"),
HoursWorked.ToString("F"));
Console.WriteLine();
}
}
This would produce:
Distance: 2.483878E+002
Age: 15
Color: D96
Weekly Salary: $807.31 for 35.50 hours
As you may have noticed, if you leave the parentheses of
ToString() empty, the compiler would use a default formatting to
display the value.
As opposed to calling ToString(), you can use the
above letters in the curly brackets of the first part of Write() or
WriteLine(). In this case, after the number in the curly brackets,
type the colon operator followed by the letter.
Application:
Formatting Data Display
|
|
- To format data display, change the file as follows:
using System;
public class OrderProcessing
{
public static int Main()
{
// Price of items
const double PriceOneShirt = 0.95;
const double PriceAPairOfPants = 2.95;
const double PriceOneDress = 4.55;
const double TaxRate = 0.0575; // 5.75%
// Basic information about an order
string customerName, homePhone;
DateTime orderDate;
// Unsigned numbers to represent cleaning items
uint numberOfShirts, numberOfPants, numberOfDresses;
// Each of these sub totals will be used for cleaning items
double subTotalShirts, subTotalPants, subTotalDresses;
// Values used to process an order
double totalOrder, taxAmount, salesTotal;
double amountTended, moneyChange;
Console.Title = "Georgetown Dry Cleaning Services";
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
// Request order information from the user
Console.Write("Enter Customer Name: ");
customerName = Console.ReadLine();
Console.Write("Enter Customer Phone: ");
homePhone = Console.ReadLine();
Console.WriteLine("Enter the order date and " +
"time (mm/dd/yyyy hh:mm AM/PM)");
orderDate = DateTime.Parse(Console.ReadLine());
// Request the quantity of each category of items
Console.Write("Number of Shirts: ");
numberOfShirts = uint.Parse(Console.ReadLine());
Console.Write("Number of Pants: ");
numberOfPants = uint.Parse(Console.ReadLine());
Console.Write("Number of Dresses: ");
numberOfDresses = uint.Parse(Console.ReadLine());
// Perform the necessary calculations
subTotalShirts = numberOfShirts * PriceOneShirt;
subTotalPants = numberOfPants * PriceAPairOfPants;
subTotalDresses = numberOfDresses * PriceOneDress;
// Calculate the "temporary" total of the order
totalOrder = subTotalShirts +
subTotalPants + subTotalDresses;
// Calculate the tax amount using a constant rate
taxAmount = totalOrder * TaxRate;
// Add the tax amount to the total order
salesTotal = totalOrder + taxAmount;
// Communicate the total to the user...
Console.Write("\nThe Total order is: ");
Console.WriteLine(salesTotal);
// and request money for the order
Console.Write("Amount Tended? ");
amountTended = double.Parse(Console.ReadLine());
// Calculate the difference owed to the customer
// or that the customer still owes to the store
Difference = amountTended - salesTotal;
Console.Clear();
// Display the receipt
Console.WriteLine("====================================");
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
Console.WriteLine("====================================");
Console.WriteLine("Customer: {0}", customerName);
Console.WriteLine("Home Phone: {0}", homePhone);
Console.WriteLine("Date & Time: {0}", orderDate);
Console.WriteLine("------------------------------------");
Console.WriteLine("Item Type Qty Unit/Price Sub-Total");
Console.WriteLine("------------------------------------");
Console.WriteLine("Shirts {0} {1:C} {2}",
numberOfShirts.ToString(), PriceOneShirt,
subTotalShirts.ToString("C"));
Console.WriteLine("Pants {0} {1:C} {2:C}",
numberOfPants, PriceAPairOfPants,
subTotalPants);
Console.WriteLine("Dresses {0} {1:C} {2:C}",
numberOfDresses, PriceOneDress,
subTotalDresses);
Console.WriteLine("------------------------------------");
Console.WriteLine("Total Order: {0:C}", totalOrder);
Console.WriteLine("Tax Rate: {0:P}", TaxRate);
Console.WriteLine("Tax Amount: {0}",
taxAmount.ToString("C"));
Console.WriteLine("Net Price: {0:F}", salesTotal);
Console.WriteLine("------------------------------------");
Console.WriteLine("Amount Tended: {0:C}", amountTended);
Console.WriteLine("Difference: {0:C}", Difference);
Console.WriteLine("====================================");
System.Console.ReadKey();
return 0;
}
}
- Execute the application. Here is an example:
-/- Georgetown Dry Cleaning Services -/-
Enter Customer Name: Gretchen McCormack
Enter Customer Phone: (410) 739-2884
Enter the order date and time (mm/dd/yyyy hh:mm AM/PM)
04/09/2001 10:25 AM
Number of Shirts: 5
Number of Pants: 12
Number of Dresses: 8
The Total order is: 80.951625
Amount Tended? 100
- Press Enter:
====================================
-/- Georgetown Dry Cleaning Services -/-
====================================
Customer: Gretchen McCormack
Home Phone: (410) 739-2884
Date & Time: 4/9/2001 10:25:00 AM
------------------------------------
Item Type Qty Unit/Price Sub-Total
------------------------------------
Shirts 5 $0.95 $4.75
Pants 12 $2.95 $35.40
Dresses 8 $4.55 $36.40
------------------------------------
Total Order: $76.55
Tax Rate: 5.75 %
Tax Amount: $4.40
Net Price: 80.95
------------------------------------
Amount Tended: $100.00
Difference: $19.05
====================================
- Close the DOS window
In the above programs, to display a line of text, we
easily used Write() or WriteLine(). To position text of
different lengths one above the other, we had to "corrupt" a string by
including extra-empty spaces. Such a technique is uncertain and less
professional. Fortunately, you can highly format how a string or a line of
text should display. The .NET Framework provides mechanisms to control the
amount of space used to display a string of text and how to align that
string on its line.
To specify the amount of space used to display a string,
you can use its placeholder in Write() or WriteLine(). To do
this, in the placeholder, type the 0 or the incrementing number of the
placer and its formatting character if necessary and if any. Then, type a
comma followed by the number of characters equivalent to the desired width.
Here are examples:
using System;
public class Exercise
{
public static void Main()
{
var fullName = "Anselme Bogos";
var age = 15;
var hSalary = 22.74;
Console.WriteLine("Full Name: {0,20}", fullName);
Console.WriteLine("Age:{0,14}", age.ToString());
Console.WriteLine("Distance: {0:C,8}", hSalary.ToString());
Console.WriteLine();
}
}
This would produce:
Full Name: Anselme Bogos
Age: 15
Distance: 22.74
The sign you provide for the width is very important. If
it is positive, the line of text is aligned to the right. This should be
your preferred alignment for numeric values. If the number is negative, then
the text is aligned to the left.
As mentioned earlier, when the user enters a date value
for a DateTime variable, the compiler adds a time part to the value.
Fortunately, if you want to consider only the date or only the time part,
you can specify this to the compiler. To support this, the DateTime
data type provides a series of letters you can use to format how its value
should be displayed to the user. The character is entered in the placeholder
of the DateTime variable after the 0 or the incremental numeric
value.
Application:
Controlling Date/Time Formatting
|
|
- To control formatting of date and time, change the file as follows:
using System;
public class OrderProcessing
{
public static int Main()
{
// Price of items
const double PriceOneShirt = 0.95;
const double PriceAPairOfPants = 2.95;
const double PriceOneDress = 4.55;
const double TaxRate = 0.0575; // 5.75%
// Basic information about an order
string customerName, homePhone;
DateTime orderDate, orderTime;
// Unsigned numbers to represent cleaning items
uint numberOfShirts, numberOfPants, numberOfDresses;
// Each of these sub totals will be used for cleaning items
double subTotalShirts, subTotalPants, subTotalDresses;
// Values used to process an order
double totalOrder, taxAmount, salesTotal;
double amountTended, moneyChange;
Console.Title = "Georgetown Dry Cleaning Services";
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
// Request order information from the user
Console.Write("Enter Customer Name: ");
customerName = Console.ReadLine();
Console.Write("Enter Customer Phone: ");
homePhone = Console.ReadLine();
Console.Write("Enter the order date(mm/dd/yyyy): ");
orderDate = DateTime.Parse(Console.ReadLine());
Console.Write("Enter the order time(hh:mm AM/PM): ");
orderTime = DateTime.Parse(Console.ReadLine());
// Request the quantity of each category of items
Console.Write("Number of Shirts: ");
numberOfShirts = uint.Parse(Console.ReadLine());
Console.Write("Number of Pants: ");
numberOfPants = uint.Parse(Console.ReadLine());
Console.Write("Number of Dresses: ");
numberOfDresses = uint.Parse(Console.ReadLine());
// Perform the necessary calculations
subTotalShirts = numberOfShirts * PriceOneShirt;
subTotalPants = numberOfPants * PriceAPairOfPants;
subTotalDresses = numberOfDresses * PriceOneDress;
// Calculate the "temporary" total of the order
totalOrder = subTotalShirts +
subTotalPants +
subTotalDresses;
// Calculate the tax amount using a constant rate
taxAmount = totalOrder * TaxRate;
// Add the tax amount to the total order
salesTotal = totalOrder + taxAmount;
// Communicate the total to the user...
Console.WriteLine("\nThe Total order is: {0:C}",
salesTotal);
// and request money for the order
Console.Write("Amount Tended? ");
amountTended = double.Parse(Console.ReadLine());
// Calculate the difference owed to the customer
// or that the customer still owes to the store
moneyChange = amountTended - salesTotal;
Console.Clear();
// Display the receipt
Console.WriteLine("====================================");
Console.WriteLine("-/- Georgetown Dry Cleaning Services -/-");
Console.WriteLine("====================================");
Console.WriteLine("Customer: {0}", customerName);
Console.WriteLine("Home Phone: {0}", homePhone);
Console.WriteLine("Order Date: {0:D}", orderDate);
Console.WriteLine("Order Time: {0:t}", orderTime);
Console.WriteLine("------------------------------------");
Console.WriteLine("Item Type Qty Unit/Price Sub-Total");
Console.WriteLine("------------------------------------");
Console.WriteLine("Shirts {0} {1} {2}",
numberOfShirts.ToString(),
PriceOneShirt.ToString("C"),
subTotalShirts.ToString("C"));
Console.WriteLine("Pants {0} {1} {2}",
numberOfPants.ToString(),
PriceAPairOfPants.ToString("C"),
subTotalPants.ToString("C"));
Console.WriteLine("Dresses {0} {1} {2}",
numberOfDresses.ToString(),
PriceOneDress.ToString("C"),
subTotalDresses.ToString("C"));
Console.WriteLine("------------------------------------");
Console.WriteLine("Total Order: {0}",
totalOrder.ToString("C"));
Console.WriteLine("Tax Rate: {0}",
TaxRate.ToString("P"));
Console.WriteLine("Tax Amount: {0}",
taxAmount.ToString("C"));
Console.WriteLine("Net Price: {0}",
salesTotal.ToString("C"));
Console.WriteLine("------------------------------------");
Console.WriteLine("Amount Tended: {0}",
amountTended.ToString("C"));
Console.WriteLine("Difference: {0}",
moneyChange.ToString("C"));
Console.WriteLine("====================================");
System.Console.ReadKey();
return 0;
}
}
- Execute the program. Here is an example:
-/- Georgetown Dry Cleaning Services -/-
Enter Customer Name: Antoinette Calhoun
Enter Customer Phone: (703) 797-1135
Enter the order date(mm/dd/yyyy): 04/12/2002
Enter the order time(hh:mm AM/PM): 2:12 PM
Number of Shirts: 5
Number of Pants: 2
Number of Dresses: 1
The Total order is: $16.07
Amount Tended? 20
- Press Enter:
====================================
-/- Georgetown Dry Cleaning Services -/-
====================================
Customer: Antoinette Calhoun
Home Phone: (703) 797-1135
Order Date: Friday, April 12, 2002
Order Time: 2:12 PM
------------------------------------
Item Type Qty Unit/Price Sub-Total
------------------------------------
Shirts 5 $0.95 $4.75
Pants 2 $2.95 $5.90
Dresses 1 $4.55 $4.55
------------------------------------
Total Order: $15.20
Tax Rate: 5.75 %
Tax Amount: $0.87
Net Price: $16.07
------------------------------------
Amount Tended: $20.00
Difference: $3.93
====================================
- Close the DOS window and return to your programming environment
- On the main menu, click File -> Close Solution
- When asked whether you want to save, click No
|
|