#include <iostream>
#include <iomanip> // manipulate display sigs
#include <cmath> // math functions
#include <string>
#include <windows.h> // Enables delay in proggy
using namespace std;
int main()
{
//Distribution Service Charge - 3 parts
double Basic_Charge,Distribution_kWh_ChargeA,Distribution_kWh_ChargeB,RiderC1A,
RiderC2A;
//Electricity Supply Service (ESS) Charge - 3 parts
double Generation_A1,Generation_A2,Generation_B1,Generation_B2; //Sum/Winter Mo
double Rider_S,Rider_B,Rider_W,Rider_R; //Riders
// Transmission
double Transmission_kW_Charge,Rider_T1; \
//Fuel Charge (RiderA)
double Rider_A;
//Sales and Use Surcharge
double Sales_N_U_Rate;
//State/Local Consumption Tax
//0 - 2500 kWh:
double State_Consumption_A,
Special_Regulatory_A,
Local_Consumption_A;
//2501-50k kWh:
double State_Consumption_B,
Special_Regulatory_B,
Local_Consumption_B;
//50k+
double State_Consumption_C,
Special_Regulatory_C,
Local_Consumption_C;
//Va Beach tax
double VB_U_Tax;
//Late
double Late_Penalty;
//Miscellenaous
int Month,Days,Initial_meter_reading,Final_meter_reading,Energy_Used,
Number_of_days_in_billing_period;
double kWh,Balance_Forward,Distribution_Service_Charge,Generation,
Transmission,Fuel_Charge,Sales_and_Use_Surcharge,State_and_Local_Consumption_Tax
,Late_Payment_Charge,Total_Current_Charges,Total_Account_Balance,
Average_Daily_Cost,Current_Charges_Without_Tax,VB_U_Total,Previous_Balance;
string Name, Prompt;
Prompt = ", Please follow all directions.";
//Proggy Intro
cout << "Please enter your name customer: ";
cin >> Name;
//Sleep(200);
system("CLS");
//Sleep(1300);
cout << "Welcome, ";
//Sleep(500);
cout << Name << " To";
//Sleep(700);
cout << " Calculation of ";
//Sleep(800);
cout << "Electric Power Bill!\n"; // Ends
system("Pause");
system("CLS");
///////////
//Constant Values
Basic_Charge=7.00;
RiderC1A= 0.00010;
RiderC2A= 0.00024;
Distribution_kWh_ChargeA= 0.02269;
Distribution_kWh_ChargeB= 0.01296;
kWh = 800.00;
State_Consumption_A= 0.00102;
Special_Regulatory_A= 0.00012;
Local_Consumption_A= 0.00038;
State_Consumption_B= 0.00065;
Special_Regulatory_B= 0.00008;
Local_Consumption_B= 0.00024;
State_Consumption_C= 0.00050;
Special_Regulatory_C= 0.00006;
Local_Consumption_C= 0.00018;
VB_U_Tax= 3.00;
cout << setw(15) << Name << Prompt << endl; //Added Flavor
cout << "\nPlease enter your initial meter reading: ";
cin >> Initial_meter_reading;
cout << "\nPlease enter your final meter reading: ";
cin >> Final_meter_reading;
system("CLS");
cout << setw(15) << Name << Prompt << endl;
if (Final_meter_reading < Initial_meter_reading)
Energy_Used = (Final_meter_reading + 100000) - Initial_meter_reading;
else
Energy_Used = Final_meter_reading - Initial_meter_reading;
//Distribution Charge Calculations
if (Energy_Used > 800 && Energy_Used <= 2500 && Final_meter_reading >= 00000
&& Final_meter_reading <= 99999 && Initial_meter_reading >= 00000
&& Initial_meter_reading <= 99999)
{
Distribution_Service_Charge = Basic_Charge + ((Distribution_kWh_ChargeA)
*(kWh)) + ((Distribution_kWh_ChargeB)*(Energy_Used - kWh)) + ((RiderC1A)
*(Energy_Used)) + ((RiderC2A)*(Energy_Used));
State_and_Local_Consumption_Tax = ((State_Consumption_A)*(Energy_Used)) +
((Special_Regulatory_A)*(Energy_Used)) + ((Local_Consumption_A)
*(Energy_Used));
}
else if (Energy_Used > 800 && Energy_Used >= 2500 && Energy_Used <= 50000
&& Final_meter_reading >= 00000 && Final_meter_reading <= 99999
&& Initial_meter_reading >= 00000 && Initial_meter_reading <= 99999)
{
Distribution_Service_Charge = Basic_Charge + ((Distribution_kWh_ChargeA)
*(kWh)) + ((Distribution_kWh_ChargeB)*(Energy_Used - kWh)) + ((RiderC1A)
*(Energy_Used)) + ((RiderC2A)*(Energy_Used));
State_and_Local_Consumption_Tax = ((State_Consumption_B)/>/>*(Energy_Used))
+ ((Special_Regulatory_B)/>/>*(Energy_Used)) + ((Local_Consumption_B)/>/>
*(Energy_Used));
}
else if (Energy_Used > 800 && Energy_Used > 50000
&& Final_meter_reading >= 00000 && Final_meter_reading <= 99999
&& Initial_meter_reading >= 00000 && Initial_meter_reading <= 99999)
{
Distribution_Service_Charge = Basic_Charge + ((Distribution_kWh_ChargeA)*
(kWh)) + ((Distribution_kWh_ChargeB)*(Energy_Used - kWh)) + ((RiderC1A)*
(Energy_Used)) + ((RiderC2A)*(Energy_Used));
State_and_Local_Consumption_Tax = ((State_Consumption_C)*(Energy_Used)) +
((Special_Regulatory_C)*(Energy_Used)) + ((Local_Consumption_C)
*(Energy_Used));
}
else if (Energy_Used <= 800 && Final_meter_reading >= Initial_meter_reading
&& Final_meter_reading >= 00000 && Final_meter_reading <= 99999
&& Initial_meter_reading >= 00000 && Initial_meter_reading <= 99999)
{
Distribution_Service_Charge = Basic_Charge + ((Distribution_kWh_ChargeA)
*(kWh)) + ((RiderC1A)*(Energy_Used)) + ((RiderC2A)*(Energy_Used));
}
else if (Energy_Used < 800 && Final_meter_reading <= Initial_meter_reading
&& Final_meter_reading >= 00000 && Final_meter_reading <= 99999
&& Initial_meter_reading >= 00000 && Initial_meter_reading <= 99999)
{
Distribution_Service_Charge = Basic_Charge + ((Distribution_kWh_ChargeA)
*(kWh)) + ((RiderC1A)*(Energy_Used + 10000)) + ((RiderC2A)
*(Energy_Used + 10000));
}
else
return 1;
//Electricity Supply Service (ESS) Charge Calculations
//Constant Values
Generation_A1 = 0.03795; //June - Sept x < 800 ; Summer
Generation_A2 = 0.05773; // Over 800 kWh
Generation_B1 = 0.03795; //Oct - May x < 800 ; Winter
Generation_B2 = 0.02927; // Over 800 kWh
Rider_S = 0.00474;
Rider_B = 0.00012;
Rider_W = 0.00066;
Rider_R = 0.00142;
Rider_A = 0.02706;
Transmission_kW_Charge = 0.0097;
Rider_T1 = 0.00267; //Subtract
Sales_N_U_Rate = 0.00061;
//ESS Charge
Sales_and_Use_Surcharge = Sales_N_U_Rate*Energy_Used;
Fuel_Charge = Rider_A*Energy_Used;
Transmission = ((Transmission_kW_Charge)*(Energy_Used))-((Rider_T1)
*(Energy_Used));
//Months
cout << "\nPlease input a Month (ie: 1. January etc): ";
cin >> Month;
//Summer Rates
if (Month== 9 || Month==7 || Month== 8
|| Month== 6)
{
if (Energy_Used > 800 && Final_meter_reading >= 00000
&& Final_meter_reading <= 99999 && Initial_meter_reading >= 00000
&& Initial_meter_reading <= 99999)
{
Generation = ((Generation_A1)*(kWh)) + ((Generation_A2)
*(Energy_Used - kWh))
+ ((Rider_S)*(Energy_Used)) + ((Rider_B)/>/>*(Energy_Used)) + ((Rider_W)
*(Energy_Used)) + ((Rider_R)*(Energy_Used));
}
else if (Energy_Used <= 800
&& Final_meter_reading >= 00000 && Final_meter_reading <= 99999
&& Initial_meter_reading >= 00000 && Initial_meter_reading <= 99999)
{
Generation = ((Generation_A1)*(kWh)) + ((Rider_S)*(Energy_Used))
+((Rider_B)/>/>*(Energy_Used)) + ((Rider_W)*(Energy_Used)) + ((Rider_R)
*(Energy_Used));
}
//Winter
else if (Month== 12 || Month== 11 || Month== 10|| Month== 1||Month== 2|| Month== 3
|| Month== 4 || Month== 5)
{
if (Energy_Used > 800 && Final_meter_reading >= 00000
&& Final_meter_reading <= 99999 && Initial_meter_reading >= 00000
&& Initial_meter_reading <= 99999)
{
Generation = ((Generation_B1)*(kWh)) + ((Generation_B2)
*(Energy_Used - kWh))
+ ((Rider_S)*(Energy_Used)) + ((Rider_B)/>/>*(Energy_Used)) + ((Rider_W)
*(Energy_Used)) + ((Rider_R)*(Energy_Used));
}
else if (Energy_Used <= 800 && Final_meter_reading >= 00000 && Final_meter_reading <= 99999 && Initial_meter_reading >= 00000 && Initial_meter_reading <= 99999)
{
Generation = ((Generation_B1)*(kWh)) + ((Rider_S)*(Energy_Used))
+((Rider_B)/>/>*(Energy_Used)) + ((Rider_W)*(Energy_Used)) + ((Rider_R)
*(Energy_Used));
}
else
return 1;
}
//Late
cout << "\nPlease a valid amount of days for the bill (26-35): ";
cin >> Number_of_days_in_billing_period;
cout << "\nPlease enter the Balance_Forward: ";
cin >> Balance_Forward;
Late_Penalty = 0.015;
if (Number_of_days_in_billing_period >= 26
&& Number_of_days_in_billing_period <= 35)
Late_Payment_Charge = 0;
else if (Number_of_days_in_billing_period > 35)
{
Late_Payment_Charge = Balance_Forward*Late_Penalty
*Current_Charges_Without_Tax;
}
else
cout << "\nPlease enter a value withinin the 26-35 day range"
<< endl;
return 1;
//Others
Current_Charges_Without_Tax = Distribution_Service_Charge + Generation
+ Transmission + Fuel_Charge + Sales_and_Use_Surcharge;
cout << "Current Charges Without Tax: $" << setprecision(2)
<< setiosflags(ios::fixed) << Current_Charges_Without_Tax << endl;
Total_Current_Charges = Current_Charges_Without_Tax +
State_and_Local_Consumption_Tax + VB_U_Tax + Late_Payment_Charge;
Total_Account_Balance = Total_Current_Charges - Balance_Forward;
Average_Daily_Cost = (Total_Current_Charges - VB_U_Tax
- State_and_Local_Consumption_Tax - Late_Payment_Charge)
/Number_of_days_in_billing_period;
//Summary
system("pause");
system("CLS");
cout << "\n Bill Summary: "
<< "\n -------------------------\n"
<< setw(5) << "Sir/Ms. " << Name;
if (Month== 1) //Set up for month
cout << "\nMonth: January (Winter Rate)";
else if (Month== 2)
cout << "\nMonth: February (Winter Rate)";
else if (Month== 3)
cout << "\nMonth: March (Winter Rate)";
else if (Month== 4)
cout << "\nMonth: April (Winter Rate)";
else if (Month== 5)
cout << "\nMonth: May (Winter Rate)";
else if (Month== 6)
cout << "\nMonth: June {Summer Rate)";
else if (Month== 7)
cout << "\nMonth: July (Summer Rate";
else if (Month == 8)
cout << "\nMonth: August (Summer Rate)";
else if (Month== 9)
cout << "\nMonth: September (Summer Rate)";
else if (Month== 10)
cout << "\nMonth: October (Winter Rate)";
else if (Month== 11)
cout << "\nMonth: November (Winter Rate)";
else if (Month== 12)
cout << "\nMonth: December (Winter Rate)";
else
{
cout << "\nInvalid month!"; //if user disregard
system("pause");
return 1;
cout << "\nBalance Forward: " << Balance_Forward
<< "\nInitial Meter Reading: " << Initial_meter_reading << " kWh"
<< "\nFinal Meter Reading: " << Final_meter_reading << " kWh"
<< "\nEnergy Used: " << Energy_Used << " kWh"
<< "\nDistribution Service Charge: $" << setprecision(2)
<<setiosflags(ios::fixed) << Distribution_Service_Charge
<< "\nElectricity Supply Service: "<< setprecision(2)
<< setiosflags(ios::fixed)
<< "\n\tGeneration: $" << setprecision(2) << setiosflags(ios::fixed)
<< Generation
<< "\n\tTransmission: $" << setprecision(2) << setiosflags(ios::fixed)
<< Transmission
<< "\n\tFuel: $" << setprecision(2) << setiosflags(ios::fixed)
<< Fuel_Charge
<< "\nSales and Use Surcharge: $" << setprecision(2) << setiosflags(ios::fixed)
<< Sales_and_Use_Surcharge
<< "\nState/Local Consumption Tax: $" << setprecision(2)
<< setiosflags(ios::fixed) << State_and_Local_Consumption_Tax
<< "\nVirginia Beach Utility Tax: $" << setprecision(2)
<< setiosflags(ios::fixed) << VB_U_Tax
<< "\nLate Charge: $" << setprecision(2) << setiosflags(ios::fixed)
<< Late_Payment_Charge
<< "\nTotal Current Charge: $" << setprecision(2) << setiosflags(ios::fixed)
<< Total_Current_Charges
<< "\nTotal Account Balance: $" << setprecision(2) << setiosflags(ios::fixed)
<< Total_Account_Balance
<< "\nAverage Daily Charge: $" << setprecision(2) << setiosflags(ios::fixed)
<< Average_Daily_Cost << endl;
system("pause");
return 0;
}
}
}
I can't seem to figure out why the program keeps closing too early. When you get to the command where it asks for a Month the program just ends after the user inputs a value. Thanks in advance.