Home Programming C++ Tax Calculator

Search

C++ Tax Calculator Print
Written by Chris Gountanis   

This program demonstrates a tax calculator using C++.

 

 

 

/*

Name: Tax Calculator

Copyright: Copyright 2007 by Chris Gountanis student of University of Phoenix.

Author: Chris Gountanis

Date: 09/19/07

Description: Tax calculator based on service request SR-KF-008.

*/

 

//INCLUDES

#include <iostream>

#include <iomanip>

 

//NAMESPACE DEFINITION

using namespace std;

 

//DEFINE TAX RATES FOR EASY UPDATES IF NEEDED AS RATES CHANGE

#define Del_Mar_TaxRate 1.0725;

#define Encinitas_TaxRate 1.075;

#define La_Jolla_TaxRate 1.0775;

 

//CUSTOM FUNCTION FOR CHECKING VALID CURRENCY AMOUNT

int isCurrency(char sAmount[]) {

int x = 0;

int iPointControl = 0;

int iReturn = 0;

 

//LOOP ENTIRE STRING TILL EOF CHECKING FOR NUMERIC AND ONLY ONE DECIMAL

while (sAmount[x] != '\0') {

if (isdigit(sAmount[x])) {

iReturn = 1;

} else {

//IF MORE THAN 1 DECIMAL PLACE RETURN FALSE

if ((sAmount[x] == '.') && (iPointControl < 1)) {

iPointControl++;

} else {

iReturn = 0;

break;

}

}

x++ ;

}

return iReturn;

}

 

void taxcalc() {

//SETUP VARIABLES

int storeid = 0;

int myswitch = 0;

const int input_max = 11;

char inputbuffer[input_max] = {0};

double cashamount = 0;

double totalamount = 0;

system("CLS"); //CLEAR SCREEN

cout << "Welcome to the Tax Calculator\n";

 

//GET STORE LOOP UNTIL VALID

myswitch = 0;

while (myswitch == 0) {

//PRINT NUMBERED STORE MENU

cout << "\n[1].\tDel Mar\n[2].\tEncinitas\n[3].\tLa Jolla\nPLEASE CHOOSE A STORE ID (1-3):\n>";

//REQUEST STORE NUMBER BASED ON MENU

cin.getline(inputbuffer, input_max);

if(cin.fail()) { // IF LIMIT WAS EXCEEDED RESET CIN AND REMOVE LINE RETURN

cin.clear();

cin.ignore(INT_MAX, '\n');;

}

//CHECK FOR NUMERIC

if (isdigit(inputbuffer[0])) { //CHECK FOR NUMERIC

storeid = atoi(inputbuffer); //CONVERT CHAR TO INTEGER WITH ATOI

//CHECK FOR 1,2 or 3 ONLY

if ((storeid >= 1) && (storeid <= 3)) {

myswitch = 1;

} else {

system("CLS"); //CLEAR SCREEN

cout << "Please enter a valid store number!\n";

}

} else {

system("CLS"); //CLEAR SCREEN

cout << "Please enter a numeric value only!\n";

//cin.clear();

}

}

 

//GET AMOUNT LOOP UNTIL VALID

system("CLS"); //CLEAR SCREEN

myswitch = 0;

while (myswitch == 0) {

cout << "PLEASE ENTER CASH AMOUNT: \n>$";

 

//REQUEST STORE NUMBER BASED ON MENU

cin.getline(inputbuffer, input_max);

 

// IF LIMIT WAS EXCEEDED RESET CIN AND REMOVE LINE RETURN

if(cin.fail()) {

cin.clear();

cin.ignore(INT_MAX, '\n');;

}

 

//CHECK FOR VALID NUMERIC/CURRENCY FORMAT BY CALLING CUSTOM FUNCTION

if (isCurrency(inputbuffer)) {

cashamount = atof(inputbuffer); //CONVERT CHAR TO FLOAT/DOUBLE WITH ATOF

myswitch = 1;

} else {

system("CLS"); //CLEAR SCREEN

cout << "Please enter a valid numeric value!\n";

}

 

}

 

//DEPENDING ON STOREID RUN THE MATH FOR TOTAL CALCULATION

switch (storeid) {

case 1: //DEL MAR

totalamount = cashamount * Del_Mar_TaxRate;

break;

case 2: //ENCINITAS

totalamount = cashamount * Encinitas_TaxRate;

break;

case 3: //LA JOLLA

totalamount = cashamount * La_Jolla_TaxRate;

break;

}

system("CLS"); //CLEAR SCREEN

//PRINT TOTAL WITH CURRENCY BASED DECIMAL PLACE

cout << "Total: $" << setiosflags(ios::fixed) << setprecision(2) << totalamount << endl;

}

 

void main() {

 

//RUN MAIN CODE

taxcalc();

 

//WAIT FOR USER TO PRESS ENTER

cout << "\nPress ENTER to continue.\n";

cin.get();

}

Last Updated on Saturday, 09 February 2008 21:02