To design an input/output system for the Metropolitan State Coal Co. (Metro) sales report, we will outline the necessary inputs, outputs, and the structure of the report.
Input Design
The input will consist of the following fields for each plant's transaction:
- Plant Name: A string representing the name of the plant.
- Plant Abbreviation: A string representing the abbreviation of the plant.
- Contracted Tons: An integer representing the number of tons contracted.
- Contracted Price per Ton: A float representing the price per ton for the contracted amount.
- Demand: An integer representing the current demand for coal from the plant.
Example Input Format
Plant Name: Colorado Power Plant
Plant Abbreviation: CPP
Contracted Tons: 100
Contracted Price per Ton: 10.00
Demand: 120
Output Design
The output will consist of two main sections: detailed sales report for each plant and summary statistics for the week.
Detailed Sales Report for Each Plant
For each plant, the report will include:
- Plant Abbreviation
- Contracted Tons
- Contracted Sale Amount: Calculated as
Contracted Tons * Contracted Price per Ton
- Additional Tons: Calculated as
Demand - Contracted Tons
(if Demand > Contracted Tons, otherwise 0)
- Additional Sale Amount: Calculated as
Additional Tons * (Contracted Price per Ton * 1.15)
(if Additional Tons > 0, otherwise 0)
- Total Sales for the Plant: Calculated as
Contracted Sale Amount + Additional Sale Amount
Example Output Format for Each Plant
Plant Abbreviation: CPP
Contracted Tons: 100
Contracted Sale Amount: $1000.00
Additional Tons: 20
Additional Sale Amount: $230.00
Total Sales for the Plant: $1230.00
Summary Statistics
At the end of the report, the summary statistics will include:
- Number of Plants that Purchased Coal: Total count of unique plants.
- Total Tons Sold: Sum of all contracted and additional tons sold.
- Total Sales Amount: Sum of all contracted and additional sales amounts.
- Number of Plants that Required Additional Coal: Count of plants where Demand > Contracted Tons.
- Total Tons for Contracted Coal: Sum of all contracted tons.
- Total Sales for Contracted Coal: Sum of all contracted sale amounts.
- Total Tons for Additional Coal: Sum of all additional tons.
- Total Sales for Additional Coal: Sum of all additional sale amounts.
- Plant with Highest Total Sales: Name and total sales amount of the plant with the highest total sales.
Example Summary Output
Summary Statistics:
Number of Plants that Purchased Coal: 1
Total Tons Sold: 120
Total Sales Amount: $1230.00
Number of Plants that Required Additional Coal: 1
Total Tons for Contracted Coal: 100
Total Sales for Contracted Coal: $1000.00
Total Tons for Additional Coal: 20
Total Sales for Additional Coal: $230.00
Plant with Highest Total Sales: CPP - $1230.00
Implementation Considerations
- The program should handle multiple plant entries in a loop until the user indicates they are done entering data.
- Input validation should be implemented to ensure that the numbers entered are valid (e.g., non-negative integers for tons and valid float for price).
- The program should be able to store and process the data efficiently, possibly using lists or dictionaries to keep track of each plant's data.
- The final report should be formatted for readability, possibly using a library for formatted output if